那么我們?yōu)槭裁匆玫絀CMP協(xié)議呢?它的誕生是為了什么呢?
我們數(shù)據(jù)在網(wǎng)絡中傳輸中,會封裝成IP數(shù)據(jù)包,而IP協(xié)議的特點是面向無連接,且不可靠的,可靠性由上層來保證。IP協(xié)議所要做的就是盡最大努力把數(shù)據(jù)傳輸?shù)侥康牡?,如果當在路由器的轉(zhuǎn)發(fā)中出錯了而不能到達目的地時,IP協(xié)議對錯誤不進行任何報告和糾正,此時主機就不知道路由器那邊有什么問題。而ICMP協(xié)議正好解決了這個問題。
那么它是如何進行解決的呢?
icmp主要有兩個功能,一個是ping:一般用用于勘測到達目的網(wǎng)絡的連通性;一個是tracert:用于確定ip數(shù)據(jù)訪問目標所采取的路徑。
Ping的工作原理。
我們在測試網(wǎng)絡連通性的時候會使用ping+ip地址的格式,那么當這個命令輸入完成之后設備會執(zhí)行什么樣的操作呢?
① Ping 命令會構(gòu)建一個 固定格式的 ICMP 請求數(shù)據(jù)包(Echo Request)
② ICMP 協(xié)議將這個數(shù)據(jù)包,連同去往的地址,一起 交給IP 層協(xié)議
③ IP協(xié)議將本機作為源地址,去往的地址為目的,加上一些其他的控制信息,交給數(shù)據(jù)鏈路層協(xié)議
④數(shù)據(jù)鏈層封裝源目MAC地址交給物理層
⑤物理層將其轉(zhuǎn)換成二進制比特流發(fā)出
⑥目的主機將比特流轉(zhuǎn)換為數(shù)據(jù),收到Echo Request包開始拆包
⑦拆開最外層幀頭,發(fā)現(xiàn)目的地址與自己相同,繼續(xù)拆包
⑧繼續(xù)拆開ip包頭,發(fā)現(xiàn)協(xié)議號為(1),交給ICMP去處理
⑨ ICMP收到之后進行響應,回復Echo reply

ICMP報文的前4個字節(jié)是統(tǒng)一的格式,共有三個字段:即類型,代碼和檢驗和,所有報文的前4個字節(jié)都是一樣的,但是剩下的其他字節(jié)則互不相同。其它字段都ICMP報文類型不同而不同,8位類型和8位代碼字段一起決定了ICMP報文的類型。
Tracert工作原理
Tracert的工作原理大概可以分為五個步驟:
1.首先tracert送出3個TTL是1的IP 數(shù)據(jù)包到目的地,當路徑上的第一個路由器收到這個數(shù)據(jù)包時,它將TTL減1,此時TTL等于0.
2. 所以該路由器會將此數(shù)據(jù)包丟掉,并送回一個ICMP time exceeded消息(TTL超時消息),里面包括發(fā)IP包的源地址,IP包的所有內(nèi)容及路由器的IP地址
3. tracert 收到這個消息后,便知道這個路由器存在于這個路徑上,接著tracert 再送出另一個TTL是2 的數(shù)據(jù)包,發(fā)現(xiàn)第2 個路由器…..以此類推
4. 當數(shù)據(jù)包到達目的地后,該主機則不會送回ICMP time exceeded消息
5. 一旦到達目的地,由于tracert通過UDP數(shù)據(jù)包向不常見端口(30000以上)發(fā)送數(shù)據(jù)包,因此會收到「ICMP port unreachable」消息,故可判斷到達目的地。
Tracert每次發(fā)送三個數(shù)據(jù)包的原因是為了避免有時候網(wǎng)絡不穩(wěn)定而造成的丟包,所以發(fā)送三個,為了保證數(shù)據(jù)包能夠正常到達。
以上介紹的就是ping與tracer的工作原理,那是如何被用到的呢?

以上圖為例,我們在AR1上用ping去測試是否能夠到達5.5.5.5這個ip地址

使用Wireshark抓取icmp的ping包查看ping包中的內(nèi)容。

接下來我們看5.5.5.5對于12.1.1.1的回復報文

在網(wǎng)絡中有很多的原因造成網(wǎng)絡不能夠連通,這些導致不連通的原因都在ICMP報文中進行標識。常見的有一下幾種類型:
類型0,代碼0:表示回顯應答(ping應答)
類型8,代碼0:表示回顯請求(ping請求)。類型11,代碼0:超時
類型3,代碼0:網(wǎng)絡不可達
類型3,代碼1:主機不可達
類型5,代碼0:重定向
接下來測試Tracert,在AR1上使用Tracert 5.5.5.5,來測試去往5.5.5.5的路徑

當下游設備收到ttl等于1的報文,會以ICMP time exceeded 回復響應報文,告訴AR1 ttl超時。

當AR1收到此ICMP報文,就會再次發(fā)送TTL等于2的勘測報文,再次進行測試,一點一點的推出下游節(jié)點信息。

以此類推直到TTL能夠到達目標設備,目標設備收到之后以ICMP port unreachable 回復

版權聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至2705686032@qq.com 舉報,一經(jīng)查實,本站將立刻刪除。原文轉(zhuǎn)載: 原文出處: