Here is how I do it--
My ip is dynamic, but since not many people are on the iDSL service with my provider, and they never reboot things on there end, my ip has never changed during the almost a year I have had the service.
My domain name is registered with yahoo domains, who provide you with both a primary and secondary DNS service-- and a nice web interface to change things. They charge $35 a year, but I don't have to worry about those two items-- and I have total control to change things and add subdomains at will.
For the DNS I set www.foo.com to point to my internet IP address and then I set up ip forwarding in my iDSL router to send all port 80 requests to my server's internal IP. In my nsd.tcl file I've got
set hostname www.foo.com
set address Internal server IP address
It works for me :). To clear up one item you may be wondering about, you can have multiple names (www.foo.com, www.foo2.com) pointing to one IP address. For your example, one of the names would be your 'www.server1.com' and the other is hostname assigned by your isp.