DHCP協議詳解——TCP/IP協議的配置信息

爲了使用TCP/IP協議族,每臺主機和路由器需要一定的配置信息。配置信息用於爲系統指定本地名稱,以及爲接日指定標識符(例如IP地址)。多年來,已有很多方法可提供和獲得這種信息,但基本上採用3種方法:手工獲得信息,通過一個系統獲得使用的網絡服務,或使用某種算法自動確定。

1 DHCP究竟是個什麼鬼?

DHCP(Dynamic Host Configuration Protocol)動態主機配置協議,是一種流行的客戶機/服務器協議,它用於爲主機(有時也爲路由器)指定配置信息。DHCP的設計基於一種早期協議一稱爲Intemet引導程序協議( BOOTP) ,它目前已過時.。BOOTP爲客戶提供有限的配置信息,並且沒有提供一種機制來支持改變已提供的信息。
在這裏插入圖片描述

2 地址池和租用期

在動態分配中, DHCP客戶機請求分配一個IP地址。服務器從可用的地址池中選擇一個地址作爲響應。在通常情況下,這個池是專門爲DHCP用途而分配的一個連續的IP地址範圍分配給客戶機的地址只在一段特定時間內有效,這段時間稱爲租用期,租用期範圍可從幾分鐘到幾天或更長時間。

2.1 租用期時間確定

確定租用期的最佳數值需要對預期客戶數、地址池大小和地址穩定性等因素加以權衡。較長的租用期通常會較快耗盡可用的地址池,但能提供更穩定的地址和減小網絡開銷(因爲續租請求較少)。較短的租用期可爲其他客戶提供可用性更高的地址池,隨之而來的是穩定性減小和網絡流量負荷增大。常見的默認值包括12 - 24小時,取決於使用的DHCP服務器。微軟建議較小的網絡採用8天,較大的網絡採用16 - 24天。客戶機在租用期過半時開始嘗試續訂租約。

當服務器向客戶機提供租用期時,服務器將租用信息保存在持久性存儲器中,通常是非易失性內存或磁盤中。如果DHCP服務器重新啓動並且運行良好,租約將保持完好。

3 DHCP和BOOTP消息格式

DHCP的報文在不同場景中的交互過程。但DHCP報文的精髓還在於DHCP Option,我們知道DHCP報文主要作用是,服務器給客戶端分配IP。

DHCP擴展了BOOTP (它是DHCP的前身)。 DHCP消息格式的定義採用擴展BOOTP的方式,以保持兩種協議之間的兼容性,這樣即使在沒有安裝DHCP服務器的網絡中,BOOTP客戶機仍可使用DHCP服務器和BOOTP中繼代理(見6.2.6節)支持DHCP服務。
消息格式包括一個固定長度的初始部分和一個可變長度的尾部。
在這裏插入圖片描述

  1. Op(操作)字段標識消息是請求(1)或應答(2)。
  2. HW類型(htype)字段的分配基於ARP 使用的值,並定義在相應的IANAARP參數頁中[IARP],最常見的值是1 (以太網)。
  3. HW長度(hlen)字段用於存放硬件(MAC)地址,對於類似以太網的網絡,該值通常爲6。
  4. 跳步字段用於保存消息傳輸過程中的中繼次數。消息發送方將該值設置爲0,並在每次中繼時遞增。與IP數據報的生存期差不多。
  5. 事務ID是由客戶機選擇的一個(隨機)數,服務器需要將它複製到響應中。它用於將應答與請求匹配。
  6. 秒數(Secs)字段由客戶機設置,它是第一次嘗試申請或重新申請地址經過的秒數。
  7. 標誌字段當前只包含一個經過定義的位,稱爲廣播標誌。客戶機可能在請求中設置該位,表示它們不能或不願處理單播IP數據報,但可處理廣播數據報(例如,由於它們沒有IP地址)。
  8. 客戶機IP地址(ciaddr)字段包括請求者的IP地址(如果已知),否則爲0。
  9. “你的” IP地址(yiaddr)字段由服務器填寫,以便向請求者提供服務器地址。
  10. 下一服務器IP地址(siaddr)字段給出下一個服務器的地址,它用於客戶機的引導過程(例如,如果客戶機需要下載一個可能需要由DHCP服務器之外的另一臺服務器完成的操作系統鏡像)。
  11. ’網關(中繼) IP地址(giaddr)字段由DHCP或BOOTP中繼器填寫,它們在轉發DHCP(BOOTP)消息時返回自已的地址。
  12. 客戶機硬件地址(chaddr)字段保存客戶機的唯一標識符,並可由服務器以不同方式來使用,包括當某個客戶機每次發送地址請求時爲其分配相同IP地址。這個字段通常保存客戶機的MAC地址,它被用作一個標識符。目前,客戶機標識符(6.2.3節和6.2.4節中描述的選項)是它的首選。
  13. 服務器名(sname)和引導文件名(file)字段。這些字段並不是每次都需要填寫,它們分別包含64字節或128字節ASCⅡ字符,表示服務器名或啓動文件路徑。
  14. 最後一個字段最初在BOOTP中稱爲供應商擴展字段,其長度固定,現在稱爲選項字段,但是長度可變。

