動態主機配置協議DHCP

Love&Share發表於2021-01-13

一---導讀

在日常生活中我們使用電腦,當我們連線到一個新的網路的時候,你知道中間發生了什麼,最終你可以上網的嗎?一個主機想要上網,需要如下配置資訊:IP地址,子網掩碼,預設閘道器,DNS伺服器。

如果手動去配置這些,容易出錯還麻煩,這時就有一個解放人類雙手的好工具-DHCP伺服器,可為區域網主機中各主機配置以上4個資訊。

主機開機後自啟動DHCP伺服器,然後向DHCP伺服器請求配置資訊 本篇我們就來介紹一下DHCP(Dynamic Host  Configuration Protocol)。

 

 

 二---相關術語的介紹

DHCP DISCOVER: DHCP發現報文,其內部裝有事物ID和DHCP客戶端MAC地址。

DHCP OFFER:DHCP提供報文

DHCP REQUEST: DHCP請求報文

DHCP ACK:DHCP確認報文

DHCP NACK :DHCP否認報文

DHCP RELEASE:DHCP釋放報文

說明:DHCP客戶沒有獲取地址的時候使用的地址為0.0.0.0。

          最開始客戶採用廣播地址廣播傳送的方式去傳送相應的報文。

 

 

三---例項講解DHCP工作過程

假設網路中有兩臺DHCP伺服器和一臺主機,DHCP使用客戶-伺服器方式,在DHCP伺服器上執行DHCP服務程式(簡稱伺服器),在使用者主機商行執行DHCP客戶程式(簡稱為客戶)

DHCP是TCP/IP協議體系中的應用層中的協議,使用運輸層的UDP所提供的服務,也就是說,DHCP報文在運輸層會被打包成UDP使用者資料包,伺服器使用的UDP埠是67,客戶用的是68,UDP使用者資料包在網路層被打包成IP資料包。根據所使用的網路介面封裝成相應的資料鏈路層的幀。

下面我們來看看伺服器和客戶的互動過程,當啟用主機的DHCP後,DHCP客戶程式通過廣播的方式向DHCP伺服器傳送DHCP發現報文,因為主機目前還沒有分配到IP地址,所以該發現報文的源地址0.0.0.0,

目的IP地址為廣播地址255.255.255.255,之所以採用廣播傳送,因為主機此時並不知道伺服器有幾臺,IP地址是什麼?由於是光播的IP資料包,所以網路中的程式都會收到該資料包,對其層層解封。解封出封裝有DHCP發現報文的使用者資料包,對於DHCP客戶來說,其應用層沒有監聽該UDP資料包的目的埠67的程式,無法交付 DHCP發現報文,只能丟棄。另一邊,DHCP伺服器始終執行著DHCP伺服器程式。接受該發現報文並做出響應。DHCP的伺服器收到發現報文後,根據報文中的客戶端的MACI地址來查詢自己的資料庫,看是否有針對該MACI地址的配置資訊。如果有,就把這些配置資訊打包成提供報文發給使用者主機,沒有的話就採取預設的配置資訊來傳送提供報文,封裝該資料包的源IP地址就是伺服器本身的地址,源IP地址任然為廣播地址(主機目前還沒有配IP地址,為了讓他收到,只能用廣播)。因為是廣播傳送,所以所有設定都能收到。伺服器沒有監聽目的埠68的程式,於是會丟棄該報文,只有客戶會收到並且提取出有用的資訊。客戶會根據收到的提供報文中的事物ID來判斷該報文是不是自己所請求的報文(看兩個事物ID是否一樣),如果一樣,就接受該報文。否則丟棄該報文。

其中分配IP地址的時候,伺服器會使用ARP來確保所選的IP地址未被網路中的其他主機佔用,本例中,兩個伺服器的都收到,但留下先到的那個。然後傳送請求報文,徵得該伺服器同意就可以用IP地址了。

伺服器1接收該請求,傳送確認報文。

 

之後主機就可以使用該IP地址上網了。

全過程圖解

 

 

四---DHCP中繼代理

我們看如圖所示情況,有些主機隔的遠,當傳送發現報文給DHCP伺服器的時候,會被路由器無情的拒絕。

這時我們需要策反路由器,使其成為DHCP中繼代理,每月給他發點工資,讓他乖乖聽話。

 

相關文章