dhcp client一次在不同的dhcp sever之間切換時抓包記錄
筆者的dhcp client 一次在不同的dhcp sever之間切換時 (從10.0.2.× 網段到10.0.9.x網段), 抓包如下:
www.2cto.com
其中的第四個包NAK的數據內容如下:
0110 00 00 00 00 00 00 63 82 53 63 35 01 06 36 04 0a ......c. Sc5..6..
0120 00 09 01 38 1f 72 65 71 75 65 73 74 65 64 20 61 ...8.req uested a
0130 64 64 72 65 73 73 20 6e 6f 74 20 61 76 61 69 6c ddress n ot avail
0140 61 62 6c 65 ff 00 00 00 00 00 00 00 00 00 00 00 able.... ........
0150 00 00 00 00 00 00 ......
其代表的意思是 新的DHCP server 10.0.9.1 發現 Client發過來的 DHCP Request 他本身處理不了,所以他馬上發了一個NAK讓他不要再發了。
然後Client端發了一個廣播(discover),希望得到新的IP。Server端用Offer包返回。
然後Client端發了一個廣播(Request),Server端用ACK包返回。分配IP成功。
Client端用獲取的IP向組內廣播(Inform), 意思是別人就不要用這個IP了。
(http://tools.ietf.org/html/rfc2131)
Comments:DHCP NACK Shoudl be sent to any PC
requesting DHCP connectivity from the firewall interface, if a DHCPREQUEST for a
non-configured network is received. THis terminates the DHCPREQUEST sequence,
and starts the DHCPDISCOVER process by the computer.
----------
另外,DHCP server能不能發NAK , 取決於 server 的配置文件dhcp.conf中是否有authoritative。如果沒有, server端就不會發NAK, client端會反復發3個(Linux)或者7個(Windows)的Request, 之後才能發DIiscover重新獲取IP,非常慢。如果Client部署在Windows上的,常需要等一分鐘左右。