一:DHCP工作原理
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、中山ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的中山網(wǎng)站制作公司1.什么是DHCP協(xié)議
DHCP,動態(tài)主機(jī)配置協(xié)議,前身是BOOTP協(xié)議,是一個局域網(wǎng)的網(wǎng)絡(luò)協(xié)議,使用UDP協(xié)議工作,常用的2個端口:67(DHCP server),68(DHCP client)。DHCP通常被用于局域網(wǎng)環(huán)境,主要作用是集中的管理、分配IP地址,使client動態(tài)的獲得IP地址、Gateway地址、DNS服務(wù)器地址等信息,并能夠提升地址的使用率。簡單來說,DHCP就是一個不需要賬號密碼登錄的、自動給內(nèi)網(wǎng)機(jī)器分配IP地址等信息的協(xié)議。
2.DHCP協(xié)議中的報文
DHCP報文共有一下幾種:
DHCP DISCOVER : 客戶端開始DHCP過程發(fā)送的包,是DHCP協(xié)議的開始
DHCP OFFER : 服務(wù)器接收到DHCP DISCOVER之后做出的響應(yīng),它包括了給予客戶端的IP(yiaddr)、客戶端的MAC地址、租約過期時間、服務(wù)器的識別符以及其他信息
DHCP REQUEST : 客戶端對于服務(wù)器發(fā)出的DHCP OFFER所做出的響應(yīng)。在續(xù)約租期的時候同樣會使用。
DHCP ACK : 服務(wù)器在接收到客戶端發(fā)來的DHCP REQUEST之后發(fā)出的成功確認(rèn)的報文。在建立連接的時候,客戶端在接收到這個報文之后才會確認(rèn)分配給它的IP和其他信息可以被允許使用。
DHCP NAK : DHCP ACK的相反的報文,表示服務(wù)器拒絕了客戶端的請求。
DHCP RELEASE : 一般出現(xiàn)在客戶端關(guān)機(jī)、下線等狀況。這個報文將會使DHCP服務(wù)器釋放發(fā)出此報文的客戶端的IP地址
DHCP INFORM : 客戶端發(fā)出的向服務(wù)器請求一些信息的報文
DHCP DECLINE : 當(dāng)客戶端發(fā)現(xiàn)服務(wù)器分配的IP地址無法使用(如IP地址沖突時),將發(fā)出此報文,通知服務(wù)器禁止
使用該IP地址。
DHCP 的 工作流程:
3.DHCP協(xié)議包的組成
Xid : 隨機(jī)生成的一段字符串,兩個數(shù)據(jù)包擁有相同的xid說明他們屬于同一次會話
Ciaddr : 客戶端會在發(fā)送請求時將自己的ip地址放在此處
Yiaddr : 服務(wù)器會將想要分配給客戶端的ip地址放在此處
Siaddr : 一般來說是服務(wù)器的ip地址.但是注意!根據(jù)openwrt源碼給出的注釋,當(dāng)報文的源地址、siaddr、option->server_id字段不一致(有經(jīng)過跨子網(wǎng)轉(zhuǎn)發(fā))時,通常認(rèn)為option->srever_id字段為真正的服務(wù)器ip,siaddr有可能是多次路由跳轉(zhuǎn)中的某一個路由的ip (下圖中wireshark抓包中也有標(biāo)明siaddr為nextserver ip address)
Chaddr : 客戶端的mac地址
Giaddr : 如果需要跨子網(wǎng)進(jìn)行DHCP地址發(fā)放,則在此處填入經(jīng)過的路由器的ip地址
Sname : 服務(wù)器主域名
Options : 可以自由添加的部分,用于存放客戶端向服務(wù)器請求信息和服務(wù)器的應(yīng)答信息
二:DHCP客戶端
1.什么是DHCP客戶端
DHCP客戶端一般來說是局域網(wǎng)中獨立的PC主機(jī)。
DHCP客戶端發(fā)出的DHCP DISCOVER包是DHCP協(xié)議的開始。
延續(xù)租期、發(fā)現(xiàn)、釋放IP地址等大多數(shù)DHCP中的行為都是由DHCP客戶端主動發(fā)起。
2.DHCP自動狀態(tài)機(jī)
DHCP獲得ip地址的4步驟:discover->offer->request->ack(nak)
DHCP刷新租期的步驟:request->ack(nak)
DHCP釋放ip的步驟:release
wnr2000v5 1.0.0.8的代碼中沒有發(fā)現(xiàn)rebooting、init-reboot狀態(tài)。所以DHCP client的狀態(tài)一般從init開始,完整的狀態(tài)機(jī)如下圖(紅色代表客戶端的狀態(tài)跳轉(zhuǎn)):
三:DHCP服務(wù)端
1.什么是DHCP SERVER
DHCP SERVER指的是服務(wù)器端,在路由器上體現(xiàn)的就是給LAN端動態(tài)分配IP的功能。DHCP SERVER負(fù)責(zé)接收客戶端的DHCP請求,管理LAN端所有的IP網(wǎng)絡(luò)設(shè)定資料,相比于BOOTP,DHCP通過“租約”來實現(xiàn)動態(tài)分配IP的功能,實現(xiàn)IP的時分復(fù)用,從而解決IP資源短缺的問題。其地址分配方式有三種,分別是人工配置(由管理員對每臺具體的計算機(jī)指定一個地址),自動配置(服務(wù)器為第一次連接網(wǎng)絡(luò)的計算機(jī)分配一個永久地址),動態(tài)配置(在一定的期限內(nèi)將地址租給計算機(jī),租期結(jié)束后客戶必須續(xù)租或者停用該地址),而對于路由器,經(jīng)常使用的地址分配方式是動態(tài)配置。
2.兩個租約表
靜態(tài)租約表: 對應(yīng)一個靜態(tài)租約存儲文件,server運行時從文件中讀取靜態(tài)租約表。
動態(tài)租約表: 對應(yīng)一個周期存儲文件,server周期性將租約表存進(jìn)該文件,在程序開始時將會讀取上次存放的租約表。(租約表記錄了當(dāng)前所有分配的租約,包括靜態(tài)鏈接的)。
3.基本原理
原則上DHCP SERVER是一直處在被動接受請求的狀態(tài),當(dāng)有客戶端請求時,服務(wù)器會讀取獲得客戶端當(dāng)前所在的狀態(tài)以及客戶端的信息,并在靜態(tài)租約表和動態(tài)租約表中進(jìn)行檢索找到相應(yīng)的表項,再根據(jù)客戶端的狀態(tài)執(zhí)行不同的回復(fù)。當(dāng)收到客戶端的首次請求時,DHCP服務(wù)器先查找靜態(tài)租約表;若存在請求的表項,返回這個客戶的靜態(tài)IP地址;否則,從IP地址池中選擇可用的IP分配給客戶,并添加信息到動態(tài)數(shù)據(jù)庫中。此外,服務(wù)器將會周期性的刷新租約表寫入文件存檔,在這個過程中會順便對動態(tài)租約表進(jìn)行租期檢查。
執(zhí)行回復(fù)動作:
DHCPOFFER:
靜態(tài)租用: 首先匹配MAC地址,看是否能在靜態(tài)租約表中找到對應(yīng)的項,若能找到就把IP分配給他。靜態(tài)表中的IP不能被其他客戶使用。
動態(tài)租用:
a.server試圖分配給client上次分配過的IP,在這之前檢查這個IP是否正在使用。
b.discover中含有request ip 時,檢查該IP是否在地址池范圍,是否正在使用,是否到期,是否是靜態(tài)IP,網(wǎng)絡(luò)上是否已經(jīng)存在。
c.discover不含request ip,從地址池上尋找一個最小的可用IP分配。
DHCPACK: 根據(jù)是否含有request ip和server ip識別客戶端現(xiàn)在init_reboot,selecting,renewing/rebinding中的哪個狀態(tài),并根據(jù)以下規(guī)則執(zhí)行DHCPACK回復(fù):
a.若client處于selecting狀態(tài),驗證request ip和server ip是否同服務(wù)器中的匹配。
b.若client處于init_reboot狀態(tài),驗證request ip是否符合租約記錄。
c.若client處于renewing/rebinding狀態(tài),驗證client ip address是否符合租約記錄。
DHNAK :
a.請求的IP是靜態(tài)IP,但是MAC地址無法與其對應(yīng)。
b.上面DHCPACK中驗證失敗。
服務(wù)器還可能會收到其他包:
DHCPDECLINE: server會把租約表中相關(guān)client硬件地址置空,并保存這個地址一段時間。
DHCPRELEASE: 清空租期回收IP。
DHCPINFORM: 回復(fù)DHCPACK,數(shù)據(jù)包含有關(guān)于server的信息。
四:解析DHCP的工作方式
1.當(dāng)一臺機(jī)器新加入一個網(wǎng)絡(luò)的時候,它只知道自己的MAC地址,如何獲取IP呢? 這一步我們稱為DHCP Discover. 新機(jī)器使用IP地址0.0.0.0發(fā)送一個廣播包,目的IP為255.255.255.255. 廣播包封裝了UDP,UDP封裝了BOOTP。 廣播報的內(nèi)容像這樣:
2.如果一個網(wǎng)絡(luò)管理員在網(wǎng)絡(luò)里面配置了DHCP Server的話,他就相當(dāng)于這些IP的管理員,他立刻知道來了一個“新人”,會租給它一個IP地址,這個過程我們稱為DHCP Offer. DHCP Offer的格式如下:
3.如果有多個DHCP Server,這臺新機(jī)器會收到多個IP地址,它會選擇其中一個DHCP Offer,一般是最先到達(dá)的那個,并且會向網(wǎng)絡(luò)發(fā)送一個DHCP Request廣播數(shù)據(jù)包,包中包含客戶端的MAC地址,接受的租約中的IP地址,提供此租約的DHCP服務(wù)地址等。
4.DHCP Server接收到客戶機(jī)的DHCP request之后,會廣播返回給客戶機(jī)一個DHCPACK 消息包,表明已接收客戶機(jī)的選擇。
當(dāng)前標(biāo)題:網(wǎng)絡(luò)之DHCP原理-創(chuàng)新互聯(lián)
地址分享:http://jinyejixie.com/article4/diedoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、自適應(yīng)網(wǎng)站、域名注冊、網(wǎng)站營銷、企業(yè)建站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容