MSN 即時熱線

2010年12月1日 星期三

DHCP (動態主機設定協定)

文章內容轉自 維基百科,自由的百科全書
http://zh.wikipedia.org/zh-hk/DHCP

動態主機設定協定(Dynamic Host Configuration Protocol, DHCP)是一個區域網路的網絡協定,使用UDP協定工作,主要有兩個用途:

給內部網絡或網絡服務供應商自動分配IP位址給用戶
給內部網絡管理員作為對所有電腦作中央管理的手段
適用性 DHCP用一台或一組DHCP服務器來管理網絡參數的分配,這種方案具有容錯性。即使在一個僅擁有少量機器的網絡中,DHCP仍然是有用的,因為一台機器可以幾乎不造成任何影響地被增加到原生網絡中。
甚至對於那些很少改變位址的服務器來說,DHCP仍然被建議用來設定它們的位址。這樣,如果服務器需要被重新分配位址(RFC2071)的時候,就可以在儘可能少的地方去做這些改動。對於一些裝置,如路由器防火牆,則不應使用DHCP。把TFTPSSH服務器放在同一台運行DHCP的機器上也是有用的,目的是為了集中管理。
DHCP也可用於直接為服務器和桌面電腦分配位址,並且透過一個PPP代理,也可為撥號及寬帶主機,以及住宅NAT閘道器和路由器分配位址。DHCP一般不適用於使用在無邊際路由器和DNS服務器上。

[編輯] 歷史

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

[編輯] 原理

動態主機設定協定(DHCP)是一種使網絡管理員能夠集中管理和自動分配 IP 網絡位址的通訊協定。在 IP 網絡中,每個連線 Internet 的裝置都需要分配唯一的 IP 位址。 DHCP 使網絡管理員能從中心結點監控和分配 IP 位址。當某台電腦移到網絡中的其它位置時,能自動收到新的 IP 位址。
DHCP 使用了租約的概念,或稱為電腦 IP 位址的有效期。租用時間是不定的,主要取決於使用者在某地聯接 Internet 需要多久,這對於教育行業和其它使用者頻繁改變的環境是很實用的。透過較短的租期, DHCP 能夠在一個電腦比可用 IP 位址多的環境中動態地重新配置網絡。DHCP 支援為電腦分配靜態位址,如需要永久性 IP 位址的 Web 服務器。
DHCP 和另一個網絡 IP 管理協定 BOOTP 類似。目前兩種配置管理協定都得到了普遍使用,其中 DHCP 更為先進。 某些作業系統,如 Windows NT/2000,都帶有 DHCP 服務器。 DHCP 或 BOOTP 客戶端是裝在電腦中的一個程式,這樣就可以對其進行配置操作。

協議結構
8 bits16 bits24 bits32 bits
OpHtypeHlenHops
Xid
SecsFlags
Ciaddr
Yiaddr
Siaddr
Giaddr
Chaddr (16 bytes)
Sname (64 bytes)
File (128 bytes)
Option (variable)

  • Op – 訊息操作代碼,既可以是引導請求(BOOTREQUEST)也可以是引導答覆(BOOTREPLY)
  • Htype – 硬件位址型別
  • Hlen – 硬件位址長度
  • Xid –處理ID
  • Secs –客戶機位址獲取,行程恢復消耗的時刻
  • Flags –標記
  • Ciaddr –客戶機 IP位址
  • Yiaddr –「你的」(客戶機)IP 位址
  • Siaddr –在 bootstrap 中使用的下一台服務器的IP位址
  • Giaddr –用於匯入的接替代理IP位址
  • Chaddr –客戶機硬件
  • Sname –任意服務器主機名稱,空終止符
  • File –DHCP 發現協定中的引導檔名、空終止符、屬名或者空,DHCP供應協定中的受限目錄路徑名
  • Options –可選參數碼段。參考定義選擇列表中的選擇檔案

[編輯] 技術細節


Schema of a typical DHCP session
DHCP統一使用兩個IANA分配的埠作為BOOTP服務器端使用67/udp,客戶端使用68/udp。
DHCP運行分為四個基本過程,分別為請求IP租約、提供IP租約、選擇IP租約和確認IP租約。
客戶在獲得了一個IP位址以後,就可以發送一個ARP請求來避免由於DHCP服務器位址池重疊而引發的IP衝突。
DHCPDISCOVER
UDP Src=0.0.0.0
sPort=68 Dest=255.255.255.255 dPort=67
OPHTYPEHLENHOPS
0x010x010x060x00
XID
0x3903F326
SECSFLAGS
0x00000x0000
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 發現 (DISCOVER)

客戶在物理子網上發送廣播來尋找可用的服務器。網絡管理員可以配置一個原生路由來轉發DHCP包給另一個子網上的DHCP服務器。該客戶實作生成一個目的位址為255.255.255.255或者一個子網廣播位址的UDP包。
客戶也可以申請它使用的最後一個IP位址(在下面的例子里為192.168.1.100)。如果該客戶所在的網絡中此IP仍然可用,服務器就可以准許該申請。否則,就要看該服務器是授權的還是非授權的。 授權服務器會拒絕請求,使得客戶立刻申請一個新的IP。非授權服務器僅僅忽略掉請求,導致一個客戶端請求的超時,於是客戶端就會放棄此請求而去申請一個新的IP位址。
DHCPOFFER
UDP Src=192.168.1.1
sPort=67 Dest=255.255.255.255 dPort=68
OPHTYPEHLENHOPS
0x020x010x060x00
XID
0x3903F326
SECSFLAGS
0x00000x0000
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提供 (OFFER)

當DHCP服務器收到一個來自客戶的IP租約請求時,它會提供一個IP租約。DHCP為客戶保留一個IP位址,然後透過網絡發送一個DHCPOFFER訊息給客戶。該訊息包含客戶的MAC位址、服務器提供的IP位址、子網掩碼、租期以及提供IP的DHCP服務器的IP。
服務器基於在CHADDR欄位指定的客戶硬件位址來檢查配置。這裡的服務器,192.168.1.1,將IP位址指定於YIADDR欄位。
DHCPREQUEST
UDP Src=0.0.0.0
sPort=68 Dest=255.255.255.255 dPort=67
OPHTYPEHLENHOPS
0x010x010x060x00
XID
0x3903F326
SECSFLAGS
0x00000x0000
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請求 (REQUEST)

當客戶PC收到一個IP租約提供時,它必須告訴所有其他的DHCP服務器它已經接受了一個租約提供。因此,該客戶會發送一個DHCPREQUEST訊息,其中包含提供租約的服務器的IP。當其他DHCP服務器收到了該訊息後,它們會收回所有可能已提供給客戶的租約。然後它們把曾經給客戶保留的那個位址重新放回到可用位址池中,這樣,它們就可以為其他電腦分配這個位址。任意數量的DHCP服務器都可以響應同一個IP租約請求,但是每一個客戶網卡只能接受一個租約提供。
DHCPACK
UDP Src=192.168.1.1
sPort=67 Dest=192.168.1.100 dPort=68
OPHTYPEHLENHOPS
0x020x010x060x00
XID
0x3903F326
SECSFLAGS
0x00000x0000
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確認 (ACK)

當DHCP服務器收到來自客戶的DHCPREQUEST訊息後,它就開始了配置過程的最後階段。這個響應階段包括發送一個DHCPACK包給客戶。這個包包含租期和客戶可能請求的其他所有配置資訊。這時候,TCP/IP配置過程就完成了。
該服務器響應請求併發送響應給客戶。整個系統期望客戶來根據選項來配置其網卡。

[編輯] DHCP資訊

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

[編輯] DHCP釋放

客戶端向DHCP服務器發送一個請求以釋放DHCP資源,並登出其IP位址。鑒於客戶端更多的時候並不清楚何時使用者會將其從網絡中移除,此協定不會託管「DHCP釋放的發送」。

[編輯] 客戶端配置參數

DHCP 伺服器會提供一些選擇性的配置項目供 DHCP 客戶端設定。在 RFC 2132 檔案裏面有提到這個詳細的內容。 你也可以參考 Internet Assigned Numbers Authority (IANA) - DHCP and BOOTP PARAMETERS

[編輯] 設定選項

DHCP Option 60 可以被 DHCP 客戶端用來做為辨識供應商及 DHCP 客戶端這邊的相容性識別。 可以參考 [1] 的內容。 DHCP 的協定裡頭有提供預設路由的選項,Option60 則是供應商的識別 ID。基於這個選項,你可以在 CPE 方提供給 STB 方一些特定的選擇。這樣做最大的好處是在使用 option60 的時候你不用去定義橋接或路由的埠號。橋接是基於 option60 的MAC 位址,如此一來 switch 可以連到 STB 上面,如同在 PC 及 STB 上面擁有同一個介面。
Option 60 這個訊息會是一個長度會變動的字串也有可能依供應商提供的八進位數字的一個集合。DHCP 客戶端通常會用來溝通的一個方式是在送出 DHCP 要求的時候按硬件或韌體的型別來設定這個資訊,這個資訊會被稱之為供應商 Class 識別(VCI Vendor Class Identifier)/(Option 60)。這個方式可能因 DHCP Server 之間的不同而會在兩種 CMs 或兩種 modems 之間進行 DHCP request 時造成差異。有些 set-top 的 Boxes 也會設定 VCI 去通知 DHCP Server 有關硬件和裝置的功能性資訊。所以結論是,這個選項的資訊會給予 DHCP Server 在做 DHCP 回應時必要附加訊息上面的提示。

沒有留言:

張貼留言