ping的詳細過程學習筆記

2021-09-19 12:36:07 字數 4182 閱讀 7441

pc1---ping ---pc2   也就是pc1:192.168.1.1    ping   pc2:192.168.1.2   屬於同一網段的ping過程

步驟1、ping開始------------------------------------------即後台執行192.168.1.1  ping 192.168.1.2

解釋:ping過程是源主機icmp協議傳送乙個icmp協議報文給目的主機的icmp協議,目的主機收到icmp報文後,icmp協議規則規定收到請求報文要強制回乙個應答報文給源主機。源主機收到應答報文後一次完整的ping過程才算完成。icmp(internet-control-message-protocol)網際控制資訊報文---名字就說明此報文的用途,傳送一些網路間控制資訊的報文。比如ping中強制應答就是控制資訊。icmp屬於tcp/ip網際層,呼叫同樣位於網際層的ip協議,只是比ip層更接近上層而已,icmp協議號是1。

步驟2、pc1開始封包---------------------------------------確切說是pc1的tcp/ip協議簇開始封包

解釋:封包就是把要傳送的資料封裝在有固定頭部格式的協議內方便傳輸中識別和控制。比如實時語音包(手機打**的資料)就要求特別對待優先處理;再比如你傳送1g的資料,不可能一次乙個包傳送完,要根據規則分割成一小塊一小塊的資料進行多次傳送。再比如你傳送的是銀行密碼和存款金額,就要求穩定傳輸和保密傳輸,這些控制的規則資訊、加密的規則資訊、都在封包的包頭裡有對應的標識。此處ping命令對應的操作實際是icmp協議呼叫同層(呼叫也不全是上層呼叫下層)的ip協議向目的位址發包,ip協議會通過協議號1來標註是icmp協議讓我發包的,到目的地後以這個協議號為依據把包交給icmp協議。ip協議封裝源ip和目的ip,也就是ping命令中源和目的ip位址,然後把包交給下層即資料鏈路層,資料鏈路層會用協議號0x0800標註是ip協議讓我發的這個包,以便傳到目的位址時交給對方的ip協議。因為此過程一直沒用到四層的埠號,所以icmp屬於三層協議。資料鏈路層會檢查包的頭部封裝的目的ip,然後到pc1的mac位址表中找目的ip對應的二層mac位址。因為二層裝置在傳送過程中是不認識ip位址的(因為ip屬於三層的編址,二層裝置不識別),只認mac位址,mac位址是燒錄在網絡卡中的全球唯一,每個交換機介面也有乙個全球唯一的mac位址。資料鏈路層在pc1的mac位址表中找目的ip對應的mac發現找不到,封裝失敗。

步驟3.沒有目的mac---封包失敗,開始找目的ip的mac位址--------------------------------------即arp找目的mac

解釋:arp(address resolution protocol)---位址解析協議-----就是通過ip位址找mac位址的過程。pc1的tcp/ip協議簇的資料鏈路層呼叫arp協議完成位址解析。arp協議傳送乙個目的ip為192.168.1.2,源位址為192.168.1.1,目的mac為全0,源mac位址為pc1mac的arp請求包。目的mac為全0的二層廣播就像ip位址主機位全為f的廣播一樣,交換機收到此廣播後,會向網路內所有介面傳送-也叫泛洪。在此過程,交換機1學到了如下資訊(交換機1介面1-------ip:192.168.1.1---mac:pc1mac)。pc2的mac位址表學到如下資訊(ip:192.168.1.1-----mac:pc1mac)。備註,此過程路由器1介面1也會收到泛洪包,檢查目的位址不是自己隨即丟棄包,並不做任何回應。----這也體現了廣播或者泛洪的壞處,白幹活,沒效果(拆包--檢查---丟棄)。

同一網路內主機收到此arp請求資料報(此時叫frame---二層資料報標準稱呼),會拆包檢查三層的ip位址,不一致的丟棄,一致的回arp-reply包。arp-reply包內容自動填自己的mac位址為源mac。此處為pc2傳送,包的頭部如下:sourcemac:pc2mac--destinationmac:pc1mac--sourceip:192.168.1.2--destinationip:192.168.1.1。pc1會收到此包,拆包,填pc2的mac位址和ip在mac位址表中。在此過程,交換機1學到了如下資訊(交換機1介面2-------ip:192.168.1.2---mac:pc2mac)。pc1的mac位址表學到如下資訊(ip:192.168.1.2-----mac:pc2mac)。

步驟4.重新封包傳送

解釋:pc1封包如下:smac:pc1mac--dmac:pc2mac--sip:192.168.1.1--dip:192.168.1.2,從網絡卡發包給交換機1介面1,交換機在arp過程學到紅字標註的資訊,建立了自己的mac位址**表。檢視收到pc1的包頭目的mac位址為pc2mac直接從介面2**出去。pc2收到包後核對目的mac和自己一致,開始解包,根據包頭標註上層協議號0x0800把包頭丟掉,資料傳給ip協議,ip協議檢查ip位址一致後根據上層協議號1把包頭丟掉,資料傳給icmp,icmp根據資料中的type=0code=0得知是echo-request即要回應的請求報文,就會立即傳送乙個返回的icmp報文的echo-reply即回應應答報文。

