天天看點

擴充PING指令與traceroute指令

我們在使用路由器或者交換機,不論是做實驗還是在實際工程中,我們都必須使用到的兩個指令,那麼一個就是我們的PING指令與traceroute指令。使用這兩個指令來測試我們的網絡配置是否正常,那麼你到底對這兩個指令又了解多少呢?那麼我們這一節就來看看這兩個指令的一些擴充用法。

Ping指令

ping指令首先發起一個響應請求包到目的位址,然後等待回複。ping是成功的僅當 ECHO請求達到對端目的地,并且目的地能得到ECHO回複回到ping的來源在一個預定義的時間間隔之内。

那麼我們現在先來看看如何來使用這個ping指令呢?

拓撲圖如下:

<a href="http://ltyluck.blog.51cto.com/attachment/200910/5/170459_1254745975DZo3.png"></a>

首先把最基本IP位址/路由協定配通。

現在在R4上面檢視一下路由表:

R4#<b>sh ip route</b>

1.0.0.0/24 is subnetted, 1 subnets

C 1.1.1.0 is directly connected, Loopback0

2.0.0.0/24 is subnetted, 1 subnets

D 2.2.2.0 [90/3321856] via 24.0.0.2, 00:00:18, Serial1/0

24.0.0.0/24 is subnetted, 1 subnets

C 24.0.0.0 is directly connected, Serial1/0

12.0.0.0/24 is subnetted, 1 subnets

D 12.0.0.0 [90/2681856] via 24.0.0.2, 00:00:50, Serial1/0

13.0.0.0/24 is subnetted, 1 subnets

D 13.0.0.0 [90/3193856] via 24.0.0.2, 00:00:50, Serial1/0

R4#

現在我們使用ping指令來測試到達2.2.2.2

R4#ping 2.2.2.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 88/120/156 ms

我們可以看到在中間!表示我們R4發送給2.2.2.2的icmp請求包,2.2.2.2通過icmp的echo給發一個回應包給我們R4表示正常通信了。

那麼我們現在來看看這個ping包的一些詳細的指令。

R4#ping 2.2.2.2 ?

data specify data pattern

df-bit enable do not fragment bit in IP header

repeat specify repeat count 表示我們需要發送多少個資料包

size specify datagram size 如果懷疑封包由于延遲過長或者分段失敗而丢失,則可以提高封包的大小。例如,我們可以使用1600位元組的封包來強制分段。

source specify source address or name 源位址

timeout specify timeout interval 如果懷疑逾時是由于響應過慢而不是封包丢失,則可以提高該值。

validate validate reply data

&lt;cr&gt;

例如:

R4#ping 2.2.2.2 repeat 100 size 1000 source 1.1.1.1

Sending 100, 1000-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Success rate is 100 percent (100/100), round-trip min/avg/max = 76/116/196 ms

這裡我們可以看見,我們現在ping 2.2.2.2發送100資料包,每個包1000個位元組,源位址是1.1.1.1

這就是ping指令的一種簡單的使用。

那麼我們現在來看看擴充ping指令的使用。

R4#ping 擴充ping就隻輸入這一個單詞

Protocol [ip]: 使用什麼協定,預設的是IP協定

Target IP address: 2.2.2.2 目标位址

Repeat count [5]: 10 發送多少個資料包

Datagram size [100]: 1000 如果懷疑封包由于延遲過長或者分段失敗而丢失,則可以提高封包的大小。例如,我們可以使用1600位元組的封包來強制分段。

Timeout in seconds [2]: 5 如果懷疑逾時是由于響應過慢而不是封包丢失,則可以提高該值。預設2秒

Extended commands [n]: y 這裡是否使用擴充指令,輸入Y表示使用

Source address or interface: 1.1.1.1 源位址,必須是路由器接口的位址。

Type of service [0]: 根據RFC 791 TOS規定的屬性,通常預設值為0。

Set DF bit in IP header? [no]: 通過設定DF位禁止分段,即使是封包超過了路由器定義的MTU也禁止分段。

Validate reply data? [no]:

Data pattern [0xABCD]: 通過改變資料模式可以測試線路的噪聲。

Loose, Strict, Record, Timestamp, Verbose[none]: r 這些都是IP封包頭的屬性。一般隻使用Record屬性和Verbose,其他屬性很少被使用。Record可以用來記錄封包每一跳的位址,Verbose屬性給出每一個回應應答的響應時間

Number of hops [ 9 ]: 這裡這項表示我們下面的“Record route:”顯示多少條。

Loose, Strict, Record, Timestamp, Verbose[RV]:

Sweep range of sizes [n]: y 該屬性主要用于測試大封包被丢失、處理速度過慢或者分段失敗等故障

Sweep min size [76]: 500 一個包最小大小為500位元組

Sweep max size [18024]: 2000 一個包最大為2000位元組

Sweep interval [1]: 500

Sending 20, [500..2000]-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

Packet has IP options: Total option bytes= 39, padded length=40

Record route: &lt;*&gt;

(0.0.0.0)

Reply to request 0 (100 ms) (<b>size 500</b>). Received packet has options

Total option bytes= 40, padded length=40

Record route:

(24.0.0.4)

(12.0.0.2)

(13.0.0.1)

(2.2.2.2)

(13.0.0.3)

(12.0.0.1)

(24.0.0.2)

(1.1.1.1) &lt;*&gt;

End of list

Reply to request 1 (120 ms) (<b>size 1000</b>). Received packet has options

Reply to request 2 (112 ms) (<b>size 1500</b>). Received packet has options

Reply to request 3 (128 ms) (<b>size 2000</b>). Received packet has options

Reply to request 4 (84 ms) (<b>size 500</b>). Received packet has options

Reply to request 5 (80 ms) (<b>size 1000</b>). Received packet has options

