• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 如何讀懂DHCP數據報文

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    DHCP(Dynamic Host Configuration Protocol,動態主機配置 協議 )是IETF為實現IP的自動配置而設計的 協議 ,它可以為客戶機自動分配IP地址、子網掩碼以及缺省網關、DNS 服務器 的IP地址等TCP/IP參數。了解DHCP工作過程可以幫助我們排除有關DHCP服務遇到的

    DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是IETF為實現IP的自動配置而設計的協議,它可以為客戶機自動分配IP地址、子網掩碼以及缺省網關、DNS服務器的IP地址等TCP/IP參數。了解DHCP工作過程可以幫助我們排除有關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選項(圖DHCP1)
    Address: Hardware
    Mode:Include
    Station 1: 10E08C5FC28A(網卡的物理MAC地址,不同的網卡MAC是不同)
    Station 2: any

    Advanced選項(圖DHCP2)

    IP:ICMP
    UDP:BOOTP/DNS(UDP)
    Packer Size:ALL

    其它用默認設置,給這個配置起個名字:BOOTP

    現在可以抓包了

    先彈出Capture Panel(監視抓包情況),點擊Capture菜單中的START開始抓包。進入命令提示符,分別執行IPCONFIG/RELEASE 、IPCONFIG/RENEW命令,通過監視器可以看到已經以抓到數據包了,停止抓包并分析包,還是先保持包到磁盤以備分析。
    圖DHCP3 可以看到已經抓到5個報文

    三、分析抓到的數據包

    用戶從DHCP獲取IP過程如下:

    1、 用戶發出DHCPDISCOVER報文;

    圖DHCP4 用戶發出DHCPDiscover廣播報文

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

    在圖中我們可以看到該報文在鏈路層中發的確實是廣播報文。由于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報文。
    圖DHCP6

    DHCP協議的報文中主要數據格式詳解
    圖DHCP7
    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報文
    圖DHCP8

    從圖中可以看出,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類地址網段

    詳細的請參見圖DHCP9

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


    用戶發出DHCPREQUEST報文

    圖DHCP10
    客戶以廣播的方式發送DHCP Request信息包作為響應。注意其中的DHCP Message Type一項中type=Request表示這是一個請求報文。
    客戶利用DHCP Request詢問服務器其它的配置選項,如:DNS或網關地址如圖DHCP11

    DHCP SERVER回送DHCPACK報文
    圖DHCP12

    該信息包是以單播的方式發送的。當服務器接收到DHCP Request信息包時,它以一個DHCP Acknowledge信息作為響應,其內容同DHCPOFFER類似,并在“選項”字段中增加了IP地址使用租期選項。

    宣告確認

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

    如圖DHCP13

    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參數??聪旅娴膱DDHCP15
    其中包含關機前獲得的IP=192.168.0.22,這是不同與前面提到的10.177.124.X段的IP。原來客戶機保留了上一次獲得的地址,客戶機在重新啟動時,如果租用期未超過50%,它就會認為它已經知道該與哪臺DHCP服務器進行聯系,于是就跳過前兩步,并發送另一個DhcpRequest報文給同一個服務器。如果該IP地址仍然可用的話,該DHCP服務器將給這臺客戶機返回另一個確認消息。 同樣,DHCP服務器上也會保留(在租用期內的)客戶機的地址。如果你的DHCP服務器中的租用期設的足夠長,你就會發現,重啟一臺客戶機后,客戶機總是得到同一個地址。這正是由于客戶機、服務器能保存已分配地址所造成的。

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

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>