怎樣在建設(shè)部網(wǎng)站查資質(zhì)證書環(huán)球網(wǎng)最新消息
ping 是基于 ICMP 協(xié)議工作的。ICMP 全稱 Internet Control Message Protocol,就是互聯(lián)網(wǎng)控制報文協(xié)議。
ICMP 報文是封裝在 IP 包里面的。因為傳輸指令的時候,肯定需要源地址和目標地址。它本身非常簡單。
ICMP 報文有很多的類型,不同的類型有不同的代碼。最常用的類型是主動請求為 8,主動請求的應(yīng)答為 0。
對 ping 的主動請求,進行網(wǎng)絡(luò)抓包,稱為 ICMP ECHO REQUEST。同理主動請求的回復,稱為ICMP ECHO REPLY。
在選項數(shù)據(jù)中,ping 還會存放發(fā)送請求的時間值,來計算往返時間,說明路程的長短。
差錯報文類型::終點不可達為 3,源抑制為 4,超時為 11,重定向為 5。網(wǎng)絡(luò)不可達代碼為 0,主機不可達代碼為 1,協(xié)議不可達代碼為 2,端口不可達代碼為 3,需要進行分片但設(shè)置了不分片位代碼為 4。
ping 的發(fā)送和接收過程:
Traceroute 的第一個作用就是故意設(shè)置特殊的 TTL,來追蹤去往目的地時沿途經(jīng)過的路由器。Traceroute 就拿到了所有的路由器 IP。當然,有的路由器壓根不會回這個 ICMP。這也是 Traceroute 一個公網(wǎng)的地址,看不到中間路由的原因。
怎么知道 UDP 有沒有到達目的主機呢?Traceroute 程序會發(fā)送一份 UDP 數(shù)據(jù)報給目的主機,但它會選擇一個不可能的值作為 UDP 端口號(大于 30000)。當該數(shù)據(jù)報到達時,將使目的主機的 UDP 模塊產(chǎn)生一份“端口不可達”錯誤 ICMP 報文。如果數(shù)據(jù)報沒有到達,則可能是超時。
Traceroute 還有一個作用是故意設(shè)置不分片,從而確定路徑的 MTU。要做的工作首先是發(fā)送分組,并設(shè)置“不分片”標志。發(fā)送的第一個分組的長度正好與出口 MTU 相等。如果中間遇到窄的關(guān)口會被卡住,會發(fā)送 ICMP 網(wǎng)絡(luò)差錯包,類型為“需要進行分片但設(shè)置了不分片位”。其實,這是人家故意的好吧,每次收到 ICMP“不能分片”差錯時就減小分組的長度,直到到達目標主機。
此文章為9月Day7學習筆記,內(nèi)容來源于極客時間《趣談網(wǎng)絡(luò)協(xié)議》,推薦該課程。