網際網路控制訊息通訊協定 (ICMP) 用於診斷網際網路上的網路問題。
閱讀本文後,您將能夠:
相關內容
訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!
複製文章連結
網際網路控制訊息通訊協定 (ICMP) 是網路裝置用來診斷網路通訊問題的網路層通訊協定。ICMP 主要用於確定資料是否及時到達其預期目的地。一般而言,ICMP 通訊協定用於網路裝置,例如路由器。ICMP 對於錯誤報告和測試至關重要,但也可能被用於分散式阻斷服務 (DDoS) 攻擊。
ICMP 的主要用途是錯誤報告。當兩個裝置透過網際網路連線時,如果任何資料未到達預定目的地,ICMP 就會產生錯誤,並分享給傳送裝置。例如,如果資料封包對於路由器來說太大,路由器將丟棄該封包,並向該資料的原始來源傳送回一條 ICMP 訊息。
ICMP 通訊協定的次要用途是執行網路診斷;常用的終端機公用程式 traceroute 和 ping 都使用 ICMP 進行運作。traceroute 公用程式可用來顯示兩個網際網路裝置之間的路由路徑。路由路徑是連接路由器的實際物理路徑,請求在到達目的地之前必須通過該路由器。一個路由器與另一個路由器之間的旅程稱為「躍點」,而 traceroute 也會報告每個躍點所需的時間。這對於確定網路延遲的來源很有用。
ping 公用程式是 traceroute 的簡化版本。ping 將測試兩個裝置之間的連線速度,並準確報告封包到達其目的地並返回寄件者裝置所需的時間。雖然 ping 不提供有關路由或躍點的資料,但它仍然是衡量兩個裝置之間延遲的有用指標。ICMP 回應要求和回應回覆訊息通常用於執行 ping。
不幸的是,網路攻擊可以利用這個過程,製造破壞手段,例如 ICMP 洪水攻擊和死亡之 ping 攻擊。
與網際網路通訊協定 (IP) 不同,ICMP 與傳輸層通訊協定(如 TCP 或 UDP)沒有關聯。這使 ICMP 成為無連線的通訊協定:在傳送 ICMP 訊息之前,一個裝置不需要開啟與另一個裝置的連線。一般 IP 流量使用 TCP 傳送,這表示任何兩個交換資料的裝置都會先執行 TCP 交握,以確保兩個裝置都準備好接收資料。ICMP 不會以這種方式開啟連線。ICMP 通訊協定也不允許鎖定裝置上的特定連接埠。
ICMP 封包是使用 ICMP 通訊協定的封包。 ICMP 封包含一般 IP 標頭之後的 ICMP 標頭。 當路由器或伺服器需要傳送錯誤訊息時,ICMP 封包主體或資料區段一律會包含造成錯誤之封包 IP 標頭的副本。
ICMP 洪水攻擊
ping 洪水或 ICMP 洪水是指攻擊者嘗試使用 ICMP 回應請求封包壓垮目標裝置。目標不得不處理和回應每個封包,消耗其運算資源,直到合法使用者無法接收服務。
ICMP 洪水攻擊:
死亡之 Ping 攻擊
死亡之 Ping 攻擊是指攻擊者將大於封包允許大小的 ping 傳送至目標電腦,造成機器宕機或崩潰。封包在到達其目標的途中被分段,但當目標將封包重新組裝成其超出最大值的原始大小時,封包的大小會導致緩衝區溢位。
如今,死亡之 Ping 攻擊基本上已成過去。但是,較舊的網路裝置仍然可能受到它的影響。
Smurf 攻擊
在 Smurf 攻擊中,攻擊者會傳送含有偽造來源 IP 位址的 ICMP 封包。網路設備回覆封包,向假冒 IP 傳送回覆,並用不需要的 ICMP 封包淹沒受害者。就像「死亡之 Ping」一樣,如今 Smurf 攻擊只可能出現在舊版設備上。
ICMP 並不是第 3 層 DDoS 攻擊中唯一使用的網路層通訊協定。例如,攻擊者過去也使用 GRE 封包。
通常,網路層 DDoS 攻擊以網路設備和基礎結構為目標,而不是像應用程式層 DDoS 攻擊那樣針對 Web 資產。Cloudflare Magic Transit 是抵禦網路層 DDoS 攻擊的一種方法。