ping程式和tracert背後的故事--ICMP協議
為路由器生,為交換機死,為了Ping通奮鬥一輩子-----tracert.cn
上面是一個網路工程師的個人定位,很有意思,哈哈!那麼我們來看看ping和tracert都是什麼吧
PING (Packet Internet Groper),因特網包探索器,用於測試網路連線量的程式。
Tracert(tracerout)是路由跟蹤實用程式,用於確定 IP 資料包訪問目標所採取的路徑。
1.準備工作
安裝好wireshark。Wireshark(前稱Ethereal)是一個網路報文分析軟體。網路封包分析軟體的功能是擷取網路封包,並儘可能顯示出最為詳細的網路封包資料。Wireshark使用WinPCAP作為介面,直接與網絡卡進行資料報文交換。
2.抓取報文
開啟wireshark,並開啟監聽模式,啟用ICMP過濾,開啟cmd命令視窗,輸入 ping 172.16.64.1(閘道器) ,等待返回後,最後停止wireshark監聽,並儲存檔案。
3.ping命令
Tracert 命令用 IP 生存時間 (TTL) 欄位和 ICMP 錯誤訊息來確定從一個主機到網路上其他主機的路由。Ping傳送一個ICMP(Internet Control Messages Protocol)即因特網信報控制協議;回聲請求訊息給目的地並報告是否收到所希望的ICMPecho (ICMP回聲應答)。它是用來檢查網路是否通暢或者網路連線速度的命令。作為一個生活在網路上的管理員或者黑客來說,ping命令是第一個必須掌握的DOS命令,它所利用的原理是這樣的:利用網路上機器IP地址的唯一性,給目標IP地址傳送一個數據包,再要求對方返回一個同樣大小的資料包來確定兩臺網路機器是否連線相通,時延是多少。
ping指的是端對端連通,通常用來作為可用性的檢查, 但是某些病毒木馬會強行大量遠端執行ping命令搶佔你的網路資源,導致系統變慢,網速變慢。嚴禁ping入侵作為大多數防火牆的一個基本功能提供給使用者進行選擇。通常的情況下你如果不用作伺服器或者進行網路測試,可以放心的選中它,保護你的電腦。
ping請求報文如下圖
ping響應報文:
4.tracert命令
工作原理:通過向目標傳送不同IP生存時間 (TTL) 值的“Internet控制訊息協議 (ICMP)”迴應資料包,Tracert診斷程式確定到目標所採取的路由。要求路徑上的每個路由器在轉發資料包之前至少將資料包上的 TTL 遞減 1。資料包上的 TTL 減為 0 時,路由器應該將“ICMP 已超時”的訊息發回源系統。
Tracert 先發送 TTL 為 1 的迴應資料包,並在隨後的每次傳送過程將TTL遞增 1,直到目標響應或 TTL 達到最大值,從而確定路由。通過檢查中間路由器發回的“ICMP 已超時”的訊息確定路由。某些路由器不經詢問直接丟棄 TTL 過期的資料包,這在 Tracert 實用程式中看不到。
報文如下
5.總結
出現:在IP通訊中,經常有資料包到達不了對方的情況。原因是,在通訊途中的某處的一個路由器由於不能處理所有的資料包,就將資料包一個一個丟棄了。或者,雖然到達了對方,但是由於搞錯了埠號,伺服器軟體可能不能接受它。這時,在錯誤發生的現場,為了聯絡而飛過來的信鴿就是ICMP 報文。在IP 網路上,由於資料包被丟棄等原因,為了控制將必要的資訊傳遞給發信方。ICMP 協議是為了輔助IP 協議,交換各種各樣的控制資訊而被製造出來的。
使用:ping和tracert(traceroute)是ICMP 的典型實現。
參考資料
【1】https://baike.baidu.com/item/ping/6235?fr=aladdin
【2】https://baike.baidu.com/item/%E8%B7%9F%E8%B8%AA%E8%B7%AF%E7%94%B1/8971154?fr=aladdin
【3】https://www.cnblogs.com/iiiiher/p/8513748.