執行ping操作的時候發生了什麼?

<CCNA學習指南>



>>>>>>>>>>>>>>>>>>>>  一個ping操作的過程  :  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<

 

(1) 因特網控制報文協議(ICMP)將創建一個迴應請求數據包(此數據包的數據域中只包含字母)。


(2) ICMP會將這一有效負荷遞交給因特網協議( IP),IP協議會用它創建一個分組。至少,源IP地址、

目標IP地址和值爲01h的協議字段 ,將被封裝到此分組中。當此分組到達目的方時,

這些內容就會告訴接收方主機應該將這個有效負荷交付給哪個協議來處理,本例中就是ICMP。

PS : 關於協議字段 ,記住思科更習慣於在十六進制字符前添加0x,所以這個協議字段就應該表示爲0x01 )


(3)一且這個分組被創建,IP協議就需要判斷目標IP地址的位置,判斷此目的方 位於本地網絡還是某個遠程網絡。


(4)由於IP協議判定這是一個遠程的跨網絡請求,而要將這一分組路由到遠程網絡,就必須將它發送給默認網關。

在這裏,我們需要打開Windows中的註冊表查找已配置的默認網關。


(5)主機172.16.10.2 ( Host_A)的默認網關被配置爲172.16.10.1。要將這一分組發送給此默認網關,

我們就必須知道路由器的Ethemet 0 (172.16.10.1就是配置給它的IP地址 )接口的硬件地址。

爲什麼要這樣?這是因爲只有知道了接口的硬件地址,分組纔可以向下遞交給數據鏈路層,

並在那裏完成幀的組建,然後再將幀發送給與172. 16.10.0網絡相連接的路由器接口。在本地局域網上,

主機只能通過硬件地址完成通信,因此若 Host A 要與 Host B 通信,

它必須首先使用本地網絡中默認網關的MAC地址將分組發送給網關,理解這一點是非常重要的。


(6)接下來,需要檢查主機的ARP緩存,查看此默認網關的IP地址是否已被解析爲一個硬件地址。如果已被解析,

此分組就可被傳送到數據鏈路層以組建成幀。(目的方的硬件地址也將隨分組一起下傳到數據鏈路層)。

要查看主機上的ARP緩存,我們可以使用如下命令 : ( Cmd.exe 下 ,cmd命令行 )

   C :\Users\dell>arp -a

     接口: 192.168.66.222 --- 0x7

        Internet 地址         物理地址              類型

        192.168.66.255        ff-ff-ff-ff-ff-ff     靜態

如果在主機的ARP緩存中沒有被解析的硬件地址,那麼用於查找172.16.10.1硬件地址的ARP廣播將被髮送到

本地網絡上。這時,示例中的路由器會響應這個請求,並提供Ethernet 0的硬件地址,此後主機會接收並

緩存這個地址。


(7)一旦分組和目的方的硬件地址被交付給數據鏈路層,局域網驅動程序負責選用適合所在局域網類型

(本例中爲以太網)的介質訪問方式。通過將控制信息封裝到此分組上幀就被創建了。

在這個幀中,附加有目的方硬件地址和源硬件地址,以及以太網類型字段,這個字段用於描述給數據鏈路層交付幀中分組的網絡層協議.在幀的尾部是FCS (Frame Check Sequence,幀校驗序列)字段,這個部分裝載了CRC(循環冗餘校驗)的計算結果。圖給出了此幀的完整結構。

可以看出,此幀中包含Host A的硬件(MAC)地址以及作爲目標方地址的默認網關的硬件地址。

注意,這裏並沒有包含遠程主機的MAC地址!


(8)一旦幀創建完成,這個幀將被交付給物理層,物理層會以一次一比特的方式將幀發送到物理介質

( 本示例中爲雙絞線上)。


(9)這時,此衝突域中的每臺設備都會接收這些比特,並將它們重新組建成幀。每個設備都會對接收到的內容進行CRC運算,並與幀中FCS字段的內容進行比對。如果值不匹配,接收到的幀將被丟棄。如果這個CRC計算機結果與幀中FCS字段的內容匹配,接着將檢查目的方的硬件地址與自己(本示例中指的是路由器的Ethernet接口)是否匹配。口如果匹配,則接下來查看以太網類型字段,以獲悉完成數據後續處理的網絡層協議。


