64
第 14 第 DHCP

第 14 章

Embed Size (px)

DESCRIPTION

第 14 章. DHCP. 本章提要. DHCP 基礎 DHCP 運作流程 DHCP 封包格式 擷取 DHCP 封包. DHCP 基礎. 在 TCP/IP 的網路中 , 每一台電腦都必須有一個 IP 位址 , 而且這個 IP 位址必須是唯一的 , 不可和網路中其它電腦重複! DHCP (Dynamic Host Configuration Protocol, 動態主機設定協定 ) 的出現 , 可以確保每台電腦 IP 位址的唯一性。 - PowerPoint PPT Presentation

Citation preview

第 14 章

DHCP

2

本章提要 DHCP 基礎 DHCP 運作流程 DHCP 封包格式 擷取 DHCP 封包

3

DHCP 基礎 在 TCP/IP 的網路中 , 每一台電腦都必須

有一個 IP 位址 , 而且這個 IP 位址必須是唯一的 , 不可和網路中其它電腦重複!

DHCP (Dynamic Host Configuration Protocol, 動態主機設定協定 ) 的出現 , 可以確保每台電腦 IP 位址的唯一性。

DHCP 可以動態的分配 IP 位址給每台網路上的電腦 , 而且也能指定 TCP/IP 的其它參數 , 大幅減少網路管理員的負擔。

4

DHCP 原理 當 DHCP 用戶端開機時 , 會透過廣播方

式尋找 DHCP 伺服器並要求指派 IP 位址 , 這時伺服器就會傳回一個尚未被使用的 IP 位址 , 同時也可以將相關參數一併傳送給用戶端。

5

DHCP 原理 當 DHCP 用戶端獲得一個 IP 位址時 ,

並不能永久使用 ( 除非 DHCP 伺服器有特別設定 ) 。

在正常的情況下 , 每個分配給 DHCP 用戶端的 IP 位址都有使用期限 , 這個期限就是 IP 位址的租約期限 (Lease Time) 。租約期限長短是依各家的 DHCP 伺服器而異。

6

採用 DHCP 服務的優點 不易出錯 易於維護 用戶端不需要繁瑣的設定 IP 位址可重複使用

7

不易出錯 因為 DHCP 伺服器每出租一個 IP 位址

時 , 都會在資料庫中建立一筆相對應的租用資料 , 因此幾乎不可能發生 IP 重複租用的狀況。而且這個出租、登記作業 , 不需要人力介入 , 更可以避免人為的錯誤 ( 例如:輸入錯誤 ) 。

8

易於維護 DHCP 不但可以自動分配 IP 位址 , 而

且還可以指定各項 TCP/IP 參數 ( 例如:DNS 伺服器、 WINS 伺服器的 IP 位址 ), 因此 , 當我們要變更相關的參數時 , 只要從 DHCP 伺服器上修改 , 就可以讓所有 DHCP 用戶端都自動更新 , 大幅節省維護成本。

9

用戶端不需要繁瑣的設定 只要 DHCP 伺服器設定妥當 , 用戶端只

需設定為使用 DHCP 分配 IP 位址 , 即可完成 TCP/IP 的設定 , 快速又方便。

10

IP 位址可重複使用 每當 DHCP 用戶端開機時 , DHCP 伺服

器便會分配 1 個 IP 位址給予使用 , 當用戶端租約到期或取消租約後 , 伺服器又可以將此 IP 位址分配給其他的 DHCP 用戶端使用 , 能有效的節省 IP 位址的數量。

11

DHCP 運作流程

12

DHCP 運作流程

13

DHCP 運作流程的 4 個步驟1. 要求租用 IP 位址

– 當我們將電腦設定成 DHCP 用戶端後 , 第一次啟動電腦時即會進入此階段。

– 首先由 DHCP 用戶端廣播一個 DHCP Discover ( 尋找 ) 封包 , 要求任一部 DHCP 伺服器提供 IP 租約。

14

DHCP 運作流程的 4 個步驟2. 提供可租用的 IP 位址

