ICMP網路控制資訊協議(二)
ICMP重定向
•R1傳送一個重定向報文給主機172.16.1.1用R2作為閘道器去到達10.1.1.1
•何時傳送重定向報文:
1.資訊包進入路由器的介面是資訊包被髮送的同一個介面。
2.IP源地址的子網或網路是路由資訊包的下一跳IP地址的相同子網或網路。
3.資料包不來源路由。
4.配置核心傳送重定向。 (預設情況下, Cisco路由器傳送ICMP重定向。 介面子命令no ip redirects可以被用於禁用ICMP重定向。)
ICMP重定向的過程:
實驗拓撲,接上一篇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 抓包顯示如下:
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