DHCP详细工作过程
DHCP客戶端通過(guò)和DHCP服務(wù)器的交互通訊以獲得IP地址租約。為了從DHCP服務(wù)器獲得一個(gè)IP地址,在標(biāo)準(zhǔn)情況下DHCP客戶端和DHCP服務(wù)器之間會(huì)進(jìn)行四次通訊。DHCP協(xié)議通訊使用端口UDP 67(服務(wù)器端)和UDP 68(客戶端)進(jìn)行通訊,UDP68端口用于客戶端請(qǐng)求,UDP67用于服務(wù)器響應(yīng),并且大部分DHCP協(xié)議通訊使用廣播進(jìn)行。
DHCP客戶端和DHCP服務(wù)器的這四次通訊過(guò)程
?
1、DHCP DISCOVER
當(dāng)DHCP客戶端計(jì)算機(jī)處于以下三種情況之一時(shí),觸發(fā)DHCPDISCOVER廣播消息:
當(dāng)TCP/IP協(xié)議作為DHCP客戶端(自動(dòng)獲取IP地址)進(jìn)行初始化(DHCP客戶端啟動(dòng)計(jì)算機(jī)、啟用網(wǎng)絡(luò)適配器或者連接到網(wǎng)絡(luò)時(shí));
DHCP客戶端請(qǐng)求某個(gè)IP地址被DHCP服務(wù)器拒絕,通常發(fā)生在已獲得租約的DHCP客戶端連接到不同的網(wǎng)絡(luò)中;
DHCP客戶端釋放已有租約并請(qǐng)求新的租約。
此時(shí),DHCP客戶端發(fā)起DHCPDISCOVER廣播消息,向所有DHCP服務(wù)器獲取IP地址租約。此時(shí)由于DHCP客戶端沒(méi)有IP地址,因此在數(shù)據(jù)包中,使用0.0.0.0作為源IP地址,然后廣播地址255.255.255.255作為目的地址。在此請(qǐng)求數(shù)據(jù)包中同樣會(huì)包含客戶端的MAC地址和計(jì)算機(jī)名,以便DHCP服務(wù)器進(jìn)行區(qū)分。
如果沒(méi)有DHCP服務(wù)器答復(fù)DHCP客戶端的請(qǐng)求,DHCP客戶端在等待1秒后會(huì)再次發(fā)送DHCPDISCOVER廣播消息。除了第一個(gè)DHCPDISCOVER廣播消息外,DHCP客戶端還會(huì)發(fā)出三個(gè)DHCPDISCOVER廣播消息,等待時(shí)延分別為9秒、13秒和16秒加上一個(gè)長(zhǎng)度為0~1000毫秒之間的隨機(jī)時(shí)延。如果仍然無(wú)法聯(lián)系DHCP服務(wù)器,則認(rèn)為自動(dòng)獲取IP地址失敗,默認(rèn)情況下將隨機(jī)使用APIPA(自動(dòng)專有IP地址,169.254.0.0/16)中定義的未被其他客戶使用的IP地址,子網(wǎng)掩碼為255.255.0.0,但是不會(huì)配置默認(rèn)網(wǎng)關(guān)和其他TCP/IP選項(xiàng),因此只能和同子網(wǎng)的使用APIPA地址的客戶端計(jì)算機(jī)進(jìn)行通訊。你可以通過(guò)注冊(cè)表中的DWORD鍵值IPAutoconfigurationEnabled來(lái)禁止客戶端計(jì)算機(jī)使用APIPA地址進(jìn)行自動(dòng)配置,此鍵值位于
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
當(dāng)其值設(shè)置為0時(shí),則不使用APIPA地址進(jìn)行自動(dòng)配置。
在Windows XP和Windows Server 2003中,針對(duì)客戶端計(jì)算機(jī)的TCP/IP選項(xiàng)中有一個(gè)備用配置選項(xiàng),只有當(dāng)客戶端計(jì)算機(jī)配置為DHCP客戶端(自動(dòng)獲取IP地址)時(shí)才有此備用配置。你可以通過(guò)備用配置來(lái)為DHCP客戶端在無(wú)法聯(lián)系DHCP服務(wù)器時(shí)為DHCP客戶端指定靜態(tài)IP地址,如下圖所示:
如果沒(méi)有配置APIPA地址和備用IP地址,則DHCP客戶端會(huì)每隔5分鐘再發(fā)送DHCPDISCOVER廣播消息,直到從DHCP服務(wù)器獲取IP地址為止。
2、DHCP OFFER
所有接收到DHCP客戶端發(fā)送的DHCPDISCOVER廣播消息的DHCP服務(wù)器會(huì)檢查自己的配置,如果具有有效的DHCP作用域和富余的IP地址,則DHCP服務(wù)器發(fā)起DHCPOFFER廣播消息來(lái)應(yīng)答發(fā)起DHCPDISCOVER廣播的DHCP客戶端,此消息包含以下內(nèi)容:
客戶端MAC地址;
DHCP服務(wù)器提供的客戶端IP地址;
DHCP服務(wù)器的IP地址;
DHCP服務(wù)器提供的客戶端子網(wǎng)掩碼;
其他作用域選項(xiàng),例如DNS服務(wù)器、網(wǎng)關(guān)、WINS服務(wù)器等;
租約期限等。
因此DHCP客戶端沒(méi)有IP地址,所以DHCP服務(wù)器同樣使用廣播進(jìn)行通訊:源IP地址為DHCP服務(wù)器的IP地址,而目的IP地址為255.255.255.255。同時(shí),DHCP服務(wù)器為此客戶保留它提供的IP地址,從而不會(huì)為其他DHCP客戶分配此IP地址。如果有多個(gè)DHCP服務(wù)器給予此DHCP客戶端回復(fù)DHCPOFFER消息,則DHCP客戶端接受它接收到的第一個(gè)DHCPOFFER消息中的IP地址。
3、DHCP REQUEST
當(dāng)DHCP客戶端接受DHCP服務(wù)器的租約時(shí),它將發(fā)起DHCPREQUEST廣播消息,告訴所有DHCP服務(wù)器自己已經(jīng)做出選擇,接受了某個(gè)DHCP服務(wù)器的租約。
在此DHCPREQUEST廣播消息中包含了DHCP客戶端的MAC地址、接受的租約中的IP地址、提供此租約的DHCP服務(wù)器地址等,所有其他的DHCP服務(wù)器將收回它們?yōu)榇薉HCP客戶端所保留的IP地址租約,以給其他DHCP客戶端使用。
此時(shí)由于沒(méi)有得到DHCP服務(wù)器最后確認(rèn),DHCP客戶端仍然不能使用租約中提供的IP地址,所以在數(shù)據(jù)包中仍然使用0.0.0.0作為源IP地址,廣播地址255.255.255.255作為目的地址。
4、DHCP ACK
提供的租約被接受的DHCP服務(wù)器在接收到DHCP客戶端發(fā)起的DHCPREQUEST廣播消息后,會(huì)發(fā)送DHCPACK廣播消息進(jìn)行最后的確認(rèn),在這個(gè)消息中同樣包含了租約期限及其他TCP/IP選項(xiàng)信息。
如果DHCP客戶端的操作系統(tǒng)為Windows 2000及其后版本,當(dāng)DHCP客戶端接收到DHCPACK廣播消息后,會(huì)向網(wǎng)絡(luò)發(fā)出三個(gè)針對(duì)此IP地址的ARP解析請(qǐng)求以執(zhí)行沖突檢測(cè),確認(rèn)網(wǎng)絡(luò)上沒(méi)有其他主機(jī)使用DHCP服務(wù)器提供的IP地址,從而避免IP地址沖突。如果發(fā)現(xiàn)該IP已經(jīng)被其他主機(jī)所使用(有其他主機(jī)應(yīng)答此ARP解析請(qǐng)求),則DHCP客戶端則會(huì)廣播發(fā)送(因?yàn)樗匀粵](méi)有有效的IP地址)DHCPDECLINE消息給DHCP服務(wù)器拒絕此IP地址租約,然后重新發(fā)起DHCP DISCOVER進(jìn)程。此時(shí),在DHCP服務(wù)器管理控制臺(tái)中,會(huì)顯示此IP地址為BAD_ADDRESS。
如果沒(méi)有其他主機(jī)使用此IP地址,則DHCP客戶端的TCP/IP使用租約中提供的IP地址完成初始化,從而可以和其他網(wǎng)絡(luò)中的主機(jī)進(jìn)行通訊。至于其他TCP/IP選項(xiàng),如DNS服務(wù)器和WINS服務(wù)器等,本地手動(dòng)配置將覆蓋從DHCP服務(wù)器獲得的值。
租約續(xù)約
DHCP服務(wù)器將IP地址提供給DHCP客戶端時(shí),會(huì)包含租約的有效期,默認(rèn)租約期限為8天(691200秒)。除了租約期限外,還具有兩個(gè)時(shí)間值T1和T2,其中T1定義為租約期限的一半,默認(rèn)情況下是四天(345600秒),而T2定義為租約期限的的7/8,默認(rèn)情況下為7天(604800秒)。當(dāng)?shù)竭_(dá)T1定義的時(shí)間期限時(shí),DHCP客戶端會(huì)向提供租約的原始DHCP服務(wù)器發(fā)起DHCP REQUEST請(qǐng)求對(duì)租約進(jìn)行更新,如果DHCP服務(wù)器接受此請(qǐng)求則回復(fù)DHCP ACK消息,包含更新后的租約期限;如果DHCP服務(wù)器不接受DCHP客戶端的租約更新請(qǐng)求(例如此IP已經(jīng)從作用域中去除),則向DHCP客戶端位于回復(fù)DHCP NACK消息,此時(shí)DHCP客戶端立即發(fā)起DHCP DISCOVER進(jìn)程以尋求IP地址。如果DHCP客戶端沒(méi)有從DHCP服務(wù)器得到任何回復(fù),則繼續(xù)使用此IP地址直到到達(dá)T2定義的時(shí)間限制。此時(shí),DHCP客戶端再次向提供租約的原始DHCP服務(wù)器發(fā)起DHCP REQUEST請(qǐng)求對(duì)租約進(jìn)行更新,如果仍然沒(méi)有得到DHCP服務(wù)器的回復(fù)則發(fā)起DHCP DISCOVER進(jìn)程以尋求IP地址。
總結(jié)
以上是生活随笔為你收集整理的DHCP详细工作过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: wpa_supplicant 详解(9)
- 下一篇: EtherType :以太网类型字段及值