在終端規(guī)模較大的網(wǎng)絡(luò)中手工配置IP地址時,為避免IP地址重復(fù),需要事先規(guī)劃每個終端的IP地址,導(dǎo)致工作量大且容易出錯!
當(dāng)終端位置經(jīng)常變更時(例如企業(yè)出差人員的便攜電腦),每次變更都需要重新手工配置IP地址,煩神又煩力呀...
某些特殊的無盤工作站,無法手工配置IP地址,該如何與網(wǎng)絡(luò)實現(xiàn)互通?
其實吧,有了動態(tài)主機(jī)配置協(xié)議DHCP(Dynamic Host Configuration Protocol),上面的問題都可以解決了。小伙伴們再也不用擔(dān)心手工配錯,費(fèi)神費(fèi)力了。
DHCP能夠?qū)崿F(xiàn)動態(tài)為主機(jī)分配IP地址,而且是目前應(yīng)用很廣泛的一種技術(shù)。例如,辦公室,網(wǎng)吧里的固定PC;咖啡廳,機(jī)場等提供WIFI接入的地方用手機(jī)上網(wǎng),這些都會用到DHCP。
本期就由小編來給大家普及下DHCP的各種工作原理。
DHCP工作原理
一、什么是DHCP?
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é)議。
二、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的工作流程:
三、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 客戶端
一、什么是DHCP客戶端?
DHCP客戶端一般來說是局域網(wǎng)中獨(dú)立的PC主機(jī)。
DHCP客戶端發(fā)出的DHCP DISCOVER包是DHCP協(xié)議的開始。
延續(xù)租期、發(fā)現(xiàn)、釋放IP地址等大多數(shù)DHCP中的行為都是由DHCP客戶端主動發(fā)起。
二、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工作過程詳解
一、DHCP客戶機(jī)初始化:
1.尋找DHCP Server
當(dāng)DHCP客戶機(jī)第一次登錄網(wǎng)絡(luò)的時候(也就是客戶機(jī)上沒有任何IP地址數(shù)據(jù)時),它會通過UDP 67端口向網(wǎng)絡(luò)上發(fā)出一個DHCPDISCOVER數(shù)據(jù)包(包中包含客戶機(jī)的MAC地址和計算機(jī)名等信息)。因為客戶機(jī)還不知道自己屬于哪一個網(wǎng)絡(luò),所以封包的源地址為0.0.0.0,目標(biāo)地址為255.255.255.255,然后再附上DHCP discover的信息,向網(wǎng)絡(luò)進(jìn)行廣播。
DHCP discover的等待時間預(yù)設(shè)為1秒,也就是當(dāng)客戶機(jī)將第一個DHCP discover封包送出去之后,在1秒之內(nèi)沒有得到回應(yīng)的話,就會進(jìn)行第二次DHCP discover廣播。若一直沒有得到回應(yīng),客戶機(jī)會將這一廣播包重新發(fā)送四次(以2,4,8,16秒為間隔,加上1-1000毫秒之間隨機(jī)長度的時間)。如果都沒有得到DHCP Server的回應(yīng),客戶機(jī)會從169.254.0.0/16這個自動保留的私有IP地址中選用一個IP地址。并且每隔5分鐘重新廣播一次,如果收到某個服務(wù)器的響應(yīng),則繼續(xù)IP租用過程。
2. 提供IP地址租用
當(dāng)DHCP Server監(jiān)聽到客戶機(jī)發(fā)出的DHCP discover廣播后,它會從那些還沒有租出去的地址中,選擇最前面的空置IP,連同其它TCP/IP設(shè)定,通過UDP 68端口響應(yīng)給客戶機(jī)一個DHCP OFFER數(shù)據(jù)包(包中包含IP地址、子網(wǎng)掩碼、地址租期等信息)。此時還是使用廣播進(jìn)行通訊,源IP地址為DHCP Server的IP地址,目標(biāo)地址為255.255.255.255。同時,DHCP Server為此客戶保留它提供的IP地址,從而不會為其他DHCP客戶分配此IP地址。
由于客戶機(jī)在開始的時候還沒有IP地址,所以在其DHCP discover封包內(nèi)會帶有其MAC地址信息,并且有一個XID編號來辨別該封包,DHCP Server響應(yīng)的DHCP OFFER封包則會根據(jù)這些資料傳遞給要求租約的客戶。
3. 接受IP租約
如果客戶機(jī)收到網(wǎng)絡(luò)上多臺DHCP服務(wù)器的響應(yīng),只會挑選其中一個DHCP OFFER(一般是最先到達(dá)的那個),并且會向網(wǎng)絡(luò)發(fā)送一個DHCP REQUEST廣播數(shù)據(jù)包(包中包含客戶端的MAC地址、接受的租約中的IP地址、提供此租約的DHCP服務(wù)器地址等),告訴所有DHCP Server它將接受哪一臺服務(wù)器提供的IP地址,所有其他的DHCP服務(wù)器撤銷它們的提供以便將IP地址提供給下一次IP租用請求。此時,由于還沒有得到DHCP Server的最后確認(rèn),客戶端仍然使用0.0.0.0為源IP地址,255.255.255.255為目標(biāo)地址進(jìn)行廣播。
事實上,并不是所有DHCP客戶機(jī)都會無條件接受DHCP Server的OFFER,特別是如果這些主機(jī)上安裝有其它TCP/IP相關(guān)的客戶機(jī)軟件。客戶機(jī)也可以用DHCP REQUEST向服務(wù)器提出DHCP選擇,這些選擇會以不同的號碼填寫在DHCP Option Field里面??蛻魴C(jī)可以保留自己的一些TCP/IP設(shè)定。
4.租約確認(rèn)
當(dāng)DHCP Server接收到客戶機(jī)的DHCP REQUEST之后,會廣播返回給客戶機(jī)一個DHCP ACK消息包,表明已經(jīng)接受客戶機(jī)的選擇,并將這一IP地址的合法租用以及其他的配置信息都放入該廣播包發(fā)給客戶機(jī)。
客戶機(jī)在接收到DHCP ACK廣播后,會向網(wǎng)絡(luò)發(fā)送三個針對此IP地址的ARP解析請求以執(zhí)行沖突檢測,查詢網(wǎng)絡(luò)上有沒有其它機(jī)器使用該IP地址;如果發(fā)現(xiàn)該IP地址已經(jīng)被使用,客戶機(jī)會發(fā)出一個DHCP DECLINE數(shù)據(jù)包給DHCP Server,拒絕此IP地址租約,并重新發(fā)送DHCP discover信息。此時,在DHCP服務(wù)器管理控制臺中,會顯示此IP地址為BAD_ADDRESS。
如果網(wǎng)絡(luò)上沒有其它主機(jī)使用此IP地址,則客戶機(jī)的TCP/IP使用租約中提供的IP地址完成初始化,從而可以和其他網(wǎng)絡(luò)中的主機(jī)進(jìn)行通訊。
二、DHCP客戶機(jī)租期續(xù)約:
客戶機(jī)會在租期過去50%的時候,直接向為其提供IP地址的DHCP Server發(fā)送DHCP REQUEST消息包。如果客戶機(jī)接收到該服務(wù)器回應(yīng)的DHCP ACK消息包,客戶機(jī)就根據(jù)包中所提供的新的租期以及其它已經(jīng)更新的TCP/IP參數(shù),更新自己的配置,IP租用更新完成。如果沒有收到該服務(wù)器的回復(fù),則客戶機(jī)繼續(xù)使用現(xiàn)有的IP地址,因為當(dāng)前租期還有50%。
如果在租期過去50%的時候沒有更新,則客戶機(jī)將在租期過去87.5%的時候再次向為其提供IP地址的DHCP聯(lián)系。如果還不成功,到租約的100%時候,客戶機(jī)必須放棄這個IP地址,重新申請。如果此時無DHCP可用,客戶機(jī)會使用169.254.0.0/16中隨機(jī)的一個地址,并且每隔5分鐘再進(jìn)行嘗試。
審核編輯:劉清
-
局域網(wǎng)
+關(guān)注
關(guān)注
5文章
761瀏覽量
46405 -
路由器
+關(guān)注
關(guān)注
22文章
3745瀏覽量
114520 -
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
492瀏覽量
27665 -
DHCP協(xié)議
+關(guān)注
關(guān)注
0文章
4瀏覽量
4975
原文標(biāo)題:手工配置IP地址麻煩還會出錯?10張圖帶你了解DHCP技術(shù)原理
文章出處:【微信號:通信弱電交流學(xué)習(xí),微信公眾號:通信弱電交流學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論