4 DHCP和BOOTP選項

服務器給客戶端分配的信息可以有很多很多,比如服務器通過DHCP報文告訴客戶端網關是誰、子網掩碼是多少、DNS服務器是誰、NTP服務器是誰等等。而這些信息都是通過DHCP Option告訴給客戶端。
在這裏插入圖片描述
在這裏插入圖片描述

5 DHCP協議操作

DHCP消息是帶有一組特殊選項的BOOTP消息。當一臺新的客戶機連接到網絡時,它首先發現可用的DHCP服務器,以及它們能夠提供的地址。然後,它決定使用哪臺服務器和哪個地址,並向提供該地址的服務器發送請求(同時將其選擇通知所有服務器)。除非服務器在此期間已將該地址分配出去,否則它通過確認將地址分配給請求的客戶機。

BTree二樹:DHCP協議族操作
網址:https://www.bilibili.com/video/BV1Xg4y1b78J
在這裏插入圖片描述

6 DHCP狀態機

DHCP協議在客戶機和服務器中運行一個狀態機。狀態用於指出協議下一個處理的消息類型。圖6-10描述了客戶機的狀態機。狀態之間的轉換(箭頭)源於消息的接收和發送或超時。
在這裏插入圖片描述

7 DHCPv4

DHCPv4在TCP/IP協議詳解:卷一協議(第二版)裏面沒有裏面並沒有非常具體的介紹,CSDN裏面有關博文也是比較少,可能是因爲DHCPv4確實比較老了,沒什麼用。

然後,我在:豌豆代理(這是一個做IP代理的網站)的《例說圖解TCP/IP協議族–DDI篇(2)DHCPv4協議進階》,網址:https://www.wandouip.com/t5i284825/

找到了一些內容介紹,但是博主確實不知道DHCPv4的內容(我找了TCP/IP協議詳解:卷一協議(第二版)裏面沒有)。
然後與DHCPv6的對比可以看這篇博文:CSDN博主kdb_viewer的《DHCPV6 vs DHCPV4》,網址:https://blog.csdn.net/kdb_viewer/article/details/83310904

不做粘貼複製,別人原創文章的渣男所爲。

8 DHCPv6

DHCP的報文在不同場景中的交互過程。但DHCP報文的精髓還在於DHCP Option,我們知道DHCP報文主要作用是,服務器給客戶端分配IP。在無狀態模式下,IPv6客戶機認爲自已能配置IPv6地址,但需要通過DHCPv6獲得額外信息(例如DNS服務器地址)。

8.1 IPv6的生命週期

IPv6主機的每個接口通常擁有多個地址,並且每個地址都擁有一組計時器,以指出相應地址可使用多長時間和用於什麼目的。在IPv6中,地址分配包含一個首選生命週期和一個有效生命週期。這些生命週期用於判斷超時,將地址在自已的狀態機中從一種狀態轉換爲另一種狀態。

IPv6地址的生命週期。臨時地址僅用於DAD,直至被驗證爲唯一。此後,它們成爲首選地址,並可無限制地使用,直至超時將其狀態更改爲廢棄。廢棄地址不能用於初始化新連接,並且可能在有效超時期滿後不能使用。
在這裏插入圖片描述

8.2 DHCPv6消息格式(最有意義的信息攜帶在選項中)

