首先,我們考慮一個主機如何獲取IP地址?
有兩種獲取方法,一種是靜態配置,就是從網絡管理員獲取一個給定的IP地址,也叫硬編碼,還有一種就是動態配置IP地址,這就是我們即將要講的DHCP協議,動態主機配置協議。
靜態配置
硬編碼。
硬編碼,就是像windows系統中選擇給定的IP地址,我們需要指定IP地址,子網掩碼和默認網關。默認網關是什么呢?默認網關就是屬于這個子網的所有主機,如果將來要離開這個子網,就會被統一轉發給這個默認網關指定的IP,我們可以認為它是一個轉發路由。如果有多個默認網關,則可以選擇其中一個就可以了。
DHCP協議
從服務器動態獲取:
? IP地址
? 子網掩碼
? 默認網關地址
? DNS服務器名稱與IP地址“ 即插即用”
允許地址重用
支持在用地址續租
支持移動用戶加入網絡
DHCP協議交換信息的基本步驟
- 主機廣播 “ DHCP discover” (發現報文)
- DHCP服務器利用 “ DHCP offer” (提供報文) 進行響應
- 主機請求IP地址: “ DHCP request” (請求報文)
- DHCP服務器分配IP地址: “ DHCP ack” (確認報文)
DHCP工作過程示例:
DHCP discover
客戶端源地址四個0表示本機,端口號68和服務器的67都是DHCP指定的。發送一個廣播報文。在這個網絡中的所有主機包括服務器都會收到這個發現報文,但是只有DHCP服務器才會對其進行響應。DHCP offer
我們看到服務器的提供報文里,也是通過廣播地址發送的,這很容易理解,因為這個是時候請求主機還沒有IP地址,所以需要進行廣播,請求主機才能夠收到,提供報文會將所分配的IP地址加在報文里,圖中的223.1.2.4。那么主機如何知道這是它請求的服務器發來的提供報文呢,通過transaction ID來確認。DHCP request
這里有一個問題,就是為什么主機發送依然是采取廣播的方式,實際上這里的作用是,因為整個網絡中,不止一個DHCP服務器,所以采取廣播的方式,同時也在告訴其他的dhcp服務器,我現在已經確定了我所需要請求的dhcp服務器了,你們別給我發消息了。DHCP ack
服務器收到請求后,會發送確認報文,主機收到之后,就確認可以使用223.1.2.4作為它的IP地址了。
我們可以看到實際上dhcp之間的信息交換,可以分為兩塊,一塊是主機線廣播確認找到提供IP的dhcp服務器,然后再從確認的dhcp服務器收取IP地址。
DHCP協議在應用層實現
- 請求報文封裝到UDP數據報中
- IP廣播
- 鏈路層廣播(e.g. 以太網廣播)
- DHCP服務器構造ACK報文
- 包括分配給客戶的IP地址、子網掩碼、默認網關、 DNS服務器地址