tft每日頭條

 > 圖文

 > 簡述dhcp的概念及其工作原理

簡述dhcp的概念及其工作原理

圖文 更新时间:2024-09-18 11:17:45

一、DHCP的含義?

DHCP,動态主機配置協議,前身是BOOTP協議,是一個局域網的網絡協議,使用UDP協議工作,常用的2個端口:67(DHCP server),68(DHCP client)。DHCP通常被用于局域網環境,主要作用是集中的管理、分配IP地址,使client動态的獲得IP地址、Gateway地址、DNS服務器地址等信息,并能夠提升地址的使用率。簡單來說,DHCP就是一個不需要賬号密碼登錄的、自動給内網機器分配IP地址等信息的協議。

二、DHCP協議中的報文

DHCP報文共有一下幾種:

  • DHCP DISCOVER :客戶端開始DHCP過程發送的包,是DHCP協議的開始
  • DHCP OFFER :服務器接收到DHCP DISCOVER之後做出的響應,它包括了給予客戶端的IP(yiaddr)、客戶端的MAC地址、租約過期時間、服務器的識别符以及其他信息
  • DHCP request :客戶端對于服務器發出的DHCP OFFER所做出的響應。在續約租期的時候同樣會使用。
  • DHCP ACK :服務器在接收到客戶端發來的DHCP REQUEST之後發出的成功确認的報文。在建立連接的時候,客戶端在接收到這個報文之後才會确認分配給它的IP和其他信息可以被允許使用。
  • DHCP NAK :DHCP ACK的相反的報文,表示服務器拒絕了客戶端的請求。
  • DHCP RELEASE :一般出現在客戶端關機、下線等狀況。這個報文将會使DHCP服務器釋放發出此報文的客戶端的IP地址
  • DHCP INFORM :客戶端發出的向服務器請求一些信息的報文
  • DHCP DECLINE :當客戶端發現服務器分配的IP地址無法使用(如IP地址沖突時),将發出此報文,通知服務器禁止
  • 使用該IP地址。

DHCP 的 工作流程:

簡述dhcp的概念及其工作原理(DHCP原理和解釋)1

3、DHCP 協議包的組成

  • Xid :随機生成的一段字符串,兩個數據包擁有相同的xid說明他們屬于同一次會話
  • Ciaddr :客戶端會在發送請求時将自己的ip地址放在此處
  • Yiaddr :服務器會将想要分配給客戶端的ip地址放在此處
  • Siaddr :一般來說是服務器的ip地址.但是注意!根據openwrt源碼給出的注釋,當報文的源地址、siaddr、option­>server_id字段不一緻(有經過跨子網轉發)時,通常認為option­>srever_id字段為真正的服務器ip,siaddr有可能是多次路由跳轉中的某一個路由的ip (下圖中wireshark抓包中也有标明siaddr為nextserver ip address)
  • Chaddr :客戶端的mac地址
  • Giaddr :如果需要跨子網進行DHCP地址發放,則在此處填入經過的路由器的ip地址
  • Sname :服務器主域名
  • Options :可以自由添加的部分,用于存放客戶端向服務器請求信息和服務器的應答信息

簡述dhcp的概念及其工作原理(DHCP原理和解釋)2

DHCP 客戶端


一、DHCP 原理

1、什麼是DHCP 客戶端

DHCP客戶端一般來說是局域網中獨立的PC主機。

DHCP客戶端發出的DHCP DISCOVER包是DHCP協議的開始。

延續租期、發現、釋放IP地址等大多數DHCP中的行為都是由DHCP客戶端主動發起。

2、DHCP 自動狀态機

DHCP獲得ip地址的4步驟:discover­>offer­>request­>ack(nak)

DHCP刷新租期的步驟:request­>ack(nak)

DHCP釋放ip的步驟:release

wnr2000v5 1.0.0.8的代碼中沒有發現rebooting、init­reboot狀态。所以DHCP client的狀态一般從init開始,完整的狀态機如下圖(紅色代表客戶端的狀态跳轉):

簡述dhcp的概念及其工作原理(DHCP原理和解釋)3

DHCP server


一、DHCPD 原理

1、簡述

DHCP SERVER指的是服務器端,在路由器上體現的就是給LAN端動态分配IP的功能。DHCP SERVER負責接收客戶端的DHCP請求,管理LAN端所有的IP網絡設定資料,相比于BOOTP,DHCP通過“租約”來實現動态分配IP的功能,實現IP的時分複用,從而解決IP資源短缺的問題。其地址分配方式有三種,分别是人工配置(由管理員對每台具體的計算機指定一個地址),自動配置(服務器為第一次連接網絡的計算機分配一個永久地址),動态配置(在一定的期限内将地址租給計算機,租期結束後客戶必須續租或者停用該地址),而對于路由器,經常使用的地址分配方式是動态配置。

2、兩個租約表

  • 靜态租約表:對應一個靜态租約存儲文件,server運行時從文件中讀取靜态租約表。
  • 動态租約表:對應一個周期存儲文件,server周期性将租約表存進該文件,在程序開始時将會讀取上次存放的租約表。(租約表記錄了當前所有分配的租約,包括靜态鍊接的)。

3、基本邏輯

原則上DHCP SERVER是一直處在被動接受請求的狀态,當有客戶端請求時,服務器會讀取獲得客戶端當前所在的狀态以及客戶端的信息,并在靜态租約表和動态租約表中進行檢索找到相應的表項,再根據客戶端的狀态執行不同的回複。當收到客戶端的首次請求時,DHCP服務器先查找靜态租約表;若存在請求的表項,返回這個客戶的靜态IP地址;否則,從IP地址池中選擇可用的IP分配給客戶,并添加信息到動态數據庫中。此外,服務器将會周期性的刷新租約表寫入文件存檔,在這個過程中會順便對動态租約表進行租期檢查。

執行回複動作:

  • DHCPOFFER:
  • 靜态租用:首先匹配MAC地址,看是否能在靜态租約表中找到對應的項,若能找到就把IP分配給他。靜态表中的IP不能被其他客戶使用。
  • 動态租用:
  • 1.server試圖分配給client上次分配過的IP,在這之前檢查這個IP是否正在使用。
  • 2.discover中含有request ip 時,檢查該IP是否在地址池範圍,是否正在使用,是否到期,是否是靜态IP,網絡上是否已經存在。
  • 3.discover不含request ip,從地址池上尋找一個最小的可用IP分配。
  • DHCPACK: 根據是否含有request ip和server ip識别客戶端現在init_reboot,selecting,renewing/rebinding中的哪個狀态,并根據以下規則執行DHCPACK回複:
  • 1.若client處于selecting狀态,驗證request ip和server ip是否同服務器中的匹配。
  • 2.若client處于init_reboot狀态,驗證request ip是否符合租約記錄。
  • 3.若client處于renewing/rebinding狀态,驗證client ip address是否符合租約記錄。
  • DHNAK:
  • 1.請求的IP是靜态IP,但是MAC地址無法與其對應。
  • 2.上面DHCPACK中驗證失敗。
  • 服務器還可能會收到其他包:
  • DHCPDECLINE:server會把租約表中相關client硬件地址置空,并保存這個地址一段時間。
  • DHCPRELEASE:清空租期回收IP。
  • DHCPINFORM:回複DHCPACK,數據包含有關于server的信息。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved