ICMP協(xié)議兩個典型的應(yīng)用你都會用了嗎?
在生產(chǎn)環(huán)境中,我們常用ping命令測試主機是否在線。那么,ping命令使用的是什么協(xié)議呢?其實,ping使用的是ICMP協(xié)議。Internet控制報文協(xié)議ICMP(Internet Control Message Protocol)是網(wǎng)絡(luò)層的一個重要協(xié)議。ICMP協(xié)議用來在網(wǎng)絡(luò)設(shè)備間傳遞各種差錯和控制信息,它對收集各種網(wǎng)絡(luò)信息、診斷和排除網(wǎng)絡(luò)故障具有至關(guān)重要的作用。所以,在使用基于ICMP的應(yīng)用時,需要對ICMP的工作原理非常熟悉。
ICMP協(xié)議報文格式
從上圖可以看到,ICMP消息封裝在IP報文中。 ICMP消息的格式取決于Type和Code字段,其中Type字段為消息類型,包含以下幾種情況:
- type=0 ,code =0 表示Echo Reply
- type=8 ,code =0 表示=Echo Request
- type=3 ,code =0 表示網(wǎng)絡(luò)不可達(dá)
- type=3 ,code =1 表示主機不可達(dá)
- type=3 ,code =2 表示協(xié)議不可達(dá)
- type=3 ,code =3 表示端口不可達(dá)
- type=5 ,code =0 表示重定向
ICMP應(yīng)用
ICMP的一個典型應(yīng)用是Ping。 Ping是檢測網(wǎng)絡(luò)連通性的常用工具,同時也能夠收集其他相關(guān)信息。用戶可以在Ping命令中指定丌同參數(shù),如ICMP報文長度、 發(fā)送的ICMP報文個數(shù)、 等待回復(fù)響應(yīng)的超時時間等,設(shè)備根據(jù)配置的參數(shù)來構(gòu)造并發(fā)送ICMP報文,迚行Ping測試。
Ping常用的配置參數(shù)說明如下:
- -a source-ip-address指定發(fā)送ICMP ECHO-REQUEST報文的源IP地址。 如果不指定源IP地址,將采用出接口的IP地址作為ICMP ECHOREQUEST報文發(fā)送的源地址。
- -c count指定發(fā)送ICMP ECHO-REQUEST報文次數(shù)。 缺省情況下發(fā)送5個ICMP ECHO-REQUEST報文。
- -h ttl-value指定TTL的值。 缺省值是255。
- -t timeout指定發(fā)送完ICMP ECHO-REQUEST后,等待ICMP ECHOREPLY的超時時間。
ICMP的另一個典型應(yīng)用是Tracert。Tracert基于報文頭中的TTL值來逐跳跟蹤報文的轉(zhuǎn)發(fā)路徑。 為了跟蹤到達(dá)某特定目的地址的路徑,源端首先將報文的TTL值設(shè)置為1。 該報文到達(dá)***個節(jié)點后,TTL超時,于是該節(jié)點向源端發(fā)送TTL超時消息,消息中攜帶時間戳。 然后源端將報文的TTL值設(shè)置為2,報文到達(dá)第二個節(jié)點后超時,該節(jié)點同樣返回TTL超時消息,以此類推,直到報文到達(dá)目的地。 這樣,源端根據(jù)返回的報文中的信息可以跟蹤到報文經(jīng)過的每一個節(jié)點,并根據(jù)時間戳信息計算往返時間。 Tracert是檢測網(wǎng)絡(luò)丟包及時延的有效手段,同時可以幫助管理員發(fā)現(xiàn)網(wǎng)絡(luò)中的路由環(huán)路。
Tracert常用的配置參數(shù)說明如下:
- -a source-ip-address指定tracert報文的源地址。
- -f first-ttl指定初始TTL。 缺省值是1。
- -m max-ttl指定***TTL。 缺省值是30。
- -name使能顯示每一跳的主機名。
- -p port指定目的主機的UDP端口號。