(10)將分組從幀中取出,並將其他部分丟棄。然後,分組被遞交給以太網類型字段中列出的協議一-示例是IP


(11)IP將接收這個分組,並檢查它的IP的地址。由於分組的目的地址與配置到此接收路由器上的各個地址均不匹配,此路由器會在其路由選擇表中查找目的方的IP網絡的地址。


(12)在此路由選擇表中需要包含網絡172.16.20.0的相關表項,否則路由器會立即將收到的分組丟棄,並同時向發送數據的源方設備回送一個攜帶有目標網絡不可達信息的ICMP報文。


(13)如果路由器在路由選擇表中查找到了關於目的方網絡的內容,則分組將被交換到指定的輸出接口一-本例爲接口        Ethernet 1

  下面給出了L a bA路由器的路由選擇表。

      172.16.0.0/24 is subnetted ,  2  subnets

C  172.16.10.0  is  directly  connected ,  Ethernet0

C  172.16.20.0  is  directly  connected ,  Ethernet1


(14)路由將此分組交換到Ethernet 1的緩衝區內。


(15)Ethernet 1的緩衝需要獲得目的方主機的硬件地址,因此會首先查看ARP緩存。

如果Host-B的硬件地址已經被解析並保存在路由器的ARP緩存中,那麼此分組和硬件地址將被遞交到數據鏈路層,

用於幀的組建。使用show ip arp命令,我們可以得到Lab_A路由器上的ARP緩存輸出 .

其中,橫劃線(-)表示這是路由器上的物理接口。思科的路由器會將ARP表中的表項保留4個小時。

如果此硬件地址沒有被解析,則路由器將從Ether 1發出一個ARP求,用以查找172.16.20.0的硬件地址。

Host-B將用它的硬件地址進行響應,隨後此分組和目的方的硬件地址都會被傳遞給數據鏈路層,用以組裝成幀。


(16)數據鏈路層將使用目標硬件地址和源硬件地址、以太網類型字段及幀尾部的FCS字段創建幀。

隨後這個幀將被遞交到物理層,並由物理層以逐比特發送的方式發送到物理介質上。


(17) Host_B將接收此幀,並立即運行CRC。如果運算的結果與FCS字段中的內容匹配,則檢查幀中的目標硬件地址。如果主機認定地址也是匹配的,則檢查幀中以太網類型字段的值,判斷將分組向上遞交的網絡層協議一一本示例爲IP


(18)在網絡層,IP會接收這個分組,並對IP報頭運行CRC。如果校驗通過,IP隨後將檢查分組中目標地址。由於它們最終是匹配的,接下來要檢查的就是分組的協議字段,並據此瞭解分組有效負荷的交付對象。


(19)此有效負荷將被遞交給ICMP,後者知道這是一個迴應請求數據。ICMP將負責應答這個請求,它首先立即丟棄這個接收到的分組然後產生一個新的有效負荷作爲迴應應答數據。


(20)這樣一個包含有源方地址、目的方地址、協議字段和有效負荷的一個新分組就被創建出來了。而該分組的目的方設備就是Host-A


(21)在遞交給IP後,它將對這個目的方IP地址的位置進行判斷,判斷這一地址指向的是一個本地局域網中的設備,還是一個位於遠程網絡上的設備。由於示例中的目的方設備位於遠程網絡,此分組將首先被髮送給默認網關。


(22)默認網關的IP地址可以在Windows主機的註冊表中找到。此外,爲了實現IP地址到硬件地址的解析還需要查看ARP的緩存。


(23)一旦找到默認網關的硬件地址,則目的方的硬件地址會隨分組一起被遞交給數據鏈路層,以便完成幀的創建。


(24)數據鏈路層會將收到的分組內容封裝起來,並在幀頭中包含:

  目的方硬件地址和源方的硬件地址;

  值爲0x0800 (IP)的以太網類型字段;

值爲CRC運算結果的FCS字段。


