ICMP
Internet 控制報(bào)文協(xié)議ICMP(Internet Control Message Protocol)是網(wǎng)絡(luò)層的一個(gè)重要協(xié)議旨涝。ICMP協(xié)議用來在網(wǎng)絡(luò)設(shè)備間傳遞各種差錯(cuò)和控制信息名挥,它對(duì)于收集各種網(wǎng)絡(luò)信息甫贯、診斷和排除各種網(wǎng)絡(luò)故障具有至關(guān)重要的作用。使用基于ICMP的應(yīng)用時(shí)屁倔,需要對(duì)ICMP的工作原理非常熟悉泥兰。
- 報(bào)文頭內(nèi)容
TYPE | CODE | 描述 |
---|---|---|
8 | 0 | Echo request |
0 | 0 | Echo Reply |
3 | 0 | 網(wǎng)絡(luò)不可達(dá) |
3 | 1 | 主機(jī)不可達(dá) |
3 | 2 | 協(xié)議不可達(dá) |
3 | 3 | 端口不可達(dá) |
5 | 0 | 重定向 |
checksum:校驗(yàn)和
Identifier:報(bào)文ID
Sequence number
Sequence number LE
ICMP重定向報(bào)文super vlan再研究。
差錯(cuò)檢測(cè)
ICMP Echo Request 和 ICMP Echo reply分別用來查詢和相應(yīng)某些信息昼浦,進(jìn)行差錯(cuò)檢測(cè)。錯(cuò)誤報(bào)告
當(dāng)網(wǎng)絡(luò)設(shè)備無法訪問目標(biāo)時(shí)筒主,會(huì)自動(dòng)發(fā)送ICMP目的不可達(dá)報(bào)文到發(fā)送端設(shè)備座柱。-
ping參數(shù)
- a 攜帶源地址
- c 共多少次
- h 指定TTL值
- t 超時(shí)時(shí)間默認(rèn)2000ms
Tracert 跟蹤路徑
ICMP的另一個(gè)經(jīng)典應(yīng)用是Tracert迷帜。Tracert基于報(bào)文頭中的TTL值來逐跳跟蹤報(bào)文的轉(zhuǎn)發(fā)路徑。為了跟蹤到達(dá)某特定的地址的路徑色洞,源端首先將報(bào)文的TTL值設(shè)置為1.該報(bào)文到達(dá)第一個(gè)節(jié)點(diǎn)后,TTL超時(shí)冠胯,于是該節(jié)點(diǎn)向源端發(fā)送TTL超時(shí)消息火诸,消息中攜帶時(shí)間戳。接下來源端將TTL值設(shè)置為2荠察,以此類推直到報(bào)文到達(dá)目的地置蜀。這樣源端根據(jù)返回的報(bào)文中的信息可以跟蹤到報(bào)文經(jīng)過的每一個(gè)節(jié)點(diǎn),并根據(jù)時(shí)間戳信息計(jì)算往返時(shí)間悉盆。Tracert是檢測(cè)網(wǎng)絡(luò)丟包及時(shí)延的有效手段盯荤,也可以發(fā)現(xiàn)網(wǎng)絡(luò)中的路由環(huán)路。
-
測(cè)試Tracert
使用三個(gè)路由器焕盟,配置成不同網(wǎng)段秋秤,設(shè)置靜態(tài)路由。
image.png
- 路由1
<Huawei>system-view
[Huawei]sysname r1
[r1]interface g0/0/0
[r1-GigabitEthernet0/0/0]ip address 12.1.1.1 24
[r1]ip route-static 23.1.1.0 24 g0/0/0 12.1.1.2
- 路由2
[r2]interface g0/0/0
[r2-GigabitEthernet0/0/0]ip address 12.1.1.2 24
[r2]interface g0/0/1
[r2-GigabitEthernet0/0/1]ip add 23.1.1.2 24
[r2-GigabitEthernet0/0/1]q
[r2]ip route-static 23.1.1.0 24 g0/0/1 23.1.1.1
- 路由3
[r3]interface g0/0/0
[r3-GigabitEthernet0/0/0]ip add 23.1.1.1 24
[r3]ip route-static 12.1.1.1 24 g0/0/0 23.1.1.2
<r1>tracert 23.1.1.1
traceroute to 23.1.1.1(23.1.1.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 12.1.1.2 60 ms 30 ms 10 ms
2 23.1.1.1 40 ms 30 ms 20 ms
開始抓包進(jìn)行測(cè)試
- tracert 嘗試使用UDP 目的端口為33434 并設(shè)置TTL為1
- 由經(jīng)過的一個(gè)轉(zhuǎn)發(fā)設(shè)備返回ICMP差錯(cuò)報(bào)文(Type:11 Code:0)提示TTL值已到生命周期脚翘。被源端收到并由tracert記錄
- 圖上的第四次請(qǐng)求才使用UDP請(qǐng)求第二個(gè)節(jié)點(diǎn)灼卢,并將TTL值設(shè)置為1
問題:
- 為什么會(huì)發(fā)出三次UDP請(qǐng)求?我們可以從IP協(xié)議的ID字段看到依次遞增来农,為什么tracert要向第一個(gè)節(jié)點(diǎn)發(fā)出三個(gè)UDP報(bào)文鞋真?第四個(gè)報(bào)文才向第二個(gè)節(jié)點(diǎn)發(fā)起?
經(jīng)過一番探索果然是來自于traceroute這三次返回延時(shí)的問題沃于,如果我加上參數(shù)q 設(shè)置探測(cè)包數(shù)量為1 就好了