1. 程式人生 > >TCP/IP詳解卷一之DHCP和自動配置

TCP/IP詳解卷一之DHCP和自動配置

1 主機或路由器的配置資訊
—配置資訊包括:
·“基本要素”:IP地址、子網掩碼、DNS伺服器的IP地址、路由器的IP地址。
·“其他要素”:家鄉代理、組播路由器、VPN閘道器等,取決於使用或提供的服務型別。

2 Internet中客戶端與伺服器、路由器配置方式
—配置方式:
· 客戶端主機中使用動態主機配置協議(DHCP)、IPv4和IPv6中的無狀態地址自動配置。
· 伺服器和路由器常通過手工配置。
—配置採取不同方式的原因:
· 客戶端主機通常比路由器和伺服器更容易移動,這意味著應提供更靈活的重新分配其配置資訊的機制;
· 伺服器和路由器都希望“永遠可用”和相對自治,因此,它們的配置資訊不依賴於其他網路服務,手工配置能為它們提供更好的可靠性;
· 與伺服器和路由器相比,客戶機屬於某個組織是更常見的情況,通過一種集中服務來動態分配客戶端主機的配置資訊,這樣會更加簡單且不容易出錯;
· 客戶機操作者通常比伺服器或路由器管理者具有更少的系統管理經驗。

3 動態主機配置協議(DHCP)
—DHCP是一種流行的客戶機/伺服器協議。
—DHCP由兩個主要部分組成:
· 地址管理:用於IP地址的動態分配,併為客戶機提供地址租用。
· 配置資料交付:包括DHCP協議的訊息格式和狀態機。
—DHCP伺服器可配置為提供三種地址分配,三者之間的差異是地址分配是否基於客戶機的身份以及該地址是否可撤銷或變更,三種分配方式為:
· 自動分配:從伺服器配置的地址池中獲得一個IP地址,但該地址不可撤銷。
· 動態分配:從伺服器配置的地址池中獲得一個可撤銷的IP地址。
· 手動分配:DHCP協議用於傳輸地址,但地址對於請求的客戶機是不變的,即它不是由伺服器維護的可分配池的一部分。
—在動態分配中,分配給客戶機的地址只在一段特定時間內有效,這段時間稱為租用期。
—確定租用期需要對預期客戶數、地址池大小和地址穩定性等因素加以權衡:
· 租用期較長時,通常會較快耗盡地址池,但能提供更穩定的地址和減小網路開銷;
· 租用期較短時,可以提供可用性更高的地址池,但穩定性會減小和網路流量負荷會增大。

4 DHCPv4協議操作
(1)典型的DHCP交換
在這裡插入圖片描述
· 客戶機首先廣播一個DHCPDISCOVER訊息。
· 接收到請求的每臺DHCP伺服器都會響應一個DHCPOFFER訊息,並在“你的”IP地址欄位中包含提供的IP地址以及其他配置選項如DNS伺服器的IP地址、子網掩碼等。
· 當接收到來自一臺或多臺伺服器的DHCPOFFER訊息後,客戶機確定自己想接受哪個,並廣播一個包括伺服器識別符號選項的DHCPREQUEST訊息,請求的IP地址選項設定為由選中的DHCPOFFER訊息提供的地址。
· 多臺伺服器可能接收到DHCPREQUEST訊息,但只有訊息中標識的伺服器同意將該地址進行繫結,其他伺服器清除與該請求相關的狀態。繫結完成後,選中的伺服器相應一個DHCPACK訊息,通知客戶機現在可使用該地址;而如果伺服器無法分配包含在DHCPREQUEST訊息中的地址,該伺服器將會響應一個DHCPNAK訊息。
· 當客戶機接收到DHCPACK訊息和其他相關的配置資訊時,它可探測網路以確保獲得的地址未被使用,例如向該地址傳送一個ARP請求以執行ACD。
· 如果客戶機確定該地址已被使用,客戶機就不使用該地址,並向伺服器傳送一個DHCPDECLINE訊息,通知該地址不能使用。
(2)客戶機已有IP地址僅希望更新租約


—可以跳過最初的DHCPDISCOVER和DHCPOFFER訊息,客戶機通過一個DHCPREQUEST訊息請求當前正在使用的地址,後續流程與上述相同。
(3)客戶機已有IP地址且不需要更新,僅需要其它配置資訊
—客戶機發送一個DHCPINFORM訊息來表明它使用現有地址,但希望能獲得額外的資訊;伺服器返回一個包含請求的額外資訊的DHCPACK訊息。
—注:DHCPOFFER訊息中還包括租用時間(T)、更新時間(T1)、重新繫結時間(T2),含義分別如下:
· 租用時間:提供了不更新租約的情況下地址可被租用的時間上限。
· 更新時間:客戶機從獲得租約到嘗試要求伺服器更新租約的時間。
· 重新繫結時間:客戶機嘗試要求DHCP伺服器更新其地址的時間。
(4)DHCP狀態機
—DHCP客戶機的狀態機如下:
在這裡插入圖片描述

