500 likes | 768 Views
第 14 章. DHCP. Ren-Jie Wang, 王 仁 傑 , Ph.D. rjwang@mail.ntit.edu.tw http://home.scs.ntit.edu.tw/rjwang/. 本章重點. 14-1 DHCP 的基礎知識 14-2 DHCP 運作流程 14-3 DHCP 封包格式 14-4 實作練習:擷取 DHCP 封包. DHCP 架構. DHCP Client 要求使用 DHCP 服務的電腦。 DHCP Server 提供 DHCP 服務的設備。 Scope
E N D
第 14 章 DHCP Ren-Jie Wang,王 仁 傑, Ph.D. rjwang@mail.ntit.edu.tw http://home.scs.ntit.edu.tw/rjwang/
本章重點 • 14-1 DHCP 的基礎知識 • 14-2 DHCP 運作流程 • 14-3 DHCP 封包格式 • 14-4 實作練習:擷取 DHCP 封包
DHCP 架構 • DHCP Client • 要求使用 DHCP 服務的電腦。 • DHCP Server • 提供 DHCP 服務的設備。 • Scope • 每台 DHCP Server 都至少管理一組 IP 位址, 這組 IP 位址便稱為 Scope。
IP 位址的租約期限 • 每個分配給 DHCP Client 的 IP 位址都有使用期限, 稱為『租約期限』 (Lease Time)。 • 租約期限長短依各家的 DHCP Server 而異, Windows 2000 預設是 8 天。
DHCP 的好處 • 不易出錯 • 易於維護 • Client 不需要繁瑣的設定 • IP 位址可重複使用
更新租約 • 自動更新: • 以 Windows 2000 DHCP Server 為例, 預設的租約期限為 8天, 當租用時間超過 4 天時, DHCP Client 會向 Server 要求續約。 • 手動更新: • Ipconfig /renew 命令
撤消租約 • 執行 Ipconfig /release 命令。
DHCP 常見問題:找不到 DHCP Server • 若 Client 為 Windows 2000 之作業系統, 而且未關閉 APIPA 功能: • 自動將 IP 位址設定為 169.254.0.0 網路中的某個 IP, 子網路遮罩為 255.255.0.0。 • 若 Client 不是 Windows 2000 之作業系統, 或是關閉了 APIPA 功能: • 第一次發出 Discover 封包後, 每隔 5 分鐘就會再發出此封包, 一直重試 3 次。
DHCP 常見問題:重新啟動電腦, 要求更新租約 • Client 已經得了 IP 租約, 而且租約尚未過期, 但是 Client 端重新開機。 • Client 重新啟動後, 會以廣播方式發出 Request 封包, 讓 Server 判斷是否可分派和先前相同的 IP 位址給 Client。
DHCP 常見問題:DHCP Relay Agent (1) • DCHP Server 與 DHCP Client 若位於不同的子網路, 廣播封包會被 Router 攔下, 而無法進行溝通。解決方式: 1. 啟用 Router 的 DHCP Forwarding 功能 2.指定某部電腦擔任 DHCP Relay Agent 3.更改 Router 設定, 使廣播封包能通過 Router
DHCP 常見問題:DHCP Relay Agent (2) 指定某部電腦擔任 DHCP Relay Agent
14-3 DHCP 封包格式 • DHCP 封包在傳輸層(Transport Layer ) 是採用UDP 協定。當用戶端傳送給封包給伺服器時, 是送往 UDP 67 Port;而從伺服器傳送給用戶端則是送到 UDP 68 Port 。DHCP 的封包格式如右圖。
封包欄位說明 (1) • Op Code (Op) • 1 表示封包從 Client 送出, 2 表示由 Server 送出。 • Hardware Type (Htype) • 表示網路類型。例如:1 表示乙太網路, 7 代表 ARCNET 。其它代碼請參閱 RFC1700 關於 ARP 的部分。 • Hardware Address Length (Hlen) • MAC 位址的長度, 以 Byte 為單位。 • Hops (Hops) • 當 DHCP Client 將封包送出時, 會將此欄值設為 0 。而 Relay Agent 要轉送封包到 DHCP 伺服器時, 則將此值加 1 。
封包欄位說明 (2) • Transaction ID (Xid) • Client 藉由此組數字分辨 Server 所回應的是那一個封包。 • Client IP Address (Ciaddr) • 目前 Client 所使用的 IP 位址。 • Your IP Address (Yiaddr) • Server 傳送 Offer、Ack 封包時, 會將欲分配給 Client 的 IP 位址填入此欄位。 • Server IP Address (Siaddr) • 當 Server 回應 Discover 封包時, 會將自己的 IP 位址填入此欄位。
封包欄位說明 (3) • Relay IP Address (Giaddr) • Server 和 Client 需透過 Relay Agent 交換封包時, Relay Agent 會在此欄位填入自己的 IP 位址。 • Client Ethernet Address (Chaddr) • 此欄位值為 Client 的 MAC Address。 • Server Host Name (Sname) • 存放 DHCP Server 的名稱。 • Boot File Name (File) • 當 Client 為無磁碟工作站時才會用到的欄位。 • Option Field (Options) • 是 DHCP 封包的核心, 在後文有詳細說明。
Option Field 欄位說明 (1) • Requested Address • Client 希望 Server 能分配某特定 IP 位址或要更新 IP 租約時, 會在此欄填入 IP 位址。 • IP Address Lease Time (含 T1、T2) • 由 3 個欄位組成:IP Address Lease Time、Renewal Time Value (T1)、Rebinding Time Value (T2)。 • Option Overload • Option 欄位超過最大長度時 (312 Bytes), 可以利用此欄位去設定借用 Sname 和 File 這兩個欄位。
Option Field 欄位說明 (2) • DHCP Message Type • 表示目前所使用的是哪一種封包類型。 • Parameter Request List • Client 可用此欄位要求 Server 提供所需要的參數。 • Message • 用來告知對方額外的訊息。
Option Field 欄位說明 (3) • Server Identifier • Client 採用廣播方式傳送封包, 需要此欄位來辨視哪一台 DHCP Server 才是要配合的 Server。 • Client-identifier • Client 的 MAC Address。 • Maximum Message Size • Client 告知 Server 自己可接受的封包長度
14-4 實作練習:擷取 DHCP 封包 • 本節我們以 3Com 的 3CRWE554G72T 頻寬分享器擔任 DHCP 伺服器, IP位址為 192.168.1.1;以 Windows Vista 為 DHCP 用戶端, 擷取 DHCP 運作流程中的封包。
14-4-1 首次租用 IP 位址 • 將 DHCP 用戶端設定為自動取得 IP 位址, 而後重新開機, 擷取圖 14-02 運作流程中 4 個步驟的封包。
首次租用 IP 位址 • 完整的 4 個步驟包含這 4 種封包。 • 在 4 個步驟裡都是發送廣播封包。 • 這 4 個封包都是針對用戶端的同一次要求, 所以 Transaction ID 都一樣。 • 1 代表此封包是由用戶端發出的要求封包。 • 所處的網路環境為乙太網路。 • 因為是乙太網路, 所以 MAC 位址的長度為 6 Bytes 。 • 目前用戶端尚無 IP 位址, 所以為 0。
首次租用 IP 位址 • 用戶端的 MAC 位址。 • 此封包為 DHCPDiscover 封包。 • MSFT 5.0 代表用戶端為 Windows 2000/XP/Vista/2008;若為 MSFT 98 則表示用戶端為 Windows 98/Me 。 • DHCP 伺服器收到 DHCPDiscover 封包後, 送出 DHCPOffer 封包回覆用戶端的要求。
首次租用 IP 位址 • 2 代表此封包是由 DHCP 伺服器發出的回覆封包。 • 目前用戶端尚無 IP 位址, 所以為 0。 • DHCP 伺服器提供給用戶端租用的 IP 位址。 • DHCP 伺服器自己的 IP 位址。 • 此封包為 DHCPOffer 封包。 • 租約期限為 12 小時 • DHCP 伺服器同時賦予用戶端的子網路遮罩。 • DHCP 伺服器同時賦予用戶端預設閘道的 IP 位址。
首次租用 IP 位址 • 用戶端收到 DHCP 伺服器發出的 DHCPOffer 封包後, 通常先以 ARP 協定檢查伺服器要出租的 IP 位址是否已被使用。若然, 則發出 DHCPDecline 封包拒絕租用該位址;若尚未被使用, 則發出 DHCPRequest 封包通知伺服器確定要租用:
首次租用 IP 位址 • 此封包為 DHCPRequest 封包。 • 用戶端要求租用的 IP 位址, 通常就是 DHCP 伺服器提供的 IP 位址。 • 用戶端的主機名稱。
首次租用 IP 位址 • DHCP 伺服器收到 DHCPRequest 封包後, 通常以 DHCPAck 封包同意用戶端的租用要求。
首次租用 IP 位址 • DHCP 伺服器同意出租此 IP 位址。 • 此封包為 DHCPAck 封包。 • DHCP 伺服器同意的租約期限。 • DHCP 伺服器賦予用戶端的子網路遮罩。 • 歷經上述 4 個步驟之後, 用戶端便擁有了 IP 位址, 所以往後與 DHCP 伺服器或其它電腦溝通時, 可以不必用廣播封包, 改用單點傳送封包即可。
14-4-2 更新 IP 位址的租約 • 當用戶端要更新租約時, 會發出 DHCPRequest 封包。但是此封包與前一節的 DHCPRequest 封包有所不同, 它不是以廣播方式發送, 而且封包內容也有差異。
更新 IP 位址的租約 • 以單點傳送方式傳送給 DHCP 伺服器, 不必廣播。 • 用戶端目前所使用的 IP 位址。 • 此封包為 DHCPRequest 封包。 • 用戶端的主機名稱。 • DHCP 伺服器收到用戶端要求更新租約後, 若同意用戶端更新租約, 則送出DHCPAck 封包給用戶端。
更新 IP 位址的租約 • 當 Giaddr (Relay agent IP address) 為 0, 而 Ciaddr (Client IP address) 不為 0時,DHCP 伺服器會以單點傳送方式發送 DHCPAck 封包。 • 與前一個封包(圖 14-09)的 Transaction ID 相同, 表示此封包是回覆前一封包。 • 用戶端目前所使用的 IP 位址。 • DHCP 伺服器同意出租的 IP 位址。 • 此封包為 DHCPAck 封包。 • DHCP 伺服器同意的租約期限。 • DHCP 伺服器賦予用戶端的子網路遮罩。
更新 IP 位址的租約 • 用戶端收到 DHCPAck 封包後, 租用時間會歸零、重新起算, 直到到達 6 小時(50%)時, 再發出 DHCPRequest 封包更新租約。如此週而復始, 不斷運作, 直到任一方主動撤銷租約。
撤銷 IP 位址的租約 • 以單點傳送方式發給 DHCP 伺服器, 不必廣播。 • 用戶端目前所租用的 IP 位址。 • 此封包為 DHCPRelease 封包。