close

按此前往linux完整教學目錄

 

 

ping指令來偵查某IP位址上的節點是否在線(節點,指的是一切具有IP位址、並以網路卡連接的裝置,可能是路由器,也可能是主機)

ping指令會發送一連串的echo request封包」給目標節點,若目標節點在線,則每接到收一個來源節點來的「echo request封包」,就會發出一個「echo reply封包」給來源節點,封包裡就記錄著關於此次連線的一些資訊給來源節點去做解讀。

echo request封包」和「echo reply封包」都是以ICMP協定來運作,這兩個都屬於ICMP封包。順便一提,ICMP封包是被包含在IP封包內傳送的。

ping 的用法為:

ping 選項 目標節點IP位址或網域名稱

(1) 例如:輸入ping 168.95.1.1 (168.95.1.1是中華電信的IP位址)後,會顯示如下列的資訊:

64 bytes from 168.95.1.1: icmp_seq=1 ttl=247 time=1.53 ms

64 bytes from 168.95.1.1: icmp_seq=2 ttl=247 time=1.51 ms

64 bytes from 168.95.1.1: icmp_seq=3 ttl=247 time=1.57 ms

64 bytes from 168.95.1.1: icmp_seq=4 ttl=247 time=1.56 ms

每一行代表一個「echo reply封包」中的資訊,以第一行為例,說明如下:

64 bytes:表示此「echo reply封包」的大小是64bytes(echo reply封包」的大小與「echo request封包」相同)。註:在網路上真正傳送的是IP封包(「echo reply封包」是ICMP封包,被包含在IP封包裡面),而IP封包通常比ICMP封包多20bytes。於此例中,可知其IP封包大小為84bytes

from 168.95.1.1::表示此「echo reply封包」是從168.95.1.1這個IP位址傳來的。此項可能顯示目標節點IP位址,也可能顯示目標節點的網域名稱。

icmp_seq=1:表示此「echo reply封包」是在執行ping之後,第1個被接收到的。

ttl=247time of live的縮寫,也就是IP封包表頭中的「封包生存期」。其值通常預設為255(若目標節點的IP位址位於區域網路中,則ttl預設是64)。傳送過程中,每經過一個路由器,其值就減少1。直到其值為1的時候,就不再傳送。ttl=247,表示封包單程經過了8255-247=8個路由器。

time=1.53 ms:表示目標節點的「反應時間(此反應時間是如何計算的?筆者並不清楚)」。ms代表毫秒,us代表微秒。此值越小,代表兩點之間的通訊品質越好。

(2) ping 選項 目標節點IP位址之中,選項有:

-c N:表示總共要傳送NICMP封包給目標節點。預設的情況下,N是無限大(會一直傳送ICMP封包給目標節點,等到使用者下命令停止傳送為止)

-n:表示顯示時,只需顯示目標節點的IP位址,而不要顯示網域名稱。這樣節省連線時間。

-s N:設定此ICMP封包的容量大小(不包含ICMP表頭內的某些資訊,這些資訊共有8byte)Nbyte,而實際上的ICMP封包大小為N+8byte(N+8,即是執行ping指令後,所顯示的封包大小)。要注意,ICMP封包是被包含在IP封包內傳送的,IP封包會比ICMP封包多出20byte,所以,若IP封包的大小(N+8+20)大於所在網段的MTU,則封包會自動被路由器分割成適當大小,再予以傳送。

-t N:設定此包含ICMP封包之IP封包的ttl值為N

-M do:表示將包含此ICMP封包的IP封包,其表頭之旗標之DF值設為1。也就是說,將此封包設為不能分割的封包(預設是可分割)。因此,若此IP封包之大小超過該網段的MTU,路由器不能分割封包,會直接傳回連線失敗的訊息。此功能常用於檢查一個網段的MTU大小。

 

 

上一篇:linux ip

下一篇:linux traceroute

arrow
arrow
    創作者介紹
    創作者 埃伯 的頭像
    埃伯

    程式語言教學

    埃伯 發表在 痞客邦 留言(0) 人氣()