User login

DHCP

****DRAFT
****Please note this article is not finished!

Introduction

The Internet Engineering Task Force (IETF) introduced the Request for Comments (RFC) for Dynamic Host Configuration (RFC 1531) in October 1993. The purpose of this working group was the formulation of a protocol that would allocate IP addresses and provide client configuration information. RFC 1531 has been superceded by RFC 2131 and 2132 in March 1997. Since 1997 various other RFCs have also updated different aspects of DHC. More information may be obtained on the internet at the IETF Dynamic Host Configuration Chater website, http://www.ietf.org/html.charters/dhc-charter.html.

Executive Summary

Is DHCP for my organization? DHCP provides 2 useful functions. It allocates IP addresses which all computers need to be able to communicate on the internet. It also allows for dynamic configuration of various option such as gateway router, domain name server, printers and many more.

The fundamental business consideration here revolves around the issue of whether or not it is more cost effective for support personnel to spend time changing host configuration options and the man hours of lost productivity due to employees not being able to access the internet / corporate network on there computers.

A formula for determing the cost effectiveness of DHCP would look something like this:

Personnel Cost of Allocating IP Addresses and Configuring Host Computers in $/hr + Cost of Lost Productivity in $/hr => or =< Cost of Implementing DHCP

Obviously, in a SOHO or small business environment, having a DHCP server is probably not necessary. But, in a larger environment the reduction in the loss of productivity and lower amount of time spent configuring network parameters is usually reduced by implementing a DHCP server(s).

Dynamic Host Configuration Protocol - Technical Summary

The DHCP communication stream consists of 4 separate steps; Discovery, Offer, Request, Acknowledgement. The communciation endpoints for this stream are specified by the Internet Assigned Numbers Authority (IANA). The specific port numbers for DHCP communication are:

bootps           67/tcp    Bootstrap Protocol Server
bootps           67/udp    Bootstrap Protocol Server
bootpc           68/tcp    Bootstrap Protocol Client
bootpc           68/udp    Bootstrap Protocol Client

DHCP Discovery

The client sends out a broadcast to it's subnet. If the network administrator has set it up this broadcast can be forwarded by a router or dhcp relay agent to a server on another subnet. The broadcast is sent from the source 0.0.0.0:68 to 255.255.255.255:67. Below is a packet capture from Wireshark of a DHCP discovery packet. The client computer used to send this packet has the options set to request a previous IP Address issued by the DHCP server.

No.     Time        Source                Destination           Protocol Info
72      1.815217    0.0.0.0            255.255.255.255  DHCP     DHCP Discover - Transaction ID 0x88aece2

Frame 72 (342 bytes on wire, 342 bytes captured)
    Arrival Time: Aug  7, 2007 20:26:43.492921000
    [Time delta from previous packet: 0.191773000 seconds]
    [Time since reference or first frame: 1.815217000 seconds]
    Frame Number: 72
    Packet Length: 342 bytes
    Capture Length: 342 bytes
    [Frame is marked: False]
    [Protocols in frame: eth:ip:udp:bootp]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Ethernet II, Src: AbitComp_b3:41:20 (00:50:8d:b3:41:20), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