– 因為 DHCP Discover 是以廣播方式送出 , 所以網路上所有的 DHCP 伺服器都會收到此封包 , 而每一台 DHCP 伺服器收到此封包時 , 都會從本身的領域中 , 找出一個可用的 IP 位址 , 設定租約期限後記錄在 DHCP Offer ( 提議 ) 封包 , 再以廣播方式送給用戶端。

15

DHCP 運作流程的 4 個步驟3. 確認 IP 租約

– 因為每一台 DHCP 伺服器都會送出 DHCP Offer 封包 , 因此 DHCP 用戶端會收到多個DHCP Offer 封包 , 用戶端預設會接受最先收到的 DHCP Offer 封包 , 其他陸續收到的DHCP Offer 封包則不予理會。

– 用戶端接著以廣播方式送出 DHCP Request ( 要求 ) 封包 , 除了向選定的伺服器申請租用 IP 位址之外 , 也讓其他曾送出 DHCP Offer 封包、但未中選的伺服器知道落選了 , 可以租用給其它的用戶端啦!

16

DHCP 運作流程的 4 個步驟– 不過 , 如果 DHCP 用戶端不接受 DHCP 伺

服器所提供的參數 , 就會廣播一個 DHCP Decline ( 拒絕 ) 封包 , 告知伺服器不接受所建議的 IP 位址 ( 或租用期限…等 ) 。然後回到第一階段 , 再度廣播 DHCP Discover 封包 , 重新執行整個取得租約的流程。

– 用戶端不同意最常見的原因是 IP 位址重複。因為用戶端收到伺服器建議的 IP 位址時 , 通常會以 ARP 協定檢查該位址是否已被使用 , 倘若已被佔用了相同的位址 , 用戶端當然就要拒絕租用此 IP 位址。

17

DHCP 運作流程的 4 個步驟4. 同意 IP 租約

– 當被選中的 DHCP 伺服器收到 DHCP Request 封包時 , 假如同意用戶端的租用要求 , 便會廣播 DHCP Ack (承認 ) 封包給 DHCP 用戶端 , 告知可以將設定值寫入 TCP/IP 中 , 並開始計算租用的時間。

– 倘若 DHCP 伺服器不能給予 DHCP 用戶端所要求的資訊 ( 例如:要求租用的 IP 已被佔用 , 或者不能給予用戶端所要求的租約期限等 ), 則會發出 DHCP Nack ( 拒絕承認 ) 封包。當用戶端收到 DHCP Nack 封包時 , 便直接回到第一階段 , 重新執行整個流程。

18

更新租約 取得 IP 租約後 , DHCP 用戶端必須定期

更新 (Renew) 租約 , 否則當租約到期 , 就不能再使用此 IP 位址。

依照 RFC 2131 的敘述 , 每當租用時間超過租約期限的 1/2 (50%) 及 7/8 (87.5%) 時 , 用戶端就必須發出 DHCP Request 封包 , 向 DHCP 伺服器要求更新租約。

但是各家廠商在設計產品時 , 未必採用 RFC 2131 的數據 , 因此每種產品的更新租約期限可能不同。

19

更新租約 更新租約時是以單點傳送 (Unicast) 方式

發出 DHCP Request 封包 , 也就是會指名那一台 DHCP 伺服器應該要處理此封包 , 和前面確認 IP 租約階段中 , 使用廣播方式發送 DHCP Request 封包是不同的!

以 Windows 2000 DHCP 伺服器為例 , 預設的租約期限為 8 天 , 當租用時間超過 4 天時 , DHCP 用戶端會向 DHCP 伺服器要求續約 , 將租約期限再恢復為原本的期限 ( 也就是 8 天 ) 。

20

更新租約若不幸在重試 3 次之後 , 依然無法取得

DHCP 伺服器的回應 ( 也就是無法和 DHCP 伺服器取得連繫 ), 則 DHCP 用戶端將會繼續使用此租約 , 直到租用時間超過 7 天時 , 會再度向 DHCP 伺服器要求續約 , 若仍然無法取得續約的訊息 ( 一樣會重試 3 次 ), 則 DHCP 用戶端改以廣播方式送出 DHCP Request 封包 , 要求 DHCP 的服務。

21

手動更新租約 當然 , 我們也可以在租約期限內 , 手動

