DHCP的若干原理解釋


轉自:http://blog.chinaunix.net/uid-22287947-id-1775641.html

 

搜羅了幾種關於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選項

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功能的服務器都會收到該報文。

圖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報文。

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詢問服務器其它的配置選項,如:DNS或網關地址如圖DHCP11

DHCP SERVER回送DHCPACK報文

該信息包是以單播的方式發送的。當服務器接收到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等,這種報文的應用非常少見。

是一個運行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 RFC
2009-09-02 13:26

有幸拜讀了DHCP RFC文檔,只有一句話,真不是寫個人看得.飄忽不定,像做廣告般的參考xxx參考xxx.無語.

DHCP的報文格式

   嘗試的翻譯了點,實在頭大.能懶就懶,這是我一貫的風格,沒辦法大多數就都還是copy的e文,當做是學英語嘍^_^

DHCP的報文格式,如圖1,


OP(1)

Htype(1)

Hlen(1)

Hops(1)

Transaction ID(4)

Seconds(2)

Flags(2)

Ciaddr(4)

Yiaddr(4)

Siaddr(4)

Giaddr(4)

Chaddr(16)

Sname(64)

File(128)

Options(variable)

(圖1 DHCP的 報文格式)

  1. OP:若是client送給server的封包,設為1,反向為2;
  2. Htype:硬件類別,ethernet為1;
  3. Hlen:硬件長度,ethernet為6;
  4. Hops:若數據包需經過router傳送,每站加1,若在同一網內,為0;
  5. Transaction ID:事務ID,是個隨機數,用於客戶和服務器之間匹配請求和相應消息;
  6. Seconds:由用戶指定的時間,指開始地址獲取和更新進行后的時間;
  7. Flags:從0-15bits,最左一bit為1時表示server將以廣播方式傳送封包給 client,其余尚未使用;
  8. Ciaddr:用戶IP地址;
  9. Yiaddr:客戶IP地址;
  10. Siaddr:用於bootstrap過程中的IP地址;
  11. Giaddr:轉發代理(網關)IP地址;
  12. Chaddr:client的硬件地址;
  13. Sname:可選server的名稱,以0x00結尾;
  14. File:啟動文件名;
  15. Options:,廠商標識,可選的參數字段


還是wiki的人性化點

DHCP uses the same two IANA assigned ports as BOOTP: 67/udp for the server side, and 68/udp for the client side.

DHCP operations fall into four basic phases. These phases are IP discovery, IP lease offer, IP request, and IP lease acknowledgement.

After the client obtained an IP address, the client may start an address resolution (ARP) query to prevent IP conflicts caused by address pool overlapping of DHCP servers.

 

DHCP discovery

The client broadcasts on the physical subnet to find available servers. Network administrators can configure a local router to forward DHCP packets to a DHCP server on a different subnet. This client-implementation creates a UDP packet with the broadcast destination of 255.255.255.255 or subnet broadcast address.

A client can also request its last-known IP address (in the example below, 192.168.1.100). If the client is still in a network where this IP is valid, the server might grant the request. Otherwise, it depends whether the server is set up as authoritative or not. An authoritative server will deny the request, making the client ask for a new IP immediately. A non-authoritative server simply ignores the request, leading to an implementation-dependent timeout for the client to give up on the request and ask for a new IP address.

 

DHCP offers

When a DHCP server receives an IP lease request from a client, it extends an IP lease offer. This is done by reserving an IP address for the client and sending a DHCPOFFER message across the network to the client. This message contains the client's MAC address, followed by the IP address that the server is offering, the subnet mask, the lease duration, and the IP address of the DHCP server making the offer.

The server determines the configuration, based on the client's hardware address as specified in the CHADDR field. Here the server, 192.168.1.1, specifies the IP address in the YIADDR field.

 

DHCP requests

When the client PC receives an IP lease offer, it must tell all the other DHCP servers that it has accepted an offer. To do this, the client broadcasts a DHCPREQUEST message containing the IP address of the server that made the offer. When the other DHCP servers receive this message, they withdraw any offers that they might have made to the client. They then return the address that they had reserved for the client back to the pool of valid addresses that they can offer to another computer. Any number of DHCP servers can respond to an IP lease request, but the client can only accept one offer per network interface card.

 

DHCP acknowledgement

When the DHCP server receives the DHCPREQUEST message from the client, which is basically a unicast packet unlike the DHCPDISCOVER packet as the client now knows who the server is. This initiates the final phase of the configuration process. The acknowledgement phase involves sending a DHCPACK packet to the client. This packet includes the lease duration and any other configuration information that the client might have requested. At this point, the IP configuration process is complete.

The server acknowledges the request and sends the acknowledgement to the client. The system as a whole expects the client to configure its network interface with the supplied options.

DHCPDISCOVER
UDP Src=0.0.0.0
sPort=68 Dest=255.255.255.255 dPort=67
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0's. BOOTP legacy
Magic Cookie
0x63825363
DHCP Options
DHCP option 53: DHCP Discover
DHCP option 50: 192.168.1.100 requested
DHCPOFFER
UDP Src=192.168.1.1
sPort=67 Dest=192.168.1.100 dPort=68
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0xC0A80164
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0's. BOOTP legacy
Magic Cookie
0x63825363
DHCP Options
DHCP option 53: DHCP Offer
DHCP option 1: 255.255.255.0 subnet mask
DHCP option 3: 192.168.1.1 router
DHCP option 51: 1 day IP lease time
DHCP option 54: 192.168.1.1 DHCP server
DHCPREQUEST
UDP Src=0.0.0.0
sPort=68 Dest=255.255.255.255 dPort=67
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0's. BOOTP legacy
Magic Cookie
0x63825363
DHCP Options
DHCP option 53: DHCP Request
DHCP option 50: 192.168.1.100 requested
DHCP option 54: 192.168.1.1 DHCP server.
DHCPACK
UDP Src=192.168.1.1
sPort=67 Dest=192.168.1.100 dPort=68
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR (Client IP Address)
0x00000000
YIADDR (Your IP Address)
0xC0A80164
SIADDR (Server IP Address)
0x00000000
GIADDR (Gateway IP Address switched by relay)
0x00000000
CHADDR (Client Hardware Address)
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0's. BOOTP legacy
Magic Cookie
0x63825363
DHCP Options
DHCP option 53: DHCP ACK
DHCP option 1: 255.255.255.0 subnet mask
DHCP option 3: 192.168.1.1 router
DHCP option 51: 1 day IP lease time
DHCP option 54: 192.168.1.1 DHCP server

 

DHCP 發現 (DISCOVER)

客戶在物理子網上發送廣播來尋找可用的服務器。網絡管理員可以配置一個本地路由來轉發DHCP包給另一個子網上的DHCP服務器。該客戶實現生成一個目的地址為255.255.255.255或者一個子網廣播地址的UDP包。

客戶也可以申請它使用的最后一個IP地址(在下面的例子里為192.168.1.100)。如果該客戶所在的網絡中此IP仍然可用,服務器就可以准許該申請。否則,就要看該服務器是授權的還是非授權的。 授權服務器會拒絕請求,使得客戶立刻申請一個新的IP。非授權服務器僅僅忽略掉請求,導致一個客戶端請求的超時,於是客戶端就會放棄此請求而去申請一個新的IP地址。

 

