1. 程式人生 > >DHCP伺服器回覆資料包是單播還是廣播的爭議

DHCP伺服器回覆資料包是單播還是廣播的爭議


一:網路裝置上的DHCP回覆包都是單播.

二:微軟官方解釋:

預設情況下, Microsoft Windows NT 4.0 DHCP 伺服器 傳送所有的 DHCP 響應作為 IP 廣播到受限廣播地址 (255.255.255.255)。 但是,DHCP 伺服器 可以將配置為單播響應如果客戶端請求指定廣播的響應不需要。

DHCP 伺服器與 Windows NT 4.0 之前的版本忽略客戶端的 DHCP 資料 包中的該廣播的標誌,並且廣播所有答覆。 DHCP 伺服器 4.0 版支援 unicasting 通過下列登錄檔引數:

HKEY_LOCAL_MACHINE /CurrentControlSet /Services /DHCPServer /Parameters /IgnoreBroadcastFlag

引數型別: REG _ DWORD

預設值: 1

說明: 如果設定為 1,時將在客戶端請求該廣播的標誌被忽略,並且所有的 DHCP 資料包從伺服器廣播。如果設定為 0,行為 (是否廣播或不) 由廣播標誌在響應的客戶端請求中。

Networks.wri 檔案也包含此引數的說明。

總結:微軟作業系統上的DHCP伺服器的回覆包即可以是單播,也可以是廣播.(給出的答案很鬱悶)

三:總結:Linux下的DHCP回覆包是廣播.

DHCP 協議是基於UDP層之上的應用,本文結合抓報所得資料分析DHCP協議實現原理

一、先了解一下需要抓取的DHCP報文

客戶發出的IP租用請求報文

DHCP客戶機初始化TCP/IP,通過UDP埠67向網路中傳送一個DHCPDISCOVER廣播包,請求租用IP地址。該 廣播包中的源IP地址為0.0.0.0,目標IP地址為255.255.255.255;包中還包含客戶機的MAC地址和計算機名。

DHCP迴應的IP租用提供報文

任何接收到DHCPDISCOVER廣播包並且能夠提供IP地址的DHCP伺服器,都會通過UDP埠68給客戶機迴應一個DHCPOFFER廣播 包,提供一個IP地址。該廣播包的源IP地址為DCHP伺服器IP,目標IP地址為255.255.255.255;包中還包含提供的IP地址、子網掩碼 及租期等資訊。

客戶選擇IP租用報文

客戶機從不止一臺DHCP伺服器接收到提供之後,會選擇第一個收到的DHCPOFFER包,並向網路中廣播一個 DHCPREQUEST訊息包,表明自己已經接受了一個DHCP伺服器提供的IP地址。該廣播包中包含所接受的IP地址和伺服器的IP地址。所有其他的 DHCP伺服器撤消它們的提供以便將IP地址提供給下一次IP租用請求。

DHCP伺服器發出IP租用確認報文

被客戶機選擇的DHCP伺服器在收到DHCPREQUEST廣播後,會廣播返回給客戶機一個DHCPACK訊息包,表明已經接受客戶機的選擇,並將這一IP地址的合法租用以及其他的配置資訊都放入該廣播包發給客戶機。

客戶配置成功後發出的公告報文

客戶機在收到DHCPACK包,會使用該廣播包中的資訊來配置自己的TCP/IP,則租用過程完成,客戶機可以在網路中通訊。

至此一個客戶獲取IP的DHCP服務過程基本結束,不過客戶獲取的IP一般是用租期,到期前需要更新租期,這個過程是通過租用更新資料包來完成的。

客戶IP租用更新報文

(1)在當前租期已過去50%時,DHCP客戶機直接向為其提供IP地址的DHCP伺服器傳送DHCPREQUEST訊息包。如果客戶機接收到該服 務器迴應的DHCPACK訊息包,客戶機就根據包中所提供的新的租期以及其它已經更新的TCP/IP引數,更新自己的配置,IP租用更新完成。如果沒收到 該伺服器的回覆,則客戶機繼續使用現有的