Reply to request 6 (84 ms) (<b>size 1500</b>). Received packet has options

Reply to request 7 (116 ms) (<b>size 2000</b>). Received packet has options

Reply to request 19 (100 ms) (size 2000). Received packet has options

Success rate is 100 percent (20/20), round-trip min/avg/max = 80/101/136 ms

從上面輸入可以看出PING記錄是路由器出口的IP位址,*表示源位址。

以上就是我們擴充ping的一個詳解。我想大家看了這一些應該對ping指令有了一個重新的認識吧!好了,那麼我們現在下來看看如何使用traceroute指令。

Traceroute指令:

Traceroute的工作原理:

Traceroute最簡單的基本用法是:traceroute hostname 

Traceroute程式的設計是利用ICMP及IP header的TTL(Time To Live)欄位(field)。首先,traceroute送出一個TTL是1的IP datagram(其實,每次送出的為3個40位元組的包,包括源位址,目的位址和包發出的時間标簽)到目的地,當路徑上的第一個路由器(router)收到這個datagram時,它将TTL減1。此時,TTL變為0了,是以該路由器會将此datagram丢掉,并送回一個「ICMP time exceeded」消息(包括發IP包的源位址,IP包的所有内容及路由器的IP位址),traceroute 收到這個消息後,便知道這個路由器存在于這個路徑上,接着traceroute 再送出另一個TTL是2 的datagram,發現第2 個路由器...... traceroute 每次将送出的datagram的TTL 加1來發現另一個路由器,這個重複的動作一直持續到某個datagram 抵達目的地。當datagram到達目的地後,該主機并不會送回ICMP time exceeded消息,因為它已是目的地了,那麼traceroute如何得知目的地到達了呢?

Traceroute在送出UDP datagrams到目的地時,它所選擇送達的port number 是一個一般應用程式都不會用的号碼(30000 以上),是以當此UDP datagram 到達目的地後該主機會送回一個「ICMP port unreachable」的消息,而當traceroute 收到這個消息時,便知道目的地已經到達了。是以traceroute 在Server端也是沒有所謂的Daemon 程式。

Traceroute提取發 ICMP TTL到期消息裝置的IP位址并作域名解析。每次 ,Traceroute都列印出一系列資料,包括所經過的路由裝置的域名及 IP位址,三個包每次來回所花時間。

Traceroute face="宋體" 有一個固定的時間等待響應(ICMP TTL到期消息)。如果這個時間過了,它将列印出一系列的*号表明:在這個路徑上,這個裝置不能在給定的時間内發出ICMP TTL到期消息的響應。然後,Traceroute給TTL記數器加1,繼續進行

執行traceroute指令的裝置派出使用者資料協定順序 (UDP)資料包,其中每一帶有增加存活時間(TTL)值,到一個無效的端口位址(預設值33434)在遠端主機。

首先,三個資料包被發送,其中每一與TTL預值設定到1。當在路徑,擊中第一個路由器TTL值為1導緻資料包對"逾時"; 此路由器然後回應與表明的ICMP "時間超出的"消息資料包到期了。

其次,更多UDP資訊被發送,其中每一個帶有設定的TTL值到2。這在路徑導緻第二個路由器對目的地對回歸ICMP "時間超出的"消息。

此程序繼續直到資訊包到達目的地 并且直到産生追蹤途徑的系統在路徑從每個路由器收到了ICMP "時 間超出的"消息對目的地。因為這些資料包設法通路一個無效的端口(預設值33434)在目的地主機,主機回應與ICMP "表示一個不可達的端口的端口不可得到的"消息。此事件信号追蹤路由程式完成。

那麼我們現在來看看指令如何使用呢?

R4#traceroute 2.2.2.2 source 1.1.1.1

Tracing the route to 2.2.2.2

1 24.0.0.2 100 msec 52 msec 28 msec

2 12.0.0.1 172 msec 56 msec 44 msec

3 13.0.0.3 152 msec * 92 msec

而traceroute則是記錄着路由器入口的IP位址

我們可以看見,上面這條指令是檢視1.1.1.1到2.2.2.2如何走的。

使用方法很簡單,那麼我們知道ping有擴充功能,那麼traceroute它有沒有擴充功能呢?

R4#traceroute 直接輸入traceroute

Protocol [ip]: 基于那種協定

Source address: 1.1.1.1 源位址

Numeric display [n]: 預設值是有一個符号和數字顯示; 然而,您能抑制符号顯示。

Timeout in seconds [3]: 等待對探針資訊包的一種回應的秒鐘的數量。預設值是3秒。

Probe count [3]: 将被發送的探測的數量在每個TTL級别。預設計數是3。

Minimum Time to Live [1]: 第一次探測的TTL值。預設值是1 ,但可以設 置為一個高價值抑制已知跳躍顯示。

Maximum Time to Live [30]: 能使用的最大的TTL值。預設值是30。 traceroute指令終止當目的地 到達時或當此值達到時。

Port Number [33434]: UDP探測消息使用的目 的地端口。 預設值是33434。

Loose, Strict, Record, Timestamp, Verbose[none]: IP頭選項。您能指定所有組合。 traceroute指令發出提 示對于要求的字段。注意 traceroute指令在每次探測将安置請求的選項 ; 然而,沒有保證所有路由器(或端節點)将處理選項

1 24.0.0.2 40 msec 28 msec 32 msec

2 12.0.0.1 60 msec 76 msec 92 msec

3 13.0.0.3 128 msec * 72 msec

總結

ping 與 traceroute一般都用于連通性的試測,不過使用擴充ping和traceroute可以讓我得到更多鍊路上的資訊

本文轉自 ltyluck 51CTO部落格,原文連結:http://blog.51cto.com/ltyluck/209673

繼續閱讀