WPAD and DHCP Servers

Robert Sneidar slylabs13 at mac.com
Sun Jun 29 14:59:05 EDT 2008

Hi Trevor. See http://www.comptechdoc.org/independent/networking/guide/netdhcp.html 
  for a basic treatment of the issue.

You use the global broadcast address for DHCP which is  
as the source and as the destination. (I have seen some DHCP  
servers use the subnet broadcast address which would be  
for a class B subnet, but it proved to be problematic.)

DHCP is a broadcast protocol, given the fact that you don't actually  
have an address on the subnet yet. You would issue a DHCPREQUEST on  
destination port number 67 using 68 as the source port. Clients always  
use 67 and servers always use 68.

The server(s) reply with a DHCPOFFER. The client will accept the first  
lease offered (note there can be multiple DHCP servers on a segment,  
but it is usually a bad idea). The client will respond with a  
DHCPREQUEST but this time with the IP address of the server that  
offered as the source address. This allows the other servers if any to  
retract their offers and mark the address as unavailable so they do  
not offer it to another client. The server replies with a DHCPACK (or  
DHCPNAK if rejected). If the client cannot get a lease the TCP stack  
will shut down and cease to function.

Now comes lease renewal time. Halfway through the lease time granted  
by the server, the client is supposed to issue a renewal in the form  
of DHCPREQUEST with the IP address of the server that granted it (same  
as before). If it fails to get a response, it tries again in half the  
remaining lease time. At some point (I think 87.5% of lease time) the  
client is supposed to start from scratch, which can occur if the  
client or server was offline (or sleeping) during the lease renewal  
window, or in the case of a busy network.

I have experienced situations where the server was responding to so  
many requests, that many clients were getting to the reset stage and  
resetting their TCP stacks and starting the process over again. This  
occurred because because the lease time was set too short for that  
size network. Obviously this would have an adverse affect on protocols  
requiring a persistent connection.

I thought that having the server grant reserved leases using the  
hardware address to get the same IP address every time would solve  
this, but nay! The adapter will reset and start from scratch even if  
the address it ends up with is the same address it had before.

<sigh> DHCP seems like a good idea at first, and can be, but beware of  
this tendency to reset. NEVER use DHCP on servers, or any device that  
you ned to connect to remotely, such as managed switches, IP cameras,  
routers etc.

Bob Sneidar
IT Manager
Logos Management
Calvary Chapel CM

On Jun 27, 2008, at 5:10 PM, Trevor DeVore wrote:

> Hi,
> In my quest to come up with a library that plays nicely with proxy  
> servers in as many situations as possible I'm working on an  
> implementation of the WPAD protocol for Revolution. When looking for  
> the wpad.dat file you first ask for option 252 from a local DHCP  
> server and the server will return a string pointing to wpad.dat. If  
> that doesn't work then you move on to DNS and look for the wpad  
> subdomain using the host name as the starting point.
> I think I have the DNS portion figured out and I've coded an  
> implementation using 'the hostName' and hostNameToAddress() (not  
> tested yet).
> I'm a little lost when it comes to the DHCP however. I am assuming  
> that I should try to contact the DHCP server as defined in the  
> network settings. On my local network that is What I'm  
> not sure about is how to send a request for option 252.
> Is there anybody out there who is familiar with WPAD, DHCP and how  
> to talk to a DHCP server an could share some insight?
> Thanks,
> -- 
> Trevor DeVore
> Blue Mango Learning Systems
> ScreenSteps: http://www.screensteps.com
> Developer Resources: http://revolution.bluemangolearning.com
> Email has been scanned for viruses by Altman Technologies' email  
> management service - www.altman.co.uk/emailsystems
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your  
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution

More information about the use-livecode mailing list