最近在工做中遇到了鏈接外網的交換機在IPv6
地址條件下從運營商自動獲取的DNS
地址與本機手動輸入配置的IPv4
地址下的DNS
發生衝突的問題,這個問題在實際的生產網上會帶來業務的中斷和不穩定,在進入到生產環境中的本地終端發送給數據中心的網絡流量會由於IPv4
和 IPv6
下的DNS
衝突而致使沒法正確的發送流量。算法
在終端中,默認的IPv6
的優先級會大於IPv4
的優先級,這樣就會帶來衝突問題,解決的問題就是將鏈接外網的網絡線從與鏈接內網的交換機中斷開便可以解決。下邊的圖片說明了該問題的發生的場景:windows
從上邊的圖看出,業務終端鏈接着「本地業務網核心交換機」來獲取和轉發網絡流量到數據中心生產網絡中的服務器,在正常的條件下,「本地業務網核心交換機」和「本地運營商交換機」是不能經過網絡跳線鏈接在一塊兒並配置到同一個Vlan
中的。在本次問題中,由於「本地運營商交換機」和「本地業務網核心交換機」鏈接在了同一個Vlan
,致使了業務終端的業務流量從數據中心生產網絡來源的不穩定,而形成了業務不穩定。服務器
在這個解決問題的過程當中,有DHCP
和ARP
在實際網絡環境下的運用場景和背景模糊不清的問題,故而撰寫這篇博客來複習和鞏固DHCP
協議。網絡
網絡是很是複雜且抽象的,網絡中的硬件設備好比 路由器、交換機、集線器、網線、網卡、網橋共同組成了核心網絡,在硬件設備上流通的網絡流量,作到怎麼去引導網絡流量正確得流向到正確的網絡設備上,須要TCP/IP
協議做爲網絡流量的核心協議。設計
可是若是一個網絡管理員想要正確地讓TCP/IP
協議正確運行,須要給網絡中的主機和路由器配置一些關鍵信息,好比說接口的IP
地址。咱們能夠輕易地在電腦上輸入 ipconfig
命令去顯示當前網絡設備的網絡地址信息,那麼這個地址究竟是怎麼被分配到當前的設備上的?3d
對於一個網絡設備(終端)的核心IP
信息主要有: IP地址
、子網掩碼
和 DNS服務器地址
。code
而獲取網絡設備的 TCP/IP
信息主要有這幾個方面:blog
windows
上的手動配置選項上的動態獲取選項。通常來講,對於服務器端的採用手動配置方式
來適應業務的核心需求,對於客戶端好比鏈接網絡拓撲上的我的終端那麼採用動態獲取方式
來獲取相關信息。繼承
緣由有如下幾個方面:接口
在這個場景下,客戶端須要從服務器端動態地獲取服務器端的信息並配置到本地中,這個時候 DHCP
就派上了用場。在本文中,主機 == 客戶端,即任何須要從網絡中獲取地址的設備( 不包括 網絡中的路由器),請區別開這個方面的概念。服務器 = 服務端,有時候並不必定是一個獨立的設備,而是一個應用程序(在大多數條件下),但願能將這些方面的概念區別出來。
DHCP,從英文的含義來講,Dynamic Host Configuration Protocol,是用來動態地配置主機的相關狀態,從DHCP
的發展來講,DHCP
是繼承於BOOTP
協議 ( Bootstrap Protocol ),後者在設計協議的過程當中僅僅提供了有限的主機信息配置,而且主機的信息一旦從遠程服務器端分配以後,就很難再被修改;DHCP
的出現改變了這種局面,DHCP
幾乎提供了全部的主機配追信息,而且引入了租約
的概念,使得主機信息可以動態地產生變化和進行更改。此外,做爲能夠動態地更改主機的配置的協議,
DHCP
是一個基於 Client/Server
模式的網絡協議。
DHCP
是基於UDP/IP
協議進行傳輸,服務器端使用端口 67
, DHCP
客戶端使用端口號 68
。
DHCP
主要分爲兩個部分: 網絡IP地址的管理
和 配置信息的傳遞
IP
地址的動態分配, 而且爲每個主機 (Host) 提供地址的租約地址池 與 地址租約
若是用戶在客戶端中申請配置一個 動態網絡地址配置
,那麼 DHCP客戶端(Host)
會向 DHCP服務器 發送一個 IP地址請求。 這個時候在遠程的 DHCP服務器
就會維護一個 IP地址池
,而且從這個地址池來取出一個IP
迴應給 DHCP客戶端。 在地址分配的過程當中,DHCP服務器
也會指定迴應給 DHCP客戶端
的IP地址的租約期,在租約期中,這個地址能夠被客戶端使用,租約期到以後這個IP地址被 DHCP服務器自動收回。客戶端能夠在租約期內請求延長租約。
DHCP 報文內容
DHCP的組成從網上有不少解釋,下圖來自網絡:
Request(1)
和 Reply(2)
DHCP Option 內容
以前介紹過,由於DHCP
是從Bootp
協議繼承和拓展過來的,所以不少不能在Bootp
實現的內容都放到了Option
來實現。通俗來講,DHCP
協議其實就是攜帶許多Option
的Bootp
。
報文中的Option
遵循如下的形式:
常見的Option
類型情參照下圖:
DHCP 將一臺從未分配過的主機加入到網絡須要經歷四個階段: 1. 發現階段,2.提供階段,3.請求階段,4.確認階段。
發現階段
新的Client
加入網絡時,會使用0.0.0.0
做爲源地址,發送discover廣播報文
,查詢網絡上有哪些DHCP Server
,以及這些DHCP Server
能Offer
哪些IP地址
。這個廣播幀的MAC地址
爲新的Client
的MAC地址
,類型字段爲 0x0800
,載荷數據爲一個廣播 IP 報文,該報文的目的IP地址
爲有限的廣播地址: 255.255.255.255
, 協議字段值爲 0x11
, 載荷數據是一個 UDP報文,消息爲 DHCPDISCOVER
。
在該階段中,與客戶端所在二層網絡中的全部設備都會接收到這個廣播幀,並將這個廣播幀洪泛出去,在其餘設備接收到這個數據幀的時候會將相關的載荷按照網絡分層逐層上傳。在設備的傳輸層UDP模塊在接收網絡層上傳的數據包以後會解析數據包的端口號。 對於一個DHCP服務器來講,67 做爲獨特的端口號,會被打開,而對於其餘的設備來講這個端口不被打開,那麼這個數據包就被丟棄。
在華爲的數通教材中,給出的例子是路由器上運行了 DHCP
服務器 , 可是鏈路中可能有多個設備也運行了DHCP
服務器,這個時候全部收到該請求包的服務器都會給請求客戶端回覆一個數據包來證實本身已經接收到了請求信息。
對於DHCP的傳輸模式 - UDP協議,是一種面向無鏈接的、不須要可靠傳輸的通訊方式,所以 DHCP 須要依賴本身的一種可靠的傳輸傳輸方式,其中包括:什麼狀況下須要重複發送已經發送過的請求,重複請求的間隔時間是多少,最大重複次數是多少等等...
提供階段
DHCP Server
接收到DHCP Discover
報文後,迴應Offer
報文,提供IP地址
(可能包含DNS等其餘信息)給Client
。這個階段中,不涉及客戶端是否接受服務端給出的 IP 地址,只是服務器端給客戶端的一個響應。 每一個接收到 DHCPDISCOVER
消息的服務器,都從本身維護的 IP 地址池分配出一個有效的且未被使用的 IP地址,並經過 DHCPOFFER
消息將這個IP地址分配發送給客戶端。
對於一個 DHCPOFFER
消息來說,消息被封裝在客戶端預留端口號爲68,源端口號67的一個UDP報文中,該UDP報文又是被上層封裝到一個被廣播的IP報文中。 這個IP報文的目的地址是一個有限廣播地址:255.255.255.255
,源地址爲DHCP服務器端所對應的單播地址,其中協議字段爲0x11
,該IP報文又被上層封裝到了一個廣播幀中,這個廣播幀的源MAC地址爲 DHCP Server 所對應的單播MAC地址,類型字段的值爲 0x0800
。
在傳輸的過程當中,與請求客戶端所在同一個二層網絡中的全部設備都會接收到這個請求數據包,只有開啓了 DHCP Client
服務的客戶端纔會接收到這個數據包的載荷數據(DHCPOFFER),並上傳至應用層上的 DHCP Client
中。
可是在同一個二層網絡中可能存在着其餘一樣打開 DHCP Client
服務的客戶端,終端如何區分是否是本身發出的DHCPDISCOVER
請求呢?其實可會斷在發送 DHCPDISCOVER
請求的時候就已經建立了一個用於區別請求且獨一無二的交易號(Transaction ID
) ,這個交易號會在服務端向客戶端發送DHCPOFFER
回執的時候
3.Client
根據收到的Offer報文
,選擇一個DHCP Server
,並選擇它提供的IP地址
。而後廣播Request
報文,向DHCP Server
請求該IP地址
,同時向本地網絡
(尤爲是其餘DHCP Server
)公告本身已經選擇了某個DHCP Server
的某個IP地址。
4.DHCP Server
迴應ACK報文
,將IP地址
分配給client端
(特殊狀況:DHCP Server
在發送Offer
報文和接收到Request
的短暫時間內把IP
分配給了其餘主機)。
5.DHCP Client
收到ACK報文
後,會針對得到的IP地址
發送ARP Request
,進行IP地址衝突檢測
。
6.若是IP地址
已經被其餘主機使用,則Client
放棄該IP地址,向Server
發送DHCP DECLINE報文
告訴Server
該地址不能使用。而後一段時間後(通常10s)再此嘗試獲取該IP地址
7.若是Client
仍然沒法使用該IP地址
,則發送DHCP RELEASE報文
,放棄該地址。
1.此時能夠跳過DHCP Discover報文
和DHCP Offer報文
。
2.Client
發送攜帶當前IP地址
的Request報文
。
3.若是Server
贊成Client
續約,則發送DHCP ACK報文
。若是拒絕續約,則發送DHCPNAK報文
。
下邊有一個圖來具體的說明 DHCP
的工做原理以及創建相關網絡聯繫的流程和原理:
【未完待續.... 下一部分將加上華爲模擬設備上的】