1 / 65

DHCP

第 14 章. DHCP. 本章重點. 14-1 DHCP 的基礎知識 14-2 DHCP 運作流程 14-3 DHCP 封包格式 14-4 實作練習:擷取 DHCP 封包. DHCP. 在 TCP/IP 的網路中 , 每一台電腦都必須有至少一個 IP 位址 , 而且這個 IP 位址必須是唯一的 , 不可和網路中其它電腦重複!因此 , 對於網路管理員而言 , 如何確保每台電腦 IP 位址的唯一性 , 實在是讓人傷透腦筋。

ulla-burt
Download Presentation

DHCP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 14 章 DHCP

  2. 本章重點 • 14-1 DHCP 的基礎知識 • 14-2 DHCP 運作流程 • 14-3 DHCP 封包格式 • 14-4 實作練習:擷取 DHCP 封包

  3. DHCP • 在 TCP/IP 的網路中, 每一台電腦都必須有至少一個 IP 位址, 而且這個 IP 位址必須是唯一的, 不可和網路中其它電腦重複!因此, 對於網路管理員而言, 如何確保每台電腦 IP 位址的唯一性, 實在是讓人傷透腦筋。 • 另外, 如果要變更 TCP/IP 的相關設定時, 也必須到每台電腦去修改。如果網路中只有一、二十台電腦, 這尚可接受; 但若是上百台電腦的網路, 要如何維護每台電腦的 TCP/IP 設定, 絕對是個令人頭疼的問題。

  4. DHCP • DHCP (Dynamic Host Configuration Protocol, 動態主機設定協定) 的出現,可以有效解決這個問題。DHCP 可以動態的分配 IP 位址給網路上的每台電腦, 而且也能指定 TCP/IP 的其它參數, 大幅減少網路管理員的負擔。

  5. 14-1 DHCP 的基礎知識 • 14-1-1 DHCP 原理 • 14-1-2 採用DHCP 服務的優點

  6. 14-1-1 DHCP 原理 • 當 DHCP 用戶端開機時, 會透過廣播方式尋找 DHCP 伺服器並要求指派 IP 位址, 這時伺服器就會傳回一個尚未被使用的 IP 位址, 同時也可以將相關參數一併傳送給用戶端。

  7. DHCP 原理 • 當 DHCP 用戶端獲得一個 IP 位址時, 並不能永久使用 (除非 DHCP 伺服器有特別設定)。在正常的情況下, 每個分配給 DHCP 用戶端的 IP 位址都有使用期限,這個期限就是 IP 位址的租約期限 (Lease Time)。租約期限長短是依各家的 DHCP伺服器而異。

  8. 14-1-2 採用DHCP 服務的優點 • DHCP 服務的用途如同本章一開始所言, 可以自動地分配 IP 位址給予 DHCP用戶端, 但其實另一項更大的好處在於方便管理。基於以下幾點原因, 就可以很清楚地了解在網路中佈署 DHCP 伺服器, 的確可以讓我們在管理上有事半功倍之效果。

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

  10. 採用DHCP 服務的優點 • 易於維護 DHCP 不但可以自動分配 I P 位址, 而且還可以指定各項 TCP/ I P 參數(例如:DNS 伺服器和預設閘道的 IP 位址), 因此, 當我們要變更相關的參數時,只要從 DHCP 伺服器上修改, 就可以讓所有 DHCP 用戶端都自動更新, 大幅節省維護成本。

  11. 採用DHCP 服務的優點 • 用戶端不需要繁瑣的設定 只要 DHCP 伺服器設定妥當, 用戶端只需設定為使用 DHCP 取得 IP 位址, 即可完成 TCP/IP 的設定, 快速又方便。 • IP 位址可重複使用 每當 DHCP 用戶端開機時, DHCP 伺服器便會分配 1 個 IP 位址給予使用, 當用戶端租約到期或取消租約後, 伺服器又可以將此 IP 位址分配給其他的 DHCP用戶端使用, 能有效的節省 IP 位址的用量。

  12. 14-2 DHCP 運作流程 • 從 DHCP 用戶端向 DHCP 伺服器要求租用 IP 位址開始, 直到完成用戶端的TCP/IP 設定, 簡單來說是由 4 個階段所組成。

  13. DHCP 運作流程 • 以下將逐一說明運作流程中的 4 個步驟。

  14. 1.要求租用 IP 位址 • 當我們將電腦設定成 DHCP 用戶端後, 第一次啟動電腦時即會進入此階段。首先由 DHCP 用戶端廣播一個 DHCPDiscover (尋找) 封包, 要求任一部 DHCP 伺服器提供 IP 租約。

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

  16. 3.確認 IP 租約 • 因為每一台 DHCP 伺服器都會送出 DHCPOffer 封包, 因此 DHCP 用戶端會收到多個 DHCPOffer 封包, 用戶端預設會回應最先收到的 DHCPOffer 封包, 其他陸續收到的 DHCPOffer 封包則不予理會。 • 用戶端接著以廣播方式送出 DHCPRequest (要求) 封包, 除了向選定的伺服器申請租用 IP 位址之外, 也讓其他曾送出 DHCPOffer 封包、但未雀屏中選的伺服器知道:「你們所提供的 IP 位址落選了。不必為我保留, 可以租用給其它的用戶端啦!」

  17. 3.確認 IP 租約 • 不過, 如果 DHCP 用戶端不接受 DHCPOffer 封包所提供的參數, 就會廣播一個 DHCPDecline (拒絕) 封包, 告知伺服器:「我不接受你建議的 IP 位址 (或租用期限…等)。」然後回到第一階段, 再度廣播 DHCPDiscover 封包, 重新執行整個取得租約的流程。 • 用戶端為何會不同意呢?最常見的原因是 IP 位址重複。因為用戶端收到伺服器建議的 IP 位址時, 通常會以 ARP 協定檢查該位址是否已被使用, 倘若有其它粗心的使用者, 手動設定 IP 位址時也佔用了相同的位址, 用戶端當然就要拒絕租用此 IP 位址。

  18. 4.同意 IP 租約 • 當被選中的 DHCP 伺服器收到 DHCPRequest 封包時, 假如同意用戶端的租用要求, 便會廣播 DHCPAck (承認) 封包給 DHCP 用戶端, 告知可以將設定值寫入TCP/IP 中, 並開始計算租用的時間。 • 當然, 可能也會出現伺服器不同意的狀況, 倘若 DHCP 伺服器不能給予 DHCP用戶端所要求的資訊 (例如:要求租用的 IP 已被佔用, 或者不能給予用戶端所要求的租約期限等) , 則會發出 DHCPNa ck (拒絕承認) 封包。當用戶端收到DHCPNack 封包時, 便直接回到第一階段, 重新執行整個流程。

  19. 更新租約 • 取得 IP 租約後, DHCP 用戶端必須定期更新 (Renew) 租約, 否則當租約到期,就不能再使用此 IP 位址。依照 RFC 2131 的敘述, 每當租用時間超過租約期限的1/2 (50%) 及 7/8 (87.5%) 時, 用戶端就必須發出 DHCPRequest 封包, 向 DHCP 伺服器要求更新租約。 • 但是各家廠商在設計產品時, 未必遵守 RFC 2131 的建議, 因此每種產品的更新租約期限可能不同。

  20. 更新租約 • 此外還要注意一點,更新租約時是以單點傳送(Unicast)方式發出 DHCPRequest封包, 也就是會指名那一台 DHCP 伺服器應該要處理此封包, 和前面確認 IP 租約階段中, 使用廣播方式發送 DHCPRequest 封包是不同的! • 以 Windows Server 2003 DHCP伺服器為例, 預設的租約期限為 8 天, 當租用時間超過 4 天時, DHCP 用戶端會向 DHCP伺服器要求續約, 將租約期限再恢復為原本的期限 (也就是 8 天)。

  21. 更新租約 • 若不幸在重試 3 次之後, 依然無法取得 DHCP伺服器的回應 (也就是無法和 DHCP 伺服器取得連繫), 則 DHCP 用戶端將會繼續使用此租約, 直到租用時間超過 7 天時, 會再度向 DHCP伺服器要求續約, 若仍然無法取得續約的訊息 (一樣會重試 3 次), 則 DHCP 用戶端改以廣播方式送出 DHCPRequest封包, 要求 DHCP 伺服器的服務。 • 當然, 用戶端也可以在租約期限內, 手動更新租約。在 Windows NT/2000/XP/2003/Vista/2008 中, 手動更新租約的方式是在命令提示字元模式下, 執行ipconfig /renew命令即可進行更新。

  22. 撤銷租約 • 再以 Windows 作業系統為例, 除了在重新啟動、關機均會送出 DHCPRelease封包撤銷租約外, 在命令提示字元模式下執行 ipconfig/release命令, 也會送出DHCPRelease 封包撤銷租約。 • 在 Windows Vista 下要撤銷租約時, 必須執行 『開始/所有程式/附屬應用程式』命令, 然後在命令提示字元項目上按滑鼠右鈕, 執行 『以系統管理員身份執行』命令,開啟命令提示字元視窗。

  23. 撤銷租約 • 但如果我們的 Windows Vista 電腦安裝了多張網路卡 , 直接執行 ipconfig /release命令時 , 預設是會撤銷所有網路卡的 IP 租約。若只想要撤銷特定網路卡的 IP租約 , 則請執行 ipconfig / release 連線名稱命令。 • 連線名稱指的是我們在網路連線視窗中看到的連線名稱 , 例如:『區域連線』、『區域連線 2 』等名稱。

  24. 14-3 DHCP 封包格式 • DHCP 封包在傳輸層(Transport Layer ) 是採用UDP 協定。當用戶端傳送給封包給伺服器時, 是送往 UDP 67 Port;而從伺服器傳送給用戶端則是送到 UDP 68 Port 。DHCP 的封包格式如右圖。

  25. DHCP 封包格式

  26. 14-3-1 封包欄位說明 • 以下我們擇要說明各重要欄位的意義, 至於某些目前已經罕用的欄位, 請讀者自行參考 RFC 2131 和 RFC 2939 。 • Op Code (Op) 若為 1, 表示這個封包是從用戶端送出的, 若為 2, 表示此封包是由伺服器所送出的。 • Hardware Type (Htype) 表示網路類型, 例如:1 表示乙太網路, 7 代表 ARCNET 。其它代碼請參閱 RFC1700 關於 ARP 的部分。

  27. 封包欄位說明 • Hardware Address Length (Hlen) MAC 位址的長度, 以 Byte 為單位, 以乙太網路來說, 其欄位值為 6。 • Hops (Hops) 當 DHCP 用戶端將封包送出時, 會將此欄位值設為 0 。而 Relay Agent 要轉送封包到 DHCP 伺服器時, 則將此值加 1 。

  28. DHCP Relay Agent 的用途 • 在第 3 章介紹路由器時曾提到, 路由器會阻隔廣播封包。所以若 DHCP 用戶端和 DHCP 伺服器分別位於路由器兩邊的區域網路時, DHCP 用戶端要尋找伺服器的廣播封包將會被路由器擋住, 導致用戶端無法取得 DHCP 伺服器的服務。 • 解決方法之一就是在路由器兩邊都架設 DHCP 伺服器;若不想多架設一台 DHCP 伺服器,則可使用 Relay Agent (轉送代理伺服器) 的方式。

  29. DHCP Relay Agent 的用途 • Relay Agent 會記錄路由器另一端的DHCP 伺服器的 IP 位址, 當 Relay Agent 發現區域網路中有 DHCPDiscover 或 DHCPRequest 廣播封包時, 它會收下該封包, 並將封包的目的位址改成 DHCP 伺服器的 IP 位址重新送出,此修改過的封包屬於單點傳送封包, 將可通過路由器而到達 DHCP 伺服器。

  30. DHCP Relay Agent 的用途

  31. 封包欄位說明 • Transaction ID (Xid) 當用戶端傳送封包時, 會隨機分配一組數字置於此欄位中。伺服器收到封包並回覆時, 會將此欄位值原封不動的寫在回覆封包裡, 而用戶端就是藉由此組數字分辨伺服器所回應的是那一個封包。 • Client IP Address (Ciaddr) 目前用戶端所使用的 IP 位址。 • Your IP Address (Yiaddr) 伺服器傳送 DHCPOffer、DHCPAck 封包時, 會將欲分配給用戶端的 IP 位址填入此欄位。

  32. 封包欄位說明 • Server IP Address (Siaddr) 當伺服器回應 DHCPDiscover 封包時, 會將自己的 IP 位址填入此欄位, 讓用戶端可以在稍後的 Request 封包中, 將此 IP 位址填入 Option Field 中的Server Identifier 欄位。 • RelayIP Address (Giaddr) 若伺服器和用戶端需透過 Relay Agent 交換封包時, Relay Agent 會在此欄位填入自己的 IP 位址。 • Client Ethernet Address (Chaddr) 此欄位值為 DHCP 用戶端的 MAC Address 。

  33. 封包欄位說明 • Server Host Name (Sname) 此欄位存放的是 DHCP 伺服器的名稱, 但 Windows 2000 不使用此欄位。 • Boot File Name (File) 這是當用戶端為 Diskless Workstation (無磁碟工作站) 時才會用到的欄位。此欄位由伺服器提供, 填入用戶端開機所需要的檔案名稱, 讓用戶端利用檔案傳輸工具下載此檔案, 並藉以完成開機程序。 • Option Field (Options) 上一節所提過的租約期限等重要資訊, 都是放在這個欄位中, 請參見以下的說明。

  34. 14-3-2 Option Field (非必要性欄位) • Option Field 不是單指一個欄位, 而是代表一組欄位。這組欄位由許多欄位組成, 它們有個共同特性-非必要性(Optional)。換言之, 不是每個 DHCP 封包都會有完整的整組欄位, 大部份只是有其中的部份欄位。 • 例如:DHCPDiscover 封包和 DHCPAck 封包均有 IP Address Lease Time (租約期限) 欄位, 但其它封包則沒有該欄位。我們根據 RFC 2131 整理出下列兩份表格, 說明這些 Option Field在各種封包出現的時機。

  35. Option Field (非必要性欄位)

  36. Option Field (非必要性欄位)

  37. Option Field (非必要性欄位) • 所謂『可以使用』, 是允許軟體廠商在實作時, 自行決定是否要使用該欄位;『應該使用』則是建議使用此欄位。因為有蠻大的彈性, 所以各家的 DHCP 軟體也會有差異。 • 現在我們針對每個欄位加以說明: • Requested Address 用戶端希望獲得的特定 IP 位址或是要更新 IP 租約時, 會在此欄位填入 IP 位址。通常這個欄位會在回覆 DHCPOffer 封包的 DHCPRequest 封包, 及重開機時發出的 DHCPRequest 封包中出現。

  38. Option Field (非必要性欄位) 這 3 個欄位分別代表租約期限、更新租約時間 (T1, 預設是租約期限的 1/2) 及最後更新時間 (T2, 預設是租約期限的 7/8)。 • IP Address Lease Time (含 T1 、T2) 其實這是由 3 個欄位組成:IP Address Lease Time、Renewal Time Value (T1)、Rebinding Time Value (T2)。

  39. Option Field (非必要性欄位) • Option Overload 當 Option 欄位的資料過多, 超過規定的最大長度時 (312 Bytes), 可以利用此欄位去設定借用 Sname 和 File 這兩個欄位的空間。欄位值為 1 時, 表示借用 File 欄, 欄位值為 2 時, 表示借用 Sname 欄, 若為 3, 表示兩個欄位都借來使用。 • DHCP Message Type 此欄位值表示目前所使用的是那一種封包類型, 欄位值與封包類型的對照表如右。

  40. Option Field (非必要性欄位) • Parameter Request List 用戶端可以利用此欄位要求伺服器提供所需要的參數, 例如:要求 DNS 伺服器的IP 位址等。

  41. Option Field (非必要性欄位) • Message 用來告知對方額外的訊息, 通常是錯誤訊息。 • Server Identifier 伺服器的 IP 位址, 當用戶端還未取得 IP 租約時, 所有的封包都是採用廣播方式傳送, 所以需要此欄位來辨識那一台 DHCP伺服器才是要配合的伺服器。另外,在 DHCP Release 封包中也會包含此欄位。 • Client Identifier 用戶端的 MAC 位址, 讓伺服器知道是那一台用戶端發出租用 IP 位址的要求。

  42. Option Field (非必要性欄位) • Maximum Message Size 用戶端告知伺服器自己可以接受的封包長度, 通常是伺服器和用戶端分別位在異質的網路, 例如:乙太網路與 ATM 網路, 才會使用到此欄位。 • 其實 Option Field這部分, 各家廠商在實作時, 或多或少都會有改變, 因此, 讀者在使用不同軟體實作時, 若發現與上述有所出入, 皆屬正常現象, 不必懷疑。

  43. Option Field (非必要性欄位) • 另外, 上述提到的封包類型有 7 種, 但依照 RFC 文件所定義, 在 DHCP 運作時,還有一種封包型態-DHCPInform。 • 這種封包通常用在當用戶端已經有 IP 位址 (通常是手動設定了一個 IP 位址), 但是其他相關的參數卻必需使用 DHCP 分派 (例如:DNS 伺服器的 IP 位址、預設閘道的 IP位址等資訊), 這時候用戶端便會利用DHCPInform 封包告知伺服器它所需要的參數, 而伺服器便會回應 DHCPAck 或DHCPNack 的封包, 回覆或拒絕用戶端的要求。

  44. Option Field (非必要性欄位) • 不過這種封包很少使用, 因此本書並未加以介紹, 若要了解此封包, 請讀者自行參閱 RFC 相關文件。

  45. 14-4 實作練習:擷取 DHCP 封包 • 本節我們以 3Com 的 3CRWE554G72T 頻寬分享器擔任 DHCP 伺服器, IP位址為 192.168.1.1;以 Windows Vista 為 DHCP 用戶端, 擷取 DHCP 運作流程中的封包。

  46. 14-4-1 首次租用 IP 位址 • 將 DHCP 用戶端設定為自動取得 IP 位址, 而後重新開機, 擷取圖 14-02 運作流程中 4 個步驟的封包。

  47. 首次租用 IP 位址

  48. 首次租用 IP 位址 • 完整的 4 個步驟包含這 4 種封包。 • 在 4 個步驟裡都是發送廣播封包。 • 這 4 個封包都是針對用戶端的同一次要求, 所以 Transaction ID 都一樣。 • 1 代表此封包是由用戶端發出的要求封包。 • 所處的網路環境為乙太網路。 • 因為是乙太網路, 所以 MAC 位址的長度為 6 Bytes 。 • 目前用戶端尚無 IP 位址, 所以為 0。

  49. 首次租用 IP 位址 • 用戶端的 MAC 位址。 • 此封包為 DHCPDiscover 封包。 • MSFT 5.0 代表用戶端為 Windows 2000/XP/Vista/2008;若為 MSFT 98 則表示用戶端為 Windows 98/Me 。 • DHCP 伺服器收到 DHCPDiscover 封包後, 送出 DHCPOffer 封包回覆用戶端的要求。

  50. 首次租用 IP 位址

More Related