簡單的拓撲模型:
A —–1 R1 2—–3 R2 4——5 R3 6——-B
問題:
如果A 通過瀏覽器訪問B機器上網站的頁面 firefox http://B
1、
判斷A和B是否在同一網段
判斷方法:
a、A先和自己的子網掩碼進行與運算,算出自己的網絡ID,
b、然后把B機器上的IP與自己的子網掩碼進行與運算,算出B機器所在的網絡ID
c、兩個網絡ID比較,如果一樣就在同一網段,如果不一樣,就不在同一網段。
如果A,B不在同網段,A就沒有辦法通過ARP協議把B機器的mac地址解析出來,
2、
因此A機器嘗試把數據包發往R1路由器的網關
在A的機器上事先肯定配置了網關(默認網關)(gateway : R1 IP1)
A機器雖然知道R1的gateway的地址,但是不知道IP1的mac1地址
ARP IP1—> mac
A機器和R1路由器IP1在同一網段,可以使用ARP廣播獲取到IP1的mac1地址
A ARP cache:(IP1 MAC1)
得到 R1 IP1的mac1地址,A機器會把IP1和mac1的對應關系保存到ARP表中,下一通信直接查詢ARP就可以了,不需要再次發送ARP請求了
3、
我們現在已經得到目標地址和源地址,可以填寫數據包信息
數據鏈路層
frame:DEST MAC1, SOUCRE MACA,
internet層
IP:dest IP:IPB , source IP:IPA
傳輸層
TCP: dest port:80 , source port: xxx(random隨機)
4、
數據包的信息填寫完整后,就可以根據數據的DEST MAC1把數據包發送到R1上了
5、
R1收數據包,會根據包中的目標地址,查詢自己的路由表
數據包要到達 netB網段
netB R1IP2 R2IP3
要到達netB 網絡,數據包要從R1的IP2接口出去,要到達R2的IP3接口
因此R1要嘗試把數據包發送到R2
ARP R2IP3 — MAC3
數據包頭信息重新封裝
frame:DEST MAC3, SOUCRE MAC2,
ip/TCP包頭不變
6、
R2收到數據包會根據包中的目標地址,查詢自己的路由表
數據包要到達 netB網段
netB R2IP4 R3IP5
ARP R2IP5 — MAC5
數據包頭信息重新封裝
frame:DEST MAC5, SOUCRE MAC4,
ip/TCP包頭不變
7、
數據包到達R3
R3收到數據包會根據包中的目標地址,查詢自己的路由表
發現R3和目標地址是直連
netB R3IP6 xxx
ARP IPB —> MACB
frame :dest macB ,source mac6
ip: dest IPB, source IPA
tcp: dest port22, source port xxxx
8、
數據包到達(一次通信完成)
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97604