1. 程式人生 > >ICMP網路控制資訊協議(二)

ICMP網路控制資訊協議(二)

ICMP重定向

R1傳送一個重定向報文給主機172.16.1.1R2作為閘道器去到達10.1.1.1

圖片.png

何時傳送重定向報文:

1.資訊包進入路由器的介面是資訊包被髮送的同一個介面。

2.IP源地址的子網或網路是路由資訊包的下一跳IP地址的相同子網或網路。

3.資料包不來源路由。

4.配置核心傳送重定向。 (預設情況下, Cisco路由器傳送ICMP重定向。 介面子命令no ip redirects可以被用於禁用ICMP重定向。)


ICMP重定向的過程:

圖片.png


實驗拓撲,接上一篇ICMP網路控制資訊協議


R3:

ip route 14.1.1.0 255.255.255.0 10.1.1.2   //去往R4 14.1.1.4的路由下一跳指向R2


R2:

ip route 14.1.1.0 255.255.255.0 10.1.1.1   //去往R4 14.1.1.4的路由下一跳指向R1


R4:

ip route 10.1.1.0 255.255.255.0 14.1.1.1 


測試:

R3#debug ip packet detail
IP packet debugging is on (detailed)
R3#

R3#ping 14.1.1.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 14.1.1.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/5 ms


debug 資訊顯示如下:

*Nov 16 11:50:03.152: IP: tableid=0, s=10.1.1.2 (Ethernet0/2), d=10.1.1.3 (Ethernet0/2), routed via RIB
*Nov 16 11:50:03.152: IP: s=10.1.1.2 (Ethernet0/2), d=10.1.1.3 (Ethernet0/2), len 56, rcvd 3
*Nov 16 11:50:03.152:     ICMP type=5, code=1
*Nov 16 11:50:03.152: IP: s=10.1.1.2 (Ethernet0/2), d=10.1.1.3, len 56, stop process pak for forus packet
*Nov 16 11:50:03.153:     ICMP type=5, code=1

通過wireshark 抓包顯示如下:

圖片.png

圖片.png



ICMP的另一個典型應用是traceroute

traceroute基於報文頭中的TTL值來逐跳跟蹤報文的轉發路徑。

為了跟蹤到達某特定目的地址的路徑,源端首先將報文的TTL值設定為1。該報文到達第一個節點後,TTL超時,於是該節點向源端傳送TTL超時訊息,訊息中攜帶時間戳。然後源端將報文的TTL值設定為2,報文到達第二個節點後超時,該節點同樣返回TTL超時訊息,以此類推,直到報文到達目的地。這樣,源端根據返回的報文中的資訊可以跟蹤到報文經過的每一個節點,並根據時間戳資訊計算往返時間。

traceroute是檢測網路丟包及時延的有效手段,同時可以幫助管理員發現網路中的路由環路。


測試:

在R3上進行traceroute

R3#traceroute 14.1.1.4 numeric
Type escape sequence to abort.
Tracing the route to 14.1.1.4
VRF info: (vrf in name/id, vrf out name/id)
  1 10.1.1.2 1 msec 0 msec 1 msec
  2 10.1.1.1 1 msec 0 msec 1 msec
  3 14.1.1.4 0 msec *  1 msec


圖片.png