DHCP協議與抓包分析

目錄

 

一、DHCP協議概述

二、dhcp數據幀格式

(1)DHCP discover階段:

(2)DHCP offer階段:

(3)DHCP request階段:

(4)DHCP ack階段:

四、總結:


一、DHCP協議概述

DHCP協議採用UDP作爲傳輸協議,主機發送請求消息到DHCP服務器的67號端口,DHCP服務器迴應應答消息給主機的68號端口。詳細的交互過程如下圖。

  1. DHCP Client以廣播的方式發出DHCP Discover報文。

  2. 所有的DHCP Server都能夠接收到DHCP Client發送的DHCP Discover報文,所有的DHCP Server都會給出響應,向DHCP Client發送一個DHCP Offer報文。

    DHCP Offer報文中“Your(Client) IP Address”字段就是DHCP Server能夠提供給DHCP Client使用的IP地址,且DHCP Server會將自己的IP地址放在“option”字段中以便DHCP Client區分不同的DHCP Server。DHCP Server在發出此報文後會存在一個已分配IP地址的紀錄。

  3. DHCP Client只能處理其中的一個DHCP Offer報文,一般的原則是DHCP Client處理最先收到的DHCP Offer報文。

    DHCP Client會發出一個廣播的DHCP Request報文,在選項字段中會加入選中的DHCP Server的IP地址和需要的IP地址。

  4. DHCP Server收到DHCP Request報文後,判斷選項字段中的IP地址是否與自己的地址相同。如果不相同,DHCP Server不做任何處理只清除相應IP地址分配記錄;如果相同,DHCP Server就會向DHCP Client響應一個DHCP ACK報文,並在選項字段中增加IP地址的使用租期信息。

  5. DHCP Client接收到DHCP ACK報文後,檢查DHCP Server分配的IP地址是否能夠使用。如果可以使用,則DHCP Client成功獲得IP地址並根據IP地址使用租期自動啓動續延過程;如果DHCP Client發現分配的IP地址已經被使用,則DHCP Client向DHCPServer發出DHCP Decline報文,通知DHCP Server禁用這個IP地址,然後DHCP Client開始新的地址申請過程

  6. DHCP Client在成功獲取IP地址後,隨時可以通過發送DHCP Release報文釋放自己的IP地址,DHCP Server收到DHCP Release報文後,會回收相應的IP地址並重新分配。

使用租期超過50%時刻處,DHCP Client會以單播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址。

使用租期超過87.5%時刻處,DHCP Client會以廣播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址,直到IP地址使用租期到期時,DHCP Client纔會向DHCP Server發送DHCP Release報文來釋放這個IP地址,並開始新的IP地址申請過程。

需要說明的是:DHCP客戶端可以接收到多個DHCP服務器的DHCP OFFER數據包,然後可能接受任何一個DHCP OFFER數據包,但客戶端通常只接受收到的第一個DHCP OFFER數據包。另外,DHCP服務器DHCP OFFER中指定[1] 的地址不一定爲最終分配的地址,通常情況下,DHCP服務器會保留該地址直到客戶端發出正式請求。

正式請求DHCP服務器分配地址DHCP REQUEST採用廣播包,是爲了讓其它所有發送DHCP OFFER數據包的DHCP服務器也能夠接收到該數據包,然後釋放已經OFFER(預分配)給客戶端的IP地址。

如果發送給DHCP客戶端的地址已經被其他DHCP客戶端使用,客戶端會向服務器發送DHCPDECLINE信息包拒絕接受已經分配的地址信息。

在協商過程中,如果DHCP客戶端發送的REQUEST消息中的地址信息不正確,如客戶端已經遷移到新的子網或者租約已經過期,DHCP服務器會發送DHCP NAK消息給DHCP客戶 端,讓客戶端重新發起地址請求過程。

二、dhcp數據幀格式

             0                  8                   16                  24                31

OP(1)

HTYPE(1)

HLEN(1)

HOPS(跳數)(1)

事務ID(4)[Transaction  ID]

秒數(2)[Second]

標誌(2)[Flag]

客戶機IP地址(4)[Ciaddr]

你的IP地址(4)[Yiaddr]

服務器IP地址(4)[Siaddr]

中繼代理IP地址(4)[Giaddr]

客戶機硬件地址(16字節)[Chaddr]

服務器的主機名(64字節)[Sname]

啓動文件名(128字節)[File]

選項(可變長)[Options]

OP:若是client送給server的封包,設置爲1,反方向爲2

Htype:硬件類別,ethernet 爲1

Hlen:硬件長度,ethernet爲6

Hops:若數據包需經過router發送,每站加1,若在同一網內,爲0

Transaction ID:事務ID 是個隨機數,用於客戶和服務器之間匹配請求和相應信息

Seconds:由用戶指定的時間,指開始地址獲取和更新進行後的時間

Flags:從0—15bits,最左一bit爲1時表示server將以廣播方式傳遞封包給client,其餘尚未使用

Ciaddr:用戶IP地址

Siaddr:用於bootsrtap過程中的IP地址(服務器的IP地址)

Chaddr:client的硬件地址

Sname:可選server的名稱,以0x00結尾

File:啓動文件名

Options:廠商標識,可選的參數字段

DHCP Options

Option id

Length(字節)

描述

1

4

Subnet Mask

3

n*4

Router(網關)

6

n*4

DNS Server

7

n*4

Log Server

26

2

Interface MTU

33

n*8

Static route

35

4

ARP cache timeout

42

n*4

NTP servers

51

4

IP address lease time

53

1

Message type 1-DHCPDISCOVER 2-DHCPOFFER 3-DHCPREQUEST 4-DHCPDECLINE 5-DHCPACK 6-DHCPNAK 7-DHCPRELEASE 8-DHCPINFORM

54

4

DHCP Server Identifier

60

n

華爲自定義:可配置該終端設備在發起DHCP請求時,通過Option 60攜帶域信息。ME60收到DHCP報文時,可根據Option 60中攜帶的域信息來分配IP地址。

82

n

華爲自定義:ME60作爲DHCP Relay,在中繼用戶DHCP報文時,可在Option 82中填寫用戶的物理位置信息,通知DHCP服務器按物理位置信息對爲用戶分配IP地址。

三、dhcp數據抓包

(1)DHCP discover階段:

(2)DHCP offer階段:

(3)DHCP request階段:

(4)DHCP ack階段:

四、總結:

階段

源MAC

目標MAC

源IP

目標IP

Discover

PC機的MAC

全FF

0.0.0.0

255.255.255.255

Offer

Dhcp服務器或者中繼器路由的MAC

Dhcp客戶機的MAC

Dhcp服務器或者中繼路由器的IP地址

準備分配的IP地址

Request

PC機的MAC

全FF

0.0.0.0

255.255.255.255

Ack

Dhcp服務器或者中繼器路由的MAC

Dhcp客戶機的MAC

Dhcp服務器或者中繼路由器的IP地址

準備分配的IP地址

DHCPTransaction  ID是由客戶機產生一個隨機數獲得,不同MAC地址產生的Transaction ID不同,Transaction  ID是區分不同DHCP請求的標識。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章