ping 原理
最近看了好多面試的題目,其中也被問到了關于ping的問題以及一些原理性的東西,于是拜讀了很多人的博客,最后也是豁然開朗,決定總結一下,也是為了防止遺忘吧。
要想理解ping的原理,我們首先來看一下ARP的報文格式
其中op:
1:表示arp請求
2:表示arp應答
3:表示rarp請求
4:表示rarp應答
接下來,我們來看一個同一廣播域內的ping報文:
我們的host2想要去ping host1,那么主機1就要封裝二層報文,首先host2會查看自己的MAC地址表,看有沒有host1的地址,如果沒有,host2就會向外部發送ARP廣播包
ARP幀報文格式如下:(省略了arp報文的硬件類型,上層協議類型,MAC地址長度,IP地址長度)
首先,我們的交換機接收到報文以后,會查詢交換機的MAC地址表(具有學習功能),如果有host1的MAC地址,直接返回給host2;如果沒有,交換機就會向所有端口發送ARP廣播,其他端口上的主機發現以后,如果目標不是自己,就會丟棄報文;直到host1主機接收到了報文以后,就會響應host1的MAC地址是多少,同時學習主機host2的MAC地址,并按照同樣格式的ARP報文返回給host2.
host1返回的ARP幀報文:
這個時候,主機host2已經學習到了host1的MAC地址,于是發送icmp報文
接下來,我們來看一看不同廣播域之間的ping
首先要確保全網可達!!!
如果我們的host2 還想ping主機,host2得先去找網關轉發,但是如果說,它也不知道網關的情況下怎么辦呢?它就會像ping host1那樣,先發送ARP報文,確定網關的mac 然后發送icmp報文交給路由器。
我們省略arp報文
host2發送ICMP報文至網關
當路由器接收到來自host2的icmp報文之后,發現目的地址的IP為192.168.2.1,查詢路由發現,得找一個出去的接口,于是去掉原來的mac地址頭,加上自己的mac地址頭并且向host3轉發,(如果網關也沒有host3的mac,也得發送ARP報文問詢,并且路由器的端口也能學習主機的mac地址,主機host3也能學習路由器的MAC地址),具體報文如下:
主機host3已經學到了路由器的mac,這會就會返回icmp報文
————————————————
版權聲明:本文為CSDN博主「Beeeeeego」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zhangyexinaisurui/article/details/82939401
總結
- 上一篇: 如何在Ubuntu中使用dpkg命令卸载
- 下一篇: Windows下的bat文件的@echo