DHCP協議部分實現過程如下
①:DHCP 服務器被動打開 UDP 端口 67,等待客戶端發來的報文。
②:DHCP 客戶從 UDP 端口 68發送 DHCP 發現報文。
③:凡收到 DHCP 發現報文的 DHCP 服務器都發出 DHCP 提供報文,因此 DHCP 客戶可能收到多個 DHCP 提供報文。
④:DHCP 客戶從幾個 DHCP 服務器中選擇其中的一個,並向所選擇的 DHCP 服務器發送 DHCP 請求報文。
⑤:被選擇的 DHCP 服務器發送確認報文DHCPACK,進入已綁定狀態,並可開始使用得到的臨時 IP 地址了。
書面上的文字怎麼說我們都會覺得有點晦澀,雖然這個解釋其實已經非常明了了。
不過前幾天啟動linux的時候,我注意到了這個小細節,linux啟動過程中把這個步驟一步一步在屏幕上輸出,我覺得能讓我們看的更直觀,就截了個圖,呵呵。
如下圖:
這個圖裡面,我上面說的從第2步到第5步都非常明了(第一步是服務端的,我們看不到),端口,MAC,狀態這些都清楚的標明了。
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4 //第2步,發送DHCP發現報文
DHCPOFFER from 192.68.116.254 //第3步,收到DHCP提供報文
DHCPREQUEST on eth0 to 255.255.255.255 port 67 //第4步,發送DHCP請求報文
DHCPACK from 192.168.116.254 //第5步,收到DHCP確認報文DHCPACK
bound to 192.168.116.128 -- renewal in 826 seconds //已綁定,826秒應該是0.5T,也就是IP租用期的一半,到時間就再次發送請求更新租用期
done.
Linux真是個好東西。