Linux基礎命令---ping

ping

ping指令可以發送ICMP請求到目標地址,如果網絡功能正常,目標主機會給出迴應信息。ping使用ICMP協議強制發送ECHO_REQUEST報文到目標主機,從主機或網關獲取ICMP ECHO_RESPONSE。ECHO_REQUESTt數據報(‘pings’)有一個IP和ICMP報頭,後面跟着一個timeval結構體,然後是用於填充數據包的任意數量的“pad”字節。

此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

 

1、語法

ping [選項]  destination 

 

2、選項列表

選項

說明

-a

可聽的ping

-A

自適應平包間隔適應往返時間,因此有效地不超過一個(或多個,如果設置了預加載)未回答的探針在網絡中存在。對於非超級用戶,最小間隔爲200毫秒。在RTT低的網絡上,這種模式實質上等同於flood模式。

-b

允許ping廣播地址

-B

不允許ping更改探針的源地址。當ping啓動時,該地址綁定到選定的地址。

-c count

指定ping的次數

-d

在所使用的套接字上設置SO_DEBUG選項。實際上,linux內核不使用這個套接字選項。

-F flowlabel

在回送請求數據包上分配和設置20位flow label。(只有平6)。如果值爲零,內核將分配隨機flow label。

-f

極限檢測,不等收到回覆就發送下一個請求,只有超級管理員纔可以使用

-i interval

指定發送的時間間隔

-Iinterfaceaddress

將源地址設置爲指定的接口地址。參數可以是數字IP地址或設備名稱。當選擇ipv 6鏈路本地地址時,此選項是必需的。

-l preload

如果指定了預加載preload,ping將發送許多未等待回覆的數據包。只有超級用戶才能選擇超過3的預加載

-L

抑制組播數據包的回送。此標誌僅適用於ping目標爲多播地址的情況

-n

用數字方式顯示

-p pattern

您可以指定多達16個“PAD”字節來填充您發送的數據包。這對於診斷網絡中與數據相關的問題很有用

-Q tos

在ICMP數據報中設置與服務相關的比特的質量。TOS可以是十進制數,也可以是十六進制數。傳統上(RFC 1349),它們被解釋爲:0表示保留(當前被重新定義爲擁塞控制),1-4表示服務類型,5-7表示優先級。服務類型的可能設置是:最低成本:0x02,可靠性:0x04,吞吐量:0x08,低延遲:0x10。不能同時設置多個TOS位。特殊優先級的可能設置範圍從優先級(0x20)到淨控制(0xe0)。

-q

不顯示執行過程

-r

忽略正常的路由表

-R

記錄路由

-spacketsize

指定數據包的大小

-S sndbuf

設置套接字發送緩衝區sndbuf。如果沒有指定,則選擇它來緩衝不超過一個數據包

-t ttl

指定數據包的生存期TTL

-Ttimestampoption

設置特殊的ip時間戳選項。可以是tsonly (only timestamps), tsandaddr (timestamps and addresses) or tsprespec  host1  [host2 [host3 [host4]]] (timestamp prespecified hops)

-M hint

選擇路徑MTU發現策略,可以是do(禁止碎片,即使是本地的)、want(當數據包大小較大時,在本地發現pmtu)、don’t(不設置DF標誌)

-U

打印完整的user-to-user延遲

-wdeadline

在ping退出之前指定一個超時(以秒爲單位),而不管發送或接收了多少數據包。

-Wtimeout

等待響應的時間,以秒爲單位。該選項隻影響任何響應的超時,否則ping將等待兩個RTT

-v

顯示詳細執行過程

-V

顯示版本

 

3、ICMP報文

沒有選項的IP報頭是20個字節。ICMP echo_Request數據包包含另外8字節的ICMP報頭,後面跟着任意數量的數據。當給定一個數據包大小時,這表明了這個額外數據塊的大小(缺省值爲56)。因此,在ICMP ECHO_REPLY類型的IP數據包中接收的數據量總是比請求的數據空間(ICMP報頭)多8個字節。

如果數據空間至少是結構體timeval的大小,Timeval ping使用這個空間的起始字節來包含它在計算往返時間時使用的時間戳。如果數據空間較短,則不提供往返時間。

 

4、 重複和損壞的數據包

