1. 程式人生 > >TCP/IP學習20180710-數據鏈路層-ICMP協議

TCP/IP學習20180710-數據鏈路層-ICMP協議

第一個 情況 12.1 之間 單位 接收 如何 bsp tsa

1、ICMP協議
IP協議不保證數據送達。則應有協議保證數據送達。ICMP就是其中的重要協議。
ICMP:(Internet Control Messages Protocol)因特網信報控制協議
當傳送IP數據包發生錯誤--比如主機不可達,路由不可達等等,ICMP協議將會把錯誤信息封包,然後傳送回給主機。給主機一個處理錯誤的機會。
ICMP數據包由8bit的錯誤類型和8bit的代碼和16bit的校驗和組成。(32字節)
ICMP報文分為兩種:查詢報文和差錯報文。

2、ICMP協議應用-ping程序
ping可以說是ICMP的最著名的應用,當我們某一個網站上不去的時候。通常會ping一下這個網站。ping會回顯出一些有用的信息。
ping利用ICMP協議包來偵測另一個主機是否可達。原理是用類型碼為0的ICMP發請 求,受到請求的主機則用類型碼為8的ICMP回應。ping程序來計算間隔時間,並計算有多少個包被送達。用戶就可以判斷網絡大致的情況。ping給出來了傳送的時間和TTL的數據。
ping還給我們一個看主機到目的主機的路由的機會。這是因為,ICMP的ping請求數據報在每經過一個路由器的時候,路由器都會把自己的ip放到該數 據報中。而目的主機則會把這個ip列表復制到回應icmp數據包中發回給主機。但是,無論如何,ip頭所能紀錄的路由列表是非常的有限。

C:\Users\lishuotr>ping kat.cr

正在 Ping kat.cr [72.52.4.119] 具有 32 字節的數據:
來自 72.52.4.119 的回復: 字節=32 時間=208ms TTL=243
來自 72.52.4.119 的回復: 字節=32 時間=205ms TTL=243
來自 72.52.4.119 的回復: 字節=32 時間=209ms TTL=243
來自 72.52.4.119 的回復: 字節=32 時間=227ms TTL=243

72.52.4.119 的 Ping 統計信息:
數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
最短 = 205ms,最長 = 227ms,平均 = 212ms



3、ICMP協議應用-traceroute\tracert
Traceroute是用來偵測主機到目的主機之間所經路由情況的重要工具.
Traceroute的原理是非常非常的有意思,它受到目的主機的IP後,首先給目的主機發送一個TTL=1(TTL:time to live)的UDP數據包,而經過的第一個路由器收到這個數據包以後,就自動把TTL減1,而TTL變為0以後,路由器就把這個包給拋棄了,並同時產生 一個主機不可達的ICMP數據報給主機。主機收到這個數據報以後再發一個TTL=2的UDP數據報給目的主機,然後刺激第二個路由器給主機發ICMP數據 報。如此往復直到到達目的主機。這樣,traceroute就拿到了所有的路由器ip。從而避開了ip頭只能記錄有限路由IP的問題。

C:\Users\lishuotr>tracert baidu.com

通過最多 30 個躍點跟蹤
到 baidu.com [123.125.115.110] 的路由:

1 1 ms <1 毫秒 <1 毫秒 192.168.1.1 [192.168.1.1]
2 * * * 請求超時。
3 8 ms 5 ms 7 ms 124.74.37.137
4 5 ms 6 ms 8 ms 101.95.42.45
5 9 ms 9 ms 12 ms 101.95.120.174
6 28 ms 28 ms 29 ms 202.97.60.129
7 * * * 請求超時。
8 * * * 請求超時。
9 33 ms * 34 ms 219.158.5.137
10 28 ms 30 ms 29 ms 202.96.12.14
11 36 ms 30 ms 30 ms 202.106.34.98
12 * 30 ms 27 ms 202.106.43.30
13 * * * 請求超時。
14 * * * 請求超時。
15 28 ms 28 ms 28 ms 123.125.115.110

跟蹤完成。

C:\Users\lishuotr>tracert rarbg.is

通過最多 30 個躍點跟蹤
到 rarbg.is [185.37.100.123] 的路由:

1 26 ms <1 毫秒 4 ms 192.168.1.1 [192.168.1.1]
2 * * * 請求超時。
3 12 ms 4 ms 6 ms 124.74.37.137
4 4 ms 4 ms 7 ms 101.95.42.45
5 17 ms 5 ms 12 ms 61.152.24.14
6 5 ms 4 ms 5 ms 202.97.48.26
7 * 10 ms 4 ms 202.97.33.154
8 320 ms 317 ms 317 ms 202.97.50.38
9 317 ms 314 ms 322 ms 118.85.205.214
10 371 ms 371 ms 380 ms ae16-9.RT.NTL.KIV.UA.retn.net [87.245.232.150]
11 245 ms 234 ms 336 ms GW-BelPak.retn.net [87.245.237.22]
12 232 ms 235 ms 233 ms 91.195.120.231.hi-load.biz [91.195.120.231]
13 * * * 請求超時。
14 352 ms 348 ms 358 ms border1.russia.transit.netsaap.com [185.37.101.2]
15 361 ms 390 ms 395 ms xe-0-1.edge.romania.netsaap.com [185.37.102.2]
16 405 ms 423 ms 431 ms ae0-94.sr.ipv4.bosnia.netsaap.com [185.37.100.2]
17 446 ms 509 ms 424 ms ae0-84.sr.ipv4.bosnia.netsaap.com [185.37.100.6]
18 440 ms 477 ms 462 ms 185.37.100.123

跟蹤完成。


綜上,我對ICMP的理解:
ICMP:internet control message protocol,控制報文。
把控制信息進行發送的一種協議。包含:查詢報文(在ping程序中使用到)、報錯報文(主機不可達、路由不可達等等)。

TCP/IP學習20180710-數據鏈路層-ICMP協議