IP地址,因為當前租期還有50%。

(2)如果在租期過去50%時未能成功更新,則客戶機將在當前租期過去87.5%時再次向為其提供IP地址的DHCP聯絡。如果聯絡不成功,則重新開始IP租用過程。

(3)如果DHCP客戶機重新啟動時,它將嘗試更新上次關機時擁有的IP租用。如果更新未能成功,客戶機將嘗試聯絡現有IP租用中列出的預設閘道器。 如果聯絡成功且租用尚未到期,客戶機則認為自己仍然位於與它獲得現有IP租用時相同的子網上(沒有被移走)繼續使用現有IP地址。如果未能與預設閘道器聯絡 成功,客戶機則認為自己已經被移到不同的子網上,將會開始新一輪的IP租用過程。

DHCP客戶機在發出IP租用請求的DHCPDISCOVER廣播包後,將花費1秒鐘的時間等待DHCP伺服器的迴應,如果1秒鐘沒有伺服器的回 應,它會將這一廣播包重新廣播四次(以2,4,8和16秒為間隔,加上1~1000毫秒之間隨機長度的時間)。四次之後,如果仍未能收到伺服器的迴應,則 執行 Windows 2000的DHCP客戶機將從169.254.0.0/16這個自動保留的私有IP地址(APIPA)中選用一個IP地址,而執行其他作業系統的DHCP 客戶機將無法獲得IP地址。DHCP客戶機仍然每隔5分鐘重新廣播一次,如果收到某個伺服器的迴應,則繼續IP租用過程。

二、設定SNIFFER PRO抓取DHCP通訊報文

本文使用的抓包工具軟體是NAI公司推出的功能強大的協議分析軟體---Sniffer Pro。Sniffer Pro 具有強大的網路分析功能和特徵,是解決網路問題的好工具。Sniffer支援豐富的的協議,而且能夠進行快速解碼分析。Sniffer Pro 4.6可以執行在各種Windows平臺上(其它類似軟體如Netxray不能在Windows 2003和Windows XP上正常執行)。Sniffer軟體比較大,執行時需要的計算機記憶體比較大,否則執行比較慢,這也是它與Netxray相比的一個缺點。

設定包過濾條件

網路中傳輸的資料包很多,這裡只抓取跟DHCP有關的資料,設定如下:點選Capture選單,選擇define filter開啟define filter-capture對話方塊,設定入圖引數。

Address選項

Address: Hardware

Mode:Include

Station 1: 10E08C5FC28A(網絡卡的物理MAC地址,不同的網絡卡MAC是不同)

Station 2: any

Advanced選項

IP:ICMP

UDP:BOOTP/DNS(UDP)

Packer Size:ALL

其它用預設設定,給這個配置起個名字:BOOTP

現在可以抓包了

先彈出Capture Panel(監視抓包情況),點選Capture選單中的START開始抓包。進入命令提示符,分別執行IPCONFIG/RELEASE 、IPCONFIG/RENEW命令,通過監視器可以看到已經以抓到資料包了,停止抓包並分析包,還是先保持包到磁碟以備分析。

三、分析抓到的資料包

使用者從DHCP獲取IP過程如下:

1、 使用者發出DHCPDISCOVER報文;

開始抓報文時首先執行的IPCONFIG/RELEASE命令的作用是用來釋放IP,這條報文後面分析,在釋放IP後執行的更新IP命令 IPCONFIG/RENEW將發起一個DHCP過程,分析從這裡開始。現在,客戶機沒有地址,它就會發出一個DHCPDiscover報文,該報文是廣 播報文,所有的具有DHCP Server功能的伺服器都會收到該報文。

在圖中我們可以看到該報文在鏈路層中發的確實是廣播報文。由於DHCP協議是初始化協議,更簡單的說,就是讓終端獲取IP 地址的協議,既然終端連IP地址都沒有,何以能夠發出IP報文呢?

為了解決這個問題,DHCP報文的封裝採取瞭如下措施:

