天天看點

PING過程之步步為營

配置好路由器Route和pc0、pc1的IP位址以及網關

<a href="http://blog.51cto.com/attachment/201005/150154882.jpg" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201005/150244690.jpg" target="_blank"></a>

這個過程可以具體分為四個階段:

一、pc0到Router階段

<a target="_blank" href="http://blog.51cto.com/attachment/201005/144414890.jpg"></a>

<a href="http://blog.51cto.com/attachment/201005/150107513.jpg" target="_blank"></a>

1、ping程序将調用網際網路控制封包協定(ICMP),ICMP建立一個回應請求資料包;

2、ICMP将這個有效負荷交給網際網路協定(IP),然後IP協定會建立一個資料包。

   這時,這個資料包将包含源IP位址、目的IP位址和值為0x01的協定字段。

3、一旦資料包被建立,IP協定将判斷目的IP位址是處于本地網絡中,還是處于一個遠端網絡中;

4、由于IP協定斷定這是一個遠端請求,這個資料包需要被發送到預設網關,這樣, 這個資料包才能路由到遠端網絡。本機系統資料庫将被使用,以查找配的預設網關;

 5、主機pc0的預設網關被配置為172.16.0.1 要能夠發送這個資料包到預設網關,必須要知道路由器的FastEthernet0/0接口(其IP位址被配置為172.16.0.1)的硬體位址,因為隻有這樣,資料包才可以被下傳給資料鍊路層并生成資料幀,然後發送到與172.16.1.0網絡連接配接的路由器接口;

    【注:】在本地區域網路内,主機隻可以通過硬體位址來進行通信,pc0要想和pc1通信,它必須将資料包發送到本地網絡中預設網關的mac位址上,這一點很重要。mac位址永遠都應用于本地區域網路,而絕不會通過路由器。

6、接着,pc0檢查arp緩存,檢視一個預設網關的IP位址是否已經解析為硬體位址,

     如果已經被解析,資料包就将被釋放、傳送到資料鍊路層并生成資料幀(目的方的硬體位址也将通資料包一同下傳至資料鍊路層),要檢視pc0主機上的arp緩存,可以使用下列指令:

                  PC&gt;arp -a

                  Internet Address      Physical Address      Type

                  172.16.0.1            0004.9ade.a201      dynamic

      如果這個硬體位址在pc0主機的arp緩存中尚未被解析,一個arp廣播将被發送到本地網絡,以搜尋172.16.0.1的硬體位址,路由器會響應這個請求并提供FastEthernet0/0的硬體位址,接着pc0主機将緩存這個位址; 

<a target="_blank" href="http://blog.51cto.com/attachment/201005/150515223.jpg"></a>

7、一旦這個資料包和目的方的硬體位址被傳遞給資料鍊路層,區域網路驅動器将用來提供媒體通路以通過以太網,此時将會産生一個資料幀,使用控制資訊來封轉此資料包。在這個幀中包含有目的方和源方的mac位址,以及以太網類型字段。在本例中,這個協定為IP協定。在這個幀的結尾處是被稱為幀校驗序列(FCS)的字段,它是裝載循備援校驗(CRC)計算值的區域。此資料幀還需要查詢一些資訊,即pc0的mac位址,以及作為目的方的預設網關的mac位址,但這裡并不包括pc1主機的mac位址;

8、資料幀完成封裝以後,就會被傳遞到實體層,以一次一位的方式發送往實體媒體(在試驗中是雙絞線對);

9、在沖突域中的每台裝置将接收這些位并重建為幀。它們都運作CRC并核對儲存在FCS字段中的内容,如果這 兩個值不比對,此幀将會被丢棄。

     如果這個CRC值相吻合,那麼就核查目的方的mac位址,如果比對,那麼路由器将将檢視以太網類型字段,以了解在網絡層使用的協定;

10、資料包從資料幀中抽出,然後這個資料幀剩下的部分被丢棄,再把資料包傳給以太網類型字段中列出的上層協定,在這裡是傳給IP協定;

11、IP會接受這個資料包,并檢查其目的IP位址,由于資料包的目的位址與接收路由器所配置的任一位址不相比對,路由器将會在路由表中檢視目的IP網絡的位址;

12、此路由表中必須包含有網絡172.16.1.0的表項,否則此資料包會被立即丢棄,然後一個攜帶有“destination network unavailable”資訊的ICMP包将被發送回發送方pc0;

13、如果路由器找到目的方的網絡,資料包将被交換到輸出接口,由于在被試驗中所有網絡都是直連的,是以沒有必要使用主動路由協定;

二、Router到pc1階段

14、路由器将交換此資料包到FastEthernet0/1的緩沖區内;

 15、FastEthernet0/1的緩沖區需要了解目的方主機的mac位址,它首先檢查arp緩存,

    如果pc1的mac位址已經被解析并儲存在路由器的arp緩存中,則這個資料包和mac位址将被傳遞到資料鍊路層并組成資料幀。下面是路由器的arp緩存:

     Router#show arp

     Protocol  Address           Age (min)  Hardware Addr   Type   Interface

     Internet  172.16.0.1              -   0004.9ADE.A201  ARPA   FastEthernet0/0

     Internet  172.16.0.2              35  0001.63BC.C8A7  ARPA   FastEthernet0/0

     Internet  172.16.1.1              -   0004.9ADE.A202  ARPA   FastEthernet0/1

     Internet  172.16.1.2              35  000C.8513.CAAB  ARPA   FastEthernet0/1

