出處:
閒來無事,就用packet tracer 5.0搭建網路環境模擬一下ping的執行過程,以此來捋順arp、icmp等協議在tcp/ip網路體系各層上的詳細流程。 用packet tracer 5.0搭建如下圖所示的簡化網路環境:
ps:以上模擬環境搭建後,arp –a 檢視主機a、b都無arp記錄。a和b都配置正確的閘道器。然後pca執行ping pcb動作,pca:>ping 192.168.1.2 –n 1
一、在主機pca端:
1. ping處理程序產生乙個 icmp回應請求(icmp echo request message),icmp把這個資料段發給網路層協議進行ip封裝。
2. ip協議建立乙個資料報,其中包含源和目的ip位址、協議欄位0x01(告訴接收方主機ip協議,應把這個包中的data交由icmp來處理)。
3. 資料報建立後,在發出之前,ip協議判斷目的ip,發現192.168.1.2不是本地網路的位址也不是廣播位址。
4. 在ip判定資料報是發往遠端網路的之後,就要把資料報發給預設閘道器處理.
5. 主機a的預設閘道器被配置為192.168.0.1,即router0的f0/0埠。本地區域網通訊都是根據mac位址的,要將資料報發給router0的f0/0就要知道它的mac位址。啟動arp協議。
6. arp程序查詢pca主機上的arp快取,發現arp快取表中沒有192.168.0.1對應的mac條目。這時arp暫存資料報並產生乙個arp請求。
7. arp請求被封裝成幀後被廣播出去,在同乙個網路內的網路裝置都接收這個幀(因為mac為廣播位址)。
二、在router0端:
8. 和pca同一子網內的router0的f0/0網絡卡介面接收上面到的arp資料封裝幀後,進行幀校驗(不正確丟棄)後,該幀將被傳送給裝置驅動程式。裝置驅動程式判斷這是arp型別資料,就交給arp協議,arp協議讀取這個arp資料,判斷其中target ip(不是自己的丟棄)是不是發給自己的資料。
9. 目標ip:192.168.0.1,是給自己的資料,arp程序則讀取資料中的opcode(操作碼)判斷這是乙個arp請求。然後根據資料裡的source位址把對方的ip-mac映像寫入本地arp快取表裡,然後產生乙個arp回應給192.168.0.2(pca)。
10. arp程序把產生的arp回應交給資料鏈路層封裝成幀(看上圖),然後交給物理層一位一位發出去。過程類似上面的過程。
三、回到主機pca端:
11. 網絡卡收到arp回應幀後,判斷這個幀,過程類似router0端接收arp請求過程。arp程序從這個回應資料中讀取source ip-mac位址映象並寫入本地arp快取中。arp程序將之前暫存的ip資料報和router0的f0/0的mac位址交給資料鏈路層,封裝成幀後發出。如下圖:
四、再到router0端
13. 接下來,路由器在其路由表中查詢目的位址192.168.1.2的網路位址192.168.1.0的表項(如果查不到丟棄並回應乙個目標不可達的icmp給源ip),這裡查到目標網路是和f0/1介面直接相連的,不需要路由協議,直接把資料報交換到f0/1介面的緩衝區中。注意:交換資料報的過程不改變ip資料報的內容,只把ttl-1=127(因為經過了一跳)。
14. 同樣的,f0/1得到這個資料報後,也要先找到目標ip的mac位址才能把它交給資料鏈路層封裝成幀。arp程序查詢路由器上的arp快取,發現arp快取表中沒有192.168.1.2對應的mac條目。這時arp暫存資料報並產生乙個arp請求。過程同pca主機尋找預設閘道器mac,不在詳述。
15. f0/1arp程序取得目標主機的mac後,把pcb的映像寫入arp快取。並把資料報和目標mac交給資料鏈路層封裝成幀,發出去。
五、在pcb主機端
16. 在15步之前,pcb收到router0f0/1(192.168.1.1)的arp請求後,把f0/1的ip-mac位址寫入該機arp 快取表。
17. pcb接收到router0 f0/1發來的資料幀後。幀校驗正確後,檢查destination mac是給自己的,且type指示幀中資料部分是是ip資料報,所以就把其中的資料部分交給ip協議。
19. icmp程序發現type: 0x8是乙個ping回應請求。它就應邀產生乙個type: 0x0的icmp(ping請求響應),然後交給ip協議,ip程序把之前資料報的源ip當目的ip進行封裝,之後檢查這個ip是遠端網路的。就要交給預設閘道器處理。呼叫arp協議,arp程序查本機arp快取,發現有192.168.1.1(閘道器)的條目。ip協議從arp程序得到閘道器的mac後,把資料報和mac位址交給資料鏈路層封裝成幀。然後由物理層發出去。
六、在router0端
20. f0/1介面收到這個幀後(其實這裡忽略了物理層),經過校驗和檢查mac,判斷是給自己的正確的幀,且資料內容是ip資料報,就把資料交給ip協議。ip程序發現目標ip不是本地網路,就查路由表,查到它的網路位址連線在f0/0介面,就把資料報中ttl-1後交換到f0/0的快取中。
21. f0/0介面的ip程序檢查從f0/1轉過來的資料報的目的ip,發現在它在自己網路內。arp程序從arp快取中查到目標ip的mac後提供給ip協議,ip協議把資料報和mac再交給資料鏈路層封裝成幀。
七、在pca端
22. pca主機網絡卡介面收到f0/0發來的幀後(其實這裡忽略了物理層),經校驗和確認mac是自己的後,讀取幀型別,發現是ip資料報,就交給ip協議。ip核對目的ip位址後發現資料報協議欄位是icmp的,就把資料報中資料部分(icmp報文)交給icmp協議。icmp程序發現報文中型別欄位是對ping請求的響應(0x00),然後就把處理響應的結果顯示給正在等待的ping請求的使用者的螢幕上.
Ping經過路由器的執行過程解析
出處 閒來無事,就用packet tracer 5.0搭建網路環境模擬一下ping的執行過程,以此來捋順arp icmp等協議在tcp ip網路體系各層上的詳細流程。用packet tracer 5.0搭建如下圖所示的簡化網路環境 ps 以上模擬環境搭建後,arp a 檢視主機a b都無arp記錄。...
檢視所經過的路由器
tracert命令 tracert 跟蹤路由是路由跟蹤實用程式,用於確定 ip資料報訪問目標所採取的路徑。tracert 命令使用用 ip 生存時間 ttl 欄位和 icmp 錯誤訊息來確定從乙個主機到網路上其他主機的路由.其命令格式如下 tracert d h maximum hops j com...
兩台主機經過路由器傳送資料的網路原理
假設兩台主機通過路由器相連。假定主機1的應用程序ap1向主機2的應用程序ap2傳送資料。ap1先將其資料交給本主機的第5層 應用層 第5層加上必要的控制資訊h5就變成了下一層的資料單元。第4層 運輸層 收到這個資料單元後,加上本層的控制資訊h4,再交給第3層 網路層 成為第3層的資料單元。以此類推。...