更新租約。 在 Windows NT/2000/XP 中 , 手動更新

租約的方式是在命令提示字元模式下 , 執行 Ipconfig /renew 命令即可進行更新。

22

撤消租約 以 Windows 2000/XP 為例 , 除了在重新

啟動、關機均會送出 DHCPRelease 封包 , 撤消租約外。

在命令提示字元輸入 "IPCONFIG/ RELEASE" 、按 鍵 , 也會送出 DHCP Release 封包撤消租約。

23

撤消租約 但如果 Windows XP 安裝了多張網路卡 ,

當直接執行 Ipconfig / release 命令時 , 預設是會撤消所有網路卡的 IP 租約。

若只想要撤消特定網路卡的 IP 租約 , 則請執行 Ipconfig / release 連線名稱命令。

連線名稱指的是我們在網路連線視窗中看到的連線名稱 , 例如:區域連線、區域連線 2 等名稱。

24

DHCP 封包格式 DHCP 封包在傳訊層 (Transport Layer)

是採用 UDP 協定 , 而當用戶端傳送給封包給伺服器時 , 採用的是 UDP 67 Port, 從伺服器傳送給用戶端則是使用 UDP 68 Port 。

25

DHCP 封包格式

26

DHCP 封包格式

27

封包欄位說明 Op Code (Op)

– 若為 1, 表示這個封包是從用戶端送出的 , 若為 2, 表示此封包是由伺服器所送出的。

Hardware Type (Htype)– 表示網路類型 , 例如: 1 表示 Ethernet, 7 代表 ARCNET 。其它代碼請參閱 RFC 1700 關於 ARP 的部分。

Hardware Address Length (Hlen)– MAC 位址的長度 , 以 Byte 為單位 , 以 Eth

ernet 來說 , 其欄位值為 6 。

28

封包欄位說明 Hops (Hops)

– 當 DHCP 用戶端將封包送出時 , 會將此欄位值設為 0 。而 Relay Agent 要轉送封包到 DHCP 伺服器時 , 則將此值加 1 。

Transaction ID (Xid)– 當用戶端傳送封包時 , 會隨機分配一組數字置於此欄位中。伺服器收到封包並回覆時 , 會將此欄位值原封不動的寫在回覆封包裡 , 而用戶端就是借由此組數字分辨伺服器所回應的是那一個封包。

29

Relay Agent 的運作情形

30

封包欄位說明 Client IP Address (Ciaddr)

– 目前用戶端所使用的 IP 位址。 Your IP Address (Yiaddr)

– 伺服器傳送 DHCPOffer 、 DHCPAck 封包時 , 會將欲分配給用戶端的 IP 位址填入此欄位。

31

封包欄位說明 Server IP Address (Siaddr)

– 當伺服器回應 DHCPDiscover 封包時 , 會將自己的 IP 位址填入此欄位 , 讓用戶端可以在稍後的 Request 封包中 , 將此 IP 位址填入 Option Field 中的 Server Identifier 欄位。

Relay IP Address (Giaddr)– 若伺服器和用戶端需透過 Relay Agent 交換

封包時 , Relay Agent 會在此欄位填入自己的IP 位址。

32

封包欄位說明 Client Ethernet Address (Chaddr)

– 此欄位值為用戶端的 MAC Address 。 Server Host Name (Sname)

– 此欄位存放的是 DHCP 伺服器的名稱 , 但Windows 2000 不使用此欄。

33

封包欄位說明 Boot File Name (File)

– 這是當用戶端為 Diskless Workstation (無磁碟工作站 ) 時才會用到的欄位。

– 此欄位由伺服器提供 , 填入用戶端開機所需要的檔案名稱 , 讓用戶端利用檔案傳輸工具下載此檔案 , 並藉以完成開機程序。

Option Field (Options)– 租約期限等重要資訊 , 都是放在這個欄位中。

34

Option Field ( 非必要性欄位 ) Option Field 不是單指一個欄位 , 而是代表一組欄位。這組欄位由許多欄位組成 , 它們有個共同特性-非必要性。

