Skip to main content

DHCP报文格式

DHCP报文是承载于UDP上的高层协议报文,采用67(DHCP服务器)和68(DHCP客户端)两个端口号。DHCP的报文格式如下图所示。

报文格式

DHCP报文格式
     0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     op (1)   |   htype (1)   |   hlen (1)   |   hops (1)   |
    +---------------+---------------+---------------+---------------+
    |                           xid (4)                           |
    +-------------------------------+-------------------------------+
    |           secs (2)           |           flags (2)           |
    +-------------------------------+-------------------------------+
    |                         ciaddr (4)                         |
    +---------------------------------------------------------------+
    |                         yiaddr (4)                         |
    +---------------------------------------------------------------+
    |                         siaddr (4)                         |
    +---------------------------------------------------------------+
    |                         giaddr (4)                         |
    +---------------------------------------------------------------+
    ~                         chaddr (16)                         ~
    +---------------------------------------------------------------+
    ~                         sname   (64)                         ~
    +---------------------------------------------------------------+
    ~                         file   (128)                       ~
    +---------------------------------------------------------------+
    ~                         options (variable)                   ~
    +---------------------------------------------------------------+
DHCP报文字段含义

 

DHCP报文字段含义
字段 长度 含义
Op 1B

表示报文的类型:

    1:客户端请求报文2:客户端请求报文 2:服务器响应报文
    Htype 1B 表示硬件地址的类型。对于以太网,该类型的值为“1”。
    Hlen 1B 表示硬件地址的长度,单位是字节。对于以太网,该值为6。
    Hops 1B 跳数。客户端设置为0,也能被一个代理服务器设置。
    Xid 4B 事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配。该ID由客户端设置并由服务器返回,为32位整数。
    Secs 2B 由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数。
    flags 2B 此字段在BOOTP中保留未用,在DHCP中表示标志字段。
    Ciaddr 4B 客户端的IP地址。只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。
    Yiaddr 4B "你自己的"或客户端的IP地址。
    Siaddr 4B 表明DHCP协议流程的下一个阶段要使用的服务器的IP地址。
    Giaddr 4B 该字段表示第一个DHCP中继的IP地址(注意:不是地址池中定义的网关)。当客户端发出DHCP请求时,如果服务器和客户端不在同一个网络中,那么第一个DHCP中继在转发这个DHCP请求报文时会把自己的IP地址填入此字段。服务器会根据此字段来判断出网段地址,从而选择为用户分配地址的地址池。服务器还会根据此地址将响应报文发送给此DHCP中继,再由DHCP中继将此报文转发给客户端。 若在到达DHCP服务器前经过了不止一个DHCP中继,那么第一个DHCP中继后的中继不会改变此字段,只是把Hops的数目加1。
    Chaddr 16B 该字段表示客户端的MAC地址,此字段与前面的“Hardware Type”和“Hardware Length”保持一致。当客户端发出DHCP请求时,将自己的硬件地址填入此字段。对于以太网,当“Hardware Type”和“Hardware Length”分别为“1”和“6”时,此字段必须填入6B的以太网MAC地址。
    Sname 64B 该字段表示客户端获取配置信息的服务器名字。此字段由DHCP Server填写,是可选的。如果填写,必须是一个以0结尾的字符串。
    file 128B 该字段表示客户端的启动配置文件名。此字段由DHCP Server填写,是可选的,如果填写,必须是一个以0结尾的字符串。
    options 可变 该字段表示DHCP的选项字段,至少为312B,格式为"代码+长度+数据"。DHCP通过此字段包含了服务器分配给终端的配置信息,如网关IP地址,DNS服务器的IP地址,客户端可以使用IP地址的有效租期等信息。
    Flags字段格式
                          1 
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |B|             MBZ             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    只有标志字段的最高位才有意义,其余的位均被置为0。最左边的字段被解释为广播响应标志位,内容如下所示: 0:客户端请求服务器以单播形式发送响应报文;1:客户端请求服务器以广播形式发送响应报文

      0:客户端请求服务器以单播形式发送响应报文; 1:客户端请求服务器以广播形式发送响应报文;

      DHCP Options

      Option id 属性名 Length(B) 参考文档
      0 Pad 1 RFC 2132
      1 Subnet Mask 4 RFC 2132
      2 Time Offset 4 RFC 2132
      3 Router 4*N RFC 2132
      4 Time Server 4*N RFC 2132
      5 Name Server 4*N RFC 2132
      6 Domain Server 4*N RFC 2132
      7 Log Server 4*N RFC 2132
      8 Quotes Server 4*N RFC 2132
      9 LPR Server 4*N RFC 2132
      10 Impress Server 4*N RFC 2132
      11 RLP Server 4*N RFC 2132
      12 Hostname n RFC 2132
      13 Boot File Size 2 RFC 2132
      14 Merit Dump File N RFC 2132
      15 Domain Name n RFC 2132
      16 Swap Server 4 RFC 2132
      17 Root Path N RFC 2132
      18 Extension File N RFC 2132
      19 Forward On/Off 1 RFC 2132
      20 SrcRte On/Off 1 RFC 2132
      21 Policy Filter 8*N RFC 2132
      22 Max DG Assembly 2 RFC 2132
      23 Default IP TTL 1 RFC 2132
      24 MTU Timeout 4 RFC 2132
      25 MTU Plateau 2*N RFC 2132
      26 MTU Interface 2 RFC 2132
      27 MTU Subnet 1 RFC 2132
      28 Broadcast Address 4 RFC 2132
      29 Mask Discovery 1 RFC 2132
      30 Mask Supplier 1 RFC 2132
      31 Router Discovery 1 RFC 2132
      32 Router Request 4 RFC 2132
      33 Static Route 8*N RFC 2132
      34 Trailers 1 RFC 2132
      35 ARP Timeout 4 RFC 2132
      36 Ethernet 1 RFC 2132
      37 Default TCP TTL 1 RFC 2132
      38 Keepalive Time 4 RFC 2132
      39 Keepalive Data 1 RFC 2132
      40 NIS Domain N RFC 2132
      41 NIS Servers 4*N RFC 2132
      42 NTP Servers 4*N RFC 2132
      43 Vendor Specific n RFC 2132
      44 NETBIOS Name Srv 4*N RFC 2132
      45 NETBIOS Dist Srv 4*N (N>=1) RFC 2132
      46 NETBIOS Node Type 1 RFC 2132
      47 NETBIOS Scope N (N>=1) RFC 2132
      48 X Window Font 4*N(N>=1) RFC 2132
      49 X Window Manager 4*N(N>=1) RFC 2132
      50 Address Request 4 RFC 2132
      51 IP Address Lease Time 4 RFC 2132
      52 Overload 1 RFC 2132
      53 DHCP Msg Type 1 RFC 2132
      54 Server Identifier 4 RFC 2132
      55 Parameter List n RFC 2132
      56 DHCP Message N (N>=1) RFC 2132
      57 DHCP Max Msg Size 2 RFC 2132
      58 Renewal Time 4 RFC 2132
      59 Rebinding Time 4 RFC 2132
      60 Class Id n RFC 2132
      61 Client Id n RFC 2132
      62 NetWare/IP Domain N (1<=N<=255) RFC 2242
      63 NetWare/IP Option N (1<=N<=255) RFC 2242
      64 NIS-Domain-Name n RFC 2132
      65 NIS-Server-Addr 4*N (N>=1) RFC 2132
      66 Server-Name N RFC 2132
      67 Bootfile-Name N RFC 2132
      68 Home-Agent-Addrs 4*N(N>=0) RFC 2132
      69 SMTP-Server 4*N (N>=1) RFC 2132
      70 POP3-Server 4*N (N>=1) RFC 2132
      71 NNTP-Server 4*N (N>=1) RFC 2132
      72 WWW-Server 4*N (N>=1) RFC 2132
      73 Finger-Server 4*N (N>=1) RFC 2132
      74 IRC-Server 4*N (N>=1) RFC 2132
      75 StreetTalk-Server 4*N (N>=1) RFC 2132
      76 STDA-Server 4*N (N>=1) RFC 2132
      77 User-Class n RFC 3004
      78 Directory Agent 4*N+1 RFC 2610
      79 Service Scope N RFC 2610
      80 Rapid Commit 0 RFC 4039
      81 Client FQDN n (n>=3) RFC 4702
      82 Relay Agent Information n RFC 3046
      83 iSNS N RFC 4174
      84 REMOVED/Unassigned N -
      85 NDS Servers 4*N (N>=1) RFC 2241
      86 NDS Tree Name N (1<=N<=255) RFC 2241
      87 NDS Context N (1<=N<=255) RFC 2241
      88 BCMCS Controller Domain Name list n RFC 4280
      89 BCMCS Controller IPv4 address option 4*n (n>=1) RFC 4280
      90 Authentication N RFC 3118
      91 client-last-transaction-time option 4 RFC 4338
      92 associated-ip option 4*N RFC 4338
      93 Client System 2*N (N>=11) RFC 4578
      94 Client NDI 3 RFC 4578
      95 LDAP N RFC 3679
      96 IPv6 Transition N RFC 3679
      97 UUID/GUID N RFC 4578
      98 User-Auth N RFC 2485
      99 GEOCONF_CIVIC n (n>=3) RFC 4776
      100 PCode N RFC 4833
      101 TCode N RFC 4833
      102-107 REMOVED/Unassigned - -
      108 REMOVED/Unassigned - -
      109 Unassigned - -
      110 REMOVED/Unassigned - -
      111 Unassigned - -
      112 Netinfo Address N RFC 3679
      113 Netinfo Tag N RFC 3679
      114 URL N RFC 3679
      115 REMOVED/Unassigned - -
      116 Auto-Config 1 RFC 2563
      117 Name Service Search N (N>=2) RFC 2937
      118 Subnet Selection Option 4 RFC 3011
      119 Domain Search n RFC 3397
      120 SIP Servers DHCP Option n RFC 3361
      121 Classless Static Route Option n RFC 3442
      122 CCC N (N<=255) RFC 3495
      123 GeoConf Option 16 RFC 6225
      124 V-I Vendor Class - RFC 3925
      125 V-I Vendor-Specific Information n RFC 3925
      126 Removed/Unassigned - -
      127 Removed/Unassigned - -
      128 PXE - undefined (vendor specific) - RFC 4578
      128 Etherboot signature. 6 bytes: E4:45:74:68:00:00 - RFC 4578
      128 DOCSIS "full security" server IP address - RFC 4578
      128 TFTP Server IP address (for IP Phone software load) - RFC 4578
      129 PXE - undefined (vendor specific) - RFC 4578
      129 Kernel options. Variable length string - RFC 4578
      129 Call Server IP address - RFC 4578
      130 PXE - undefined (vendor specific) - RFC 4578
      130 Ethernet interface. Variable length string. - RFC 4578
      130 Discrimination string (to identify vendor) - RFC 4578
      131 PXE - undefined (vendor specific) - RFC 4578
      131 Remote statistics server IP address - RFC 4578
      132 PXE - undefined (vendor specific) - RFC 4578
      132 IEEE 802.1Q VLAN ID - RFC 4578
      133 PXE - undefined (vendor specific) - RFC 4578
      133 IEEE 802.1D/p Layer 2 Priority - RFC 4578
      134 PXE - undefined (vendor specific) - RFC 4578
      134 Diffserv Code Point (DSCP) for VoIP signalling and media streams - RFC 4578
      135 PXE - undefined (vendor specific) - RFC 4578
      135 HTTP Proxy for phone-specific applications - RFC 4578
      136 OPTION_PANA_AGENT 4*N (N>=1) RFC 5192
      137 OPTION_V4_LOST N RFC 5223
      138 OPTION_CAPWAP_AC_V4 4*N (N>=1) RFC 5417
      139 OPTION-IPv4_Address-MoS N RFC 5678
      140 OPTION-IPv4_FQDN-MoS N RFC 5678
      141 SIP UA Configuration Service Domains n (n<=255) RFC 6011
      142 OPTION-IPv4_Address-ANDSF 4*N RFC 6153
      143 OPTION-IPv6_Address-ANDSF 16*N RFC 6153
      144 GeoLoc 16 RFC 6225
      145-149 Unassigned - -
      150 TFTP server address (Tentatively Assigned - 2005-06-23) 4*N (N>=1) RFC 5859
      150 Etherboot - -
      150 GRUB configuration path name - -
      151 Unassigned - -
      152 Unassigned - -
      153-174 Unassigned - -
      175 Etherboot (Tentatively Assigned - 2005-06-23) - -
      176 IP Telephone (Tentatively Assigned - 2005-06-23) - -
      177 Etherboot (Tentatively Assigned - 2005-06-23) - -
      177 PacketCable and CableHome (replaced by 122) - -
      178-207 Unassigned - -
      208 PXELINUX Magic 4 RFC 5071
      209 Configuration File N RFC 5071
      210 Path Prefix N RFC 5071
      211 Reboot Time 4 RFC 5071
      212 OPTION_6RD n RFC 5969
      213 Access Network Domain Name DHCPv4 Option n RFC 5986
      214-219   - -
      220 Subnet Allocation Option (Tentatively Assigned - 2005-06-23) - -
      221 Virtual Subnet Selection Option (Tentatively Assigned - 2005-06-23) n (n>=1) RFC 6607
      222-223 Unassigned - -
      224-254 Reserved (Private Use) - -
      255 End 1 -

      参考标准

      标准 描述
      RFC 951 Bootstrap Protocol (BOOTP)
      RFC 1542 Clarifications and Extensions for the Bootstrap Protocol
      RFC 2131 Dynamic Host Configuration Protocol
      RFC 2132 DHCP Options and BOOTP Vendor Extensions
      IANA协议注册表 Dynamic Host Configuration Protocol (DHCP) and Bootstrap Protocol (BOOTP) Parameters