国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

哈工大計算機網(wǎng)絡(luò)課程網(wǎng)絡(luò)層協(xié)議詳解之:互聯(lián)網(wǎng)控制報文協(xié)議(ICMP)

這篇具有很好參考價值的文章主要介紹了哈工大計算機網(wǎng)絡(luò)課程網(wǎng)絡(luò)層協(xié)議詳解之:互聯(lián)網(wǎng)控制報文協(xié)議(ICMP)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

哈工大計算機網(wǎng)絡(luò)課程網(wǎng)絡(luò)層協(xié)議詳解之:互聯(lián)網(wǎng)控制報文協(xié)議(ICMP)

在互聯(lián)網(wǎng)中,IP數(shù)據(jù)報的傳輸很容易出現(xiàn)差錯,當(dāng)出現(xiàn)差錯時,最簡單的處理辦法就是對該IP數(shù)據(jù)報進行丟棄。但是,并不是直接丟棄就完了,為了讓源主機感知到數(shù)據(jù)報出現(xiàn)差錯,當(dāng)數(shù)據(jù)報被丟棄時,IP網(wǎng)絡(luò)會借助于ICMP協(xié)議,向發(fā)送數(shù)據(jù)報的源主機發(fā)送一個ICMP差錯報文。本節(jié)詳細介紹ICMP協(xié)議的原理和報文格式、以及用途。

互聯(lián)網(wǎng)控制報文協(xié)議ICMP

ICMP協(xié)議支持主機或路由器:

  • 差錯(或異常)報告。
  • 主動發(fā)送一些特殊的ICMP報文對網(wǎng)絡(luò)進行探詢。

實現(xiàn)上述功能的原理,主要是借助于發(fā)送一些特定的ICMP報文。根據(jù)ICMP協(xié)議所實現(xiàn)的功能,發(fā)送的ICMP報文可以主要分為以下兩大類:

  • 差錯報告報文(5種)

    • 目的不可達。 當(dāng)IP數(shù)據(jù)報已經(jīng)到達目的主機,但無法實現(xiàn)成功交付的場景(比如目的端口有異常),此時IP數(shù)據(jù)報會被丟棄,并向源主機發(fā)送這種“目的不可達”的ICMP報文。
    • 源抑制(Source Quench)。 該報文與網(wǎng)絡(luò)中的擁塞控制相關(guān)。當(dāng)路由器發(fā)現(xiàn)自己緩存已滿,導(dǎo)致新到的IP數(shù)據(jù)報會被丟棄時,會主動向源主機發(fā)送“源抑制”報文,希望源主機在收到該ICMP報文后,降低其自身數(shù)據(jù)發(fā)送速率。
    • 超時/超期。 與IP數(shù)據(jù)報格式種的TTL字段相關(guān)。IP數(shù)據(jù)報中的TTL字段定義了該報文能夠被路由器轉(zhuǎn)發(fā)的次數(shù),每轉(zhuǎn)發(fā)一次,則TTL減一。當(dāng)減為0時,會被路由器丟棄,并向源主機發(fā)送一個“超時/超期”ICMP報文,報告此類差錯。
    • 參數(shù)問題。 當(dāng)路由器在轉(zhuǎn)發(fā)一個IP數(shù)據(jù)報時,如果發(fā)現(xiàn)IP數(shù)據(jù)報中存在參數(shù)異常,則可以選擇丟棄,并向源主機發(fā)送一個“參數(shù)問題”報文,報告此類差錯。
    • 重定向(redirect)。 當(dāng)路由器收到一個IP數(shù)據(jù)報,而這個IP數(shù)據(jù)報所要到達的目的網(wǎng)絡(luò)不應(yīng)該由這個路由器進行轉(zhuǎn)發(fā),而應(yīng)該由這個網(wǎng)絡(luò)連接的另一個路由器進行轉(zhuǎn)發(fā)的話。此時,路由器可以向源主機發(fā)送一個“重定向”報文,讓源主機將到達這個網(wǎng)絡(luò)的IP數(shù)據(jù)報重定向到另一個網(wǎng)關(guān)上去。
  • 網(wǎng)絡(luò)探詢報文(2種)。 由主機或路由器主動發(fā)送探詢網(wǎng)絡(luò)狀態(tài)。

    • 回聲(Echo)請求與應(yīng)答報文(Reply)。

      當(dāng)主機向探詢到另一個主機之間的網(wǎng)絡(luò)是否通達,可以發(fā)送回聲請求報文,通過接收回聲報文的響應(yīng),來探測網(wǎng)絡(luò)是否可達。此類報文最典型的,也就最經(jīng)常使用的就是Ping工具。

    • 時間戳請求與應(yīng)答報文。