DHCPDISCOVER
UDP Src=0.0.0.0
sPort=68 Dest=255.255.255.255 dPort=67
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0's. BOOTP legacy
Magic Cookie
0x63825363
DHCP Options
DHCP option 53: DHCP Discover
DHCP option 50: 192.168.1.100 requested

[編輯] DHCP提供 (OFFER)

當DHCP服務器收到一個來自客戶的IP租約請求時,它會提供一個IP租約。DHCP為客戶保留一個IP地址,然后通過網絡發送一個DHCPOFFER消息給客戶。該消息包含客戶的MAC地址、服務器提供的IP地址、子網掩碼、租期以及提供IP的DHCP服務器的IP。

服務器基於在CHADDR字段指定的客戶硬件地址來檢查配置。這里的服務器,192.168.1.1,將IP地址指定於YIADDR字段。

DHCPOFFER
UDP Src=192.168.1.1
sPort=67 Dest=255.255.255.255 dPort=68
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0xC0A80164
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0's. BOOTP legacy
Magic Cookie
0x63825363
DHCP Options
DHCP option 53: DHCP Offer
DHCP option 1: 255.255.255.0 subnet mask
DHCP option 3: 192.168.1.1 router
DHCP option 51: 1 day IP lease time
DHCP option 54: 192.168.1.1 DHCP server

[編輯] DHCP請求 (REQUEST)

當客戶PC收到一個IP租約提供時,它必須告訴所有其他的DHCP服務器它已經接受了一個租約提供。因此,該客戶會發送一個DHCPREQUEST 消息,其中包含提供租約的服務器的IP。當其他DHCP服務器收到了該消息后,它們會收回所有可能已提供給客戶的租約。然后它們把曾經給客戶保留的那個地 址重新放回到可用地址池中,這樣,它們就可以為其他計算機分配這個地址。任意數量的DHCP服務器都可以響應同一個IP租約請求,但是每一個客戶網卡只能 接受一個租約提供。

DHCPREQUEST
UDP Src=0.0.0.0
sPort=68 Dest=255.255.255.255 dPort=67
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0's. BOOTP legacy
Magic Cookie
0x63825363
DHCP Options
DHCP option 53: DHCP Request
DHCP option 50: 192.168.1.100 requested
DHCP option 54: 192.168.1.1 DHCP server.

[編輯] DHCP確認 (ACK)

當DHCP服務器收到來自客戶的DHCPREQUEST消息后,它就開始了配置過程的最后階段。這個響應階段包括發送一個DHCPACK包給客戶。這個包包含租期和客戶可能請求的其他所有配置信息。這時候,TCP/IP配置過程就完成了。

該服務器響應請求並發送響應給客戶。整個系統期望客戶來根據選項來配置其網卡。

DHCPACK
UDP Src=192.168.1.1
sPort=67 Dest=192.168.1.100 dPort=68
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR (Client IP Address)
0x00000000
YIADDR (Your IP Address)
0xC0A80164
SIADDR (Server IP Address)
0x00000000
GIADDR (Gateway IP Address switched by relay)
0x00000000
CHADDR (Client Hardware Address)
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0's. BOOTPlegacy
Magic Cookie
0x63825363
DHCP Options
DHCP option 53: DHCP ACK
DHCP option 1: 255.255.255.0 subnet mask
DHCP option 3: 192.168.1.1 router
DHCP option 51: 1 day IP lease time
DHCP option 54: 192.168.1.1 DHCP server

[編輯] DHCP信息

客戶端向DHCP服務器發送一個請求:要么是用於獲取比服務器發送的原始DHCPACK更多的信息,要么是重復數據以進行一個特殊的應用——比方說,瀏覽器使用“DHCP通知”,通過WPAD獲得代理主機的設置。這樣的詢問並不會使DHCP服務器更新其數據庫中的IP租約。

 

 

DHCP information

The client to the DHCP server: either to request more information than the server sent with the original DHCPACK; or to repeat data for a particular application - for example, browsers use DHCP Inform to obtain web proxy settings via WPAD. Such queries do not cause the DHCP server to refresh the IP expiry time in its database.

 

DHCP releasing

The client sends a request to the DHCP server to release the DHCP and the client unconfigures its IP address. As clients usually do not know when users may unplug them from the network, the protocol does not mandate the sending of DHCP Release.

 

Field      DHCPDISCOVER          DHCPREQUEST           DHCPDECLINE,
DHCPINFORM DHCPRELEASE
----- ------------ ----------- -----------
'op' BOOTREQUEST BOOTREQUEST BOOTREQUEST
'htype' (From "Assigned Numbers" RFC)
'hlen' (Hardware address length in octets)
'hops' 0 0 0
'xid' selected by client 'xid' from server selected by
DHCPOFFER message client
'secs' 0 or seconds since 0 or seconds since 0
DHCP process started DHCP process started
'flags' Set 'BROADCAST' Set 'BROADCAST' 0
flag if client flag if client
requires broadcast requires broadcast
reply reply
'ciaddr' 0 (DHCPDISCOVER) 0 or client's 0 (DHCPDECLINE)
client's network address client's network
network address (BOUND/RENEW/REBIND) address
(DHCPINFORM) (DHCPRELEASE)
'yiaddr' 0 0 0
'siaddr' 0 0 0
'giaddr' 0 0 0
'chaddr' client's hardware client's hardware client's hardware
address address address
'sname' options, if options, if (unused)
indicated in indicated in
'sname/file' 'sname/file'
option; otherwise option; otherwise
unused unused
'file' options, if options, if (unused)
indicated in indicated in
'sname/file' 'sname/file'
option; otherwise option; otherwise
unused unused
'options' options options (unused)

Option DHCPDISCOVER DHCPREQUEST DHCPDECLINE,
DHCPINFORM DHCPRELEASE
------ ------------ ----------- -----------
Requested IP address MAY MUST (in MUST
(DISCOVER) SELECTING or (DHCPDECLINE),
MUST NOT INIT-REBOOT) MUST NOT
(INFORM) MUST NOT (in (DHCPRELEASE)
BOUND or
RENEWING)
IP address lease time MAY MAY MUST NOT
(DISCOVER)
MUST NOT
(INFORM)
Use 'file'/'sname' fields MAY MAY MAY
DHCP message type DHCPDISCOVER/ DHCPREQUEST DHCPDECLINE/
DHCPINFORM DHCPRELEASE
Client identifier MAY MAY MAY
Vendor class identifier MAY MAY MUST NOT
Server identifier MUST NOT MUST (after MUST
SELECTING)
MUST NOT (after
INIT-REBOOT,
BOUND, RENEWING
or REBINDING)
Parameter request list MAY MAY MUST NOT
Maximum message size MAY MAY MUST NOT
Message SHOULD NOT SHOULD NOT SHOULD
Site-specific MAY MAY MUST NOT
All others MAY MAY MUST NOT


   在網絡上search的時候你會發現server to client到底是broadcast還是unicast眾說分雲.感該下國內的網絡環境.這里直接接用了一朋友的網友的一段話.我努力想在rfc文檔中找到權威解釋,可惜...也許我該補補E文了.
   server 維護了一張表,表里有請求者的mac 與 offered ip, 如果一個dhcp request 的src-mac 在這張表里,offer 就是unicast, 因為這時client 是有ip 的;如果是一個新的client, client 會先發一個dhcp discover, server 收到后會回一個 dhcp offer,這個offer 是broadcast,因為這時client 還沒有ip, client 收到 這個offer 后會發一個dhcp request, 然后server 給一個 dhcp ack。 這兩個報文可以是broadcast or unicast, based on bootp flags.
   在rfc文檔中倒是找到個client to server,broadcast還是unicast的.
   