1、首先鏈路層的封裝必須是廣播形式,即讓在同一物理子網中的所有主機都能夠收到這個報文。在Ethernet_II格式的網路中,就是目標MAC為全1。

2、由於終端沒有IP地址,IP頭中的原IP規定填為全0。

3、當終端發出DHCP請求報文,它並不知道DHCP SERVER的IP地址,因此IP頭中的目標IP填為子網廣播IP——全1,以保證DHCP SERVER的IP協議棧不丟棄這個報文。

4、上面的措施保證了DHCP SERVER能夠收到終端的請求報文,但僅憑鏈路層和IP層資訊,DHCP SERVER無法區分出DHCP報文,因此終端發出的DHCP請求報文的UDP層中的原埠為68,目標埠DstPort為67。即DHCP SERVER通過知名埠號67來判斷一個報文是否是DHCP報文。

DHCP協議的報文中主要資料格式詳解

Boot record type為1時表示是Client的請求,為2時表示是Server的應答。

Hardware address typeClient 的網路硬體地址型別,1表示Client 的網路硬體是10MB的乙太網型別

/Hardware address lengthClient 的網路硬體地址長度,6表示Client 的網路硬體地址長度是6bytes(即乙太網型別的6bytes的MAC地址)。

HOPS跳數,表示當前的DHCP報文經過的DHCP RELAY(中級)的數目,每經過一個DHCP中繼,此欄位就會加1,此欄位的作用是限制DHCP報文不要經過太多的DHCP RELAY,協議規定,當“hops”大於4(現在也有規定為16)時,這個DHCP報文就不能再進行處理,而是丟棄。

Transaction id事務ID,Client每次傳送DHCP請求報文時選擇的隨機數,用來匹配server的響應報文是對哪個請求報文的響應。Client會丟棄“ID”不匹配的響應報文。

Elapsed boot time秒數,用來表示client開始DHCP請求後的時間流逝秒數

flags標誌,在 BOOTP中此欄位是保留不用的,在DHCP協議中也只使用了其左邊的最高位。

Client self-assigned IPaddress客戶機IP地址

Client IP address server分配給client的IP地址

Next Server to use in bootstrap伺服器IP地址

Relay AgentDHCP中繼代理IP地址

Client hardware address客戶機硬體地址MAC

Host name 伺服器的主機名

Boot file nameClient 的啟動配置檔名

Vendor Information tag選項欄位,此欄位中包含了大量可選的終端初始配置資訊和網路配置資訊,對於BOOTP協議,此欄位為64bytes,對於DHCP協議,此欄位為64---312 bytes。其中最常用的選項列表如下:

Dhcp message typecode = 53, length = 1, value= 1-8,此欄位表示DHCP報文型別

Router Ipcode = 3, length = IP地址長度, value=client的預設閘道器的 IP地址;

DNS Ipcode = 6, length = IP地址長度的倍數, value= client的DNS伺服器的IP地址序列;

Wins Ipcode = 44, length = IP地址長度的倍數, value= client的WINS伺服器的 IP地址序列;

Client idcode = 61, length = client的網路硬體地址的長度+2, value=“htype”+“hlen”+ client的網路硬體地址;

server idcode = 54, length = IP地址長度, value= DHCP SERVER的IP地址;

其中我們要注意Transaction ID=CF04CD61和DHCP Message Type一項中type=Discover,前一項表示會話ID,即DHCP Server發回的響應報文中該結構的數值要與發出去的DHCP Discover中的該結構數值一樣,後一項說明DHCP報文型別為Discover型別報文。

2 DHCP SERVER回送DHCPOFFER報文

DHCPOFFER報文是單播而不是廣播,報文明確給出了目標MAC和IP,這一點不同與一般的技術文章介紹。其實,DHCP SERVER給終端的響應報文是根據DHCP報文中的內容決定是廣播還是單播,一般都是廣播形式。通訊源埠是67,目標埠為68,客戶端通過埠號 68來判斷一個報文是否是DHCP SERVER的響應報文,Transaction ID=CF04CD61,表示這個報文是與圖DHCP7中的DHCPDiscover報文相關的報文,因為二者標示一致。