典型ICMP報文

典型ICMP報文示例如所示:

圖中可以看出,ICMP報文是通過一個類型+編碼的形式來標(biāo)識不同類型報文,不同類型的報文對應(yīng)了各自表示的含義。

哈工大計算機網(wǎng)絡(luò)課程網(wǎng)絡(luò)層協(xié)議詳解之:互聯(lián)網(wǎng)控制報文協(xié)議(ICMP),計算機網(wǎng)絡(luò),計算機網(wǎng)絡(luò),網(wǎng)絡(luò),智能路由器

ICMP例外情況

并不是所有IP數(shù)據(jù)報的出錯,都會發(fā)送ICMP報文,下面是幾種不發(fā)送ICMP差錯報文的特殊情況:

  • 對ICMP差錯報告報文不再發(fā)送ICMP差錯報告報文。

    ICMP報文實際上是要封裝到IP數(shù)據(jù)報中進行傳輸?shù)?,?dāng)一個IP數(shù)據(jù)報在傳輸過程中出錯了,就會向源主機發(fā)送一個ICMP差錯報文。這個差錯報文會再次封裝到另外一個IP數(shù)據(jù)報中,如果這個數(shù)據(jù)報出錯了,就不再發(fā)送這個數(shù)據(jù)報的ICMP差錯報文。

  • 除第1個IP數(shù)據(jù)報分片外,對所有后續(xù)分片均不發(fā)送ICMP差錯報告報文。

  • 對所有多播IP數(shù)據(jù)報均不發(fā)送ICMP差錯報告報文。

  • 對具有特殊地址(如127.0.0.0或0.0.0.0)的IP數(shù)據(jù)報不發(fā)送ICMP差錯報告報文。

其次,還有一些原始的ICMP報文,在現(xiàn)在的互聯(lián)網(wǎng)中已經(jīng)不再使用了:

  • 信息請求與應(yīng)答報文
  • 子網(wǎng)掩碼請求和應(yīng)答報文
  • 路由器詢問和通告報文

ICMP報文格式

前面我們提到,ICMP報文是需要封裝到IP數(shù)據(jù)報中進行傳輸?shù)?。因此,ICMP報文也是由首部和數(shù)據(jù)部分進行傳輸?shù)?。首部的?個字節(jié)都是一樣的,包括了類型、代碼、校驗和等信息。數(shù)據(jù)部分的長度取決于不同的ICMP報文類型。

哈工大計算機網(wǎng)絡(luò)課程網(wǎng)絡(luò)層協(xié)議詳解之:互聯(lián)網(wǎng)控制報文協(xié)議(ICMP),計算機網(wǎng)絡(luò),計算機網(wǎng)絡(luò),網(wǎng)絡(luò),智能路由器

下面以ICMP差錯報告報文的報文格式來說明:

哈工大計算機網(wǎng)絡(luò)課程網(wǎng)絡(luò)層協(xié)議詳解之:互聯(lián)網(wǎng)控制報文協(xié)議(ICMP),計算機網(wǎng)絡(luò),計算機網(wǎng)絡(luò),網(wǎng)絡(luò),智能路由器

我們知道,ICMP差錯報告報文是由于一個IP數(shù)據(jù)報在傳輸過程中差錯或異常,此時該IP數(shù)據(jù)報會被丟棄,并向源主機發(fā)送ICMP差錯報告報文。

在差錯報告報文中,實際上,需要封裝出差錯的這個IP數(shù)據(jù)報的完整的IP首部,以及前8個字節(jié)的數(shù)據(jù)。為什么要這樣做呢?

假設(shè)這個出差錯的IP數(shù)據(jù)報封裝的是一個UDP數(shù)據(jù)段,而對于UDP數(shù)據(jù)段來說,前8個字節(jié)包含了完整的UDP首部。 此時,對應(yīng)構(gòu)造的ICMP差錯報文就會把完整的IP首部+UDP首部一起封裝,返回給源主機。源主機就非常清晰地知道源和目的IP地址,端口號等重要信息。