Use of broadcast and unicast

The DHCP client broadcasts DHCPDISCOVER, DHCPREQUEST and DHCPINFORM
messages, unless the client knows the address of a DHCP server. The
client unicasts DHCPRELEASE messages to the server. Because the
client is declining the use of the IP address supplied by the server,
the client broadcasts DHCPDECLINE messages.

When the DHCP client knows the address of a DHCP server, in either
INIT or REBOOTING state, the client may use that address in the
DHCPDISCOVER or DHCPREQUEST rather than the IP broadcast address.
The client may also use unicast to send DHCPINFORM messages to a
known DHCP server. If the client receives no response to DHCP
messages sent to the IP address of a known DHCP server, the DHCP
client reverts to using the IP broadcast address.

   想想應該也就是這么個道理吧.你在有ip的情況下server發包,server就應該unicast了吧.
##########################################################################

概要

動態主機配置協議 (DHCP) 是 RFC 1541(已被 RFC 2131 取代)定義的標准協議,該協議允許服務器向客戶端動態分配 IP 地址和配置信息。通常,DHCP 服務器至少向客戶端提供以下基本信息:
IP 地址

子網掩碼

默認網關
它還可以提供其他信息,如域名服務 (DNS) 服務器的地址和  Windows Internet 名稱服務 (WINS) 服務器的地址。 系統管理員配置 DHCP 服務器分配給客戶端的選項。

當客戶端被配置為接收 DHCP 信息后首次初始化時,它將啟動與服務器的對話。 

以下是客戶端和服務器之間對話的摘要表,最后一列是數據包級的過程說明: 

Source     Dest        Source     Dest              Packet
MAC addr MAC addr IP addr IP addr Description
-----------------------------------------------------------------
Client Broadcast 0.0.0.0 255.255.255.255 DHCP Discover
DHCPsrvr Broadcast DHCPsrvr 255.255.255.255 DHCP Offer
Client Broadcast 0.0.0.0 255.255.255.255 DHCP Request
DHCPsrvr Broadcast DHCPsrvr 255.255.255.255 DHCP ACK


DHCP 客戶端和 DHCP 服務器之間的詳細對話如下:

DHCPDISCOVER

客戶端發送 DHCPDISCOVER 數據包。以下內容摘自

網絡監視器的捕獲信息,顯示了 DHCPDISCOVER 數據包中的 IP 和 DHCP 部分。在 IP 部分,可以看到 Destination 地址是 255.255.255.255,而 Source 地址是 0.0.0.0。DHCP 部分將數據包標識為 Discover 數據包,並使用網卡的物理地址在兩處標識客戶端。注意 CHADDR 字段和 DHCP 中的值:Client Identifier 字段是相同的。 
IP:ID = 0x0; Proto = UDP; Len: 328
IP:Version = 4 (0x4)
IP:Header Length = 20 (0x14)
IP:Service Type = 0 (0x0)
IP:Precedence = Routine
IP:...0.... = Normal Delay
IP:....0... = Normal Throughput
IP:.....0.. = Normal Reliability
IP:Total Length = 328 (0x148)
IP:Identification = 0 (0x0)
IP:Flags Summary = 0 (0x0)
IP:.......0 = Last fragment in datagram
IP:......0. = May fragment datagram if necessary
IP:Fragment Offset = 0 (0x0) bytes
IP:Time to Live = 128 (0x80)
IP:Protocol = UDP - User Datagram
IP:Checksum = 0x39A6
IP:Source Address = 0.0.0.0
IP:Destination Address = 255.255.255.255
IP:Data:Number of data bytes remaining = 308 (0x0134)

DHCP:Discover (xid=21274A1D)
DHCP:Op Code (op) = 1 (0x1)
DHCP:Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP:Hardware Address Length (hlen) = 6 (0x6)
DHCP:Hops (hops) = 0 (0x0)
DHCP:Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP:Seconds (secs) = 0 (0x0)
DHCP:Flags (flags) = 0 (0x0)
DHCP:0............... = No Broadcast
DHCP:Client IP Address (ciaddr) = 0.0.0.0
DHCP:Your IP Address (yiaddr) = 0.0.0.0
DHCP:Server IP Address (siaddr) = 0.0.0.0
DHCP:Relay IP Address (giaddr) = 0.0.0.0
DHCP:Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP:Server Host Name (sname) =
DHCP:Boot File Name (file) =
DHCP:Magic Cookie = [OK]
DHCP:Option Field (options)
DHCP:DHCP Message Type = DHCP Discover
DHCP:Client-identifier = (Type:1) 08 00 2b 2e d8 5e
DHCP:Host Name = JUMBO-WS
DHCP:Parameter Request List = (Length:7) 01 0f 03 2c 2e 2f 06
DHCP:End of this option field

DHCPOFFER

DHCP 服務器通過發送 DHCPOFFER 數據包作出響應。在以下摘錄捕獲信息的 IP 部分中,Source 地址現在是 DHCP 服務器 IP 地址,而 Destination 地址是廣播地址 255.255.255.255。DHCP 部分將數據包標識為 Offer。YIADDR 字段用服務器提供給客戶端的 IP 地址填充。注意,CHADDR 字段仍然包含發出請求的客戶端的物理地址。另外,在 DHCP Option Field 部分,可以看到由服務器隨 IP 地址一起發送的各種選項。在這種情況下,服務器發送的是子網掩碼、默認網關( 路由器)、租約時間、WINS 服務器地址(NetBIOS 名稱服務)和 NetBIOS 節點類型。
IP:ID = 0x3C30; Proto = UDP; Len: 328
IP:Version = 4 (0x4)
IP:Header Length = 20 (0x14)
IP:Service Type = 0 (0x0)
IP:Precedence = Routine
IP:...0.... = Normal Delay
IP:....0... = Normal Throughput
IP:.....0.. = Normal Reliability
IP:Total Length = 328 (0x148)
IP:Identification = 15408 (0x3C30)
IP:Flags Summary = 0 (0x0)
IP:.......0 = Last fragment in datagram
IP:......0. = May fragment datagram if necessary
IP:Fragment Offset = 0 (0x0) bytes
IP:Time to Live = 128 (0x80)
IP:Protocol = UDP - User Datagram
IP:Checksum = 0x2FA8
IP:Source Address = 157.54.48.151
IP:Destination Address = 255.255.255.255
IP:Data:Number of data bytes remaining = 308 (0x0134)

