封包格式

DHCP的封包格式如右图所示,各字段定义如下: FIELD OCTETS DESCRIPTION DHCP报文格式 DHCP报文格式 OP: 若是 client 送给 server 的封包,设为 1 ,反向为 2。HTYPE 硬件类别,Ethernet 为 1。 HLEN: 硬件地址长度, Ethernet 为 6。 HOPS: 若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0。 TRANSACTION ID: DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。 SECONDS: Client 端启动时间(秒)。 FLAGS: 从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。 ciaddr: 要是 client 端想继续使用之前取得之 IP 地址,则列于这里。 yiaddr: 从 server 送回 client 之 DHCP OFFER 与 DHCPACK封包中,此栏填写分配给 client 的 IP 地址。 siaddr: 若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK封包中,此栏填写开机程序代码所在 server 之地址。 giaddr: 若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0。 chaddr: Client 之硬件地址。 sname: Server 之名称字符串,以 0x00 结尾。 file: 若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。 options: 允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如:Netmask、Gateway、DNS、等等)。其长度可变,同时可携带多个选项,每一选项之第一个 byte 为信息代码,其后一个 byte 为该项数据长度,最后为项目内容。CODE LEN VALUE 此字段完全兼容 BOOTP ,同时扩充了更多选项。其中,DHCP封包可利用编码为 0x53 之选项来设定封包类别

DHCP中继代理

DHCPRelay(DHCPR)DHCP中继 也叫做DHCP中继代理。DHCP中继代理,就是在DHCP服务器和客户端 之间转发DHCP数据包。当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息。DHCP中继代理的数据转发,与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包内容。而DHCP中继代理接收到DHCP消息后,重新生成一个DHCP消息,然后转发出去。 在DHCP客户端看来,DHCP中继代理就像DHCP服务器;在DHCP服务器看来,DHCP中继代理就像DHCP客户端。