從DHCP Server迴應的DHCPOffer報文中我們還可以得到DHCP擬分配給客戶端的初始配置資訊和網路配置資訊,其中

Client self-assigned IP address =0.0.0.0表示客戶機還沒有使用該地址

Client server-assigned IP address =10.177.124.73表示DHCP Server分配給該客戶機的IP地址

Server IP ID=218.290.240它標示了客戶機下一次發出DHCPRequest報文時,哪個DHCP Server會發出迴應

DHCP Message Typee=DHCP Offer表示這是一個對DHCPDiscover的迴應報文

Request IP address lease time =6000 表示租期是100分鐘

Domain Name Server=218.29.0.251域名伺服器地址

Gateway address=10.177.124.254閘道器地址

Subnet mask=255.255.255.0 表示這個地址的網段是一個標準的C類地址網段

所有傳送DHCP Offer資訊包的伺服器將保留它們提供的一個IP地址。在該地址不再保留之前,該地址不能分配給其他的客戶。

使用者發出DHCPREQUEST報文

客戶以廣播的方式傳送DHCP Request資訊包作為響應。注意其中的DHCP Message Type一項中type=Request表示這是一個請求報文。

客戶利用DHCP Request詢問伺服器其它的配置選項;

該資訊包是以單播的方式傳送的。當伺服器接收到DHCP Request資訊包時,它以一個DHCP Acknowledge資訊作為響應,其內容同DHCPOFFER類似,並在“選項”欄位中增加了IP地址使用租期選項。

宣告確認

CLIENT收到DHCPACK報文後(經過上面的處理後,有且只有一個DHCPACK報文),會檢查DHCP SERVER分配給自己的IP地址是否能夠使用,如在乙太網型別的網路中,CLIENT會發出一個ARP請求來確定DHCP SERVER分配的IP地址是否已經被別人使用,如果可以使用,則CLIENT成功獲得IP地址,並根據IP地址使用租期自動啟動續延過程。

DHCP協議報文的種類

前面反覆提到DHCP Message Type項,這裡列出所有DHCP協議報文的種類。DHCP協議採用CLIENT-SERVER方式進行互動,其報文格式共有8種,具體含義如下:

1:DHCPDISCOVER(0x01),此為Client開始DHCP過程的第一個報文

2:DHCPOFFER(0x02),此為Server對DHCPDISCOVER報文的響應

3:DHCPREQUEST(0x03),此報文是Slient開始DHCP過程中對server的DHCPOFFER報文的迴應,或者是client續延IP地址租期時發出的報文

4:DHCPDECLINE(0x04),當Client發現Server分配給它的IP地址無法使用,如IP地址衝突時,將發出此報文,通知Server禁止使用IP地址

5:DHCPACK(0x05),Server對Client的DHCPREQUEST報文的確認響應報文,Client收到此報文後,才真正獲得了IP地址和相關的配置資訊。

6:DHCPNAK(0x06),Server對Client的DHCPREQUEST報文的拒絕響應報文,Client收到此報文後,一般會重新開始新的DHCP過程。

7:DHCPRELEASE(0x07),Client主動釋放server分配給它的IP地址的報文,當Server收到此報文後,就可以回收這個IP地址,能夠分配給其他的Client。

8:DHCPINFORM(0x08),Client已經獲得了IP地址,傳送此報文,只是為了從DHCP SERVER處獲取其他的一些網路配置資訊,如route ip,DNS Ip等,這種報文的應用非常少見。

圖DHCP14是一個執行IPCONFIG/RELEASE後釋放IP的報文,從圖中可以看出DHCP Message Type是7,他的作用是主動釋放server分配給它的IP地址的報文,Server收到此報文後,就可以回收這個IP地址,能夠分配給其他的 Client。

上面提到的都是在已經開機的情況下獲得的報文,如果計算機重新啟動,是不是完全按照文章提到的四步得到IP引數。