DHCP:Offer (xid=21274A1D)
DHCP:Op Code (op) = 2 (0x2)
DHCP:Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP:Hardware Address Length (hlen) = 6 (0x6)
DHCP:Hops (hops) = 0 (0x0)
DHCP:Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP:Seconds (secs) = 0 (0x0)
DHCP:Flags (flags) = 0 (0x0)
DHCP:0............... = No Broadcast
DHCP:Client IP Address (ciaddr) = 0.0.0.0
DHCP:Your IP Address (yiaddr) = 157.54.50.5
DHCP:Server IP Address (siaddr) = 0.0.0.0
DHCP:Relay IP Address (giaddr) = 0.0.0.0
DHCP:Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP:Server Host Name (sname) =
DHCP:Boot File Name (file) =
DHCP:Magic Cookie = [OK]
DHCP:Option Field (options)
DHCP:DHCP Message Type = DHCP Offer
DHCP:Subnet Mask = 255.255.240.0
DHCP:Renewal Time Value (T1) = 8 Days, 0:00:00
DHCP:Rebinding Time Value (T2) = 14 Days, 0:00:00
DHCP:IP Address Lease Time = 16 Days, 0:00:00
DHCP:Server Identifier = 157.54.48.151
DHCP:Router = 157.54.48.1
DHCP:NetBIOS Name Service = 157.54.16.154
DHCP:NetBIOS Node Type = (Length: 1) 04
DHCP:End of this option field

DHCPREQUEST

客戶端通過發送 DHCPREQUEST 響應 DHCPOFFER。在以下捕獲信息的 IP 部分中,客戶端的 Source 地址仍然是 0.0.0.0,數據包的 Destination 仍然是 255.255.255.255。由於客戶端還沒有從服務器收到可以開始使用所提供地址的確認,所以客戶端仍然保留 0.0.0.0。由於可能有多個 DHCP 服務器已經作出響應,並可能預訂了 為客戶端產生的 Offer,所以 Destination 地址仍然被廣播出去。這使得其他 DHCP 服務器知道:它們可以釋放已提供的地址,並將這些地址返回到可用地址池中。DHCP 部分將數據包標識為 Request,並使用 DHCP:Requested Address 字段確認所提供的地址。DHCP:Server Identifier 字段顯示提供租約的 DHCP 服務器的 IP 地址。
IP:ID = 0x100; Proto = UDP; Len: 328
IP:Version = 4 (0x4)
IP:Header Length = 20 (0x14)
IP:Service Type = 0 (0x0)
IP:Precedence = Routine
IP:...0.... = Normal Delay
IP:....0... = Normal Throughput
IP:.....0.. = Normal Reliability
IP:Total Length = 328 (0x148)
IP:Identification = 256 (0x100)
IP:Flags Summary = 0 (0x0)
IP:.......0 = Last fragment in datagram
IP:......0. = May fragment datagram if necessary
IP:Fragment Offset = 0 (0x0) bytes
IP:Time to Live = 128 (0x80)
IP:Protocol = UDP - User Datagram
IP:Checksum = 0x38A6
IP:Source Address = 0.0.0.0
IP:Destination Address = 255.255.255.255
IP:Data:Number of data bytes remaining = 308 (0x0134)

DHCP:Request (xid=21274A1D)
DHCP:Op Code (op) = 1 (0x1)
DHCP:Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP:Hardware Address Length (hlen) = 6 (0x6)
DHCP:Hops (hops) = 0 (0x0)
DHCP:Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP:Seconds (secs) = 0 (0x0)
DHCP:Flags (flags) = 0 (0x0)
DHCP:0............... = No Broadcast
DHCP:Client IP Address (ciaddr) = 0.0.0.0
DHCP:Your IP Address (yiaddr) = 0.0.0.0
DHCP:Server IP Address (siaddr) = 0.0.0.0
DHCP:Relay IP Address (giaddr) = 0.0.0.0
DHCP:Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP:Server Host Name (sname) =
DHCP:Boot File Name (file) =
DHCP:Magic Cookie = [OK]
DHCP:Option Field (options)
DHCP:DHCP Message Type = DHCP Request
DHCP:Client-identifier = (Type:1) 08 00 2b 2e d8 5e
DHCP:Requested Address = 157.54.50.5
DHCP:Server Identifier = 157.54.48.151
DHCP:Host Name = JUMBO-WS
DHCP:Parameter Request List = (Length:7) 01 0f 03 2c 2e 2f 06
DHCP:End of this option field

DHCPACK

DHCP 服務器用 DHCPACK 響應 DHCPREQUEST,以此完成初始化周期。Source 地址是 DHCP 服務器 IP 地址,Destination 地址仍然是 255.255.255.255。YIADDR 字段包含客戶端的地址,而 CHADDR 和 DHCP:Client Identifier 字段是發出請求的客戶端中網卡的物理地址。DHCP Option 部分將數據包標識為 ACK。
IP:ID = 0x3D30; Proto = UDP; Len: 328
IP:Version = 4 (0x4)
IP:Header Length = 20 (0x14)
IP:Service Type = 0 (0x0)
IP:Precedence = Routine
IP:...0.... = Normal Delay
IP:....0... = Normal Throughput
IP:.....0.. = Normal Reliability
IP:Total Length = 328 (0x148)
IP:Identification = 15664 (0x3D30)
IP:Flags Summary = 0 (0x0)
IP:.......0 = Last fragment in datagram
IP:......0. = May fragment datagram if necessary
IP:Fragment Offset = 0 (0x0) bytes
IP:Time to Live = 128 (0x80)
IP:Protocol = UDP - User Datagram
IP:Checksum = 0x2EA8
IP:Source Address = 157.54.48.151
IP:Destination Address = 255.255.255.255
IP:Data:Number of data bytes remaining = 308 (0x0134)

DHCP:ACK (xid=21274A1D)
DHCP:Op Code (op) = 2 (0x2)
DHCP:Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP:Hardware Address Length (hlen) = 6 (0x6)
DHCP:Hops (hops) = 0 (0x0)
DHCP:Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP:Seconds (secs) = 0 (0x0)
DHCP:Flags (flags) = 0 (0x0)
DHCP:0............... = No Broadcast
DHCP:Client IP Address (ciaddr) = 0.0.0.0
DHCP:Your IP Address (yiaddr) = 157.54.50.5
DHCP:Server IP Address (siaddr) = 0.0.0.0
DHCP:Relay IP Address (giaddr) = 0.0.0.0
DHCP:Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP:Server Host Name (sname) =
DHCP:Boot File Name (file) =
DHCP:Magic Cookie = [OK]
DHCP:Option Field (options)
DHCP:DHCP Message Type = DHCP ACK
DHCP:Renewal Time Value (T1) = 8 Days, 0:00:00
DHCP:Rebinding Time Value (T2) = 14 Days, 0:00:00
DHCP:IP Address Lease Time = 16 Days, 0:00:00
DHCP:Server Identifier = 157.54.48.151
DHCP:Subnet Mask = 255.255.240.0
DHCP:Router = 157.54.48.1
DHCP:NetBIOS Name Service = 157.54.16.154
DHCP:NetBIOS Node Type = (Length: 1) 04
DHCP:End of this option field

