大家好,我是IT售前工程師Bernie。
本文簡要介紹下,在計算機網絡中DHCP的技術原理,歡迎閱讀。
我們知道,無論是手機、電腦、筆記本,還是其他智能終端,只要連上wifi或者網線,就能夠直接上網。當我們查看筆記本的IP信息時,就會顯示當前設備的IP地址、網關地址、子網掩碼等,這些信息是計算機網絡中數據包中必須的,放在數據報頭。
但是,我們并沒有手動的配置上述信息。
設備的IP是怎么來的呢?
小伙伴們不妨查看下自己的筆記本Inte.NET選項,不出意外的話就會顯示“自動獲得IT地址的默認配置”。其實,這些IP是通過DHCP服務器下發,自動獲取的。
接下來,我們以簡單辦公場景講一下DHCP服務的概念和技術原理。
什么是DHCP?
DHCP的英文全稱是Dynamic Host Configuration Protocol,動態主機配置協議。
直白一點講就是:計算機網絡中,端設備可以在DHCP服務器上動態獲得IP地址、子網掩碼和網關地址,以便可以在網絡中標注自己的身份,獲得上網的資格。
比如一個局域網中,有一臺pc和一部手機,雙方都連接到路由器。那么,pc和手機都可以從路由器上得到IP地址、網關地址和子網掩碼。在這里,路由器就是他們的dhcp服務器。
那么他們是如何獲取IP地址的呢?這里要重點講一下
DHCP服務原理
第1步:discover
當一臺終端設備,插入網線或者連接WIFI時。在初始化階段,它是沒有IP地址的。那么這時第一個任務就是通過廣播的形式尋找子網下的dhcp服務器。
我們知道,在計算機網絡中任何一條數據包都是要包含源IP地址、目的IP地址的。這里就矛盾了,因為pc3發送廣播消息的目的就是獲取IP地址,它既不知道自己的IP地址應該是多少,也不知道dhcp服務器的地址是多少。
這里往往會給這個數據包賦值源IP為0.0.0.0,目的IP為255.255.255.255.
特別說明一點, 0.0.0.0并不是一個真正意義的IP地址,它其實是缺省路由,即:告訴對方我不知自己IP是多少,所以用0.0.0.0代替。
而255.255.255.255也不是一個嚴格意義的IP地址,它是限制廣播地址,即:告訴同一個網段的所有端設備,這里的設備都注意啦!255.255.255.255是不能被路由器轉發的,因為它本身并沒有太多意義。
這個廣播消息會被二層交換機發送到同一個vlan下的所有設備中,包括pc1、pc2、dhcp1和dhcp2。
第2步:offer
由于pc1和pc2是端設備,不具備dhcp的功能,他們會自動忽略這個廣播消息,
dhcp server1和dhcp server2接收到IP地址獲取的請求消息時,他們都會分配一個IP地址、網關地址和掩碼等信息給pc3。
這時候,pc3就會接收到兩套不同的IP信息,他們都可以正常使用。同一網段中有幾個dhcp服務器,就會分配給pc3幾套IP地址信息。
注意:這里不僅僅包含IP信息,還包含這個IP的使用期限,過了期限就會自動回收或者自動續期。比如:寬帶路由器的dhcp租用周期最小1min,最大是兩天,默認值為120min。
第3步:request
上面pc3一條廣播得到了2套不一樣的IP信息,顯然它是不能全部霸占的,只能使用1套。于是,pc3會選取其中的一套(一般選擇最先到達的那個)。比如IP1的先到達,pc3就會選擇IP1作為自己的IP地址信息。
這樣就結束了?
并沒有!
因為dhcp server1并不知道自己提供的IP地址被選中了,同樣,dhcp server2也不知道自己提供的IP地址被淘汰了。
所以需要pc3發一條廣播消息告知自己的選擇結果。
有的小伙伴可能會感到奇怪,明明pc3已經有了自己的IP了,為何數據報中還是用0.0.0.0.這是因為還沒有得到確認,也不能發送單播告知dhcp server1,其他的dhcp server也要知道的。
第4步:ack
終于到了最后一步,這一步的工作就是確認。
當收到pc3的選擇結果后,dhcp server1會更新自己的路由表和mac 地址映射表,同時也會發送一條確認消息給pc3。
由于dhcp2之前分配給pc3的IP地址落選了,那么,它將把IP回收,以便在后續分配給其他的接入設備。同時,也會更新自己的mac地址表和路由表。
總結
以上便是計算機網絡終端設備獲取DHCP服務的全過程,整個過程包含4個部分:discover、offer、request和ack。他們是層層遞進、環環相扣的關系。
特別說明:DHCP服務器分配出去的IP是臨時租用!一般情況下,只要不設置租用時間為infinite(永久租用),端設備需要在租期到達50%的時候,給dhcp server發送request數據包更新自己的租用時間。