1. 程式人生 > >linux服務篇-DHCP服務原理分析

linux服務篇-DHCP服務原理分析

1. 概述

DHCP【Dynamic Host Configuration Protocol的簡稱】動態主機配置協議,是一個區域網的網路協議,工作在UDP協議之上,屬於應用層協議。主要有兩個用途:

  1. 給內部網路或網路服務供應商自動分配IP地址,主機名,DNS伺服器,域名
  2. 配合其它服務,實現整合化管理功能。如:無人執守安裝伺服器

其特點是:

  1. 其工作模式為C/S模式【伺服器/客戶端模式】
  2. 自動分配IP地址,方便管理
  3. DHCP不會同時租借相同的IP地址給兩臺主機
  4. DHCP管理員可以約束特定的計算機使用特定的IP地址
  5. 可以為每個DHCP作用域設定很多選項
  6. 客戶機在不同子網間移動時不需要重新設定IP地址。每次都自動獲取IP地址就可以了

主要缺陷表現在:

  1. 當網路上存在多伺服器時,一個DHCP伺服器不能查出已被其它伺服器租出去的IP地址
  2. DHCP伺服器不能跨路由器與客戶機通訊,除非路由器允許BOOTP協議轉發

DHCP服務使用67號【bootps服務端】埠和68埠【bootpc客戶端】,可用 vim /etc/services檢視:
這裡寫圖片描述
DHCP協議由 bootp協議發展而來,是BOOTP的增強版本,bootps代表服務端埠, bootpc代表客戶端埠

擴充套件:
bootp協議:載入程式協議(BOOTP)。它可以讓無盤工作站從一箇中心伺服器上獲得IP地址,為區域網中的無盤工作站分配動態IP地址,並不需要每個使用者去設定靜態IP地址。
BOOTP有一個缺點:您在設定前須事先獲得客戶端的硬體地址,而且,MCA地址與IP的對應是靜態的。換而言之,BOOTP非常缺乏“動態性 ”,若在有限的IP資源環境中,BOOTP的一對一對應會造成非常可觀的浪費。

2. 執行原理

執行原理如下圖所示:

這裡寫圖片描述

以下我將按執行流程進行一一講解。

2.1 DHCP Client 發現階段

即DHCP客戶端尋找DHCP服務端的過程,客戶端傳送DHCP Discovery,因為DHCP 服務端對於DHCP客戶端是未知的,所以DHCP 客戶端發出的DHCP Discovery報文是廣播包,源地址為0.0.0.0目的地址為255.255.255.255。網路上的所有支援TCP/IP的主機都會收到該DHCP Discovery報文,但是隻有DHCP Server會響應該報文。

注意:
客戶端執行DHCP DISCOVER 後,如果沒有DHCP 伺服器響應客戶端的請求,客戶端會隨機使用169.254.0.0/16 網段中的一個IP 地址配置本機地址。169.254.0.0/16是windows的自動專有IP定址範圍,也就是在無法通過DHCP獲取IP地址時,由系統自動分配的IP地址段。早先的Linux上並不會產生這條路由,現在有這條路由大概是為了和windows相容。

2.2 DHCP Server 提供階段

當所有的DHCP服務端在網路中接收到DHCP客戶端發出的discover時,所有的DHCP伺服器都會做出響應,它們會從尚未出租的IP地址中挑選一個分配給DHCP客戶端。

注:服務端響應給客戶端的資料包括IP地址和一些配置資訊 。

2.3 DHCP Client 確認階段

當客戶端收到DHCP服務端的offer時,它會選擇第一個DHCP服務端給它發出的offer,然後它就以廣播方式回答一個DHCPrequest請求資訊,該資訊中包含第一時間所選定的DHCP伺服器請求IP地址的內容。之所以要以廣播方式回答,是為了通知所有的DHCP伺服器,他將選擇某臺DHCP伺服器所提供的IP地址。

2.4 DHCP Client重新登入網路

DHCP客戶端會帶著前一次所分配的IP地址去請求這個給它發出的offer的DHCP伺服器,當這個DHCP伺服器收到這一訊息後,它會檢查改IP地址是否已經分配給其它客戶端。這裡會有兩種情況,分別是:

  1. 如果已經分配給其它客戶端主機了那麼它響應一個DHCP nack否認資訊說該IP地址已經被其它客戶端主機使用了你不能使用了,則客戶端會回到DHCP Client 發現階段繼續獲取IP地址。
  2. 如果未分配給其它客戶端主機,則它會相應一個DHCP ack確認資訊,說,你可以使用這個IP地址,則客戶端就會繼續使用該IP地址登入網路

2.5 DHCP Client更新租約

DHCP獲取到的IP地址都有一個租約,租約過期後,DHCP Server將會回收該IP地址,所以如果DHCP Client如果想繼續使用該IP地址,則必須更新租約。更新的方式就是,當前租約期限過了一半後,DHCP Client都會發送DHCP Renew報文來續約租期。