Bootstrap Protocol
    Message type: Boot Request (1)
    Hardware type: Ethernet
    Hardware address length: 6
    Hops: 0
    Transaction ID: 0x088aece2
    Seconds elapsed: 0
    Bootp flags: 0x0000 (Unicast)
    Client IP address: 0.0.0.0 (0.0.0.0)
    Your (client) IP address: 0.0.0.0 (0.0.0.0)
    Next server IP address: 0.0.0.0 (0.0.0.0)
    Relay agent IP address: 0.0.0.0 (0.0.0.0)
    Client MAC address: AbitComp_b3:41:20 (00:50:8d:b3:41:20)
    Server host name not given
    Boot file name not given
    Magic cookie: (OK)
    Option: (t=53,l=1) DHCP Message Type = DHCP Discover
        Option: (53) DHCP Message Type
        Length: 1
        Value: 01
    Option: (t=116,l=1) DHCP Auto-Configuration
        Option: (116) DHCP Auto-Configuration
        Length: 1
        Value: 01
    Option: (t=61,l=7) Client identifier
        Option: (61) Client identifier
        Length: 7
        Value: 0100508DE74230
        Hardware type: Ethernet
        Client MAC address: AbitComp_b3:41:20 (00:50:8d:b3:41:20)
    Option: (t=50,l=4) Requested IP Address = 21.3.121.43
        Option: (50) Requested IP Address
        Length: 4
        Value: 18056732
    Option: (t=12,l=4) Host Name = "client"
        Option: (12) Host Name
        Length: 4
        Value: 45646765
    Option: (t=60,l=8) Vendor class identifier = "MSFT 5.0"
        Option: (60) Vendor class identifier
        Length: 8
        Value: 4D53465420352E30
    Option: (t=55,l=11) Parameter Request List
        Option: (55) Parameter Request List
        Length: 11
        Value: 010F03062C2E2F1F21F92B
        1 = Subnet Mask
        15 = Domain Name
        3 = Router
        6 = Domain Name Server
        44 = NetBIOS over TCP/IP Name Server
        46 = NetBIOS over TCP/IP Node Type
        47 = NetBIOS over TCP/IP Scope
        31 = Perform Router Discover
        33 = Static Route
        249 = Classless static routes
        43 = Vendor-Specific Information
    End Option
    Padding

DHCP Offer

The server then responds with a DHCP offer.

No.     Time        Source                Destination           Protocol Info
     90 2.136961    73.121.144.1          21.3.121.43           DHCP     DHCP Offer    - Transaction ID 0x88aece2

Frame 90 (346 bytes on wire, 346 bytes captured)
    Arrival Time: Aug  7, 2007 20:26:43.814665000
    [Time delta from previous packet: 0.009278000 seconds]
    [Time since reference or first frame: 2.136961000 seconds]
    Frame Number: 90
    Packet Length: 346 bytes
    Capture Length: 346 bytes
    [Frame is marked: False]
    [Protocols in frame: eth:ip:udp:bootp]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Ethernet II, Src: Cadant_23:38:c2 (00:01:5c:23:38:c2), Dst: AbitComp_b3:41:20 (00:50:8d:b3:41:20)
Internet Protocol, Src: 73.121.144.1 (73.121.144.1), Dst: 21.3.121.43 (21.3.121.43)
User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68)
Bootstrap Protocol
    Message type: Boot Reply (2)
    Hardware type: Ethernet
    Hardware address length: 6
    Hops: 1
    Transaction ID: 0x088aece2
    Seconds elapsed: 0
    Bootp flags: 0x0000 (Unicast)
    Client IP address: 0.0.0.0 (0.0.0.0)
    Your (client) IP address: 21.3.121.43 (21.3.121.43)
    Next server IP address: 0.0.0.0 (0.0.0.0)
    Relay agent IP address: 73.121.144.1 (73.121.144.1)
    Client MAC address: AbitComp_b3:41:20 (00:50:8d:b3:41:20)
    Server host name not given
    Boot file name not given
    Magic cookie: (OK)
    Option: (t=53,l=1) DHCP Message Type = DHCP Offer
        Option: (53) DHCP Message Type
        Length: 1
        Value: 02
    Option: (t=54,l=4) Server Identifier = 68.87.76.23
        Option: (54) Server Identifier
        Length: 4
        Value: 44574C17
    Option: (t=51,l=4) IP Address Lease Time = 1 hour
        Option: (51) IP Address Lease Time
        Length: 4
        Value: 00000E10
    Option: (t=1,l=4) Subnet Mask = 255.255.240.0
        Option: (1) Subnet Mask
        Length: 4
        Value: FFFFF000
    Option: (t=15,l=20) Domain Name = "client.comcast.net."
        Option: (15) Domain Name
        Length: 20
        Value: 687364312E63612E636F6D636173742E6E65742E
    Option: (t=3,l=4) Router = 21.3.121.43
        Option: (3) Router
        Length: 4
        Value: 18056001
    Option: (t=6,l=8) Domain Name Server
        Option: (6) Domain Name Server
        Length: 8
        Value: 44574CB244574E82
        IP Address: 68.87.76.178
        IP Address: 68.87.78.130
    Option: (t=31,l=1) Perform Router Discover = Enabled
        Option: (31) Perform Router Discover
        Length: 1
        Value: 01
    End Option
    Padding