(25)之後,幀將向下遞交給物理層,逐比特發送到網絡介質上。


(26)路由器的Ethernet 1接口將接收這些比特位,並將它們重新組建爲幀。然後進行CRC運算,

幀中的FCS字段被用於驗證計算結果是否匹配。


(27)CRC通過後,路由器將檢查幀中攜帶的硬件目的地址。由於路由器的接口地址與這一地址是匹配的,於是幀中封裝的分組將被取出,隨後路由器會查看幀的以太網類型字段,以確定應接收此數據包的網絡層協議。


(28)由於以太網類型字段中指定的是I P,於是分組被遞交給了網絡層的IP ,IP將首先對其IP報頭運行CRC,

然後檢查幀中的目的方IP地址。IP並不會像數據鏈珞層那樣對分組運行完全的CRC,它只對IP報頭進行校驗,

只關注報頭可能出現的錯誤。由於分組中攜帶的IP目的方地址與該路由器各個接口的IP地址不匹配,

於是路由器需要查看路由選擇表,以找出一條通往172.16.10.0網絡的路由。如果表中沒有關於目的網絡的路由,

則路由器會將該分組立即丟棄。(這是一個引發衆多管理員困惑的地方,當一個ping操作失敗時,

許多人都會認爲是分組沒有能到達目方主機。但是,事情可能並不總是這樣。導致示例討論結果的原因,

僅僅是因爲某個遠程路由器缺乏應答分組返回源方主機網絡的路由,而將分組丟棄。

注意,這個分組是丟棄在返回源方主機的過程中,而不是前往目的主機的過程中。)

 有一點需要簡要說明,當(如果)分組是在返回源主機的途中被丟棄,由於這是一個不知原因的錯誤,

我們通常看到的會是請求超時這樣的信息。如果出現的錯誤是由某種已知原因導致的,

比如在前往目的主機的途中,某路由器的路由選擇表沒有可用的路由,這時得到的信息將會是目標主機

不可達一類的信息。根據這些提示內容,我們就可以判斷問題是發生在前往目的主機的途中,

還是出現在返回源主機的過程中。


(29)在這裏,路由器是知道如何到達網絡172.16.10.0的,用於輸出的接口就是Ether 0,

於是分組被交換到接口Ethernet 0上。


(30)路由器將檢查ARP緩存,以確定172.16.10.2的硬件地址是否已經被解析。


(31)由於在完成將分組發送給Host B的過程中,172.16.10.2的硬件地址已經被緩存起來,

因此.-這一硬件地址將隨分組一起被遞交給數據鏈路層。


(32)數據鏈路層將使用這個目的方的硬件地址和源方的硬件地址以及類型爲IP的以太網類型字段完成幀的創建。

隨後對這個幀進行CRC運算,並將運算結果放入FCS字段中。


(33)接下來這個幀將被遞交給物理層,以逐比特發送到本地網絡中。


(34)目標主機將會接收這個幀,然後運行CRC,驗證目的方的硬件地址,並查看以太網類型字段中的內容,

以認定處理這個分組的上層協議。


(35)IP是指定的接收者,隨後這個分組將被遞交給網絡層的IP,它將檢查幀中的協議字段,以確定下一步的操作。

IP發現需要將此有效負荷交給ICMP,之後ICMP將確定此分組是一個ICMP應答回覆。


(36)ICMP通過向用戶界面發送一個 ! (表明已經接收到一個回覆。隨後,ICMP將嘗試續發送後續的4個應答(!)請求給目的方的主機。

 

    這裏的36個簡單步驟可以幫助我們理解整個IP路由選擇過程。即使對於大型的網絡,路由選擇的實現過程也是如此。只是在非常大的互聯網絡中,分組在到達目標主機之前需要經過更多的路由轉發。   要重點記憶的是,當Host A向Host B發送分組時,所採用的目標硬件地址是默認網關的以太網接口地址。之所以會這樣,是因爲數據幀只在本地網絡中有效,它不可以被直接發送到遠程網絡中。因此,發往遠程網絡的分組必須通過默認網關進行轉發。

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章