Download presentation
Presentation is loading. Please wait.
1
第 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提供給電腦的組態資訊,如
IP位址 子網遮罩 閘道器的IP位址 名稱伺服器的IP位址 作業系統 DHCP使得許多台電腦可以動態地分享少數的 IP 位址,而解決 IP 位址不足的問題
5
DHCP 原理 當 DHCP 用戶端開機時, 會透過廣播方式尋找 DHCP 伺服器並要求指派 IP 位址, 這時伺服器就會傳回一個尚未被使用的 IP 位址, 同時也可以將相關參數一併傳送給用戶端。
6
DHCP 原理 當 DHCP 用戶端獲得一個 IP 位址時, 並不能永久使用 (除非 DHCP 伺服器有特別設定)。
在正常的情況下, 每個分配給 DHCP 用戶端的 IP 位址都有使用期限, 這個期限就是 IP 位址的租約期限 (Lease Time)。租約期限長短是依各家的 DHCP 伺服器而異。
7
採用 DHCP 服務的優點 不易出錯 易於維護 用戶端不需要繁瑣的設定 IP 位址可分享利用
8
不易出錯 因為 DHCP 伺服器每出租一個 IP 位址時, 都會在資料庫中建立一筆相對應的租用資料, 因此幾乎不可能發生 IP 重複租用的狀況。而且這個出租、登記作業, 不需要人力介入, 更可以避免人為的錯誤 (例如:輸入錯誤)。
9
易於維護 DHCP 不但可以自動分配 IP 位址, 而且還可以指定各項 TCP/IP 參數 (例如:DNS 伺服器、WINS 伺服器的 IP 位址), 因此, 當我們要變更相關的參數時, 只要從DHCP 伺服器上修改, 就可以讓所有DHCP 用戶端都自動更新, 大幅節省維護成本。
10
用戶端不需要繁瑣的設定 只要 DHCP 伺服器設定妥當, 用戶端只需設定為使用 DHCP 分配 IP 位址, 即可完成 TCP/IP 的設定, 快速又方便。
11
IP 位址可分享利用 每當 DHCP 用戶端開機時, DHCP 伺服器便會分配 1 個 IP 位址給予使用, 當用戶端租約到期或取消租約後, 伺服器又可以將此 IP 位址分配給其他的 DHCP 用戶端使用, 能有效的節省 IP 位址的數量。
12
DHCP 運作流程(1)
13
DHCP訊息互換(1)
14
DHCP 運作流程(2)
15
DHCP訊息互換(2) DHCP訊息互換(2)
16
DHCP 運作流程的 4 個步驟 1. 要求租用 IP 位址 當我們將電腦設定成 DHCP 用戶端後, 第一次啟動電腦時即會進入此階段。
首先由 DHCP 用戶端廣播一個 DHCP Discover (尋找) 封包, 要求任一部 DHCP 伺服器提供 IP 租約。
17
DHCP 運作流程的 4 個步驟 2.提供可租用的 IP 位址
因為 DHCP Discover 是以廣播方式送出, 所以網路上所有的 DHCP 伺服器都會收到此封包, 而每一台 DHCP 伺服器收到此封包時, 都會從本身的領域中, 找出一個可用的 IP 位址, 設定租約期限後記錄在 DHCP Offer (提議) 封包, 再以廣播方式送給用戶端。
18
DHCP 運作流程的 4 個步驟 3.確認 IP 租約 因為每一台 DHCP 伺服器都會送出 DHCP Offer 封包, 因此 DHCP 用戶端會收到多個DHCP Offer 封包, 用戶端預設會接受最先收到的 DHCP Offer 封包, 其他陸續收到的DHCP Offer 封包則不予理會。 用戶端接著以廣播方式送出 DHCP Request (要求) 封包, 除了向選定的伺服器申請租用IP 位址之外, 也讓其他曾送出 DHCP Offer 封包、但未中選的伺服器知道落選了, 可以租用給其它的用戶端啦!
19
DHCP 運作流程的 4 個步驟 不過, 如果 DHCP 用戶端不接受 DHCP 伺服器所提供的參數, 就會廣播一個 DHCP Decline (拒絕) 封包, 告知伺服器不接受所建議的 IP位址 (或租用期限…等)。然後回到第一階段, 再度廣播 DHCP Discover 封包, 重新執行整個取得租約的流程。 用戶端不同意最常見的原因是 IP 位址重複。因為用戶端收到伺服器建議的 IP 位址時, 通常會以 ARP 協定檢查該位址是否已被使用, 倘若已被佔用了相同的位址, 用戶端當然就要拒絕租用此 IP 位址。
20
DHCP 運作流程的 4 個步驟 4.同意 IP 租約 當被選中的 DHCP 伺服器收到 DHCP Request 封包時, 假如同意用戶端的租用要求, 便會廣播 DHCP Ack (承認) 封包給 DHCP 用戶端, 告知可以將設定值寫入 TCP/IP 中, 並開始計算租用的時間。 倘若DHCP 伺服器不能給予 DHCP 用戶端所要求的資訊 (例如:要求租用的 IP 已被佔用, 或者不能給予用戶端所要求的租約期限等), 則會發出 DHCP Nack (拒絕承認) 封包。當用戶端收到 DHCP Nack 封包時, 便直接回到第一階段, 重新執行整個流程。
21
更新租約 取得 IP 租約後, DHCP 用戶端必須定期更新 (Renew) 租約, 否則當租約到期, 就不能再使用此 IP 位址。
依照 RFC 2131 的敘述, 每當租用時間超過租約期限的 1/2 (50%) 及 7/8 (87.5%) 時, 用戶端就必須發出 DHCP Request 封包, 向 DHCP 伺服器要求更新租約。 但是各家廠商在設計產品時, 未必採用 RFC 2131 的數據, 因此每種產品的更新租約期限可能不同。
22
更新租約 更新租約時是以單點傳送 (Unicast) 方式發出 DHCP Request 封包, 也就是會指名那一台 DHCP 伺服器應該要處理此封包, 和前面確認 IP 租約階段中, 使用廣播方式發送 DHCP Request 封包是不同的! 以 Windows 2000 DHCP 伺服器為例, 預設的租約期限為 8 天, 當租用時間超過 4 天時, DHCP 用戶端會向 DHCP 伺服器要求續約, 將租約期限再恢復為原本的期限 (也就是 8 天)。
23
更新租約 若不幸在重試 3 次之後, 依然無法取得 DHCP 伺服器的回應 (也就是無法和 DHCP 伺服器取得連繫), 則 DHCP 用戶端將會繼續使用此租約, 直到租用時間超過 7 天時, 會再度向 DHCP 伺服器要求續約, 若仍然無法取得續約的訊息 (一樣會重試 3 次), 則 DHCP用戶端改以廣播方式送出 DHCP Request 封包, 要求 DHCP 的服務。
24
手動更新租約 當然, 我們也可以在租約期限內, 手動更新租約。
在 Windows NT/2000/XP 中, 手動更新租約的方式是在命令提示字元模式下, 執行Ipconfig /renew 命令即可進行更新。
25
撤消租約 以 Windows 2000/XP 為例, 除了在重新啟動、關機均會送出 DHCPRelease 封包, 撤消租約外。
在命令提示字元輸入 "IPCONFIG/ RELEASE"、按 鍵, 也會送出 DHCP Release 封包撤消租約。
26
撤消租約 但如果 Windows XP 安裝了多張網路卡, 當直接執行 Ipconfig / release 命令時, 預設是會撤消所有網路卡的 IP 租約。 若只想要撤消特定網路卡的 IP 租約, 則請執行 Ipconfig / release 連線名稱命令。 連線名稱指的是我們在網路連線視窗中看到的連線名稱, 例如:區域連線、區域連線 2 等名稱。
27
DHCP 封包格式 DHCP 封包在傳訊層 (Transport Layer) 是採用 UDP 協定, 而當用戶端傳送給封包給伺服器時, 採用的是 UDP 67 Port, 從伺服器傳送給用戶端則是使用 UDP 68 Port。
28
DHCP 封包格式
29
DHCP 封包格式
30
封包欄位說明 Op Code (Op) Hardware Type (Htype)
若為 1, 表示這個封包是從用戶端送出的, 若為 2, 表示此封包是由伺服器所送出的。 Hardware Type (Htype) 表示網路類型, 例如:1 表示 Ethernet, 7 代表ARCNET。其它代碼請參閱 RFC 1700 關於ARP 的部分。 Hardware Address Length (Hlen) MAC 位址的長度, 以 Byte 為單位, 以Ethernet 來說, 其欄位值為 6。
31
封包欄位說明 Hops (Hops) Transaction ID (Xid)
當 DHCP 用戶端將封包送出時, 會將此欄位值設為 0。而 Relay Agent 要轉送封包到 DHCP 伺服器時, 則將此值加 1。 Transaction ID (Xid) 當用戶端傳送封包時, 會隨機分配一組數字置於此欄位中。伺服器收到封包並回覆時, 會將此欄位值原封不動的寫在回覆封包裡, 而用戶端就是借由此組數字分辨伺服器所回應的是那一個封包。
32
Relay Agent 的運作情形
33
封包欄位說明 Client IP Address (Ciaddr) Your IP Address (Yiaddr)
伺服器傳送 DHCPOffer、DHCPAck 封包時, 會將欲分配給用戶端的 IP 位址填入此欄位。
34
封包欄位說明 Server IP Address (Siaddr) Relay IP Address (Giaddr)
當伺服器回應 DHCPDiscover 封包時, 會將自己的 IP 位址填入此欄位, 讓用戶端可以在稍後的 Request 封包中, 將此 IP 位址填入 Option Field 中的 Server Identifier 欄位。 Relay IP Address (Giaddr) 若伺服器和用戶端需透過 Relay Agent 交換封包時, Relay Agent 會在此欄位填入自己的IP 位址。
35
封包欄位說明 Client Ethernet Address (Chaddr) Server Host Name (Sname)
此欄位值為用戶端的 MAC Address。 Server Host Name (Sname) 此欄位存放的是 DHCP 伺服器的名稱, 但Windows 2000 不使用此欄。
36
封包欄位說明 Boot File Name (File) Option Field (Options)
這是當用戶端為 Diskless Workstation (無磁碟工作站) 時才會用到的欄位。 此欄位由伺服器提供, 填入用戶端開機所需要的檔案名稱, 讓用戶端利用檔案傳輸工具下載此檔案, 並藉以完成開機程序。 Option Field (Options) 租約期限等重要資訊, 都是放在這個欄位中。
37
Option Field (非必要性欄位) Option Field 不是單指一個欄位, 而是代表一組欄位。這組欄位由許多欄位組成, 它們有個共同特性-非必要性。 換言之, 不是每個 DHCP 封包都會有完整的整組欄位, 大部份只是有其中的部份欄位。例如:DHCPDiscover 封包和DHCPAck 封包均有 IP Address Lease Time 欄位, 但其它封包則沒有該欄位。
38
Option Field (非必要性欄位)
39
Option Field (非必要性欄位)
40
Option Field 欄位說明 Requested Address
用戶端希望伺服器能分配某一特定 IP 位址或是要更新 IP 租約時, 會在此欄位填入 IP 位址。通常這個欄位會在回覆 DHCPOffer 封包的 DHCPRequest 封包, 及重開機時發出的 DHCPRequest 封包中出現。
41
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)。
42
Option Field 欄位說明 Option Overload
當 Option 欄位的資料過多, 超過規定的最大長度時 (312 Bytes), 可以利用此欄位去設定借用 Sname 和 File 這兩個欄位。 欄位值為 1 時, 表示借用 File 欄, 欄位值為 2 時, 表示借用 Sname 欄, 若為 3, 表示兩個欄位都借來使用。
43
Option Field 欄位說明 DHCP Message Type
此欄位值表示目前所使用的是那一種封包類型, 欄位值與封包類型的對照表:
44
Option Field 欄位說明 Parameter Request List Message
用戶端可以用此欄位要求伺服器提供所需要的參數, 例如要求 DNS 伺服器的 IP 位址等。 Message 用來告知對方額外的訊息, 通常是錯誤訊息。
45
Option Field 欄位說明 Server Identifier Client Identifier
伺服器的 IP 位址, 當用戶端還未取得 IP 租約時, 所有的封包都是採用廣播方式傳送, 所以需要此欄位來辨視那一台 DHCP 伺服器才是要配合的伺服器。 Client Identifier 用戶端的 MAC 位址, 讓伺服器知道是那一台用戶端發出租用 IP 位址的要求。
46
Option Field 欄位說明 Maximum Message Size
用戶端告知伺服器自己可以接受的封包長度, 通常是伺服器和用戶端分別位在異質的網路, 才會使用到此欄位。
47
Option Field (非必要性欄位) 在 DHCP 運作時, 還有一種封包型態-DHCPInform 。這種封包通常用在當用戶端已經有 IP 位址 (通常是手動設定了一個IP 位址), 但是其他相關的參數卻必須使用 DHCP 分派 (例如:DNS 伺服器的IP 位址、預設閘道的 IP位址等資訊), 這時候用戶端便會利用 DHCPInform 封包告知伺服器它所需要的參數, 而伺服器便會回應 DHCPAck 或 DHCPNack 的封包, 回覆或拒絕用戶端的要求。
48
擷取 DHCP 封包 本節以 PCI (久森科技) 的 BRL-04FW 頻寬分享器擔任 DHCP 伺服器, IP 位址為 ;以 Windows XP 為 DHCP 用戶端, 擷取 DHCP 運作流程中的封包。
49
首次租用 IP 位址
50
首次租用 IP 位址 完整的 4 個步驟包含這 4 種封包。 在 4 個步驟裡都是發送廣播封包。
這 4 個封包都是針對用戶端的同一次要求, 所以 Transaction ID 都一樣。 1 代表此封包是由用戶端發出的要求封包。 所處的網路環境為乙太網路。 因為是乙太網路, 所以 MAC 位址的長度為 6 Bytes。
51
首次租用 IP 位址 目前用戶端尚無 IP 位址, 所以為 0。 用戶端的 MAC 位址。 此封包為 DHCPDiscover 封包。
MSFT 5.0 代表用戶端為 Windows 2000/XP;若為 MSFT 98 則表示用戶端為Windows 98/Me。
52
首次租用 IP 位址
53
首次租用 IP 位址 2 代表此封包是由 DHCP 伺服器發出的回覆封包。 目前用戶端尚無 IP 位址, 所以為 0。
此封包為 DHCPOffer 封包。 租約期限為 2 天 2 小時
54
首次租用 IP 位址 租用了 1 天 1 小時 (50%) 之後就得更新租約, 使已租用時間歸零、重新起算。
若前次更新租約未成功, 則在租用了 1 天 19 小時又 45 分鐘後就得更新租約。這個數據與 RFC 文件所規範的不同, 應屬廠商實作上的改變。 DHCP 伺服器同時要賦予用戶端的子網路遮罩。 DHCP 伺服器同時要賦予用戶端預設閘道的 IP 位址。
55
首次租用 IP 位址 用戶端收到 DHCP 伺服器發出的DHCPOffer 封包後, 通常先以 ARP 協定檢查伺服器要出租的 IP 位址是否已被使用。 若然, 則發出 DHCPDecline 封包拒絕租用該位址。 若尚未被使用, 則發出DHCPRequest 封包通知伺服器確定要租用。
56
首次租用 IP 位址
57
首次租用 IP 位址 此封包為 DHCPRequest 封包。 用戶端要求租用的 IP 位址, 通常就是DHCP 伺服器提供的 IP 位址。
用戶端的主機名稱。 DHCP 伺服器收到 DHCPRequest 封包後, 通常以 DHCPAck 封包同意用戶端的租用要求。
58
首次租用 IP 位址
59
首次租用 IP 位址 DHCP 伺服器同意出租此 IP 位址。 此封包為 DHCPAck 封包。
60
更新 IP 位址的租約 當用戶端要更新租約時, 會發出DHCPRequest 封包。但是此封包與前一小節的 DHCPRequest 封包有所不同, 它不是以廣播方式發送, 而且封包內容也有差異。
61
更新 IP 位址的租約
62
更新 IP 位址的租約 以單點傳送方式傳送給 DHCP 伺服器, 不必廣播。 用戶端目前所使用的 IP 位址。
此封包為 DHCPRequest 封包。 用戶端的主機名稱。 DHCP 伺服器收到用戶端要求更新租約後, 通常以廣播方式送出 DHCPAck 封包, 同意用戶端更新租約。
63
更新 IP 位址的租約
64
更新 IP 位址的租約 以廣播方式發送此封包。 與前一個封包的 Transaction ID 相同, 表示此封包是回覆前一封包。
DHCP 伺服器同意出租的 IP 位址。 此封包為 DHCPAck 封包。 DHCP 伺服器同意的租約期限與更新租約時間。
65
更新 IP 位址的租約 DHCP 伺服器賦予用戶端的子網路遮罩。
用戶端收到 DHCPAck 封包後, 租用時間會歸零、重新起算, 直到到達 1 天 1 小時 (50%) 時, 再發出 DHCPRequest 封包更新租約。如此週而復始, 不斷運作, 直到任一方主動撤消租約。
66
撤消 IP 位址的租約
67
撤消 IP 位址的租約 以單點傳送方式發給 DHCP 伺服器, 不必廣播。 用戶端目前所租用的 IP 位址。
此封包為 DHCPRelease 封包。
Similar presentations