The preceding packet provided the client with it's configuration information. In this particular instance the server is auto-configuring IP Address Lease Time, Subnet Mask, Domain Name, Router, Domain Name Server, and Router Discovery.

DHCP Request

No.     Time        Source                Destination           Protocol Info
     91 2.137207    0.0.0.0               255.255.255.255       DHCP     DHCP Request  - Transaction ID 0x88aece2

Frame 91 (346 bytes on wire, 346 bytes captured)
    Arrival Time: Aug  7, 2007 20:26:43.814911000
    [Time delta from previous packet: 0.000246000 seconds]
    [Time since reference or first frame: 2.137207000 seconds]
    Frame Number: 91
    Packet Length: 346 bytes
    Capture Length: 346 bytes
    [Frame is marked: False]
    [Protocols in frame: eth:ip:udp:bootp]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Ethernet II, Src: AbitComp_b3:41:20 (00:50:8d:b3:41:20), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
    Source port: bootpc (68)
    Destination port: bootps (67)
    Length: 312
    Checksum: 0x1bbb [correct]
Bootstrap Protocol
    Message type: Boot Request (1)
    Hardware type: Ethernet
    Hardware address length: 6
    Hops: 0
    Transaction ID: 0x088aece2
    Seconds elapsed: 0
    Bootp flags: 0x0000 (Unicast)
    Client IP address: 0.0.0.0 (0.0.0.0)
    Your (client) IP address: 0.0.0.0 (0.0.0.0)
    Next server IP address: 0.0.0.0 (0.0.0.0)
    Relay agent IP address: 0.0.0.0 (0.0.0.0)
    Client MAC address: AbitComp_b3:41:20 (00:50:8d:b3:41:20)
    Server host name not given
    Boot file name not given
    Magic cookie: (OK)
    Option: (t=53,l=1) DHCP Message Type = DHCP Request
        Option: (53) DHCP Message Type
        Length: 1
        Value: 03
    Option: (t=61,l=7) Client identifier
        Option: (61) Client identifier
        Length: 7
        Value: 0100508DE74230
        Hardware type: Ethernet
        Client MAC address: AbitComp_b3:41:20 (00:50:8d:b3:41:20)
    Option: (t=50,l=4) Requested IP Address = 21.3.121.43
        Option: (50) Requested IP Address
        Length: 4
        Value: 18056732
    Option: (t=54,l=4) Server Identifier = 68.87.76.23
        Option: (54) Server Identifier
        Length: 4
        Value: 44574C17
    Option: (t=12,l=4) Host Name = "client"
        Option: (12) Host Name
        Length: 4
        Value: 45646765
    Option: (t=81,l=8) Client Fully Qualified Domain Name
        Option: (81) Client Fully Qualified Domain Name
        Length: 8
        Value: 000000456467652E
        Flags: 0x00
        0000 .... = Reserved flags: 0x00
        .... 0... = Server DDNS: Some server updates
        .... .0.. = Encoding: ASCII encoding
        .... ..0. = Server overrides: No override
        .... ...0 = Server: Client
        A-RR result: 0
        PTR-RR result: 0
        Client name: client.
    Option: (t=60,l=8) Vendor class identifier = "MSFT 5.0"
        Option: (60) Vendor class identifier
        Length: 8
        Value: 4D53465420352E30
    Option: (t=55,l=11) Parameter Request List
        Option: (55) Parameter Request List
        Length: 11
        Value: 010F03062C2E2F1F21F92B
        1 = Subnet Mask
        15 = Domain Name
        3 = Router
        6 = Domain Name Server
        44 = NetBIOS over TCP/IP Name Server
        46 = NetBIOS over TCP/IP Node Type
        47 = NetBIOS over TCP/IP Scope
        31 = Perform Router Discover
        33 = Static Route
        249 = Classless static routes
        43 = Vendor-Specific Information
    End Option

