目錄
- 前言
- ICMP協(xié)議概述
- ICMP協(xié)議實(shí)現(xiàn)原理
- ICMP數(shù)據(jù)包的格式
- 常見的ICMP報(bào)文
- 參考資料
前言
參照清華大學(xué)出版社-羅軍周主編的《TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù)》進(jìn)行學(xué)習(xí)胎挎。
本篇主要參考第五章:《ICMP協(xié)議》
用于測(cè)試網(wǎng)絡(luò)或者檢測(cè)IP數(shù)據(jù)包傳輸過程中的各種錯(cuò)誤皂林、并通知源地址趟脂。
ICMP協(xié)議概述
因?yàn)镮P協(xié)議是不可靠的傳輸服務(wù)荣暮、因此源地址發(fā)出的IP數(shù)據(jù)包很可能無法達(dá)到目標(biāo)地址(目標(biāo)地址不存在挽鞠、過程中某鏈路中斷等)既峡。
這時(shí)ICMP協(xié)議就能檢測(cè)IP數(shù)據(jù)包傳輸過程中的各種錯(cuò)誤预茄、并通知源地址隔显。
需要注意的是:ICMP被動(dòng)觸發(fā)一定是出錯(cuò)崎溃、但主動(dòng)觸發(fā)可能是測(cè)試蜻直。(比如type = 13/14 type = 8/0)
ICMP協(xié)議實(shí)現(xiàn)原理
讓發(fā)現(xiàn)錯(cuò)誤的路由器、向數(shù)據(jù)包的(通過IP數(shù)據(jù)包的信息獲取)源主機(jī)地址發(fā)送一個(gè)ICMP數(shù)據(jù)包袁串、并且通過ICMP數(shù)據(jù)包報(bào)告出錯(cuò)的原因袭蝗。
需要注意的是。ICMP協(xié)議是IP協(xié)議的補(bǔ)充般婆、ICMP與IP協(xié)議位于同一個(gè)層 次(IP層)到腥,但ICMP報(bào)文是封裝在IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分進(jìn)行傳輸?shù)?/em>。但是蔚袍、這次IP傳輸如果出錯(cuò)乡范、ICMP協(xié)議規(guī)定、將廢棄這次ICMP發(fā)送啤咽。
ICMP數(shù)據(jù)包的格式
格式
報(bào)文種類:
ICMP報(bào)文雖然細(xì)分為很多類晋辆,但總的來看可以分為如圖所示的三大 類:差錯(cuò)報(bào)告、控制報(bào)文和請(qǐng)求應(yīng)答報(bào)文宇整。
類型
0 響應(yīng)應(yīng)答(ECHO-REPLY)
-
3 不可到達(dá)
5-3 4 源抑制
5 重定向
8 響應(yīng)請(qǐng)求(ECHO-REQUEST)
11 超時(shí)
12 參數(shù)失靈
13 時(shí)間戳請(qǐng)求
14 時(shí)間戳應(yīng)答
15 信息請(qǐng)求(*已作廢)
16 信息應(yīng)答(*已作廢)
17 地址掩碼請(qǐng)求
18 地址掩碼應(yīng)答
下面是幾種常見的ICMP報(bào)文:
響應(yīng)請(qǐng)求
我們?nèi)粘J褂米疃嗟膒ing瓶佳,就是響應(yīng)請(qǐng)求(Type=8)和應(yīng)答(Type=0),一臺(tái)主機(jī)向一個(gè)節(jié)點(diǎn)發(fā)送一個(gè)Type=8的ICMP報(bào)文鳞青,如果途中沒有異常(例如被路由器丟棄霸饲、目標(biāo)不回應(yīng)ICMP或傳輸失敗)臂拓,則目標(biāo)返回Type=0的ICMP報(bào)文厚脉,說明這臺(tái)主機(jī)存在,更詳細(xì)的tracert通過計(jì)算ICMP報(bào)文通過的節(jié)點(diǎn)來確定主機(jī)與目標(biāo)之間的網(wǎng)絡(luò)距離胶惰。
目標(biāo)不可到達(dá)傻工、源抑制和超時(shí)報(bào)文
這三種報(bào)文的格式是一樣的:
目標(biāo)不可到達(dá)報(bào)文(Type=3)在路由器或主機(jī)不能傳遞數(shù)據(jù)報(bào)時(shí)使用,例如我們要連接對(duì)方一個(gè)不存在的系統(tǒng)端口(端口號(hào)小于1024)時(shí)孵滞,將返回Type=3中捆、Code=3的ICMP報(bào)文,它要告訴我們:“嘿坊饶,別連接了泄伪,我不在家的!”幼东,常見的不可到達(dá)類型還有網(wǎng)絡(luò)不可到達(dá)(Code=0)臂容、主機(jī)不可到達(dá)(Code=1)、協(xié)議不可到達(dá)(Code=2)等根蟹。
源抑制則充當(dāng)一個(gè)控制流量的角色脓杉,它通知主機(jī)減少數(shù)據(jù)報(bào)流量,由于ICMP沒有恢復(fù)傳輸?shù)膱?bào)文简逮,所以只要停止該報(bào)文球散,一定時(shí)間后主機(jī)就會(huì)逐漸恢復(fù)傳輸速率。
無連接方式網(wǎng)絡(luò)的問題就是數(shù)據(jù)報(bào)文丟失散庶,或者長(zhǎng)時(shí)間在網(wǎng)絡(luò)游蕩而找不到目標(biāo)蕉堰,或者擁塞導(dǎo)致主機(jī)在規(guī)定時(shí)間內(nèi)無法重組數(shù)據(jù)報(bào)分段,這時(shí)就要觸發(fā)ICMP超時(shí)報(bào)文的產(chǎn)生悲龟。超時(shí)報(bào)文的代碼域有兩種取值:Code=0表示傳輸超時(shí)屋讶,Code=1表示重組分段超時(shí)。
時(shí)間戳
時(shí)間戳請(qǐng)求報(bào)文(Type=13)和時(shí)間戳應(yīng)答報(bào)文(Type=14)用于測(cè)試兩臺(tái)主機(jī)之間數(shù)據(jù)報(bào)來回一次的傳輸時(shí)間须教。傳輸時(shí)皿渗,主機(jī)填充原始時(shí)間戳,接收方收到請(qǐng)求后填充接收時(shí)間戳后以Type=14的報(bào)文格式返回轻腺,發(fā)送方計(jì)算這個(gè)時(shí)間差乐疆。一些系統(tǒng)不響應(yīng)這種報(bào)文。
-
關(guān)于最后一個(gè)字段
對(duì)于由于錯(cuò)誤被動(dòng)生成的ICMP報(bào)文中還需要加上源IP數(shù)據(jù)包的IP頭部以及數(shù)據(jù)部分的前64位贬养、以源主機(jī)方便定位挤土。
例如:3、不可到達(dá)误算。4仰美、源抑制。5儿礼、重定向筒占。11、超時(shí)蜘犁。12翰苫、參數(shù)失靈。