換言之 , 不是每個 DHCP 封包都會有完整的整組欄位 , 大部份只是有其中的部份欄位。例如: DHCPDiscover 封包和DHCPAck 封包均有 IP Address Lease Time 欄位 , 但其它封包則沒有該欄位。

35

Option Field ( 非必要性欄位 )

36

Option Field ( 非必要性欄位 )

37

Option Field 欄位說明 Requested Address

– 用戶端希望伺服器能分配某一特定 IP 位址或是要更新 IP 租約時 , 會在此欄位填入 IP 位址。通常這個欄位會在回覆 DHCPOffer 封包的 DHCPRequest 封包 , 及重開機時發出的 DHCPRequest 封包中出現。

38

Option Field 欄位說明 IP Address Lease Time (含 T1 、 T2)

– 這是由 3 個欄位所組成: IP Address Lease Time 、 Renewal Time Value (T1) 、 Rebinding Time Value (T2) 。

– 這 3 個欄位分別代表:租約期限、更新租約時間 (T1, 預設是租約期限的 1/2) 、最後更新時間 (T2, 預設是租約期限的 7/8) 。

39

Option Field 欄位說明 Option Overload

– 當 Option 欄位的資料過多 , 超過規定的最大長度時 (312 Bytes), 可以利用此欄位去設定借用 Sname 和 File 這兩個欄位。

– 欄位值為 1 時 , 表示借用 File 欄 , 欄位值為 2 時 , 表示借用 Sname 欄 , 若為 3, 表示兩個欄位都借來使用。

40

Option Field 欄位說明 DHCP Message Type

– 此欄位值表示目前所使用的是那一種封包類型 , 欄位值與封包類型的對照表:

41

Option Field 欄位說明 Parameter Request List

– 用戶端可以用此欄位要求伺服器提供所需要的參數 , 例如要求 DNS 伺服器的 IP 位址等。

Message– 用來告知對方額外的訊息 , 通常是錯誤訊息。

42

Option Field 欄位說明 Server Identifier

– 伺服器的 IP 位址 , 當用戶端還未取得 IP 租約時 , 所有的封包都是採用廣播方式傳送 , 所以需要此欄位來辨視那一台 DHCP 伺服器才是要配合的伺服器。

Client Identifier– 用戶端的 MAC 位址 , 讓伺服器知道是那一

台用戶端發出租用 IP 位址的要求。

43

Option Field 欄位說明 Maximum Message Size

– 用戶端告知伺服器自己可以接受的封包長度 , 通常是伺服器和用戶端分別位在異質的網路 , 才會使用到此欄位。

44

Option Field ( 非必要性欄位 ) 在 DHCP 運作時 , 還有一種封包型態-

DHCPInform 。這種封包通常用在當用戶端已經有 IP 位址 (通常是手動設定了一個 IP 位址 ), 但是其他相關的參數卻必須使用 DHCP 分派 ( 例如: DNS 伺服器的 IP 位址、預設閘道的 IP 位址等資訊 ), 這時候用戶端便會利用 DHCPInform 封包告知伺服器它所需要的參數 , 而伺服器便會回應 DHCPAck 或 DHCPNack 的封包 , 回覆或拒絕用戶端的要求。

45

擷取 DHCP 封包 本節以 PCI ( 久森科技 ) 的 BRL-04FW 頻寬分享器擔任 DHCP 伺服器 , IP 位址為 192.168.1.1;以 Windows XP 為 DHCP 用戶端 , 擷取 DHCP 運作流程中的封包。

46

首次租用 IP 位址

47

首次租用 IP 位址1. 完整的 4 個步驟包含這 4 種封包。2. 在 4 個步驟裡都是發送廣播封包。3. 這 4 個封包都是針對用戶端的同一次

要求 , 所以 Transaction ID 都一樣。4. 1 代表此封包是由用戶端發出的要求封

包。5. 所處的網路環境為乙太網路。6. 因為是乙太網路 , 所以 MAC 位址的

長度為 6 Bytes 。

48

首次租用 IP 位址7. 目前用戶端尚無 IP 位址 , 所以為 0 。8. 用戶端的 MAC 位址。9. 此封包為 DHCPDiscover 封包。10. MSFT 5.0 代表用戶端為 Windows 200