如果客戶端以前有 DHCP 分配的 IP 地址並且客戶端被重新啟動,則客戶端將在特殊的 DHCPREQUEST 數據包中特定地請求以前租用過的 IP 地址。Source 地址是 0.0.0.0,Destination 地址是廣播地址 255.255.255.255。Microsoft 客戶端將用以前分配的地址填充 DHCP Option Field DHCP:Requested Address 字段。嚴格符合 RFC 的客戶端將用請求的地址填充 CIADDR Field。對這兩種情況 Microsoft DHCP 服務器都將接受。
IP:ID = 0x0; Proto = UDP; Len: 328
IP:Version = 4 (0x4)
IP:Header Length = 20 (0x14)
IP:Service Type = 0 (0x0)
IP:Precedence = Routine
IP:...0.... = Normal Delay
IP:....0... = Normal Throughput
IP:.....0.. = Normal Reliability
IP:Total Length = 328 (0x148)
IP:Identification = 0 (0x0)
IP:Flags Summary = 0 (0x0)
IP:.......0 = Last fragment in datagram
IP:......0. = May fragment datagram if necessary
IP:Fragment Offset = 0 (0x0) bytes
IP:Time to Live = 128 (0x80)
IP:Protocol = UDP - User Datagram
IP:Checksum = 0x39A6
IP:Source Address = 0.0.0.0
IP:Destination Address = 255.255.255.255
IP:Data:Number of data bytes remaining = 308 (0x0134)

DHCP:Request (xid=2757554E)
DHCP:Op Code (op) = 1 (0x1)
DHCP:Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP:Hardware Address Length (hlen) = 6 (0x6)
DHCP:Hops (hops) = 0 (0x0)
DHCP:Transaction ID (xid) = 660034894 (0x2757554E)
DHCP:Seconds (secs) = 0 (0x0)
DHCP:Flags (flags) = 0 (0x0)
DHCP:0............... = No Broadcast
DHCP:Client IP Address (ciaddr) = 0.0.0.0
DHCP:Your IP Address (yiaddr) = 0.0.0.0
DHCP:Server IP Address (siaddr) = 0.0.0.0
DHCP:Relay IP Address (giaddr) = 0.0.0.0
DHCP:Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP:Server Host Name (sname) =
DHCP:Boot File Name (file) =
DHCP:Magic Cookie = [OK]
DHCP:Option Field (options)
DHCP:DHCP Message Type = DHCP Request
DHCP:Client-identifier = (Type:1) 08 00 2b 2e d8 5e
DHCP:Requested Address = 157.54.50.5
DHCP:Host Name = JUMBO-WS
DHCP:Parameter Request List = (Length:7) 01 0f 03 2c 2e 2f 06
DHCP:End of this option field

這時,服務器可能響應,也可能不響應。 Windows NT DHCP 服務器的行為取決於所使用的 操作系統版本以及其他因素,如超級作用域。如果服務器決定客戶端仍然可以使用該地址,它將保持靜默或對 DHCPREQUEST 發出 ACK。如果服務器決定客戶端不能擁有該地址,它將發送 NACK。
IP:ID = 0x3F1A; Proto = UDP; Len: 328
IP:Version = 4 (0x4)
IP:Header Length = 20 (0x14)
IP:Service Type = 0 (0x0)
IP:Precedence = Routine
IP:...0.... = Normal Delay
IP:....0... = Normal Throughput
IP:.....0.. = Normal Reliability
IP:Total Length = 328 (0x148)
IP:Identification = 16154 (0x3F1A)
IP:Flags Summary = 0 (0x0)
IP:.......0 = Last fragment in datagram
IP:......0. = May fragment datagram if necessary
IP:Fragment Offset = 0 (0x0) bytes
IP:Time to Live = 128 (0x80)
IP:Protocol = UDP - User Datagram
IP:Checksum = 0x2CBE
IP:Source Address = 157.54.48.151
IP:Destination Address = 255.255.255.255
IP:Data:Number of data bytes remaining = 308 (0x0134)

DHCP:NACK (xid=74A005CE)
DHCP:Op Code (op) = 2 (0x2)
DHCP:Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP:Hardware Address Length (hlen) = 6 (0x6)
DHCP:Hops (hops) = 0 (0x0)
DHCP:Transaction ID (xid) = 1956644302 (0x74A005CE)
DHCP:Seconds (secs) = 0 (0x0)
DHCP:Flags (flags) = 0 (0x0)
DHCP:0............... = No Broadcast
DHCP:Client IP Address (ciaddr) = 0.0.0.0
DHCP:Your IP Address (yiaddr) = 0.0.0.0
DHCP:Server IP Address (siaddr) = 0.0.0.0
DHCP:Relay IP Address (giaddr) = 0.0.0.0
DHCP:Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP:Server Host Name (sname) =
DHCP:Boot File Name (file) =
DHCP:Magic Cookie = [OK]
DHCP:Option Field (options)
DHCP:DHCP Message Type = DHCP NACK
DHCP:Server Identifier = 157.54.48.151
DHCP:End of this option field

然后,客戶端將開始發現進程,但 DHCPDISCOVER 數據包仍然嘗試租用相同的地址。在許多情況下,tth 客戶端將得到相同的地址,但也可能得不到。
IP:ID = 0x100; Proto = UDP; Len: 328
IP:Version = 4 (0x4)
IP:Header Length = 20 (0x14)
IP:Service Type = 0 (0x0)
IP:Precedence = Routine
IP:...0.... = Normal Delay
IP:....0... = Normal Throughput
IP:.....0.. = Normal Reliability
IP:Total Length = 328 (0x148)
IP:Identification = 256 (0x100)
IP:Flags Summary = 0 (0x0)
IP:.......0 = Last fragment in datagram
IP:......0. = May fragment datagram if necessary
IP:Fragment Offset = 0 (0x0) bytes
IP:Time to Live = 128 (0x80)
IP:Protocol = UDP - User Datagram
IP:Checksum = 0x38A6
IP:Source Address = 0.0.0.0
IP:Destination Address = 255.255.255.255
IP:Data:Number of data bytes remaining = 308 (0x0134)

DHCP:Discover (xid=3ED14752)
DHCP:Op Code (op) = 1 (0x1)
DHCP:Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP:Hardware Address Length (hlen) = 6 (0x6)
DHCP:Hops (hops) = 0 (0x0)
DHCP:Transaction ID (xid) = 1053902674 (0x3ED14752)
DHCP:Seconds (secs) = 0 (0x0)
DHCP:Flags (flags) = 0 (0x0)
DHCP:0............... = No Broadcast
DHCP:Client IP Address (ciaddr) = 0.0.0.0
DHCP:Your IP Address (yiaddr) = 0.0.0.0
DHCP:Server IP Address (siaddr) = 0.0.0.0
DHCP:Relay IP Address (giaddr) = 0.0.0.0
DHCP:Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP:Server Host Name (sname) =
DHCP:Boot File Name (file) =
DHCP:Magic Cookie = [OK]
DHCP:Option Field (options)
DHCP:DHCP Message Type = DHCP Discover
DHCP:Client-identifier = (Type:1) 08 00 2b 2e d8 5e
DHCP:Requested Address = 157.54.51.5
DHCP:Host Name = JUMBO-WS
DHCP:Parameter Request List = (Length:7) 01 0f 03 2c 2e 2f 06
DHCP:End of this option field

