最通俗的ping原理

 


pc10 ping pc1
10.10 20.1
首先此數據在pc10上網絡層進行封裝,封裝格式如下
10.10 20.1 protocol icmp ping
判斷目標IP和我源IP是否在一個網段裏面,結果發現不在一個網段裏面,此時由於我pc10上配置來一個默認網關,由於pc機又是一臺簡單到路由器,就會在他到路由表裏面會自動生成一個路由條目,格式爲
0.0.0.0 0.0.0.0 192.168.10.254
這條路由稱之爲默認路由,也就是說當結果發現不在一個網段裏面的時候,此時PC10查它到路由錶轉發,怎麼查?拿目標IP和默認路由的子網掩碼做位與結果,結果0.0.0.0,這個就是目標IP到網絡號,正好符號默認路由的目標網段,一旦符合,就沿此路由將數據進行轉發,轉發的方式就是把數據送往下一跳192.168.10.254,這個信息是網絡層推斷出來到信息,接着將此信息下發給數據鏈路層,接着就去數據鏈路層進行封裝,封裝到格式如下
MR M10 type 10.10 20.1 protocol icmp ping
接着在物理層轉換爲比特流通過本地網卡出去,抵達交換機F0/10口,進入交換機,查mac地址表進行轉發,發現目標MAC對應的是F0/21,此時將數據從F0/21口轉發出去,由於f0/21打爲了trunk,裏面有dot1q協議,此時改寫這個原始幀,由於這個幀從vlan 10來的,所以改寫的方式如下
MR M10 vlan10 type 10.10 20.1 protocol icmp ping
然後從F0/21發出去,抵達上面交換機的F0/21口,由於此接口也打爲了trunk,當它收到這個幀的時候,查看目標MAC,再查源MAC,看到裏面有一個vlan 10,就把vlan 10到標籤幹掉
MR M10 type 10.10 20.1 protocol icmp ping
把此幀丟給本交換機到vlan 10管理域, 進入來本交換機的vlan 10,再查MAC地址錶轉發,結果就從f0/10端口出去,由於此接口也打爲了trunk,又要繼續封裝
MR M10 vlan10 type 10.10 20.1 protocol icmp ping
封裝完後從f0/1口出去把,抵達路由器到f0/0.10子接口,此子接口首先收到到是比特流,再查數據幀頭部,目標MAC是MR,就是我的嘛!既然是我的,我就把目標MAC拆掉,再讀源MAC,並把它拆掉,然後再讀vlan 10,由於爲子接口也封裝來dot1q,就可以識別vlan 10,並且爲子接口也關聯的是vlan 10,所以就把vlan 10拆掉
10.10 20.1 protocol icmp ping
接着看數據包,首先看源IP,是10.10,再看目標IP是20.1,這些地址都不是我路由器的地址吧,既然這個數據包不是發給我的,我只能查看,而不能拆,由於我是路由器,我有路由表, 我可以想辦法儘量將此包通過我的路由錶轉發出去,怎麼轉發?拿目標20.1和我路由表中到每一條路由條目的子網掩碼作位與運算,看是否符合該路由條目到目標網絡號,發現,正好有一條符合把,通過查路由表,發現此數據包就可以從f0/0.20口出去,沒有說明目標要去往哪裏把,這個是路由器網絡層得出到結論,然後繼續開始去二層封裝
M1 MR type 10.10 20.1 protocol icmp ping
此時將數據幀通過f0/0.20口發出去把,由於此接口封裝來802.1q,它關聯到是vlan 20,所以在此幀中還要打標記,結果如下
M1 MR vlan20 type 10.10 20.1 protocol icmp ping
離開路由器之後,抵達交換機的f0/1口,由於此接口是trunk,首先查看目標mac,發現不是自己的,然後再查看源MAC,再把vlan 20幹掉把
M1 MR type 10.10 20.1 protocol icmp ping
把此幀丟給此交換機的vlan 20,然後進入交換機,查mac地址錶轉發,發現通過f0/21口出去,由於此接口也是trunk,改寫此數據幀
M1 MR vlan20 type 10.10 20.1 protocol icmp ping
通過f0/21進入下面的交換機,由於此接口也是trunk,改寫數據幀,把vlan 20幹掉
M1 MR type 10.10 20.1 protocol icmp ping
把此數據丟給本交換機到vlan 20
再查mac地址錶轉發,發現要從此交換機到f0/1口把數據轉發出去,由於此接口是access口,不對數據幀做任何操作,此時此數據幀就可以通過f0/1離開交換機,抵達pc1,然後pc1首先收到比特流,再看幀,發現目標MAC是我,就拆掉,再看源MAC,記下來,拆掉,然後再拆掉type字段,然後再看數據包,源IP記下來,再看目標IP是我,然後就可以將源目標IP都拆掉,在拆掉protocol字段,發現裏面是一個ping包,此時我就收到來這個ping包,然後我再回應,過程同上!


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