0/XP;若為 MSFT 98 則表示用戶端為Windows 98/Me 。

49

首次租用 IP 位址

50

首次租用 IP 位址1. 2 代表此封包是由 DHCP 伺服器發出

的回覆封包。2. 目前用戶端尚無 IP 位址 , 所以為 0 。3. DHCP 伺服器提供給用戶端租用的 IP

位址。4. DHCP 伺服器自己的 IP 位址。5. 此封包為 DHCPOffer 封包。6. 租約期限為 2 天 2 小時

51

首次租用 IP 位址7. 租用了 1 天 1 小時 (50%) 之後就得

更新租約 , 使已租用時間歸零、重新起算。

8. 若前次更新租約未成功 , 則在租用了 1 天 19 小時又 45 分鐘後就得更新租約。這個數據與 RFC 文件所規範的不同 , 應屬廠商實作上的改變。

9. DHCP 伺服器同時要賦予用戶端的子網路遮罩。

10. DHCP 伺服器同時要賦予用戶端預設閘道的 IP 位址。

52

首次租用 IP 位址 用戶端收到 DHCP 伺服器發出的 DHCP

Offer 封包後 , 通常先以 ARP 協定檢查伺服器要出租的 IP 位址是否已被使用。

若然 , 則發出 DHCPDecline 封包拒絕租用該位址。

若尚未被使用 , 則發出 DHCPRequest 封包通知伺服器確定要租用。

53

首次租用 IP 位址

54

首次租用 IP 位址1. 此封包為 DHCPRequest 封包。2. 用戶端要求租用的 IP 位址 , 通常就是

DHCP 伺服器提供的 IP 位址。3. 用戶端的主機名稱。

DHCP 伺服器收到 DHCPRequest 封包後 , 通常以 DHCPAck 封包同意用戶端的租用要求。

55

首次租用 IP 位址

56

首次租用 IP 位址1. DHCP 伺服器同意出租此 IP 位址。2. 此封包為 DHCPAck 封包。3. DHCP 伺服器同意的租約期限與更新租

約時間。4. DHCP 伺服器賦予用戶端的子網路遮罩。

歷經上述 4 個步驟之後 , 用戶端便擁有了 IP 位址 , 所以往後與 DHCP 伺服器或其它電腦溝通時 , 可以不必用廣播封包 , 改用單點傳送封包即可。

57

更新 IP 位址的租約 當用戶端要更新租約時 , 會發出 DHCPR

equest 封包。但是此封包與前一小節的 DHCPRequest 封包有所不同 , 它不是以廣播方式發送 , 而且封包內容也有差異。

58

更新 IP 位址的租約

59

更新 IP 位址的租約1. 以單點傳送方式傳送給 DHCP 伺服器 ,

不必廣播。2. 用戶端目前所使用的 IP 位址。3. 此封包為 DHCPRequest 封包。4. 用戶端的主機名稱。

DHCP 伺服器收到用戶端要求更新租約後 , 通常以廣播方式送出 DHCPAck 封包 , 同意用戶端更新租約。

60

更新 IP 位址的租約

61

更新 IP 位址的租約1. 以廣播方式發送此封包。2. 與前一個封包的 Transaction ID 相同 , 表示此封包是回覆前一封包。

3. 用戶端目前所使用的 IP 位址。4. DHCP 伺服器同意出租的 IP 位址。5. 此封包為 DHCPAck 封包。6. DHCP 伺服器同意的租約期限與更新租

約時間。

62

更新 IP 位址的租約7. DHCP 伺服器賦予用戶端的子網路遮罩。

用戶端收到 DHCPAck 封包後 , 租用時間會歸零、重新起算 , 直到到達 1 天 1 小時 (50%) 時 , 再發出 DHCPRequest 封包更新租約。如此週而復始 , 不斷運作 , 直到任一方主動撤消租約。

63

撤消 IP 位址的租約

64

撤消 IP 位址的租約1. 以單點傳送方式發給 DHCP 伺服器 ,

不必廣播。2. 用戶端目前所租用的 IP 位址。3. 此封包為 DHCPRelease 封包。