其中包含關機前獲得的IP=192.168.0.22,這是不同與前面提到的10.177.124.X段的IP。原來客戶機保留了上一次獲得的地 址,客戶機在重新啟動時,如果租用期未超過50%,它就會認為它已經知道該與哪臺DHCP伺服器進行聯絡,於是就跳過前兩步,併發送另一個 DhcpRequest 報文給同一個伺服器。如果該IP地址仍然可用的話,該DHCP伺服器將給這臺客戶機返回另一個確認訊息。同樣,DHCP伺服器上也會保留(在租用期內的) 客戶機的地址。如果你的DHCP伺服器中的租用期設的足夠長,你就會發現,重啟一臺客戶機後,客戶機總是得到同一個地址。這正是由於客戶機、伺服器能儲存 已分配地址所造成的。

如果一臺客戶機未從該DHCP伺服器獲取過地址,或者它獲得的地址已過期,那麼它將需要經過全部四個步驟才能得到一個IP地址。

相關推薦

DHCP伺服器回覆資料還是廣播爭議

一:網路裝置上的DHCP回覆包都是單播. 二:微軟官方解釋: 預設情況下, Microsoft Windows NT 4.0 DHCP 伺服器 傳送所有的 DHCP 響應作為 IP 廣播到受限廣播地址 (255.255.255.255)。 但是,DHCP 伺服器

Unity3D研究院之C#使用Socket與HTTP連線伺服器傳輸資料

最近專案中需要使用HTTP與Socket,把自己這段時間學習的資料整理一下。有關Socket與HTTP的基礎知識MOMO就不贅述拉,不懂得朋友自己谷歌吧。我們專案的需求是在登入的時候使用HTTP請求,遊戲中其它的請求都用Socket請求,比如人物移動同步座標,同步關卡

wireshark實戰之:dhcp四次資料交流過程

實驗目的:檢視客戶端向DHCP伺服器請求IP過程。 實驗資料: 實驗拓撲: 實驗步驟: 1、在sw2與R1之間放置資料包嗅探器。 2、開啟wireshark配置顯示過濾器為bootp。 可以

廣播、組、多

交換機 電子 orm 數據流 優點 網上 size qos 電視機 組播=多播 單播、組播、廣播是網絡中結點的3種通訊方式。 1、單播 1)定義: 主機之間一對一的通訊模式。網絡中的交換機和路由器對數據只轉發,不復制。網絡中的路由器和交換機根據目標地址選擇傳輸路徑。

MAC地址(廣播、組、數據收發)