客戶端從 DHCP 服務器獲得的 DHCP 信息中將有與該信息關聯的租約時間。租約時間定義了對於 DHCP 分配的信息,客戶端可以使用多久。當租約時間達到某個特殊時刻時,客戶端將嘗試更新其 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租用更新報文


      我們知道在TCP/IP網絡應用中,網絡用戶PC只有在獲取了一個網絡地址,才可以和其他的網絡用戶進行通訊,在實際應用中,我們經常會遇到一些問題:比 如IP地址發生沖突、由於網關或DNS服務器地址的設置出現錯誤而無法訪問網絡中的其他主機、由於機器的經常變動位置而不得不頻繁地修改IP地址。基於這 些在網絡管理中所存在的種種問題,解決的方法是引入DHCP服務,以動態的方式實現客戶機器的信息配置。下面從DHCP原理出發並結合本人在授課過程的實 際經驗為依據,對DHCP的應用以及在實際應用中我們會遇到的各類問題和相應的解決方法做深入的探討。

一、DHCP服務是什么 DHCP稱為動態主機配置協議。DHCP服務允許工作站連接到網絡並且自動獲取一個IP地址。配置DHCP服務的服務器可以為每一個網絡客戶提供一個IP地址、子網掩碼、缺省網關、一個WINS服務器的IP地址,以及一個DNS服務器的IP地址。

二、DHCP服務在實際應用中的常見問題

1、在一個子網內是否可以存在多台DHCP服務器,如果存在的話,那么該子網中的客戶機能否正確獲取地址,將會獲取哪個DHCP服務器所分配的地 址,是否能控制客戶機器能從管理人員所設置的DHCP服務器中獲取地址而不會從一些非法用戶自建的DHCP服務器中取得非法得IP?

2、如果網絡中存在多個子網,而子網的客戶機需要DHCP服務器提供地址配置,那么是采取在各個子網都安裝一台DHCP服務器,還是只在某一個子網中安裝DHCP服務器,讓它為多個子網的客戶機分配IP地址,應該如何實現?

3、如果采取在一個子網中安裝DHCP服務器,讓它為多個子網的客戶機分配IP地址,那么應該需要在一台DHCP服務器中創建多個不同范圍的作用域,而我們如何可以准確地保證相應范圍的地址分配給相應子網地主機呢?

4、如果客戶機器無法從DHCP服務器中獲取IP地址,那么Windows2000客戶機器將會如何處理自己的TCP/IP設置?

三、DHCP的工作原理

要解析第二點中所提的問題,首先要搞清楚DHCP的實際的工作過程及原理,下面就對此做簡單介紹:DHCP是一個基於廣播的協議,它的操作可以歸結為四個階段,這些階段是IP租用請求、IP租用提供、IP租用選擇、IP租用確認。

1、IP租用請求:在任何時候,客戶計算機如果設置為自動獲取IP地址,那么在它開機 時,就會檢查自己當前是否租用了一個IP地址,如果沒有,它就向DCHP請求一個租用,由於該客戶計算機並不知道DHCP服務器的地址,所以會用 255.255.255.255作為目標地址,源地址使用0.0.0.0,在網絡上廣播一個DHCPDISCOVER消息,消息包含客戶計算機的媒體訪問控制(MAC)地址(網卡上內建的硬件地址)以及它的NetBIOS名字。

2、IP租用提供:當DHCP服務器接收到一個來自客戶的IP租用請求時,它會根據自己的作用域地址池為該客戶保留一個IP地址並且在網絡上廣播一個來實現,該消息包含客戶的MAC地址、服務器所能提供的IP地址、子網掩碼、租用期限,以及提供該租用的DHCP服務器本身的IP地址。

3、IP租用選擇:如果子網還存在其它DHCP服務器,那么客戶機在接受了某個DHCP服務器的DHCPOFFER消息后,它會廣播一條包含提供租用的服務器的IP地址的DHCPREQUEST消息,在該子網中通告所有其它DHCP服務器它已經接受了一個地址的提供,其他DHCP服務器在接收到這條消息后,就會撤銷為該客戶提供的租用。然后把為該客戶分配的租用地址返回到地址池中,該地址將可以重新作為一個有效地址提供給別的計算機使用。

4、IP租用確認: DHCP服務器接收到來自客戶的DHCPREQUEST消息,它就開始配置過程的最后一個階段,這個確認階段由DHCP服務器發送一個DHCPACK包給客戶,該包包括一個租用期限和客戶所請求的所有其它配置信息,至此,完成TCP/IP配置。

四、DHCP服務常見問題的解決方案

本文第二點中我們所提出的問題有四點,以下就此4個問題做相應的分析並給出我個人的一些解決方案,相信可以對學習DHCP服務的自學者會有一定的幫助,這些問題也是在實際教學中學生提出疑問最多的知識難點。

1、根據客戶計算機的IP租用原理可以知道,在一個子網內,如果存在多台DHCP服務器來提供地址配置信息,這是不違反請求、分配原則的,因為只要 中有一台客戶計算機在該子網中提出IP地址租約請求,由於請求是廣播形式的,所以在子網中可以有任意數量的特定DHCP服務器響應一個IP租用請求,而客 戶請求后選中的是這些任意特定DHCP服務器中的某一台,這個選擇具有隨機性,但有一點要注意的是客戶只能為每一張網絡接口卡接受一個租用提供,上面所謂 特定的DHCP服務器是指那些經過系統授權的DHCP服務器,而非授權的DHCP服務器將無法在網絡中提供正常的地址分配服務,這一點非常重要,因為這樣 一來客戶機器將只會在管理員設定的地址范圍中取得地址,Windows 2000操作系統的這一新增功能,通過對DHCP服務器進行認證避免了非法DHCP服務器分配非法IP地址造成的IP地址沖突,在實際應用中,客戶機器獲 取非法的地址經常是造成網絡癱瘓和無法正常通訊的一大原因。綜合上面的分析可以做出第一個問題的結論:在一個子網中可以存在多台DHCP服務器來提供地址 分配,但能夠作為地址提供的不是任意的DHCP服務器,而應該是經過系統認證的那些,客戶機請求地址時最終從那一台經過認證機器中獲取時隨機的。此外,從 另一個角度看,在相同子網上使用多個 DHCP 服務器,將為它所服務的 DHCP 客戶機提供更強的容錯能力,如下圖所示,在一個子網內(網絡號為192.168.1.0 掩碼為255.255.255.0)共用兩個 DHCP 服務器,其中的DHCP服務器1不可用的話,DHCP服務器2可以取代它並繼續租用新的地址或續訂現有客戶機。可以建議采用的解決方案是使用 80/20 規則來划分兩個 DHCP 服務器之間的作用域地址,具體做法可以是將服務器 1 配置成可使用大多數地址(約 80%),服務器 2 可以配置成讓客戶機使用其他地址(約 20%)。