Acknowledgement

No.     Time        Source                Destination           Protocol Info
106     2.180518    73.121.144.1          21.3.121.43           DHCP     DHCP ACK      - Transaction ID 0x88aece2

Frame 106 (346 bytes on wire, 346 bytes captured)
    Arrival Time: Aug  7, 2007 20:26:43.858222000
    [Time delta from previous packet: 0.043311000 seconds]
    [Time since reference or first frame: 2.180518000 seconds]
    Frame Number: 106
    Packet Length: 346 bytes
    Capture Length: 346 bytes
    [Frame is marked: False]
    [Protocols in frame: eth:ip:udp:bootp]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Ethernet II, Src: Cadant_23:38:c2 (00:01:5c:23:38:c2), Dst: AbitComp_b3:41:20 (00:50:8d:b3:41:20)
Internet Protocol, Src: 73.121.144.1 (73.121.144.1), Dst: 21.3.121.43 (21.3.121.43)
User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68)
    Source port: bootps (67)
    Destination port: bootpc (68)
    Length: 312
    Checksum: 0xb822 [correct]
Bootstrap Protocol
    Message type: Boot Reply (2)
    Hardware type: Ethernet
    Hardware address length: 6
    Hops: 1
    Transaction ID: 0x088aece2
    Seconds elapsed: 0
    Bootp flags: 0x0000 (Unicast)
    Client IP address: 0.0.0.0 (0.0.0.0)
    Your (client) IP address: 21.3.121.43 (21.3.121.43)
    Next server IP address: 0.0.0.0 (0.0.0.0)
    Relay agent IP address: 73.121.144.1 (73.121.144.1)
    Client MAC address: AbitComp_b3:41:20 (00:50:8d:b3:41:20)
    Server host name not given
    Boot file name not given
    Magic cookie: (OK)
    Option: (t=53,l=1) DHCP Message Type = DHCP ACK
        Option: (53) DHCP Message Type
        Length: 1
        Value: 05
    Option: (t=54,l=4) Server Identifier = 68.87.76.23
        Option: (54) Server Identifier
        Length: 4
        Value: 44574C17
    Option: (t=51,l=4) IP Address Lease Time = 1 hour
        Option: (51) IP Address Lease Time
        Length: 4
        Value: 00000E10
    Option: (t=1,l=4) Subnet Mask = 255.255.240.0
        Option: (1) Subnet Mask
        Length: 4
        Value: FFFFF000
    Option: (t=15,l=20) Domain Name = "hsd1.ca.comcast.net."
        Option: (15) Domain Name
        Length: 20
        Value: 687364312E63612E636F6D636173742E6E65742E
    Option: (t=3,l=4) Router = 24.5.96.1
        Option: (3) Router
        Length: 4
        Value: 18056001
    Option: (t=6,l=8) Domain Name Server
        Option: (6) Domain Name Server
        Length: 8
        Value: 44574CB244574E82
        IP Address: 68.87.76.178
        IP Address: 68.87.78.130
    Option: (t=31,l=1) Perform Router Discover = Enabled
        Option: (31) Perform Router Discover
        Length: 1
        Value: 01
    End Option
    Padding