制造商 局域網 對比 地址 方式 傳輸 eid type 但是 MAC地址 網絡設備的MAC地址是全球唯一的。MAC地址長度為48比特,通常用十六進制表示。MAC地址包含兩部分:前24比特是組織唯一標識符(OUI,OrganizationallyUniqueIdent

廣播,組

個性 結構 數據 帶寬 能夠 時間 技術 網絡設備 都是 http://blog.csdn.net/cosmoslife/article/details/7616797 當前的網絡中有三種通訊模式:單播、廣播、組播(多播),其中的組播出現時間最晚但同時具備單播和廣播的優點,

計算機網路的三種通訊模式(廣播,組)小結

1.單播(Unicast) 單播在傳送者和每一接收者之間實現點對點網路連線。 如果一臺傳送者同時給多個的接收者傳輸相同 的資料,也必須相應的複製多份的相同資料包。如果有大量主機希望獲得資料包的同一份拷貝時, 將 導致傳送者負擔沉重、延遲長、網路擁塞;為保證一定

WIFI專案--【Java TCP/IP Socket】 — 廣播、組

在當前網路通訊中(TCP/IP也不例外)有三種通訊模式:單播、廣播、組播(又叫多播, 個人感覺叫多播描述的有點不恰當),其中多播出現的時間最晚,但同時具備單播和廣播的優點,最具有發展前景。 通訊方式分類: 1.單播:單臺主機與單臺主機之間的通訊;

計算機網路三種通訊模式(廣播、組)小結

1、單播定義:單播在傳送者和每一接收者之間實現點對點網路連線。如果一臺傳送者同時給多個接收者傳輸相同的資料,也必須相應的複製多份的相同資料包。如果有大量主機希望獲得資料包的同一份拷貝時,將導致傳送者負擔沉重、延遲長、網路擁塞,為保證一定的服務質量需增加硬體和頻寬。單播優點:1

UDP廣播、多

在Linux中使用多播技術,與使用UDP給單個使用者傳送訊息,沒有多大的區別,只是你要使用一個特殊的多播IP地址,還有一些環境需要改變一下。   一般的網絡卡,都是支援多播技術的,但是作業系統不一定。Linux一般在預設狀態編譯時,可能都不支援Multicast,你需要從新配置和編譯你的核心,使它支援多播,然

廣播、組

單播:   主機之間“一對一”的通訊模式,網路中的交換機和路由器對資料只進行轉發不進行復制。   單播的優點:   1. 伺服器及時響應客戶機的請求   2. 伺服器針對每個客戶不同請求傳送不同資料,容易實現個性化服務。   單播的缺點:   1. 在客戶數量大、每個客戶機流量大的流媒體應用中伺服器不堪重負。

vue頁應用中,使用setInterval()定時向伺服器獲取資料,後來跳轉頁面後,發現在不停的獲取資料

使用VUE開發單頁專案時遇到這樣的問題,mounted中使用setInterval()定時向伺服器獲取資料,後來跳轉頁面後,發現還在不停的獲取資料。我以為是因為我路由用的push導致的,改成replace也是這樣,後來就在部落格園找到答案了,如下: http://www.cnblogs.com/zzbp/p/

鏈路內和鏈路外的數據發送:、組、任

存在 sse ast 比特 inf 正常 ip組播 nan root 翻譯自:https://info.menandmice.com/blog/bid/103274/On-link-vs-Off-Link-Packet-Delivery-Unicast-Multicast-

通道ECG資料解析

print('-------------單通道ECG 資料包 解析!--------------------') with open('C:/Users/Liu/Desktop/abcd.txt','r') as file: list = file.readlines

ZStack廣播具體操作與原理資料整理

// Register the endpoint description with the AF afRegister( &GenericApp_epDesc ); 3.在需要傳送資料的地方,執行如下程式碼: if ( AF_DataRequest( &GenericApp_DstAddr,

TI CC2530 CC2538 zigbee source routing機制的有效利用(加快指令的傳送,解決問題)

很多人開始對於source routing是十分迷惑的,加之TI的FAE很多時候人力有限,所以會產生很多疑問,既然都有路由表了,怎麼還會有個叫做source routing,這些東西不是憑空

Wireshark抓分析Yersinia 根據DHCP協議傳送的偽造資料攻擊(sending RAW packet)

抓包結果如下: 抓包與分析 幀號時間源地址目的地址高層協議包內資訊概況No.  Time   Source        Destination      Protocol    Info 5  1

DHCP迴應報文廣播還是方式深度探究

對DHCP伺服器迴應報文的抓包實驗探究 對於DHCP報文中的offer報文和ack報文,到底是以廣播還是單播的方式回覆給主機,一直存在爭議,現做如下抓包實驗,具體的來分析DHCP報文出現的“可疑點”。 一、 猜想 對於DHCP的回覆報文到底是廣播還是單播

DHCP資料捕獲

DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個區域網的網路協議,使用UDP協議工作, 主要有兩個用途:給內部網路或網路服務供應商自動分配IP地址,給使用者或者內部網路管理員作為對所有計算機作中央管理的手

在已經截獲網路資料的情況下,做更新伺服器端的簡單WEB開發,請進。承諾RMB報酬,謝謝!

本人QQ:529615027  有一個程式,其實就是NP要更新,為了不讓NP更新,我想架設一個旁路伺服器,讓NP去我架設的伺服器更新資料。我截獲了NP更新的資料包。從資料包能看出原來伺服器的IP地址是218.6.139.196(其實IP有多個,更新程式使用的域名應該是np1