5-4 動態主機設定系統分析
5-4-1 DHCP 系統簡介 (A) 分配 IP 位址與提供網路參數 『動態主機組態協定』(Dynamic Host Configuration Protocol, HDCP) 系統是伺服端提供客戶端相關網路參數,如『IP address、Netmask、DNS address、Default Gateway、、、』等相關網路位址。一般主機網路參數有:靜態設定(Static) 與動態設定(Dynamic) 兩種模式,如選用 Static mode,則必須直接輸入上述相關參數;如設定 Dynamic Mode (或 DHCP mode),則主機開機時,會自動到網路上尋找 DHCP 伺服器,並要求給予相關參數,取得之後再自動設定。然而,主機啟動之後,如何與 DHCP 伺服器溝通取得網路參數的運作,則須仰賴 HDCP 協定的運作。
圖 5-15-1 DHCP 系統功能 (B) 提供網路啟動 DHCP 伺服器除了分配 IP 位址與網路參數外,也提供網路啟動的功能,即是『Bootstrap Protocol (BOOTP)』。有些主機為了安全起見,並沒有安裝啟動硬碟,或甚至沒有硬碟,則它網路卡上安裝有 BOOT ROM,起動時會向 DHCP 伺服器要求開機程式位址,DHCP 伺服器會給予一個 Boot file,並讓它取得開機程式。但此類型 DHCP 伺服器大多不支援 IP 分配,因它分配 IP 位址之後,租約期限將無上限。 5-4-2 DHCP 協定運作 DHCP(Dynamic Host Configuration Protocol) 協定是提供伺服端與客戶端之間,協議動態 IP 位址的分配,並幫客戶端指定 default gateway、DNS Server 位址、WINS Server 等參數。伺服端與客戶端運作程序如下圖所示。說明如下:
圖 5-15 DHCP 運作程序 (A) 尋找 DHCP 伺服器:DHCP Discovery 當主機啟動時,發現本機並沒有指定靜態 IP,以及相關參數,而是動態分配網路參數時,它便發出 DHCP Discovery 封包廣播到網路上,詢問 DHCP 伺服器在哪裡。此時客戶端還不知道是屬於哪一個網路區段,因此來源位址設定為 0.0.0.0,目的位址設定為 255.255.255.255。然而,伺服端埠口位於 67/udp,客戶端是 68/udp。 (B) 提供 IP 組用位址:DHCP Offer 當 DHCP Server 監聽到 DHCP Discovery 時,便會回應一個 DHCP Offer 訊息給客戶端,也許網路上有多個 DHCP Server,客戶端同時收到多個 Offer 訊息,大多以最早收到的訊息為主。當 DHCP Server 發出訊息之前,它會在 IP Pool 內尋找一個空閒的 IP 位址,再利用 ARP 封包廣播到網路上,探測是否此 IP 是否已被使用中。如果沒有主機回應此 ARP 封包,則表示未被使用,則連同其他相關參數,包裝成 DHCP Offer 廣播到網路上,並指定客戶端的 HW 位址(Ethernet 位址)為目的位址。 (C) 接受 IP 租約:DHCP Request 客戶端收到 DHCP Offer 封包後,由封包內取出被分配的 IP 位址,並利用 ARP 封包探測此 IP 位址是否被使用,如果沒有則發出 DHCP Request 封包給 Server 端,要求使用此 IP 位址;如果發現此 IP 位址已被使用,則回應 DHCP Decline 訊息給 Server 端,並拒絕使用。 (D) 租約確認:DHCP Ack 當 DHCP Server 收到客戶端的 DHCP Request 後,會對客戶端發出 DHCP Ack 訊息,表示租約 IP 正式有效,並開始使用。 客戶端收到 DHCP Ack 之後,表示確定可以使用該 IP 位址,但它也再利用 ARP 封包廣播到網路上,探測是否此 IP 是否已被使用中。真的沒有其他主機使用,才繼續使用該 IP 位址。 (D) 租約有效期限:DHCP Request/DHCP Ack 當客戶端取得 IP 位址之後,除非租約失效而且 IP 位址也重新設定為 0.0.0.0,否則無須再發送 DHCP Discovery 尋找 DHCP 伺服器。當取得 IP 位址主機重新啟動時,它直接發送 DHCP Request 並之前取得的 IP 位址,發送給之前的 DHCP Server,收到 DHCP Server 回應 DHCP Ack 訊息表示可以繼續使用,如收到 DHCP Nack,則表示需重新發送 DHCP Discovery 尋找 DHCP Server 要求給予服務。 5-4-3 DHCP 封包格式 在 DHCP 協定運作當中各種封包 (DHCP Discovery/Offer/Request/Ack 等等)封裝格式大致相同,僅內部參數欄位識別而已。另外 DHCP 封包係利用 IP + UDP 封包包裝,客戶端埠口位於 68/udp,伺服端在 67/udp 埠口。因客戶端未取得 IP 位址以前,都是用 0.0.0.0 表示,又不知道伺服端 IP 位址,皆採用廣播位址 255.255.255.255。圖 5-15-1 為 UDP 包裝 DHCP 封包格式,說明如下
圖 5-15-2 DHCP Over UDP 封包包裝 ● IP Header: ■ Protocol ID = 17 ■ Source IP:DHCP Client 還未有 IP 之前設定為 0.0.0.0。 ■ Destination IP:DHCP Client 還不知道 DHCP Server 之前設定為 255.255.255.255(廣播位址)。 ● UDP Header: ■ Source Port:DHCP Client = 68,DHCP Server = 67。 ■ Destination:DHCP Client = 68,DHCP Server = 67 ● DHCP Message Payload: 如圖 5-15-4 所示。 圖 5-15-2 是 DHCP 封包包裝,各欄位說明如下:
圖 5-15-3 DHCP 封包格式 各欄位說明如下: ● OP:辨識 DHCP Request (OP = 1)或 DHCP Response (OP = 0)。 ● HTYPE:硬體類別。Ethernet HW 為 1。 ● HLEN:硬體位址長度。Ethernet HW 為 6。 ● HOPS:累計封包經過路由器轉送次數,網內為 0。 ● Transaction ID:DHCP Request 封包序號,DHCP Response 依此序號回應。 ● Seconds:DHCP Client 啟動時間。 ● Flage:16 bits。最左邊為 1 表示 Server 廣撥給 Client,其他未用。 ● ciaddr:Client 想使用之前向 Server 取用的位址。 ● yiaddr:Server 分配給 Client 的 IP 位址 (DHCP Offer 與 DHCP ACK)。 ● siaddr:若 Client 需要網路開機 (BOOTP),則儲存開機程式儲存的 IP 位址 (於 DHCP Offer 或 DHCP Ack 封包內)。 ● giaddr:若需跨網域進行 DHCP 請求時,此欄位為 Relay Agent 位址。 ● chaddr:Client 的硬體位址(Ethernet 位址)。 ● sname:Server 的名稱字串,以 0x00 結尾。 ● file:若 Client 需要網路開機,則儲存開機程式的檔案名稱。 ● Option:提供更多設定資訊,如 NetMask、Gateway、DNS 、、等等。每一筆資料以 Code、LEN、Value 等三個欄位填寫,如圖 5-15-3 所示。
圖 5-15-4 DHCP Option 欄位格式 更重要的,DHCP 封包還利用此欄位來辨識封包格式,如表所示。(節錄)
另外,DHCP Option 也可當 DHCP Offer 封包存放存放網路參數的位置,客戶端發送 DHCP Request 攜帶網路參數尋求伺服端同意否。網路訊息編號如下:
5-4-4 DHCP 系統規劃與建置 (A) 系統分析 吾人利用 Packet Tracer 建置一套 DHCP 模擬系統,需要下列兩個主要設備,如下: (1) DHCP 伺服器:提供動態 IP 分配的功能。 (2) PC-PT 主機:網路參數選擇動態分配。 (B) 規劃網路架構 我們利用 Cisco Packet Tracer 規劃與建置 DHCP 伺服系統,來觀察它的運作模式吾人需選擇下列元件來建置: (1) Server-PT:模擬伺服器主機。選用 4 只,包含:HTTP_Server 、FTP_Server、DNS_Server與 DHCP_Server,其中包含靜態位址分配。 (2) PC-PT:模擬客戶端主機。選用PC0 與 PC1 客戶端兩只。 (3) 2960-24TT。選用 1 只,為各主機之間連線使用。 主機的 IP 位址設定與埠口位置,如下所示:
依照上述參數建置網路如下:[請下載:DHCP Server 系統.pkt]
圖 5-16 DHCP 網路系統 (C) DHCP 伺服器設定 (1) 步驟 1:由 DHCP_Server 上開啟 DHCP 服務,並輸入 IP 指定範圍,以及 Default Gateway 與 DNS 位址。如下:
(2) 步驟 2:於 PC0 與 PC1 設定成 DHCP 取得網路參數,如下: 上開啟 Desktop => Command Prompt,並輸入: (3) 步驟 3:於 PC0上開啟 Desktop => Command Prompt,並輸入 c:\> ipconfig,如下:
5-4-5 DHCP 協定分析 (A) PC0 主機關機/開機 當主機啟動時,會立即發出 DHCP Discovery 訊息尋找 DHCP Server。因此,吾人必須將主機關機,在它開機時擷取 DHCP 相關封包。譬如選擇 PC0 關機,則點選 PC0 -> Physical,將開關關閉,如下: 也可執行 ipconfig /release 釋放網路參數,再執行 ipconfig /renew 重新要求分配 IP 位址,如下: (B) Packet Tracer 擷取封包 (1) 設定 Packet Tracer 為 Simulation Mode,並擷取 ARP 與 DHCP 封包。 (2) 再開啟 PC0 主機電源,於 Packet Tracer 上按下 Auto Capture/Play,擷取到封包如下圖: (C) DHCP Discovery封包 此封包是 PC0 開機後,發出尋找 DHCP Server 之封包。 得到下列結果:
(D) ARP query封包 DHCP Server 尋找一個 IP 位址(192.168.0.2)後,發出 ARP 封包詢問是否有其他主機使用此 IP 位址。 得到下列結果:
(C) DHCP Offer/Request/Ack 封包 請自行擷取分析。
|
翻轉工作室:粘添壽
網路規劃與管理技術:
翻轉電子書系列:
|