写给非网工的CCNA教程(4)聊聊ping命令后的原理(续)
? ? 前文我們講解了ARP協(xié)議、IP協(xié)議、ICMP協(xié)議,有了這些基礎(chǔ),咱們再來講解ping命令后面的原理,就簡單多了。我們以一個(gè)例子來講解,如下圖所示,PC-A【10.74.97.116 /28】要去ping PC-B【10.74.97.125 /28】,看是否能ping通。A與B之間是通過網(wǎng)線直連,這也是把問題簡單話,現(xiàn)實(shí)中直連的場景還是畢竟少,不過本文是講解ping的原理,所以其他的簡化,突出重點(diǎn)。
1 前提
? ? 在分析之前,我們先得搞清楚幾點(diǎn):
(1)對A而言,自己的IP地址、子網(wǎng)掩碼、MAC地址這些信息都是已知的;
(2)對A而言,B的IP地址是知道的,A要去ping B,肯定會知道B的IP地址,要不然ping誰去;
(3)對A而言,B的子網(wǎng)掩碼、MAC地址這些都是不知道的,沒人告訴它。
? ? 對B而言,也是一樣。我們只分析A發(fā)送數(shù)據(jù)給B的過程,至于B回復(fù)數(shù)據(jù)給A的過程,道理是一樣的。讀者理解A到B的數(shù)據(jù)發(fā)送原理后,可以自己試著分析B回復(fù)數(shù)據(jù)給A的過程。
?
2?路由表簡單介紹
? ? 任何需要通過IP地址通信的設(shè)備,都會在本地維持這一個(gè)路由表。比如Windows可以通過命令【route print -4】查看路由表,Linux可以通過命令【ip route】查看。當(dāng)一個(gè)設(shè)備的接口配置了IP地址并且接口狀態(tài)是up的時(shí)候,會在本地路由表中,生成幾條路由表項(xiàng)。
? ? 例如本例中的PC-A(Windows),給網(wǎng)卡配置了IP地址【10.74.97.114 /24】后,會在路由表中生成以下表項(xiàng)。
C:\Users\wenca>route print -4Network Destination Netmask Gateway Interface Metric 10.74.97.112 255.255.255.240 On-link 10.74.97.116 291 10.74.97.116 255.255.255.255 On-link 10.74.97.116 291 10.74.97.127 255.255.255.255 On-link 10.74.97.116 291? ? 可以發(fā)現(xiàn)A中路由表多了三條表項(xiàng),第一條是到此IP所在網(wǎng)段(子網(wǎng))的路由,第二條是到此IP自己的路由,第三條是到此IP對應(yīng)的網(wǎng)段廣播地址的路由。而且三條路由的Gateway都是On-link,表示這這三條都是直連路由。也就是去往這三個(gè)目的地,直接二層封包即可,不需要先把數(shù)據(jù)包給到Gateway,讓Gateway去轉(zhuǎn)發(fā)。
? ? 本例中的PC-B(Linux),網(wǎng)卡配置了IP地址【10.74.97.125 /24】,對應(yīng)的路由表如下所示。
root@wenca-dell:~$ ip route 10.74.97.112/28 dev eth0 proto kernel scope link src 10.74.97.116?
3?原理分析
? ? 在A【ip地址為10.74.97.116 /28】的命令行下,敲入【ping 10.74.97.125】,如下所示。
C:\Users\wenca>ping 10.74.97.125(1)A查找路由表:找去往B的路由
? ? A根據(jù)目的IP地址【10.74.97.125】,去查找自己的路由表。發(fā)現(xiàn)該地址【10.74.97.125】匹配了路由表知道第一條,而是找到對應(yīng)的Gateway【On-link】,表示A自己與B在同一個(gè)網(wǎng)段。
(2)A查找ARP表:找B的MAC地址
? ? A發(fā)現(xiàn)B與自己在同一個(gè)網(wǎng)段,于是用B的IP地址,去找ARP表,沒有找到B的IP地址對應(yīng)的MAC地址。? ? ? ??
? ? 然后A發(fā)送ARP廣播請求,詢問【10.74.97.125】對應(yīng)的MAC地址是多少,如下圖所示。
? ? B收到此廣播后回復(fù)此ARP廣播,告訴A自己(B)的MAC地址多少,如下圖所示。
? ? A收到B的回復(fù)后,把B的IP地址和MAC地址映射關(guān)系寫到ARP表中,方便將來的查詢,如下所示。
C:\Users\wenca>arp -aInterface: 10.74.97.116 --- 0x5Internet Address Physical Address Type10.74.97.125 00-50-56-89-0a-1b dynamic(3)A發(fā)送ICMP請求給B,B回復(fù)
? ? 上面完成后,A已經(jīng)有了B的IP地址和MAC地址,發(fā)送ICMP請求包,如下圖所示。
? ? B收到此ICMP請求包以后,準(zhǔn)備回復(fù)此ICMP請求,但是沒有A的MAC,而是發(fā)送ARP廣播,請求A的MAC。
? ? A收到此ARP廣播后,回復(fù)此請求,如下圖所示(我的抓包過濾了A的MAC,因此不會看到B的ARP廣播)。
? ? B收到A的ARP響應(yīng)報(bào)文后,知道了A的IP地址和MAC地址,于是發(fā)送ICMP響應(yīng)報(bào)文,如下圖所示。
? ? 至于后面的NO.6--NO.11,是因?yàn)閃indwos上執(zhí)行ping命令,默認(rèn)會發(fā)送4此ICMP請求,如下圖所示。
? ? 可以看到在后面的3此ICMP交互期間,是沒有ARP包的,那是因?yàn)锳和B已經(jīng)知道了對方的IP和MAC,記錄在各自的ARP表中。
(4)在A的命令行界面下可以看到結(jié)果如下所示。
C:\Users\wenca>ping 10.74.97.125Pinging 10.74.97.125 with 32 bytes of data: Reply from 10.74.97.125: bytes=32 time=5ms TTL=128 Reply from 10.74.97.125: bytes=32 time=2ms TTL=128 Reply from 10.74.97.125: bytes=32 time=6ms TTL=128 Reply from 10.74.97.125: bytes=32 time=5ms TTL=128總結(jié)
以上是生活随笔為你收集整理的写给非网工的CCNA教程(4)聊聊ping命令后的原理(续)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代号红狗:那些站在微软云起点的中国创业者
- 下一篇: 加密与解密工具大礼包 2010年新品