tft每日頭條

 > 圖文

 > 互聯層lcmp協議主要作用

互聯層lcmp協議主要作用

圖文 更新时间:2024-12-05 04:58:40
ICMP 協議

在之前網絡層的介紹中,我們知道 IP 提供一種無連接的、盡力而為的服務。這就意味着無法進行流量控制與差錯控制。因此在 IP 數據報的傳輸過程中,出現各種的錯誤是在所難免的,為了通知源主機 IP 數據報傳輸過程中遇到的問題,因此設計了因特網控制報文協議(ICMP)。

雖然說 ICMP 協議将 IP 協議封裝在内部,所以大多數人将 ICMP 視為傳輸層的協議,但實際上 ICMP 是 IP 協議的重要組成部分,所以将其放在網絡層更為合适。

ICMP 的報文一般有兩種,查詢報文和查詢報文

查詢報文:例如我們在使用 Ping 命令,子網掩碼查詢,時間戳查詢等情況時,都會發送查詢報文。

差錯報文:而差錯報文是在當對應的路由器或者終端設備收到查詢報文後,産生了一系列問題。把出現的問題,回複給發起者的報文就是差錯報文。

但考慮到整體網絡資源的占用上,在如下情況下,是不會産生差錯報文的:

  1. 差錯報文不會産生差錯報文 - 防止 ICMP 無限産生和傳送差錯報文
  2. 目的地址是廣播或多播的 IP 數據包
  3. 鍊路層廣播的數據包
  4. 不是 IP 分片的第一片 - IP 是盡力而為,自然不需要可靠性
  5. 源地址不是某個主機的數據包
ICMP 類型

由于 ICMP 本身就是為了彌補 IP 協議不可靠的特性,起到排錯目的,所以它的 Header 并不複雜。

互聯層lcmp協議主要作用(CCNA-Part7)1

正如圖中所示的,對于 ICMP Header 來說,比較重要的就是 Type (8 bit)和 Code (8 bit) 字段,用來表示各種錯誤的情況。

其中完整的介紹可以參考這篇 wiki,下面就介紹上常用的部分。

互聯層lcmp協議主要作用(CCNA-Part7)2

下面我們抓個包,來看一下。

Ping 命令測試網絡連通性

這裡在主機上 Ping 下百度,通過 Wireshark 抓到的數據包如下:

互聯層lcmp協議主要作用(CCNA-Part7)3

先看一下 Echo Request 包,對應 Type 為8,Code 為0:

互聯層lcmp協議主要作用(CCNA-Part7)4

Echo Reply 包 - Type 為 0,Code 為 0:

互聯層lcmp協議主要作用(CCNA-Part7)5

traceroute 測試網絡連通性

在 IP 協議中,為了防止出現環路而設置了 TTL 字段。該字段也在 traceroute 中起到了很大的作用,通過設置 TTL 的數值,來獲取數據報的傳遞過程。

TTL:當 IP 數據包進行傳送時,每經過一個路由器,TTL 指就會減一,當 TTL = 0 時,該 IP 數據報會被丢棄。

下面就來了解下 Traceroute 的通信過程,用到的拓撲如下:

互聯層lcmp協議主要作用(CCNA-Part7)6

當主機收到目的主機的 IP 後,會給目的主機發送一個 TTL = 1 的 UDP 數據包。

互聯層lcmp協議主要作用(CCNA-Part7)7

而經過第一個路由器後,TTL - 1 變成 0.這時路由器會把數據報丢棄,然後把丢棄的數據包的 IP 頭部封裝起來,回複主機一個差錯報文。如下:

互聯層lcmp協議主要作用(CCNA-Part7)8

這個過程主機會發三次,也就是說會産生 3 個 TTL =1 的 UDP,如下

互聯層lcmp協議主要作用(CCNA-Part7)9

接着會在再次發送 3 個 TTL = 2 的 UDP 報文,如下

互聯層lcmp協議主要作用(CCNA-Part7)10

第二個路由器,會再次向主機發送一個差錯報文,如下:

互聯層lcmp協議主要作用(CCNA-Part7)11

這裡需要注意的:由于第二台路由器已經相當于是目的地,所以将數據包拆到傳輸層,但由于傳輸層上的端口标識了應用層的應用,而在該路由器上不在該應用,進而回複了端口不可達的報文。

由于圖中隻經過 2 個路由器,所以截止發送到 TTL = 2

互聯層lcmp協議主要作用(CCNA-Part7)12

并且我們可以從 TTL = 2 的回複差錯報文看出,隻有兩個差錯報文。其中有個差錯報文出現了丢失,并且沒有給主機回複差錯報文丢失的情況

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved