1. 程式人生 > >網路相關的命令工具研究報告

網路相關的命令工具研究報告

主機配置:DHCP

  DHCP(動態主機配置協議),是在一臺主機啟動後,第一個執行的客戶/伺服器應用程式。換言之,當一臺主機啟動後,如果它認為自己當前應當連線到因特網上,但又不知道自己的IP地址時,DHCP就以載入程式的身份發揮作用。

  每個連線到TCP/IP網際網路的計算機都必須知道自己的IP地址、一個路由器的IP地址、一個名字伺服器的IP地址以及自己的子網掩碼這四種資訊。

 DHCP分組格式:

 

 

一、曾經使用過的協議

  在DHCP成為正式的主機配置協議之前,還有過一些其他的協議。

1.RARP:

  在因特網時代的初期,人們曾設計了一個稱為逆地址解析協議(Reverse Address Resolution Protocol,RARP)來向被引導的主機提供IP地址。實際上,RARP是ARP的一個版本。ARP將一個IP地址對映為一個實體地址,而RARP則將一個實體地址對映成為一個IP地址。但是RARP已經被淘汰了,原因有兩個:首先,RARP利用了資料鏈路層的廣播服務,這也就表示每個網路上都必須存在一臺RARP伺服器。第二,RARP只能提供計算機的IP地址,但如今的計算機需要前面提到的所有四種資訊。

2.BOOTP:

  載入程式協議(BOOTstrap Protocol,BOOTP)是DHCP的先驅。它是一個客戶/伺服器協議,被設計用來克服RARP協議存在的缺陷。但是BOOTP是一個靜態配置協議,當客戶請求自己的IP地址時,BOOTP伺服器就諮詢一張表,將客戶的實體地址對映成相應的IP地址。這就意味著客戶的實體地址和IP地址之間的繫結是已經存在的。這個繫結關係是事先設定好的。

  在某些場合,我們需要的是一個動態配置協議。例如,當一臺主機從一個物理網路移動到另一個物理網路時,它的實體地址就改變了。再比如,有時候主機需要在某一段時間內使用一個臨時的IP地址。BOOTP無法處理這種狀況,因為實體地址和IP地址之間的繫結是靜態的,是固定存放在一張表中的,除非管理員更改這張表。

  而DHCP的設計就是為了解決這些不足之處。

3. DHCP:

  動態主機配置協議(Dynamic Host Configuration Protocol,DHCP)是一種客戶/伺服器協議,設計這個協議是為了將上述四種資訊傳遞給無盤計算機或者第一次啟動的計算機。DHCP是BOOTP的繼承者,並且能夠相容BOOTP。 

二、DHCP操作

  DHCP客戶和DHCP伺服器可以在同一個網路上,也可以位於不同的網路。

1.DHCP客戶和DHCP伺服器在同一個網路

  雖然這種情況不是很常見,不過管理員可以把客戶和伺服器放在同一個網路中。如圖所示:

 

這種情況的操作如下:

(1)DHCP伺服器在UDP埠67發出被動開啟命令,等待客戶請求。

(2)被引導的客戶在UDP埠68發出主動開啟命令。這個報文被封裝成UDP使用者報,其目的埠是67,源埠號是68。這個UDP使用者資料報在封裝成IP資料包。客戶使用的是全0的源地址和全1的目的地址。

(3)伺服器或者用廣播報文,或者用單播報文來響應這個使用者,它使用了UDP源埠號67和目的埠68.這個響應可以是單播的,因為伺服器知道客戶的IP地址,同時也知道客戶的實體地址,也就是說它不需要使用ARP的服務進行從邏輯地址到實體地址的對映。但是某些系統不允許旁路掉ARP,結果就要使用廣播地址。

2. DHCP客戶和DHCP伺服器在不同的網路

如圖所示:

 
  像其他應用層的程序一樣,客戶可以在某個網路上,而伺服器可以在相隔好幾個網路之外的另一網路上。這就帶來了一個必須要解決的問題。DHCP請求是廣播發送的,因為客戶不知道伺服器的IP地址。而廣播的IP資料報不能通過任何路由器。路由器收到這樣的分組就丟棄它。

  要解決這個問題,就需要一箇中介物。某臺主機(或是一臺能夠配置為在應用層工作的路由器)可以用來充當中繼。在這種情況下,該主機就稱為中繼代理。中繼代理知道DHCP伺服器的單播地址,並在埠67監聽廣播報文。當它收到這種型別的分組後,就把它封裝成一個單播資料報,並且把此請求傳送給DHCP伺服器。攜帶了單播目的地址的分組可以被任何一個路由器轉發,最終到達DHCP伺服器。DHCP伺服器知道這個報文來自中繼代理,因為在請求報文中有一個欄位定義了中繼代理的IP地址。中繼代理在收到回答後,再把它傳送給DHCP客戶。 

三、配置

  人們設計DHCP是為了提供靜態和動態的地址分配。

1.靜態地址分配

  對於靜態地址分配,DHCP有一個專門的資料庫,可以靜態地吧實體地址繫結到IP地址。

2.動態地址分配

  DHCP還有第二個資料庫,包括一個可用的IP地址池。第二個資料庫使DHCP成為動態的。當DHCP客戶請求臨時的IP地址時,DHCP伺服器就從可用(即為使用的)IP地址池中取出一個IP地址進行指派,這個IP地址的使用時間長短可協商。

  當DHCP客戶想DHCP伺服器傳送請求是,伺服器首先檢查它的靜態資料庫。若靜態資料庫中存在所請求實體地址的表項,則返回給這個客戶的永久IP地址。反之,若靜態資料庫中沒有這個表項,伺服器就從可用IP地址池中選擇一個IP地址,並把這個地址指派給客戶,然後再把相應的表項加入到動態資料庫中。

  如果主機要從一個網路移動到另一個網路,或者與一個網路時連時斷,那麼DHCP的這種動態特性就有了用武之地。DHCP可以在有限時間內提供一個臨時的IP地址。

從地址池指派的地址都是臨時地址。DHCP伺服器向客戶授予某一段時間內對該地址池的租用權。當租用時效過期,客戶或者停止使用這個IP地址,或者續租。伺服器有權力選擇同意或不同意續租。若伺服器不同意,客戶就停止使用這個地址。

3.轉換狀態

  為了提供動態的地址分配,DHCP客戶可以像狀態機那樣從一個狀態轉換到另一個狀態,狀態轉換取決於收到的報文和傳送的報文。在這種情況下,報文的型別是由包含在DHCP分組中的標記為53的選項來定義的。標記為53 的選項如圖所示:

 

DHCP的不同狀態:

(1)INIT狀態

  當DHCP客戶首次啟動時,它處於INIT狀態(初始化狀態)。客戶使用埠67廣播DHCPDISCOVER報文(一個帶有DHCPDISCOVER選項的請求報文)。

(2)SELECTING狀態

  在傳送DHCPDISCOVER報文後,客戶就進入SELECTING(選擇)狀態。能夠提供這種型別服務的伺服器要用DHCPOFFER報文進行相應。在此類報文中,伺服器提供了一個IP地址。它們還要提供租用時間長度,其預設值是1小時。在傳送DHCPOFFER報文的伺服器,把提供的IP地址鎖定,使這個地址不會再提供給任何其他的客戶。客戶選擇所提供的地址中的一個,並向所選擇的伺服器傳送DHCPREQUEST報文。然後就進入REQUESTING狀態。如果客戶沒有收到DHCPOFFER報文,它還要再嘗試四次,每一次間隔2秒。如果對這些DHCPDISCOVER都沒有收到回答,客戶就睡眠5分鐘後再試。

(3)REQUESTING狀態

  客戶保持在這個REQUESTING(請求)狀態,直至它收到來自伺服器的DHCPACK報文為止,這個報文建立了客戶實體地址和它的IP地址之間的繫結。客戶收到DHCPACK報文後進入BOUND狀態。

(4)BOUND狀態

  在這種狀態下,客戶可以使用該IP地址,直到租用時間到期。當到達租用時間的50%時,客戶就再發送一個DHCPREQUEST報文以請求更新。於是,客戶進入RENEWING。在BOUND(繫結)狀態時,客戶也可以取消租用,並進入到初始化狀態。

(5)RENEWING狀態

  客戶保持在RENEWING(更新)狀態,直至下面兩個事件之一發生。客戶可以收到更新租用協定的DHCPACK報文。在這種情況下,客戶把計時器復位,然後回到BOUND狀態。或者,如果沒有收到DHCPACK,同時到達租用時間的87.5%時,客戶就進入REBINDING狀態。

(6)REBINDING狀態

  客戶保持在REBINDING(重新繫結)狀態,直至下面三個事件之一發生。若客戶收到一個DHCPNACK報文或者租用時間到期,則回到初始化狀態,並嘗試得到另一個IP地址。若客戶收到DHCPACK報文,它就進入繫結狀態,並把計時器復位。

DHCP不同狀態的轉換圖:

&n