tft每日頭條

 > 生活

 > icmp協議簡單理解

icmp協議簡單理解

生活 更新时间:2024-07-22 14:21:52

最近跟大家分享了一些網絡故障排查的命令,今天給大家分享一下,這些命令背後的協議(ICMP)以及原理,隻有了解了原理,我們才能更好的用好這些命令


什麼是ICMP協議

Internet控制報文協議ICMP(Internet Control Message Protocol)是網絡層的一個重要協議。ICMP協議用來在網絡設備間傳遞各種差錯和控制信息,它對于收集各種網絡信息、診斷和排除各種網絡故障具有至關重要的作用。使用基于ICMP的應用時,需要對ICMP的工作原理非常熟悉。

ICMP的作用

ICMP是TCP/IP協議簇的核心協議之一,它用于在IP網絡設備之間發送控制報文,傳遞差錯、控制、查詢等信息。

icmp協議簡單理解(詳細了解ICMP協議)1

ICMP的報文
  • ICMP有2個報文,分别是ICMP Echo Request和ICMP Echo Reply報文;
  • ICMP Echo消息常用于診斷源和目的之間的網絡連通性,還可以提供其他信息,如報文往返時間等。

icmp協議簡單理解(詳細了解ICMP協議)2

ICMP報文

  • 當網絡設備無法訪問目标時,會自動發送ICMP目的不可達報文到發送端設備。

icmp協議簡單理解(詳細了解ICMP協議)3

ICMP錯誤報告

ICMP定義了各種錯誤消息,用于診斷網絡連接性問題;根據這些錯誤消息,源設備可以判斷出數據傳輸失敗的原因。比如,如果網絡中發生了環路,導緻報文在網絡中循環,最終TTL超時,這種情況下網絡設備會發送TTL超時消息給發送端設備。又比如如果目的不可達,則中間的網絡設備會發送目的不可達消息給發送端設備。目的不可達的情況有多種,如果是網絡設備無法找到目的網絡,則發送目的網絡不可達消息;如果網絡設備無法找到目的網絡中的目的主機,則發送目的主機不可達消息。

ICMP的應用——Ping

icmp協議簡單理解(詳細了解ICMP協議)4

Ping

ICMP的一個典型應用是Ping。Ping是檢測網絡連通性的常用工具,同時也能夠收集其他相關信息。用戶可以在Ping命令中指定不同參數,如ICMP報文長度、發送的ICMP報文個數、等待回複響應的超時時間等,設備根據配置的參數來構造并發送ICMP報文,進行Ping測試。

Ping常用的配置參數說明如下:

1. -a source-ip-address指定發送ICMP Echo-REQUEST報文的源IP地址。如果不指定源IP地址,将采用出接口的IP地址作為ICMP ECHO-REQUEST報文發送的源地址。

2. -c count指定發送ICMP ECHO-REQUEST報文次數。缺省情況下發送5個ICMP ECHO-REQUEST報文。

3. -h ttl-value指定TTL的值。缺省值是255。

4. -t timeout指定發送完ICMP ECHO-REQUEST後,等待ICMP ECHO-REPLY的超時時間。

Ping命令的輸出信息中包括目的地址、ICMP報文長度、序号、TTL值、以及往返時間。序号是包含在Echo回複消息(Type=0)中的可變參數字段,TTL和往返時間包含在消息的IP頭中。

ICMP的應用——Tracert

icmp協議簡單理解(詳細了解ICMP協議)5

Tracert

ICMP的另一個典型應用是Tracert。Tracert基于報文頭中的TTL值來逐跳跟蹤報文的轉發路徑。為了跟蹤到達某特定目的地址的路徑,源端首先将報文的TTL值設置為1。該報文到達第一個節點後,TTL超時,于是該節點向源端發送TTL超時消息,消息中攜帶時間戳。然後源端将報文的TTL值設置為2,報文到達第二個節點後超時,該節點同樣返回TTL超時消息,以此類推,直到報文到達目的地。這樣,源端根據返回的報文中的信息可以跟蹤到報文經過的每一個節點,并根據時間戳信息計算往返時間。Tracert是檢測網絡丢包及時延的有效手段,同時可以幫助管理員發現網絡中的路由環路。

Tracert常用的配置參數說明如下:

1.-a source-ip-address指定tracert報文的源地址。

2.-f first-ttl指定初始TTL。缺省值是1。

3.-m max-ttl指定最大TTL。缺省值是30。

4.-name使能顯示每一跳的主機名。

5.-p port指定目的主機的UDP端口号。

Tracert顯示數據包在網絡傳輸過程中所經過的每一跳

icmp協議簡單理解(詳細了解ICMP協議)6

源端(RTA)向目的端(主機B)發送一個UDP報文,TTL值為1,目的UDP端口号是大于30000的一個數,因為在大多數情況下,大于30000的UDP端口号是任何一個應用程序都不可能使用的端口号。

第一跳(RTB)收到源端發出的UDP報文後,判斷出報文的目的IP地址不是本機IP地址,将TTL值減1後,判斷出TTL值等于0,則丢棄報文并向源端發送一個ICMP超時(Time Exceeded)報文(該報文中含有第一跳的IP地址10.0.0.2),這樣源端就得到了RTB的地址。

源端收到RTB的ICMP超時報文後,再次向目的端發送一個UDP報文,TTL值為2。

第二跳(RTC)收到源端發出的UDP報文後,回應一個ICMP超時報文,這樣源端就得到了RTC的地址(20.0.0.2)。

以上過程不斷進行,直到目的端收到源端發送的UDP報文後,判斷出目的IP地址是本機IP地址,則處理此報文。根據報文中的目的UDP端口号尋找占用此端口号的上層協議,因目的端沒有應用程序使用該UDP端口号,則向源端返回一個ICMP端口不可達(Destination Unreachable)報文。

源端收到ICMP端口不可達報文後,判斷出UDP報文已經到達目的端,則停止Tracert程序,從而得到數據報文從源端到目的端所經曆的路徑(10.0.0.2;20.0.0.2;30.0.0.2)。


最後,請大家關注我,我将持續分享免費的電腦知識給大家,謝謝!#職場達人煉成記#

,

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

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

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