如果這個硬體位址尚未被解析,路由器将從FastEthernet0/1發送一個arp廣播到請求,以查找 172.16.1.2的硬體位址,pc1會響應這個請求并提供硬體位址,接着路由器将緩存這個位址;然後這個包和硬體位址都會被發送到資料鍊路層并組成資料幀;

 16、資料鍊路層将使用這個目的方的源方的mac位址,以及以太網的類型字段和FCS來建立一個資料幀,這個幀将被

 17、pc1主機會接收到此幀,并立即運作CRC,如果運算結果與FCS字段的内容相比對,這個目的mac位址将被檢查,如果發現是比對的,随後将檢查以太網類型字段中的值,以判斷應該将資料包上傳給網絡層的什麼位置;

18、在網絡層,IP會接收這個資料包,并檢查其目的方的IP位址,由于他們是比對的,資料包的協定字段将會被檢查,以了解有效負荷應該交給誰;

  三、pc1到Router階段

<a target="_blank" href="http://blog.51cto.com/attachment/201005/144416531.jpg"></a>

 19、此有效負荷會交給ICMP,它将知道這是一個回應請求,ICMP會應答這個請求,通過即可丢掉這個資料包并随之産生一個新的有效負荷來作為回應應答;

 20、随後建立的資料包中将包含源方和目的方的位址、協定字段和有效負荷。現在,目的方裝置為pc0;

 21、IP協定将判斷目的IP位址是處于本地網絡中,還是處于一個遠端網絡中,由于IP協定斷定這是一個遠端請求,這個資料包需要被發送到預設網關,這樣,這個資料包才能路由到遠端網絡。本機系統資料庫将被使用,以查找配的預設網關;

 22、在pc1的系統資料庫中可以找到預設網關的IP位址,之後将檢視arp緩存,以了解是否已經完成了從IP位址到mac位址的解析;

  23、一旦預設網關的mac位址找到,此資料包和目的方的mac位址都将被送往資料鍊路層,以完成資料幀的封轉;

 24、資料鍊路層會封裝資料包的内容,并在幀報頭中包含以下内容:

    目的方和源方的mac位址         在以太網類型字段中填充0x0800(IP)    将CRC結果填入FCS字段

 25、這時,幀将會被傳給實體層,并以一次一位的方式發送到網絡媒體上;

26、路由器的FastEthernet0/1接口會接收到這些位并重建為一個幀,CRC校驗被運作,幀的FCS字段被檢驗,以确認 兩個結果是相符的;

 27、CRC檢驗通過之後,目的mac位址将被檢查。由于路由器的接口同這個位址是想比對的,資料包将被從這個幀中取出, 然後以太網類型字段将被檢查,以了解資料包應該投遞給網絡層上的哪一個協定;

28、由于協定被判斷為IP。于是IP将得到這個資料包,首先IP将對IP報頭運作CRC校驗,然後檢查目的方的IP位址;

 29、在這種情況下,路由器确實知道到達172.16.0.0的方式,這一輸出的接口是FastEthernet0/0,于是資料包将交換到接口FastEthernet0/0上;

 四、Rouetr到pc0階段

<a target="_blank" href="http://blog.51cto.com/attachment/201005/144416882.jpg"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201005/144416300.jpg"></a>

30、路由器檢查arp緩存,确定172.16.0.2的mac位址是否已經被解析;

31、由于在将資料包傳送到pc1的過程中,172.16.0.2的mac位址已經被緩存起來,是以,這一mac位址和資料包将被傳遞到資料鍊路層;

32、資料鍊路層會使用這個目的方的mac位址和源mac位址,然後将IP放入以太網類

33、這個幀然後被傳送到實體層,以一次一位的方式發送到本地網絡;

34、pc0将接收這個幀,運作CRC算法,檢查目的方的mac位址,并檢視以太網類型字段中的内容,以判斷誰來處理這個幀;

35、由于IP是被指定的接收者,随後這個資料包被傳遞給網絡層的IP協定,它将檢查包的協定字段,以确定進一步的操作,IP發現要将此有此有限負荷交給ICMP的訓示,接着ICMP将确定此資料包是一個ICMP的應答回複包;

36、ICMP通過發送一個感歎号(!)到使用者接口來表明它已經接收到一個回複,在指令提示行下表現為收到封包,這之後,ICMP會嘗試繼續發送4個應答請求到pc1。

<a href="http://blog.51cto.com/attachment/201005/150309148.jpg" target="_blank"></a>

本文轉自 linuxtro 51CTO部落格,原文連結:http://blog.51cto.com/linuxtro/321393,如需轉載請自行聯系原作者

繼續閱讀