DHCPv6消息封裝爲UDP/IPv6數據報,它使用客戶機端日546和服務器端日547 。消息發送到中繼代理或服務器,它使用一臺主機的鏈路範圍的源地址。這裏存在兩種消息格式,一種用於客戶機與服務器之間,另一種用於中繼代理。
在這裏插入圖片描述
左側的消息格式中的消息類型包括典型的DHCP消息(REQUEST、 REPLY等),右側的消息格式中的消息類型包括RELAYLFORW和RELAYLREPL,分別表示從中繼代理轉發和目的地是中繼代理的消息。右側的選項字段包括一箇中繼消息選項,其中包含中繼轉發的完整消息。其他選項也可包含在內。
在這裏插入圖片描述
在DHCPv6中,最有意義的信息攜帶在選項中,包括地址、租用時間、服務位置,以及客戶端標識符和服務器標識符。這些選項使用的兩個重要概念是身份關聯( IA)和DHCP唯一標識符(DUID)。我們將在後面加以討論。

8.3 身份關聯

身份關聯(IA)是用在DHCP客戶機和服務器之間的一個標識符,用於指向一個地址集。每個IA包括一個IA標識符(IAID)和相關配置信息。每個請求DHCPv6分配地址的客戶機接日至少需要一個IAo每個IA可以僅與一個接日相關聯。客戶機選擇的IA的ID唯一地址標識每個IA,並將這個值與服務器共享。

當服務器響應一個請求時,它爲客戶機的IA分配一個或多個地址,分配時基於服務器管理員確定的一組地址分配策略。在通常情況下,這些策略依賴於請求所到達的鏈路、客戶機的標準信息(DUID),以及DHCP選項中由客戶機提供的其他信息。

在這裏插入圖片描述

8.4 DHCP唯一標識符(DUID)

DHCP唯一標識符(DUID)用於標識一臺DHCPv6客戶機或服務器,並被設計爲可持續一段時間。服務器用它標識所選地址(作爲IA的一部分)對應的客戶機和配置信息,客戶機用它標識感興趣的服務器o DUID長度是可變的,對於大多數用途來說,客戶機和服務器將它看作一個不透明的值。

DUID有三種類型:

  1. DUID—LIT :基於鏈路層地址和時間的DUID,它是推薦的格式。在硬件類型之後,它包括一個32位的時間,其中的秒數開始於2000年1月1目午夜(UTC)(mod232)。它將在2016年歸零(返回0)。最後部分是一個可變長度的鏈路層地址。 鏈路層地址可由任何主機接口選擇,並使用相同的DUID,一旦選定,它可用於與任何接口的通信。這種格式的DUID是穩定的,使網絡接口從該DUID中移除。因此,它需要主機系統固定存儲相關信息。
  2. DUID-EN : 基於企業編號和供應商分配的DUID。
  3. DUID類型 :但也不是隻能創建這三種類型。

一個標準格式的DUID編碼開始於一個2字節的標識符,用於指出哪種類型的DUID。當前列表由IANA維護。。在DUID-LIT和DUID-LL中,緊跟着是一個來自[RFCO826]的16位的硬件類型;在DUID-EN中,則是一個32位的專用企業編號。

8.5 DHCPv6協議操作(注意於上面有區別)

在這裏插入圖片描述

9 使用DHCP中繼

在這裏插入圖片描述

在最簡單的網絡中,一個DHCP服務器可供同一局域網中的客戶機使用。但是,在更復雜的網絡中,可通過一個或更多DHCP中繼代理來中繼DHCP流量,以此來將DHCP操作擴展到跨越多個網段。

在一般情況下,中繼不會參與客戶機和服務器之間的所有DHCP流量交換。相反,它僅中繼那些廣播消息(或IPv6中的組播)。這種消息通常在客戶機首次獲得自已的地址時交換。

10 參考資料:

CSDN博主DHCP協議 詳解的《DHCP協議 詳解》,網址:https://blog.csdn.net/windeal3203/article/details/50677166?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

CSDN博主pythonchuxue的《DHCP原理及配置》,網址:https://blog.csdn.net/qq_41636653/article/details/81751060?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

CSDN博主kdb_viewer的《DHCPV6 vs DHCPV4》,網址:https://blog.csdn.net/kdb_viewer/article/details/83310904

豌豆代理(這是一個做IP代理的網站)的《例說圖解TCP/IP協議族–DDI篇(2)DHCPv4協議進階》,網址:https://www.wandouip.com/t5i284825/

TCP/IP協議詳解(原書第二版)卷1:協議 P160-208

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章