作者:平解技術控
https://www.jianshu.com/p/828c0f927778
Linux指令有很多,今天跟大家介紹常用的兩個指令ping 、traceroute指令,按照工具的作用,原理,用法三個次元來了解。
一、ping
1.作用
探測端到端的連通性,包往返時延。
2.原理
icmp協定,是在IP協定之上的一種協定,包括首部和資料兩個部分。icmp協定頭部的三個固定字段,type,code,checksum。ping使用其中type為8和0的兩種類型。type8為request,type 0 為reply。首部其他字段因不同包類型有所區分。
通過抓到的包,來看下各個字段。

ping封包
request包
ping-request包
ping-reply包
可以看出,ping標頭部除了三個固定字段之外,還有Identifier,Sequence。data字段為Timestamp。其中Identifier,Sequence主要是為了讓request,reply能配對,比如哪個reply是回複哪個request的。看上圖的request和reply包,Identifier BE LE 相同,Identifier一般是發送的程序号。Sequence number BE LE 也相同,表示發送的序列号,一對請求和答複包Sequence number BE LE 相同。Timestamp裡面記錄了傳輸時間戳和序列号。首先看request包裡面的發送時間,和reply包裡面的發送時間相同。
request中的timestamp字段
reply中的timestamp字段
Response time,rtt正是 reply包裡面relative時間減去request包裡面的時間。
是以ping包可以連續的去給對端發request,而不用等對端回複某一個包之後再發,預設1s 發送一個request包。
3.用法
不帶任何參數,預設ping 的資料包大小是 56 位元組。會持續不斷的ping下去。
輸出參數解釋:min/avg/max/stddev 前三個好了解,最後一個參數,mac下是stddev,linux下面是 mdev Mean Deviation,代表 ICMP 包的 RTT 偏離平均值的程度,可以通過這個值看出網絡抖動的情況,mdev值越大說明,整個鍊路上的包延時越不穩定。值越小,說明越穩定。
ping不帶參數結果
ping參數用法:
-l 指定發送包的大小
-c 指定發送包的次數
-i 指定發送間隔,預設是1s
-I 指定發送包的網卡 ,一般是檢視路由表,哪個網卡路由比對用哪個網卡發送。
ping參數學習
以上指定了 包大小,-M do表示不要分片,-c 4 次數,這個指令在探測鍊路mtu的時候會用到。
二、traceroute
1.作用
探測端到端,鍊路每一跳的時延。
2.原理
先看一個traceroute的通路截圖和抓包截圖
traceroute通路截圖
源IP :192.16843,87 家裡的區域網路位址
traceroute抓包截圖
源IP :192.16843,87 家裡的區域網路位址
目的IP: 61.135.169.121 百度的位址
可以看出traceroute開始的時候,源位址發包,ttl 值依次從為1,1,12,2,2,3,3,3...ttl依次增大,并且每個ttl值發三個包。在看發包源端口 44136,一直沒有變,通路的目的端口從 33435依次增大。tracroute假設伺服器的端口 33435沒有監聽,如果恰巧這個端口服務端監聽了,那麼traceroute就不能正常判斷了。路徑上的每一跳,或者傳回icmp ttl逾時的錯誤包,或者不傳回,直到達到主機之後,主機會傳回一個服務不可達的包,這個時候trcaeroute認為探測到了主機。
ttl為1的包發出去之後,收到了中間路由器的回包,像ttl為 2,3的包沒有收到回包,控制台看的結果為 *
traceroute沒有收到回包為*
看下發包的詳細特征:
traceroute發包
可以看出這個包是UDP包
traceroute-ttl逾時響應包
可以看出這個包是 ICMP包,type 11,code 0 ,TTL逾時包。這個包的源位址為 192.168.43.138為中間路由器的發回來的包。這個包将發包的資訊封裝到了自己裡面,可以和上一個圖對比。
3.用法
正常的用法如上面,看下哪一個路徑上的延時變大。除了UDP包探測之外,traceroute還可以指定使用TCP協定探測,可以使用-p指定端口
指令:traceroute -T www.baidu.com
探測mtu大小: traceroute www.baidu.com -F 1472
trcaeroute-tcp傳回結果
好文推薦:
别總寫代碼,這130個網站比漲工資都重要
30分鐘了解決策樹的基本原理
最新2020年3月份程式設計語言排行榜詳情