natdhcp基本原理?
DHCP協議工作原理
DHCP(Dynamic Host Configuration Protocol)動態主機設置協定,DHCP是一個局域網的網絡協議,使用UDP協議工作,其前身是BOOTP協議
DHCP工作原理:
一)、DHCP客戶端初始化
1. 廣播尋找DHCP Server(DHCP Discover報文)
當DHCP客戶機第一次登錄網絡的時候(也就是客戶機上沒有任何IP地址數據時),它會通過UDP 67端口向網絡上發出一個DHCP Discover數據包(包中含有客戶機的MAC地址和計算機名等信息)因為客戶機還不知道自己屬于哪一個網絡,所以封包的源地址為0.0.0.0,目標地址為255.255.255.255,然后再附上DHCP Discover的信息,向網絡進行廣播。
DHCP Discover的等待時間預設為1秒,也就是當客戶機將第一個DHCP Discover封包送出去之后,在1秒之內沒有得到回應的話,就會進行第二次DHCP Discover廣播。若一直沒有得到回應,客戶機會將這一廣播包重新發送四次(以2,4,8,16秒為間隔,加上1-1000毫秒之間隨機長度的時間)。如果都沒有得到DHCP Server的回應,客戶機會從169.254.0.0/16這個自動保留的私有IP地址中選用一個IP地址。并且每隔5分鐘重新廣播一次,如果收到某個服務器的響應,則繼續IP租用過程。
?
2. 提供IP地址租用(DHCP Offer報文)
當DHCP Server收到客戶機發出的DHCP Discover廣播包,它會從那些還沒有租出去的地址中,選擇最前面的空置IP,連同其它TCP/IP設定,通過UDP 68端口響應給客戶機一個DHCP Offer數據包(包中含有IP地址、子網掩碼、地址租期等信息)。此時還是使用廣播進行通訊,源IP地址為DHCP Server的IP地址,目標地址為255.255.255.255。同時,DHCP Server為此客戶保留它提供的IP地址,從而不會為其它DHCP客戶分配此IP地址。
由于客戶機在開始的時候還沒有IP地址,所以在其DHCP Discover封包內會帶有其MAC地址信息,并且有一個XID編號來辨別該封包,DHCP Server響應的DHCP Offer封包則會根據這些資料傳遞給要求租約的客戶。
?
3. 接受IP地址租約(DHCP Request報文)
如果客戶機收到網絡上多臺DHCP服務器的響應,只會挑選其中一個DHCP OFFER(一般是最先到達的那個),并且會向網絡發送一個DHCP Request廣播數據包(包中含有客戶端的MAC地址、接受的租約中的IP地址、提供此租約的DHCP服務器地址等),告訴所有DHCP Server它將接受哪一臺服務器提供的IP地址,所有其它的DHCP服務器撤銷它們的提供以便將IP地址提供給下一次IP租用請求。此時,由于還沒有得到DHCP Server的最后確認,客戶端仍然使用0.0.0.0為源IP地址,255.255.255.255為目標地址進行廣播。
?
4. 租約確認(DHCP ACK報文)
當DHCP Server接收到客戶機的DHCP Request之后,會廣播返回給客戶機一個DHCP ACK消息包,表明已經接受客戶機的選擇,并將這一IP地址的合法租用以及其他的配置信息都放入該廣播包發給客戶機。
客戶機在接收到DHCP ACK廣播后,會向網絡發送三個針對此IP地址的ARP解析請求以執行沖突檢測,查詢網絡上有沒有其它機器使用該IP地址;如果發現該IP地址已經被使用,客戶機會發出一個DHCP Decline數據包給DHCP Server,拒絕此IP地址租約,并重新發送DHCP Discover信息。此時,在DHCP服務器管理控制臺中,會顯示此IP地址為BAD_ADDRESS。
如果網絡上沒有其它主機使用此IP地址,則客戶機的TCP/IP使用租約中提供的IP地址完成初始化,從而可以和其他網絡中的主機進行通訊。
?
二)、DHCP客戶端租期續約
客戶機會在租期過去50%的時候,直接向為其提供IP地址的DHCP Server發送DHCP Request消息包。如果客戶機接收到該服務器回應的DHCP ACK消息包,客戶機就根據包中所提供的新租期以及已經更新的TCP/IP參數,更新自己的配置,IP租用更新完成。如果沒有收到該服務器的回復,則客戶機繼續使用現有的IP地址,因為當前租期還有50%。
如果在租期過去50%的時候沒有更新,則客戶機將在租期過去87.5%的時候再次向為其提供IP地址的DHCP聯系。如果還不成功,到租約的100%時候,客戶機必須放棄這個IP地址,重新申請。如果此時無DHCP可用,客戶機會使用169.254.0.0/16中隨機的一個地址,并且每隔5分鐘再進行嘗試。
三)、DHCP協議8個封裝包作用:
DHCP Discover ------>由客戶端發廣播包請求DHCP服務器
DHCP Offer ------>DHCP服務器響應客戶端的dhcp discover報文并指定相應的配置參數
DHCP Request ------>由客戶端發給DHCP服務器來請求配置參數或者請求租期續約,告知服務器我將使用這個地址
DHCP Ack ------>由服務器發給客戶端,告知你可以使用這個地址
DHCP Decline ------>當客戶端發現地址已經被使用時,用來通知服務器
DHCP Inform ------>客戶端已經有IP地址時用它來向服務器請求其它參數(網關、dns)
DHCP Nak ------>由服務器發送給客戶端來表明客戶端請求的地址不正確(已被使用)或者租期已過期
DHCP Release ------>客戶端要釋放地址時用