• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
              C++博客 :: 首頁 :: 新隨筆 ::  ::  :: 管理

            ICMP報文解析

            Posted on 2011-06-10 00:14 Kevin_Zhang 閱讀(1626) 評論(0)  編輯 收藏 引用 所屬分類: 萬花筒
                        ICMP概述
            •   ICMP協議是一種面向連接的協議,用于傳輸出錯報告控制信息。它是一個非常重要的協議,它對于網絡安全具有極其重要的意義。

                它是TCP/IP協議族的一個子協議,屬于網絡層協議,主要用于在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP消息ICMP提供一致易懂的出錯報告信息。發送的出錯報文返回到發送原數據的設備,因為只有發送設備才是出錯報文的邏輯接受者。發送設備隨后可根據ICMP報文確定發生錯誤的類型,并確定如何才能更好地重發失敗的數據報。但是ICMP唯一的功能是報告問題而不是糾正錯誤,糾正錯誤的任務由發送方完成。

                每個ICMP消息都是直接封裝在一個IP數據報中的,因此,和UDP一樣,ICMP是不可靠的。雖然ICMP是包含在IP數據報中的,但是對ICMP消息通常會特殊處理,會和一般IP數據報的處理不同,而不是作為IP的一個子協議來處理。在很多時候,需要去查看ICMP消息的內容,然后發送適當的錯誤消息到那個原來產生IP數據包的程序,即那個導致ICMP訊息被傳送的IP數據包。

                我們在網絡中經常會使用到ICMP協議,比如我們經常使用的用于檢查網絡通不通的Ping命令(Linux和Windows中均有),這個“Ping”的過程實際上就是ICMP協議工作的過程。還有其他的網絡命令如跟蹤路由的Tracert命令也是基于ICMP協議的。

            ICMP的重要性

            •   ICMP協議對于網絡安全具有極其重要的意義。ICMP協議本身的特點決定了它非常容易被用于攻擊網絡上的路由器和主機。例如,在1999年8月海信集團“懸賞”50萬元人民幣測試防火墻的過程中,其防火墻遭受到的ICMP攻擊達334050次之多,占整個攻擊總數的90%以上!可見,ICMP的重要性絕不可以忽視!

                比如,可以利用操作系統規定的ICMP數據包最大尺寸不超過64KB這一規定,向主機發起“Ping of Death”(死亡之Ping)攻擊。“Ping of Death” 攻擊的原理是:如果ICMP數據包的尺寸超過64KB上限時,主機就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使主機死機。

                此外,向目標主機長時間、連續、大量地發送ICMP數據包,也會最終使系統癱瘓。大量的ICMP數據包會形成“ICMP風暴”,使得目標主機耗費大量的CPU資源處理,疲于奔命。

            ICMP功能

            •   從技術角度來說,ICMP就是一個“錯誤偵測與回報機制”,其目的就是讓我們能夠檢測網路的連線狀況﹐也能確保連線的準確性﹐其功能主要有:

                · 偵測遠端主機是否存在。

                · 建立及維護路由資料。

                · 重導資料傳送路徑。

                ·資料流量控制

            ICMP結構
            • ICMP協議結構

                Type ― 錯誤消息或信息消息。錯誤消息可能是不可獲得目標文件,數據包太大,超時,參數問題等。可能的信息消息有:Echo Request、Echo Reply、Group Membership Query、Group Membership Report、Group Membership Reduction。

                Code ― 每種消息類型具有多種不同代碼。不可獲得目標文件正式這樣一個例子,即其中可能的消息是:目標文件沒有路由,禁止與目標文件的通信,非鄰居,不可獲得地址,不可獲得端口。具體細節請參照相關標準。

                Checksum ― 計算校驗和時,Checksum 字段設置為0。

                Identifier ― 幫助匹配 Requests/Replies 的標識符,值可能為0。

                Sequence Number ― 幫助匹配 Requests/Replies 的序列號,值可能為0。

                Address Mask ― 32位掩碼地址。

            • 問題一:Identifier字段的目的你已經說過了,其實就是根據這個區分不同的PING進程。

              問題二:對于unix以及類unix操作系統來說,icmp Identifier的內容就是ping的進程號,對于windows系統來說,具體參考如下:

              Microsoft Windows NT - 256
              Microsoft Windows 98/98SE - 512
              Microsoft Windows 2000 - 512
              Microsoft Windows ME - 768
              Microsoft Windows 2000 Family with SP1 - 768

              這里有個比較有意思的問題,既然windows系統的icmp Identifier是固定不變的,那么系統如何區別不同的Ping進程呢?實際上windows系統就不在根據Identifier來區別ping進程了,它是根據Sequence Number field來區分的。

            久久久久国产视频电影| 亚洲国产精品无码久久| 国产成人综合久久久久久| 欧美午夜A∨大片久久| 久久精品人人做人人爽电影| 久久久久成人精品无码中文字幕 | 久久国产成人午夜aⅴ影院 | 少妇精品久久久一区二区三区| 72种姿势欧美久久久久大黄蕉| 亚洲国产成人精品久久久国产成人一区二区三区综 | 伊人久久综合无码成人网| 嫩草影院久久国产精品| 老男人久久青草av高清| 久久99精品综合国产首页| 久久精品国产亚洲AV香蕉| 久久国产精品免费| 久久91精品国产91久久户| 无码人妻少妇久久中文字幕蜜桃| 久久996热精品xxxx| 色综合久久久久网| 欧美激情精品久久久久| 久久综合给合久久国产免费| 女人高潮久久久叫人喷水| 久久久青草青青国产亚洲免观| 国产亚洲欧美成人久久片 | 久久91精品国产91久久麻豆| 亚洲AV日韩AV永久无码久久| 亚洲人成网站999久久久综合| 成人a毛片久久免费播放| 久久天天躁狠狠躁夜夜躁2O2O| 久久精品国产亚洲αv忘忧草 | 久久综合久久综合亚洲| 伊人久久成人成综合网222| 青青久久精品国产免费看| 久久久91人妻无码精品蜜桃HD| 久久精品国产亚洲Aⅴ香蕉 | 亚洲国产成人久久综合碰| 午夜精品久久影院蜜桃| 久久久久久久波多野结衣高潮| 亚洲AV无码久久精品成人| 久久被窝电影亚洲爽爽爽|