ping可以說(shuō)是ICMP協(xié)議的最著名的應(yīng)用波材,是TCP/IP協(xié)議的一部分酿愧。
利用ping命令可以檢查網(wǎng)絡(luò)是否聯(lián)通游岳,可以很好地幫助我們分析和判定網(wǎng)絡(luò)故障政敢。
網(wǎng)絡(luò)檢測(cè)時(shí),排錯(cuò)的順序與方法:
ping 127.0.0.1 檢查T(mén)CP/IP協(xié)議棧是否正常
ping 本地ip (比如:192.168.0.43) 檢查網(wǎng)卡是否正常工作
ping 網(wǎng)關(guān)地址(比如:192.168.0.1)檢查和網(wǎng)關(guān)的連接是否正常
ping 遠(yuǎn)程網(wǎng)站 (比如:www.baidu.com)檢查遠(yuǎn)程連接性
另外胚迫,如果你需要使用固定IP喷户,比如我個(gè)人喜歡用“192.168.1.222”這個(gè)IP,那么你需要使用“ping 192.168.1.222”來(lái)確定這個(gè)IP是否已經(jīng)被占用访锻,如果ping通了褪尝,說(shuō)明已經(jīng)被占用。
ping的整個(gè)過(guò)程:
這里講兩種情況期犬,一種是同一網(wǎng)段內(nèi)的ping河哑,另一種是跨網(wǎng)段的ping
1 同網(wǎng)段內(nèi)ping
如果主機(jī)A要去ping主機(jī)B,命令為“ping 1.1.1.3”龟虎。
ping命令會(huì)構(gòu)建一個(gè)固定格式的ICMP請(qǐng)求數(shù)據(jù)包璃谨,然后由ICMP協(xié)議將這個(gè)數(shù)據(jù)包連同地址“1.1.1.3”一起交給IP層,IP層將以“1.1.1.3”做為目標(biāo)地址鲤妥,以本機(jī)IP做為源地址佳吞,加上一些其他的控制信息,構(gòu)建一個(gè)IP數(shù)據(jù)包旭斥,以便交給數(shù)據(jù)鏈路層構(gòu)建一個(gè)數(shù)據(jù)幀容达。
IP層協(xié)議通過(guò)主機(jī)B的IP地址和自己的子網(wǎng)掩碼古涧,發(fā)現(xiàn)主機(jī)B和主機(jī)A屬于同一子網(wǎng)絡(luò)垂券,就直接在當(dāng)前子網(wǎng)絡(luò)內(nèi)查找主機(jī)B的MAC地址,如果之前兩臺(tái)主機(jī)之間有過(guò)通信,那么主機(jī)B的ARP緩存中緩存了主機(jī)B的IP地址與其MAC地址的映射菇爪。如果沒(méi)有緩存算芯,就發(fā)送一個(gè)ARP請(qǐng)求廣播,得到主機(jī)B的MAC地址凳宙。
通過(guò)ARP協(xié)議獲取到的主機(jī)B的MAC地址熙揍,將被交給數(shù)據(jù)鏈路層,數(shù)據(jù)鏈路層構(gòu)建一個(gè)數(shù)據(jù)幀氏涩,目標(biāo)地址是主機(jī)B的MAC地址届囚,源地址是主機(jī)A的MAC地址,再加上一些其他控制信息是尖,依據(jù)以太網(wǎng)的介質(zhì)訪問(wèn)規(guī)則意系,將它們發(fā)送出去。
主機(jī)B收到這個(gè)數(shù)據(jù)幀后饺汹,先檢查數(shù)據(jù)幀的目標(biāo)MAC地址是否和自己的MAC相同蛔添,如相同,則接收該數(shù)據(jù)幀兜辞,將IP數(shù)據(jù)包從數(shù)據(jù)幀中提取出來(lái)迎瞧,交給本機(jī)的IP層處理;否則丟棄數(shù)據(jù)幀逸吵。
主機(jī)B的IP層收到IP數(shù)據(jù)包后凶硅,將有用的信息提取后交給ICMP協(xié)議,后者處理后扫皱,馬上構(gòu)建一個(gè)ICMP應(yīng)答包咏尝,發(fā)送給主機(jī)A,其過(guò)程和主機(jī)A發(fā)送ICMP請(qǐng)求包到主機(jī)B一模一樣啸罢。
2 跨網(wǎng)段的ping
如果主機(jī)A要去ping主機(jī)C编检,命令為“ping 2.1.1.1”。
前面的準(zhǔn)備工作跟同網(wǎng)段內(nèi)ping一樣扰才,到了怎樣獲取主機(jī)C的MAC地址時(shí)允懂,IP層協(xié)議通過(guò)計(jì)算發(fā)現(xiàn)主機(jī)C與主機(jī)A不在同一子網(wǎng)絡(luò),就直接交給路由器處理衩匣,也就是將路由器端口1的MAC地址當(dāng)做目標(biāo)的MAC地址蕾总。至于怎樣得到路由的MAC地址,使用的依然是ARP協(xié)議琅捏,先在ARP緩存中查找路由器的MAC地址生百,找不到就廣播。
路由器端口1得到數(shù)據(jù)幀之后柄延,將數(shù)據(jù)幀發(fā)送到端口2蚀浆,端口2需要將數(shù)據(jù)幀發(fā)給主機(jī)C,那么端口2需要知道主機(jī)C的MAC地址,跟上面一樣市俊,使用ARP協(xié)議杨凑,從ARP緩存中查找嫩絮,找不到就廣播扯键。
后續(xù)步驟跟同網(wǎng)段內(nèi)ping的步驟類(lèi)似。税弃。绅你。
ping的返回結(jié)果分析:
以ping百度為例伺帘。
www.baidu.com是www.a.shifen.com的DNS別名,IP地址是14.215.177.38
TTL:time to live 忌锯。每一個(gè)被發(fā)送出的IP數(shù)據(jù)包都有一個(gè)TTL域曼追,該域被設(shè)置為一個(gè)較高的數(shù)值(在本例中ping信息包的TTL值為56)。當(dāng)信息包在網(wǎng)絡(luò)中被傳輸時(shí)汉规,TTL的域值通過(guò)一個(gè)路由器時(shí)遞減1礼殊;當(dāng)TTL 遞減到0時(shí),信息包被路由器拋棄针史。
路由器知識(shí)點(diǎn)補(bǔ)充:
路由器都有獨(dú)立且不重復(fù)的MAC地址晶伦。
商用路由器每個(gè)端口都有MAC地址。家用路由器不同與商用啄枕,家用只有兩個(gè)婚陪,一個(gè)用于WAN口,一個(gè)用LAN口频祝。下圖所示的就是家用路由器WAN口和LAN口的MAC地址泌参。
路由器是一個(gè)硬件,網(wǎng)關(guān)是一個(gè)概念常空,只要連接兩個(gè)不同網(wǎng)絡(luò)的設(shè)備都可以叫網(wǎng)關(guān)沽一,網(wǎng)關(guān)可以設(shè)置在路由器上,一般一個(gè)局域網(wǎng)會(huì)設(shè)置一個(gè)網(wǎng)關(guān)漓糙,供一個(gè)網(wǎng)段使用铣缠。
以上內(nèi)容參考自:
https://baike.baidu.com/item/PING/6235#11
https://zhidao.baidu.com/question/1796579256282821107.html
http://blog.51cto.com/wanicy/335207
https://zhidao.baidu.com/question/409920562.html
https://www.zhihu.com/question/21787311?from=profile_question_card