網路學習之ping指令

2021-08-31 06:59:15 字數 1259 閱讀 9510

和同學聊天的時候被問到這樣乙個問題:在虛擬環境路由中主機a ping主機b的時間 加上主機b ping主機c的時間 為什麼比主機a ping主機c的時間長?

我們經常使用ping指令探測主機間是否通訊,然而細究起來還是一知半解,所以這個問題也引起了我的興趣。

windows系統下開啟cmd命令列工具就可以使用ping網路診斷工具。

我們再ping本機的效果:

ping 使用的是icmp協議,它傳送icmp回送請求訊息給目的主機。icmp協議規定:目的主機必須返回icmp回送應答訊息給源主機。如果源主機在一定時間內收到應答,則認為主機可達。

ping命令是屬於icmp協議規定的,而icmp是內嵌於ip層的,ip協議是一種無連線的,不可靠的資料報協議。因此,可以說, ping是網路層的命令。按照預設設定,windows上執行的ping命令傳送4個icmp(網間控制報文協議)回送請求,每個32位元組資料,如果一切 正常,我們應能得到4個回送應答。 ping能夠以毫秒為單位顯示傳送回送請求到返回回送應答之間的時間量。如果應答時間短,表示資料報不必通過太多的路由器或網路連線速度比較快。

關於ttl(存活時間)我們可以推算下資料報經過了多少個路由器:源地點ttl起始值(乙個2的乘方數)-返回時的ttl

例如第乙個ping amazon的時候就是256-235=21跳;第二個ping本機就是128-128=0跳

icmp是(internet control message protocol)internet控制報文協議。它是tcp/ip協議族的乙個面向無連線子協議,用於在ip主機、路由器之間傳遞控制訊息。控制訊息是指網路通不通、主機是否可達、路由是否可用等網路本身的訊息。這些控制訊息雖然並不傳輸使用者資料,但是對於使用者資料的傳遞起著重要的作用。

icmp的應用:ping ,traceroute

主機a構建乙個固定格式的icmp請求資料報加ip位址->ip層協議,構建ip資料報->在arp對映表中查詢出ip位址對應的mac位址->路由傳輸->主機b收到資料幀驗證接收->提取ip資料報交給ip層協議->提取資訊交給icmp協議,構建icmp應答包->傳送給主機a

由於ping指令基於非面向連線的協議,所以其消耗時間主要基於路由路徑和網路傳輸速度。所以具體原因很可能是兩次的路由演算法算出的路徑不一樣導致時間差異,或者是網路傳輸途中發生的網路延遲等問題。

網路程式之ping指令的實現

網路程式之ping指令的實現 ping是用於探測網路的連通性的乙個程式.它在網路程式設計中主要是用到了原始套接字層.用raw程式設計是一件很有意思的事情.因為這可以自已自定義ip位址,自定義資料結構.能做自已想做的事情.是socket中最底層的程式設計技術.ping的原理其實就是自定義乙個報文,傳送...

ping指令詳解

icmp協議是 internet control message ptotocol 網際網路控制訊息協議 的縮寫。它是tcp ip協議族的乙個子協議,用於在ip 主機 路由器之間傳遞控制訊息。ping packet internet groper 網際網路包探索器,用於測試網路連線量的程式。ping...

Angular JS學習之指令

1.angular js通過稱為指令的新屬性來擴充套件html 通過內建的指令來為應用新增功能 2.angularjs指令 angularjs指令是擴充套件的html屬性,帶有字首ng ng init 指令初始化應用程式資料 ng model 指令把元素 比如輸入域的值 繫結到應用程式 在輸入框嘗試...