假設(shè)這個出差錯地IP數(shù)據(jù)報封裝地是一個TCP數(shù)據(jù)段,對于TCP數(shù)據(jù)段來說,前8個字節(jié)不是完整地TCP首部(TCP首部完整應(yīng)該是20個字節(jié))。但是,TCP段首部前8個字節(jié)包含了重要的源端口號,目的端口號信息,有了這些信息,仍然能很好的還原出差錯的IP數(shù)據(jù)報訪問的是什么應(yīng)用。

因此,綜上所示,ICMP報文封裝差錯信息時,數(shù)據(jù)字段只封裝了差錯IP數(shù)據(jù)部分的前8個字節(jié)的數(shù)據(jù)。

進一步的,這些差錯信息也要封裝到IP數(shù)據(jù)報中,因此,上述差錯IP數(shù)據(jù)報的首部,以及數(shù)據(jù)部分前8個字節(jié),再加上ICMP協(xié)議定義的前8字節(jié),共同構(gòu)成了ICMP差錯報文IP數(shù)據(jù)報的數(shù)據(jù)部分,最后添加上IP首部,即構(gòu)成了最終封裝好ICMP差錯報文的IP數(shù)據(jù)報格式。

ICMP的應(yīng)用舉例:Traceroute

Traceroute工具主要是用來進行網(wǎng)絡(luò)路徑跟蹤的,比如從源主機出發(fā)到達目的主機,經(jīng)過哪些路由器等信息。

百度百科

traceroute (Windows 系統(tǒng)下是tracert) 命令利用ICMP 協(xié)議定位您的計算機和目標(biāo)計算機之間的所有路由器。TTL 值可以反映數(shù)據(jù)包經(jīng)過的路由器或網(wǎng)關(guān)的數(shù)量,通過操縱獨立ICMP 呼叫報文的TTL 值和觀察該報文被拋棄的返回信息,traceroute命令能夠遍歷到數(shù)據(jù)包傳輸路徑上的所有路由器。

Traceroute實現(xiàn)的基本原理大概如下所示:

  • 源主機向目的主機發(fā)送一系列UDP數(shù)據(jù)報。
    • 在UDP數(shù)據(jù)報封裝到IP數(shù)據(jù)報時,設(shè)置第一組IP數(shù)據(jù)報的TTL=1
    • 發(fā)送第二組IP數(shù)據(jù)報時設(shè)置TTL=2,以此類推。
    • 同時,確保目的端口號為目的主機不可能使用的端口號。目的是為了出差錯,從而獲取ICMP報文返回的信息。
  • 當(dāng)?shù)趎組數(shù)據(jù)報(TTL=n)到達第n個路由器時:
    • 此時TTL=n-n=0,路由器會將該數(shù)據(jù)報丟棄
    • 向源主機發(fā)送ICMP報文(type=11, code=0)
    • ICMP報文攜帶路由器名稱和IP地址信息
    • 此時,源主機就探測到了第n個路由器的信息。
  • 當(dāng)ICMP報文返回源數(shù)據(jù)時,記錄RTT
  • 停止準(zhǔn)則:
    • UDP數(shù)據(jù)報最終到達目的主機
    • 因為設(shè)置的目的端口是目的主機不可用的,勢必目的主機會返回“目的端口不可達”類型的ICMP報文(type=3,code=3)
    • 當(dāng)源主機收到這樣的ICMP報文時,就知道已經(jīng)探測到了最終的目的主機,探測路徑結(jié)束,并獲取了整個鏈路的信息

哈工大計算機網(wǎng)絡(luò)課程網(wǎng)絡(luò)層協(xié)議詳解之:互聯(lián)網(wǎng)控制報文協(xié)議(ICMP),計算機網(wǎng)絡(luò),計算機網(wǎng)絡(luò),網(wǎng)絡(luò),智能路由器文章來源地址http://www.zghlxwxcb.cn/news/detail-523588.html

到了這里,關(guān)于哈工大計算機網(wǎng)絡(luò)課程網(wǎng)絡(luò)層協(xié)議詳解之:互聯(lián)網(wǎng)控制報文協(xié)議(ICMP)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包