ping將報告重複和損壞的數據包。重複的數據包不應該發生,似乎是由不適當的鏈路級重傳引起的.重複可能在許多情況下發生,很少(如果有的話)是一個好的跡象,儘管低水平的重複可能並不總是引起恐慌。損壞的數據包顯然是引起警報的嚴重原因,並且經常表示ping數據包路徑(網絡中或主機中)的某個硬件出現故障。

 

5、嘗試不同的數據模式

(內部)網絡層不應根據數據部分中包含的數據對分組進行不同的處理。不幸的是,依賴於數據的問題已經被人們知道潛入網絡,並且在很長一段時間內沒有被發現。在許多情況下,會出現問題的特定模式是沒有足夠的“轉換”的東西,例如所有的1或所有的零,或者在邊緣的一個模式,例如幾乎所有的零。僅僅指定命令行上所有零的數據模式(例如)並不一定足夠,因爲感興趣的模式是在數據鏈接級別上,而且您鍵入的內容與控制器發送的內容之間的關係可能很複雜。

這意味着,如果您有一個數據依賴的問題,您可能需要做大量的測試才能找到它。如果幸運的話,您可能會設法找到一個文件,該文件要麼無法通過您的網絡發送,要麼需要比其他類似長度的文件更長的傳輸時間。然後,您可以檢查這個文件是否有重複的模式,可以使用ping的-p選項進行測試。

 

6、TTL

IP數據包的TTL值表示數據包在被丟棄之前可以通過的最大IP路由器數。在當前的實踐中,您可以期望Internet中的每個路由器將TTL字段減少一個。TCP/IP規範規定,TCP數據包的TTL字段應該設置爲60,但許多系統使用較小的值(4.3BSD使用30,4.2使用15)。該字段的最大可能值爲255,大多數Unix系統將ICMP ECHO_REQUEST數據包的TTL字段設置爲255。這就是爲什麼您會發現您可以“ping”一些主機,但不能通過telnet(1)或ftp(1)到達它們。

在正常操作中,ping從它接收的數據包打印ttl值。當遠程系統收到ping數據包時,它可以在響應中使用ttl字段執行以下三項任務之一。

1)不改變它;這是Berkeley Unix系統在4.3BSDTahoe發佈之前所做的事情。在這種情況下,接收到的數據包中的TTL值將爲255減去往返路徑中的路由器數量。

2)將其設置爲255;這是目前BerkeleyUnix系統所做的。在這種情況下,接收到的數據包中的TTL值將爲255減去從遠程系統到ping主機的路徑中的路由器數量。

3)將其設置爲其他值。有些機器對ICMP數據包使用的值與它們對TCP數據包使用的值相同,例如30或60。其他人可能會使用完全狂野的價值觀。

 

7、實例

1)ping廣播地址

[root@localhost ~]# ping  192.168.1.255

Do you want to ping broadcast? Then -b

[root@localhost ~]# ping -b 192.168.1.255                  //只有使用-b選項才能ping廣播地址

WARNING: pinging broadcast address

PING 192.168.1.255 (192.168.1.255) 56(84) bytes of data.

64 bytes from 192.168.1.8: icmp_seq=1 ttl=64 time=0.219 ms

64 bytes from 192.168.1.8: icmp_seq=2 ttl=64 time=0.282 ms

64 bytes from 192.168.1.8: icmp_seq=3 ttl=64 time=0.215 ms

64 bytes from 192.168.1.8: icmp_seq=4 ttl=64 time=0.268 ms

^C

--- 192.168.1.255 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3684ms

rtt min/avg/max/mdev = 0.215/0.246/0.282/0.029 ms 

2)測試目標地址是否暢通

[root@localhost ~]# ping -c 4 192.168.1.8                //指定發送數據包的次數

PING 192.168.1.8 (192.168.1.8) 56(84) bytes of data.

64 bytes from 192.168.1.8: icmp_seq=1 ttl=64 time=0.427 ms

64 bytes from 192.168.1.8: icmp_seq=2 ttl=64 time=0.196 ms

64 bytes from 192.168.1.8: icmp_seq=3 ttl=64 time=0.220 ms

64 bytes from 192.168.1.8: icmp_seq=4 ttl=64 time=0.329 ms

 

--- 192.168.1.8 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3002ms

rtt min/avg/max/mdev = 0.196/0.293/0.427/0.092 ms

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章