5 IPv6地址生命週期
—IPv6主機的每個介面通常擁有多個地址,並且每個地址都擁有一組計數器,以指出相應地址可使用多長時間和用於什麼目的。
—在IPv6中,地址分配包含一個首選生命週期和一個有效生命週期。這些生命週期用於判斷超時,將地址在自己的狀態機中從一種狀態轉換為另一種狀態。
—IPv6地址的生命週期如下圖:
在這裡插入圖片描述
· 首選狀態:該地址可用於一般用途,並可作為源或目的IPv6地址。
· 廢棄狀態:該地址仍可用於現有傳輸(例如TCP)連線,但不能用於啟動新的連線。
· 無效狀態:該地址不能使用。
· 臨時狀態:該地址可能僅用於IPv6鄰居發現協議,不可用做任何其他目的的源或目的地址。
· 樂觀狀態:僅是針對DAD的一組特殊規則,並不是一個真正完整的狀態,對大多數目的而言是廢棄的。
—當首選超時到達時,IPv6地址從首選狀態轉為廢棄狀態;當有效超時到達時,IPv6地址從廢棄狀態轉為無效狀態。
—重複地址檢測(DAD):臨時狀態的地址要檢測重複,看看同一網路中的其他節點是否已使用該地址。IPv6 DAD使用ICMPv6鄰居請求和鄰居通告訊息實現。過程如下:
· 一個節點首先加入臨時地址的所有節點組播地址和請求節點組播地址;
· 一個節點發送一個或多個ICMPv6鄰居請求訊息,訊息的源和目的地址分別是未指定地址和被檢查的地址,檢查使用的地址是否重複;
· 如果在響應中收到一個鄰居通告訊息,說明DAD失敗,並放棄被檢查的地址。
—樂觀DAD:通過它選擇的地址可用於一組有限的用途,直至DAD完成。
—一個地址可能同時是樂觀的和廢棄的,取決於首選和有效生命週期。

6 DHCPv6協議操作
—一臺客戶機是否啟用DHCPv6,取決於這臺主機接收的ICMPv6路由器通告訊息中的配置選項中的M位欄位和O位欄位,
· M位是可管理地址配置標誌,表示IPv6地址可使用DHCPv6獲得;
· O位是其他配置標誌,表示IPv6地址之外的資訊可使用DHCPv6獲得。
—M位和O位組合後表示含義如下:
· M位和O位同時開啟,表示客戶機使用“有狀態”DHCPv6;
· M位和O位同時關閉,表示客戶機不使用DHCPv6,並在分配地址時使用無狀態地址自動分配;
· M位關閉、O位開啟,表示客戶機使用“無狀態”DHCPv6,並使用無狀態地址自動配置獲得地址;
· M位開啟、O位關閉,最不實用。
—協議操作的一般流程如下:
在這裡插入圖片描述
· 一臺客戶機首先確定使用的鏈路本地地址,然後執行ICMPv6路由器發現操作,以確定所在網路中是否存在一臺路由器;
· 路由器返回包括M位和O位在內的路由器通告訊息;
· 如果M位被設定,則客戶機使用DHCPv6,並組播DHCPSOLICIT訊息,以便發現DHCPv6伺服器;
· 一個或多個DHCP伺服器返回DHCPADVERTISE響應訊息;
· 客戶機選擇自己想要的伺服器及其配置資訊,併發送DHCPREQUEST訊息;
· 被標識的伺服器確認DUID、IA型別和IAID結合而成的繫結,並返回一個DHCPREPLY訊息;
· 客戶機探測網路以確定獲得的地址未被使用,例如DAD;
· 當客戶機確認該地址已被使用時,客戶機不使用該地址,併發送一條DHCPDECLINE訊息。

7 DHCP中繼
—中繼代理用於將DHCP操作擴充套件到跨越多個網段。
—在一般情況下,中繼不會參與客戶機與伺服器之間的所有DHCP流量交換;相反,它僅中繼那些廣播訊息(或IPv6中的組播)。
—當一臺客戶機獲得一個IP地址時,並且伺服器的IP地址使用伺服器標識選項時,它可與伺服器進行單播通訊而不經過中繼。

8 無狀態地址自動配置
(1)IPv4鏈路本地地址的動態配置
—鏈路本地地址:169.254.0.0/16,只用於一條鏈路。
—配置方式:主機通過某種機制自動從鏈路本地範圍169.254.1.1至169.254.254.254使用16位子網掩碼255.255.0.0生成自己的IPv4地址。
—本質上講,就是一臺主機從一個範圍內隨機選擇一個地址,並檢查該地址是否已在本子網中被其他系統使用。
(2)鏈路本地地址的IPv6 SLAAC
—IPv6 SLAAC的目標:允許節點自動分配鏈路本地IPv6地址。
—IPv6 SLAAC的3個主要步驟:獲得一個鏈路本地地址、使用無狀態自動配置獲取全球地址、檢測鏈路本地地址是否已在鏈路中使用。
—在IPv6中,臨時(或樂觀)鏈路本地地址只用於具有組播能力的網路,並在建立時分配了極大的首選和有效生命週期。
—當沒有路由器的環境下,只分配鏈路本地地址;當路由器存在時,使用一個路由器通告的字首和本地產生的資訊組合成一個全球地址。