2、如果在一個網絡中存在多個子網,而多個子網的主機都需要DHCP服務器來提供地址配置信息,那么我們可以采用的方法是在每一個子網中安裝一台 DHCP服務器,讓它們來為各個子網分配IP地址,但從節約資源利用出發,我們一般情況下不這樣做,可以采取在一個子網中安裝DHCP服務器,讓它來為多 個子網分配IP地址,實現多子網地址分配可以借助DHCP的中繼代理功能實現,而作為中繼代理的設備可以是一台提供中繼代理程序的Windows2000 服務器或是一個符合RFC1542規定的路由器,具備 DHCP/ BOOTP Relay Agent 的功能(DHCP relay agent能夠把 DHCP/BOOTP 廣播信息從一個網段轉播到另一個網段上)。以管理的局域網分為三個子網,用Win2000服務器連接。 下面是實現跨子網使用DHCP服務器的具體解決方案:

(1)安裝DHCP中繼代理程序:在Windows2000服務器的“路由和遠程訪問”窗口中,依次展開“本地服務器→IP路由選擇→常規”選項, 右鍵點擊“常規”選項,在彈出的菜單中選擇“新增路由協議”,然后在“新路由協議”窗口中選擇“DHCP中繼代理程序”,接着點擊“確定”按鈕。

(2)指定DHCP服務器:右鍵點擊剛剛添加的“DHCP中繼代理程序”選項,在彈出菜單中選擇“屬性”,進入“DHCP中繼代理程序屬性”對話 框,在“常規”標簽頁的“服務器地址”欄中輸入子網1中DHCP服務器的IP地址:192.168.1.2,然后點擊“添加”按鈕,最后點擊“確定”按鈕 關閉該對話框。

(3)配置訪問接口:右鍵點擊“DHCP中繼代理程序”選項,在彈出菜單中選擇“新增接口”,然后在“DHCP中繼代理程序的新接口”對話框中的 “接口”列表框中選中可以訪問子網1中的DHCP服務器的接口,這里新增的接口應該是接口二和接口三,接着點擊“確定”按鈕。然后在彈出的“DHCP中繼 站屬性”對話框中,選中“中繼DHCP數據包”選項,這樣就啟用了它的中繼功能,最后點擊“確定”按鈕。

(4)DHCP服務器中配置一個超級作用域,其中包含三個普通作用域,作用域地址范圍可以分別設置為 192.168.1.10~192.168.1.254(分配給子網1的PC使用);192.168.2.10~192.168.2.254(分配給子網 2的PC使用);192.168.3.10~192.168.3.254(分配給子網3的PC使用),必須記住DHCP只能為每一個子網分配一個范圍。 完成以上配置后,子網2和子網3中的DHCP客戶機PC2及PC3就可以通過主機A的DHCP中繼代理程序訪問子網1中的DHCP服務器。

3、解決了單台DHCP服務器為多個子網分配IP地址后,我們還要搞清楚的一個問題是,如果某一個子網的PC如子網2中的PC2或子網3中的PC3 發出地址請求信息后,主機A可以作為中繼代理對他們的請求傳達子網1中的DHCP服務器,但該DHCP服務器如何可以確定並准確地將作用域 192.168.2.0網段的地址分給PC2而把作用域192.168.3.0網段的地址分給PC3呢?這個是多數學生可能存在的疑問,要搞清楚這個問 題,可以參考以下的原理分析來找答案:

以子網2中的主機PC2為例,DHCP 客戶機PC2在子網2 上廣播 DHCP/BOOTP discover 消息 (DHCPDISCOVER),廣播是將消息以 UDP (User Datagram Protocol)數據包的形式通過 67 端口發出,當中繼代理(relay agent)主機A接收到這個消息后,它檢查包含在這個消息報頭中的網關IP 地址,如果網關IP 地址為 0.0.0.0 ,則用 relay agent主機A的接口二的IP地址192.168.2.1替換它,然后將其轉發到 DHCP 服務器所在的子網1上(主機A還擔任路由器功能)。當在子網1中的 DHCP服務器收到這個消息后,它開始檢查消息中的網關IP地址,然后判斷該網關地址是否包含在DHCP的某一個作用域范圍內,從而決定它是否可以使用相 應的作用域的地址來提供IP地址租約,當然,本例中DHCP服務器將會從作用域192.168.2.10~192.168.2.254選取一個地址來配置 PC2;也就是說DHCP客戶機的請求地址消息中的網關IP地址 (GIADDR) 將是DHCP服務器用來確定從那個DHCP 范圍中挑選IP地址來配置客戶機的依據。

4、如果DHCP客戶機無法找到DHCP服務器,則它從微軟保留的 B 類網段 169.254.0.0 中挑選一個 IP 地址作為自己的 IP 地址,子網掩碼為 255.255.0.0 ,所挑選的地址由DHCP客戶機利用ARP 廣播來 確定自己所挑選的 IP 地址是否已被網絡上的其它設備使用,如果該 IP 地址已被使用,那么客戶機會再挑選另一個IP地址重新進行測試,而且最多可以重試十個IP 地址,直到成功獲取配置。在此之后,客戶機會在后台繼續每隔 5 分鍾嘗試與DHCP服務器進行通信,一旦與服務器取得聯絡,則客戶機放棄自動設置的 IP 地址,而使用服務器分配的 IP 地址和其它配制信息。所以當你在某一天發現你的PC的IP地址是個B類的地址169.254.0.0/16網段的地址時,你就應該知道那是怎么一回事了 吧。

至此,我們分析了幾個關於DHCP服務的應用方面的疑難問題,並且給出了相應的解決方案,對於DHCP服務在教學中我們還遇到許多一些其他問題,比 如說DHCP服務器本身的地址是否一定要由管理員靜態指定,設置為自動獲取將會有什么后果?為什么把客戶機器向DHCP服務器請求地址稱為地址租用,租用 時間的長短對網絡中IP地址的管理與應用有哪些幫助?如何可以使用DHCP服務讓一個自動獲取IP的主機能在任何時候都能取得指定的一個固定地址?這些問 題都要求教師在教學當中要認真地去探究該服務的每一個細節的知識點,才可以對該知識點的原理以及在實際中的應用進行透徹的講授,也是我們熟練掌握和使用 DHCP服務的前提。


第二部分
DHCP的工作流程分為四步:

一、客戶機請求
 IPDHCPdiscover
