Quite a lot of info on this site:
RustBuster are experts in rust removal we offer a range of high quality products including rustproofing stoppers, removers & paint protection for new or classic cars!
www.rust.co.uk
As Burnerman says, it's incredibly important to wash the underside first, and leave to dry fully. Any road salt, oil, grease, even some oily underseals, will stop any of the preventative products sticking properly. A god degreaser is absolutely essential. I prefer detergents to solvents, because the latter seem to dissolve it and spread it over a larger area.
If there is already any surface rust at all, it's worth using a converter. There are loads around and they all work on much the same principle. The FE-123 on that site is as good as any. However, it can't get inside bubbles and under flakes, so you really need to wire brush the surface carefully first.
After that, I quite like the epoxy mastic products, like EM121. It's messy, you have to mix the two parts and it goes on very thick, but it sticks very well and isn't as permeable as many other coatings so water can't get through it as easily.
After that, just spray whatever black, "stuff" you fancy under the car to make it all look uniform. None of them (on its own) has ever worked terribly well for me, the rust just carries on underneath.
For the insides of box sections, I'm a fan of Dinitrol ML. You can buy extension nozzles for the cans. Just feed the tube down a convenient hole in the chassis member, press the aerosol button on the can, and pull the tube out whilst holding the button down. It will make a mess of your drive, though, because the excess drips out everywhere for several hours!