計算機網路之三:DHCP協議
一:DHCP工作原理
1.什麼是DHCP協議
DHCP,動態主機配置協議,前身是BOOTP協議,是一個區域網的網路協議,使用UDP協議工作,常用的2個埠:67(DHCP server),68(DHCP client)。DHCP通常被用於區域網環境,主要作用是集中的管理、分配IP地址,使client動態的獲得IP地址、Gateway地址、DNS伺服器地址等資訊,並能夠提升地址的使用率。簡單來說,DHCP就是一個不需要賬號密碼登入的、自動給內網機器分配IP地址等資訊的協議。
2.DHCP協議中的報文
DHCP報文共有一下幾種:
DHCP DISCOVER : 客戶端開始DHCP過程傳送的包,是DHCP協議的開始
DHCP OFFER : 伺服器接收到DHCP DISCOVER之後做出的響應,它包括了給予客戶端的IP(yiaddr)、客戶端的MAC地址、租約過期時間、伺服器的識別符以及其他資訊
DHCP REQUEST : 客戶端對於伺服器發出的DHCP OFFER所做出的響應。在續約租期的時候同樣會使用。
DHCP ACK : 伺服器在接收到客戶端發來的DHCP REQUEST之後發出的成功確認的報文。在建立連線的時候,客戶端在接收到這個報文之後才會確認分配給它的IP和其他資訊可以被允許使用。
DHCP NAK : DHCP ACK的相反的報文,表示伺服器拒絕了客戶端的請求。
DHCP RELEASE : 一般出現在客戶端關機、下線等狀況。這個報文將會使DHCP伺服器釋放發出此報文的客戶端的IP地址
DHCP INFORM : 客戶端發出的向伺服器請求一些資訊的報文
DHCP DECLINE : 當客戶端發現伺服器分配的IP地址無法使用(如IP地址衝突時),將發出此報文,通知伺服器禁止
使用該IP地址。
DHCP 的 工作流程:
3.DHCP協議包的組成
Xid : 隨機生成的一段字串,兩個資料包擁有相同的xid說明他們屬於同一次會話
Ciaddr : 客戶端會在傳送請求時將自己的ip地址放在此處
Yiaddr : 伺服器會將想要分配給客戶端的ip地址放在此處
Siaddr : 一般來說是伺服器的ip地址.但是注意!根據openwrt原始碼給出的註釋,當報文的源地址、siaddr、option>server_id欄位不一致(有經過跨子網轉發)時,通常認為option>srever_id欄位為真正的伺服器ip,siaddr有可能是多次路由跳轉中的某一個路由的ip (下圖中wireshark抓包中也有標明siaddr為nextserver ip address)
Chaddr : 客戶端的mac地址
Giaddr : 如果需要跨子網進行DHCP地址發放,則在此處填入經過的路由器的ip地址
Sname : 伺服器主域名
Options : 可以自由新增的部分,用於存放客戶端向伺服器請求資訊和伺服器的應答資訊
二:DHCP客戶端
1.什麼是DHCP客戶端
DHCP客戶端一般來說是區域網中獨立的PC主機。
DHCP客戶端發出的DHCP DISCOVER包是DHCP協議的開始。
延續租期、發現、釋放IP地址等大多數DHCP中的行為都是由DHCP客戶端主動發起。
2.DHCP自動狀態機
DHCP獲得ip地址的4步驟:discover>offer>request>ack(nak)
DHCP重新整理租期的步驟:request>ack(nak)
DHCP釋放ip的步驟:release
wnr2000v5 1.0.0.8的程式碼中沒有發現rebooting、initreboot狀態。所以DHCP client的狀態一般從init開始,完整的狀態機如下圖(紅色代表客戶端的狀態跳轉):
三:DHCP服務端
1.什麼是DHCP SERVER
DHCP SERVER指的是伺服器端,在路由器上體現的就是給LAN端動態分配IP的功能。DHCP SERVER負責接收客戶端的DHCP請求,管理LAN端所有的IP網路設定資料,相比於BOOTP,DHCP透過“租約”來實現動態分配IP的功能,實現IP的分時多工,從而解決IP資源短缺的問題。其地址分配方式有三種,分別是人工配置(由管理員對每臺具體的計算機指定一個地址),自動配置(伺服器為第一次連線網路的計算機分配一個永久地址),動態配置(在一定的期限內將地址租給計算機,租期結束後客戶必須續租或者停用該地址),而對於路由器,經常使用的地址分配方式是動態配置。
2.兩個租約表
靜態租約表: 對應一個靜態租約儲存檔案,server執行時從檔案中讀取靜態租約表。
動態租約表: 對應一個週期儲存檔案,server週期性將租約表存進該檔案,在程式開始時將會讀取上次存放的租約表。(租約表記錄了當前所有分配的租約,包括靜態連結的)。
3.基本原理
原則上DHCP SERVER是一直處在被動接受請求的狀態,當有客戶端請求時,伺服器會讀取獲得客戶端當前所在的狀態以及客戶端的資訊,並在靜態租約表和動態租約表中進行檢索找到相應的表項,再根據客戶端的狀態執行不同的回覆。當收到客戶端的首次請求時,DHCP伺服器先查詢靜態租約表;若存在請求的表項,返回這個客戶的靜態IP地址;否則,從IP地址池中選擇可用的IP分配給客戶,並新增資訊到動態資料庫中。此外,伺服器將會週期性的重新整理租約表寫入檔案存檔,在這個過程中會順便對動態租約表進行租期檢查。
執行回覆動作:
DHCPOFFER:
靜態租用: 首先匹配MAC地址,看是否能在靜態租約表中找到對應的項,若能找到就把IP分配給他。靜態表中的IP不能被其他客戶使用。
動態租用:
a.server試圖分配給client上次分配過的IP,在這之前檢查這個IP是否正在使用。
b.discover中含有request ip 時,檢查該IP是否在地址池範圍,是否正在使用,是否到期,是否是靜態IP,網路上是否已經存在。
c.discover不含request ip,從地址池上尋找一個最小的可用IP分配。
DHCPACK: 根據是否含有request ip和server ip識別客戶端現在init_reboot,selecting,renewing/rebinding中的哪個狀態,並根據以下規則執行DHCPACK回覆:
a.若client處於selecting狀態,驗證request ip和server ip是否同伺服器中的匹配。
b.若client處於init_reboot狀態,驗證request ip是否符合租約記錄。
c.若client處於renewing/rebinding狀態,驗證client ip address是否符合租約記錄。
DHNAK :
a.請求的IP是靜態IP,但是MAC地址無法與其對應。
b.上面DHCPACK中驗證失敗。
伺服器還可能會收到其他包:
DHCPDECLINE: server會把租約表中相關client硬體地址置空,並儲存這個地址一段時間。
DHCPRELEASE: 清空租期回收IP。
DHCPINFORM: 回覆DHCPACK,資料包含有關於server的資訊。
四:解析DHCP的工作方式
1.當一臺機器新加入一個網路的時候,它只知道自己的MAC地址,如何獲取IP呢? 這一步我們稱為DHCP Discover. 新機器使用IP地址0.0.0.0傳送一個廣播包,目的IP為255.255.255.255. 廣播包封裝了UDP,UDP封裝了BOOTP。 廣播報的內容像這樣:
2.如果一個網路管理員在網路裡面配置了DHCP Server的話,他就相當於這些IP的管理員,他立刻知道來了一個“新人”,會租給它一個IP地址,這個過程我們稱為DHCP Offer. DHCP Offer的格式如下:
3.如果有多個DHCP Server,這臺新機器會收到多個IP地址,它會選擇其中一個DHCP Offer,一般是最先到達的那個,並且會向網路傳送一個DHCP Request廣播資料包,包中包含客戶端的MAC地址,接受的租約中的IP地址,提供此租約的DHCP服務地址等。
4.DHCP Server接收到客戶機的DHCP request之後,會廣播返回給客戶機一個DHCPACK 訊息包,表明已接收客戶機的選擇。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2214258/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [計算機網路]協議棧計算機網路協議
- 計算機網路七層協議計算機網路協議
- 計算機網路之十二:HTTP協議計算機網路HTTP協議
- 計算機網路之十:路由協議計算機網路路由協議
- 計算機網路之六:UDP協議計算機網路UDP協議
- 計算機網路之四:ICMP協議計算機網路協議
- 計算機網路之十三:HTTPS協議計算機網路HTTP協議
- 計算機網路之七:TCP協議(1)計算機網路TCP協議
- 【計算機網路知識掃盲】05、計算機網路協議及網路模型(轉)計算機網路協議模型
- 計算機網路與協議學習路線圖計算機網路協議
- 計算機網路資料篇(二)——快速理解網路協議計算機網路協議
- 計算機網路之TCP/IP協議簡介計算機網路TCP協議
- 漫談計算機網路:網路層 ------ 重點:IP協議與網際網路路由選擇協議計算機網路協議路由
- 計算網路之MSTP協議與VRRP協議協議VR
- 計算機網路實驗10:靜態路由協議計算機網路路由協議
- 計算機網路 之 TCP協議報文結構計算機網路TCP協議
- 計算機網路層次與對應協議的理解計算機網路協議
- 計算機網路學習筆記(10) TCP/IP協議棧 之TELNET協議計算機網路筆記TCP協議
- 動態主機配置協議DHCP協議
- 動態主機配置協議(DHCP)協議
- DHCP 動態主機設定協議協議
- 網際網路協議入門-通俗易懂的講計算機網路5層結構協議計算機網路
- 【網路協議】UDP協議協議UDP
- 網際網路協議入門-通俗易懂的講計算機網路5層結構(二)協議計算機網路
- 《計算機網路微課堂》3-10 乙太網交換機的生成樹協議 STP計算機網路協議
- 協議森林16 小美的桌號(DHCP協議)協議
- 計算機網路之八:TCP協議(2) TCP可靠傳輸的實現計算機網路TCP協議
- 《計算機網路微課堂》實驗6 生成樹協議STP的功能計算機網路協議
- 計算機常見介面與協議計算機協議
- 計算機網路中的通訊子網:架構、協議與技術簡介計算機網路架構協議
- 什麼是DHCP動態主機配置協議協議
- IP協議(網路層協議)協議
- 網路協議協議
- 計算機網路 -- 計算機網路的效能指標計算機網路指標
- DHCP協議工作流程分析協議
- 計算機網路:這是一份全面& 詳細 HTTP協議 學習攻略計算機網路HTTP協議
- 《計算機網路微課堂》實驗2 MAC地址,IP地址,ARP協議計算機網路Mac協議
- 【網路協議】IP協議、ARP協議、RARP協議協議