二、服務器響應(
DHCPoffer
三、客戶機選擇
 IPDHCPrequest
四、服務器確認
 IP租約(DHCPack/DHCPnak

下面我們就來分別講一下:

一、客戶機請求
 IPDHCPdiscover
當客戶機設置使用
 DHCP協議獲取 IP時,客戶機將使用 0.0.0.0作為源地址,使用255.255.255.255作為目標地址來廣播請求 IP地址的信息。廣播信息中包含 DHCP客戶機的MAC地址和計算機名。(這里的 MAC地址可不是 FFFF.FFFF.FFFF MAC 廣播哦~)

二、服務器響應(DHCPoffer
由於是廣播所以同一網段內的計算機都會“聽”到!
DHCP服務器當然也不例外。DHCP服務器“聽”到后,它首先會針對該次請求的信息所攜帶的 MAC地址與 DHCP主機本身的設置值進行對比。如果 DHCP主機的設置中有針對該 MAC 提供的靜態 IP(每次都給一個固定 IP),則提供給客戶機相關的固定 IP與相關的網絡參數;如果該信息的 MAC並不在 DHCP主機的設置中,則 DHCP主機會選取當前網段內沒有使用的IP給客戶機使用!當然這里的響應,服務器也是采用 255.255.255.255的廣播,因為此時客戶機還沒 IP哦~
這里有幾個要注意的地方:

1、如果同一網段內有多台 DHCP服務器,那么客戶機是看誰先響應,誰先響應就選擇誰。
2、在 DHCP主機發給客戶端的信息中,會附帶一個“租約期限”信息,用來告訴客戶機這個 IP能用多久!

三、客戶機選擇 IPDHCPrequest
當客戶機接收到響應的信息之后,首先會以
 ARP在網段內廣播(ARP使用全 1的廣播 MAC地址),以確定來自 DHCP服務器的 IP沒被占用!如果該 IP被占用,那么客戶機對於這次的DHCP信息將不接受,而是再次發送 DHCP請求。若該 IP沒有被占用,客戶機則接受 DHCP服務器所給的網絡參數。同時,客戶機發出一個廣播,通知所挑選的 DHCP服務器(有多台DHCP服務器存在時),當然此時也是通知其它的 DHCP服務器,讓這些 DHCP服務器將本預分配給客戶機的 IP釋放掉!(這里的概念一定要弄清楚!)注意,這一步客戶機並還沒有應用從 DHCP服務器獲取到 IP哦!所以這一步源地址還是0.0.0.0,目標地址是 255.255.255.255

四、服務器確認 IP租約(DHCPack/DHCPnak
終於到最后一步了,
DHCP服務器收到客戶機選擇 IP的廣播后,則以 DHCPack消息的形式向客戶機廣播成功的確認。DHCPack包含:IP、掩碼、網關、DNS等。當然上面還有一個DHCPnak,一看就知道是不成功的意思!那么,哪些情況才會有這種廣播呢?
例如,IP地址已無效或這個地址已被其它的客戶機使用了!

此時,當客戶機收到 DHCP服務器的 DHCPack消息后,客戶機便使用了 DHCP服務器所給的網絡參數!這里的四個步驟可都是用的廣播哦,不知道大家有沒有注意!呵呵~到此,我們的 DHCP原理就講完了,下面我還給補充了點東東,希望對大家有用:

1、當我們的客戶機無法找到 DHCP服務器時,它將從 TCP/IP B類網段 169.254.0.0中挑選一個 IP地址作為自己的 IP地址,而繼續每隔 5分鍾嘗試與 DHCP服務器進行通信。(這里的這個 B類地址被稱為 APIPA,即自動分配私有 IP地址!)

2IP租約的更新,當客戶機重新啟動或租期達 50%時,客戶機不會從第一步(DHCPdiscover開始重新 IP,而是從第三步(DHCPrequest開始哦~有當租期達 87.5%時,它才從第一步(DHCPdiscover開始重新請!

3、客戶機這里還有兩條命令,希望大家給記住

ipconfig/release  是用來 IP租約的釋放。使用 DHCPrelease消息!

ipconfig/renew  是用來 IP租約的更新。使用 DHCPdiscover消息!

4、客戶機必須經過四步的情況:

(1)第一次扮演 DHCP客戶機角色

(2)IP DHCP服務器收

(3)客戶機自己釋放了 IP,並重租一個 IP時。

(4)客戶機更了。

(5)客戶機轉移一網段時。

完!

第三部分

DHCP客戶端為了獲取合法的動態IP地址,在不同階段與服務器之間交互不同的信息,通常存在以下三種模式:
(1)        DHCP客戶端首次登錄網絡
DHCP客戶端首次登錄網絡時,主要通過四個階段與DHCP服務器建立聯系。
l              發現階段,即DHCP客戶端尋找DHCP服務器的階段。客戶端以廣播方式發送DHCP_Discover報文,只有DHCP服務器才會進行響應。
l              提供階段,即DHCP服務器提供IP地址的階段。DHCP服務器接收到客戶端的DHCP_Discover報文后,從IP地址池中挑選一個尚未分配的IP地址分配給客戶端,向該客戶端發送包含出租IP地址和其它設置的DHCP_Offer報文。
l              選擇階段,即DHCP客戶端選擇IP地址的階段。如果有多台DHCP服務器向該客戶端發來DHCP_Offer報文,客戶端只接受第一個收到的DHCP_Offer報文,然后以廣播方式向各DHCP服務器回應DHCP_Request報文,該信息中包含向所選定的DHCP服務器請求IP地址的內容。
l              確認階段,即DHCP服務器確認所提供IP地址的階段。當DHCP服務器收到DHCP客戶端回答的DHCP_Request報文后,便向客戶端發送包含它所提供的IP地址和其它設置的DHCP_ACK確認報文。然后,DHCP客戶端將其TCP/IP協議組件與MAC地址綁定。
l              除DHCP客戶端選中的服務器外,其它DHCP服務器本次未分配出的IP地址仍可用於其他客戶端的IP地址申請。
(2)        DHCP客戶端再次登錄網絡
當DHCP客戶端再次登錄網絡時,主要通過以下幾個步驟與DHCP服務器建立聯系。
l              DHCP客戶端首次正確登錄網絡后,以后再登錄網絡時,只需要廣播包含上次分配IP地址的DHCP_Request報文即可,不需要再次發送DHCP_Discover報文。
l              DHCP服務器收到DHCP_Request報文后,如果客戶端申請的地址沒有被分配,則返回DHCP_ACK確認報文,通知該DHCP客戶端繼續使用原來的IP地址。
l              如果此IP地址無法再分配給該DHCP客戶端使用(例如已分配給其它客戶端),DHCP服務器將返回DHCP_NAK報文。客戶端收到后,重新發送DHCP_Discover報文請求新的IP地址。
(3)        DHCP客戶端延長IP地址的租用有效期
DHCP服務器分配給客戶端的動態IP地址通常有一定的租借期限,期滿后服務器會收回該IP地址。如果DHCP客戶端希望繼續使用該地址,需要更新IP租約。
在實際使用中,DHCP客戶端缺省在IP地址租約期限達到一半時,向DHCP服務器發送DHCP_Request報文,以完成IP租約的更新。如果此IP地址有效,則DHCP服務器回應DHCP_ACK報文,通知DHCP客戶端已經獲得新的租約。
交換機上實現的DHCP客戶端支持上述租約自動更新過程。

###############################################################################################
DHCP於 1993年 10月成為標准協議,其前身是 BOOTP協議。當前的DHCP定義可以在 RFC 2131中找到,而基於IPv6的建議標准(DHCPv6)可以在 RFC 3315中找到。

http://tools.ietf.org/html/rfc1541 目前已經被2131取代。
http://tools.ietf.org/html/rfc2131
http://tools.ietf.org/html/rfc3315


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM