4、以太网基础知识——ICMP协议详解
返回總目錄
上一篇
下一篇
ICMP協(xié)議是一個網(wǎng)絡(luò)層協(xié)議。?
一個新搭建好的網(wǎng)絡(luò),往往需要先進行一個簡單的測試,來驗證網(wǎng)絡(luò)是否暢通;但是IP協(xié)議并不提供可靠傳輸。如果丟包了,IP協(xié)議并不能通知傳輸層是否丟包以及丟包的原因。?
所以我們就需要一種協(xié)議來完成這樣的功能–ICMP協(xié)議。
ICMP協(xié)議的功能
ICMP協(xié)議的功能主要有:?
1. 確認IP包是否成功到達目標地址?
2. 通知在發(fā)送過程中IP包被丟棄的原因?
如下圖所示:?
我們需要注意幾點:?
1.ICMP是基于IP協(xié)議工作的,但是它并不是傳輸層的功能,因此仍然把它歸結(jié)為網(wǎng)絡(luò)層協(xié)議?
2. ICMP只能搭配IPv4使用,如果是IPv6的情況下, 需要是用ICMPv6
ICMP的報文格式
ICMP報文包含在IP數(shù)據(jù)報中,IP報頭在ICMP報文的最前面。一個ICMP報文包括IP報頭(至少20字節(jié))、ICMP報頭(至少八字節(jié))和ICMP報文(屬于ICMP報文的數(shù)據(jù)部分)。當IP報頭中的協(xié)議字段值為1時,就說明這是一個ICMP報文。ICMP報頭如下圖所示。?
如下圖:?
?
字段說明:
ICMP大概分為兩類報文:?
一類是通知出錯原因 ;一類是用于診斷查詢?
類型及含義如下:
常見的ICMP報文
相應(yīng)請求
我們用的ping操作中就包括了相應(yīng)請求(類型字段值為8)和應(yīng)答(類型字段值為0)ICMP報文。?
過程:?
一臺主機向一個節(jié)點發(fā)送一個類型字段值為8的ICMP報文,如果途中沒有異常(如果沒有被路由丟棄,目標不回應(yīng)ICMP或者傳輸失敗),則目標返回類型字段值為0的ICMP報文,說明這臺主機存在。
目標不可達,源抑制和超時報文
這三種報文的格式是一樣的。?
(1)目標不可到達報文(類型值為3)在路由器或者主機不能傳遞數(shù)據(jù)時使用。?
例如:我們要連接對方一個不存在的系統(tǒng)端口(端口號小于1024)時,將返回類型字段值3、代碼字段值為3的ICMP報文。?
常見的不可到達類型還有網(wǎng)絡(luò)不可到達(代碼字段值為0)、主機不可達到(代碼字段值為1)、協(xié)議不可到達(代碼字段值為2)等等。?
(2)源抑制報文(類型字段值為4,代碼字段值為0)則充當一個控制流量的角色,通知主機減少數(shù)據(jù)報流量。由于ICMP沒有回復(fù)傳輸?shù)膱笪?#xff0c;所以只要停止該報文,主機就會逐漸恢復(fù)傳輸速率。?
(3)無連接方式網(wǎng)絡(luò)的問題就是數(shù)據(jù)報會丟失,或者長時間在網(wǎng)絡(luò)游蕩而找不到目標,或者擁塞導致主機在規(guī)定的時間內(nèi)無法重組數(shù)據(jù)報分段,這時就要觸發(fā)ICMP超時報文的產(chǎn)生。?
超時報文(類型字段值為11)的代碼域有兩種取值:代碼字段值為0表示傳輸超時,代碼字段值為1表示分段重組超時。
時間戳請求
時間戳請求報文(類型值字段13)和時間戳應(yīng)答報文(類型值字段14)用于測試兩臺主機之間數(shù)據(jù)報來回一次的傳輸時間。?
傳輸時,主機填充原始時間戳,接受方收到請求后填充接受時間戳后以類型值字段14的報文格式返回,發(fā)送方計算這個時間差。?
(有些系統(tǒng)不響應(yīng)這種報文)
ping命令
用法如下:?
?
注意, 此處 ping 的是域名,不是url,域名可以通過DNS解析成IP地址?
關(guān)于DNS可見這里寫鏈接內(nèi)容
ping命令的功能
(1)能驗證網(wǎng)絡(luò)的連通性?
(2)會統(tǒng)計響應(yīng)時間和TTL(IP包中的Time To Live,生存周期)?
那么如何驗證的呢??
(1)ping命令會先發(fā)送一個 ICMP Echo Request給對端?
(2)對端接收到之后, 會返回一個ICMP Echo Reply?
(3)若沒有返回,就是超時了,會認為指定的網(wǎng)絡(luò)地址不存在。
問題:
telnet是23端口,ssh是22端口,那么ping是什么端口??
答:ping命令是基于ICMP,是在網(wǎng)絡(luò)層。?
而端口號,是傳輸層的內(nèi)容。所以在ICMP中根本就不關(guān)注端口號這樣的信息。
traceroute
traceroute也是基于ICMP協(xié)議實現(xiàn)的。?
功能:?
打印出可執(zhí)行程序主機,一直到目標主機之前經(jīng)歷多少路由器。?
舉例如下:?
參考:https://www.cnblogs.com/iiiiher/p/8513748.html
?
?
總結(jié)
以上是生活随笔為你收集整理的4、以太网基础知识——ICMP协议详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3、以太网基础知识——ARP地址解析协议
- 下一篇: 通讯线路物理层编码类型总结(NRZ,ML