簡述:1.pc1-ping -pc2-------2.pc1準備封包傳送--------3.發現沒pc2的mac-------4.arp請求pc2的mac(發請求時交換機1學到介面1連線pc1,回請求時交換機1學到介面2連線pc2)------5.重新封包--------6.pc1發包給交換機1介面1-----7.交換機1根據**表從介面2發出------8.pc2收到包,並按要求回包-------9.pc2發包給pc1-----10.pc1收到回包,一次完整內網ping包過程完成。

外網ping過程:(此例為:pc1--ping--pc3----------192.168.1.1--ping --172.16.1.1)

1.ping開始

2.icmp協議檢查目標ip不在同一網段,直接發包給閘道器

3.封包時,有閘道器mac直接封包,如果沒有閘道器mac

4.arp閘道器ip,請求閘道器mac,此例為arp   192.168.1.254

5.完成封包,發包給閘道器(目的mac:路由器1介面1mac--源mac:pc1網絡卡mac--目的ip:172.16.1.1--源ip:192.168.1.1)

6.路由器1介面1收到包後,檢查包頭目的mac和自己介面1mac一致拆包,不一致丟棄。

7.檢查mac一致後,拆開二層包頭後丟棄包頭,轉交給包頭中標註的上層協議ip協議處理,ip協議檢查三層包頭,根據目的ip找路由表對應下一跳介面,此處路由表中有172.16.1.0網路條目(每個途徑的路由器的路由條目都應該有目的ip的路由,否則會因為路由不可達而ping不通,路由條目一般由路由協議動態獲得,如網路簡單也可手工靜態建立,現實網路中在路由協議建立鄰居的時候其實已經獲得鄰居的mac位址,完成了位址表的建立,ping包會自動在網路中暢通傳輸,不需要每一步都arp,只有在首尾兩端客戶機上才偶爾會用到arp)

8.如果路由表中沒有目的ip對應的出口,則丟棄包,並返回給源ip乙個relay報文,告知對方報文不可達。

9.路由器1找到下一跳後重新封包,(目的mac:路由器2介面1mac--源mac:路由器1介面2mac-目的ip:172.16.1.1--源ip:192.168.1.1)

11.路由器2從介面1收到包後,核對目的mac和介面1的mac一致,拆包,丟包頭,根據包頭協議號,把包轉給上層協議ip協議處理。

12.ip協議檢查目的ip,找路由表對應條目(此條目包含下一跳ip或根據出介面能遞迴查詢到下一跳ip位址)傳送出去,傳送前封包(目的mac:路由器3介面1mac--源mac:路由器2介面2mac-目的ip:172.16.1.1--源ip:192.168.1.1)

13.路由器3介面1收到包,查包目的mac和接受介面1mac,不一致,拆包,一致,拆包,丟掉二層包頭,交給上層協議ip處理,ip根據目的ip,找到出口,arp獲得或查表得下一跳mac,封裝,發給下一跳。(目的mac:pc2網絡卡mac--源mac:路由器3介面2mac-目的ip:172.16.1.1--源ip:192.168.1.1)

14.pc2網絡卡收到包後,查mac一致,拆包,丟包頭,轉給上層協議(ip協議)處理,ip檢查目的ip和自己ip一致,拆包,丟包頭,根據包頭指定協議號把包轉給上層協議icmp,icmp根據協議規則檢視type=0code=0是個echo-relay報文,立即給源位址傳送echo-relay報文。

15.pc1接受到echo-relay報文得知網路暢通。ping一次完整過程完成。

總結:ping包在傳遞過程中,是一跳一跳**的,每經過乙個交換機,不停留不拆包直接按目的mac**,每進過乙個路由器拆封包一次。更換二層包頭,去掉上一網段mac位址,換成下一網段mac位址。在ping包的整個傳輸過程中,源ip和目的ip始終不變。

Ping的詳細過程

ping過程詳解 ping命令的主要作用的是檢查網路的連通情況和檢測網路的速度。相信大家都用過ping命令,下面主要介紹一下ping命令是怎樣乙個執行過程。主要的ping有兩種情況,一種是同一網段,一種是跨網段的。首先看乙個拓撲圖 首先,如果主機a要ping主機b,那麼主機a就要封裝二層報文,他會先...

ping的詳細過程

ping是我們在linux中測試網路連線的常用指令。首先ping是應用程式,而不是協議,它利用icmp internet control message protocol 網際網路控制報文協議 報文檢測網路連線。首先假設a ping b 1.ping通知系統建立乙個固定格式的icmp請求資料報。2....

Ping命令的過程

同一網段 1.ping通知系統建立乙個固定格式的icmp請求資料報 2.icmp協議打包這個資料報和機器b的ip位址轉交給ip協議層 一組後台執行的程序,與icmp類似 3.ip層協議將以機器b的ip位址為目的位址,本機ip位址為源位址,加上一些其他的控制資訊,構建乙個 ip資料報獲取機器b的mac...