ICMP(7) Linux Programmer's Manual ICMP(7)

icmp, IPPROTO_ICMP - Linux IPv4 ICMP 核心模組.

本網路核心協議模組實現了基於 RFC792 協議中定義的《網際網路控制報文協議》 。它針對網路主機間通訊出錯的情況作出迴應並給出診斷資訊。 使用者不能直接使用本模組。相反本模組需與核心中的其他協議進行通訊,而這 些協議將 ICMP 出錯資訊返回到網路協議的應用層。ICMP 核心模組也迴應 ICMP 請求。

如果用 IPPROTP_ICMP 開啟原始套接字(raw socket)時, 使用者協議有可以收到任意本地套接字 ICMP 包。 IPPROTO_ICMP. 請參閱 raw(7) 傳遞到套接字的 ICMP 包可以用 ICMP_FILTER 套接字選項進行過濾。核心會處理所有 ICMP 包,包括傳遞到使用者的套接字去的。

Linux 對可以到達每個目標主機出錯資訊包的比率設立了限制。 ICMP_REDIRECTICMP_DEST_UNREACH 也受進入包的目標路由的限制。

ICMP 支援透過 sysctl 介面來設定一些全域性 IP 引數。對 Sysctl 的訪問可以透過讀、寫 /proc/sys/net/ipv4/* 下的檔案透過 sysctl(2) 介面進行. 大多數這些 sysctls 對特定 ICMP 型別的資料包數量進行了限制。 Linux 2.2 使用記號單元過濾器對 ICMP 包進行限制。 此值表示超時錯誤,以秒計,直到到頂後記號單元過濾器被清除為止。

傳送目的地不可到達 ICMP 訊息包的最大資料包比率。這限制了傳送到任意一個 路由或目的地的資料包的比率。 這個限制不影響傳送用來發現資料鏈路最大傳送單位(MTU)的 ICMP_FRAG_NEEDED包 資料包。
如果該值不為零,Linux將忽略所有的 ICMP_ECHO 請求。
如果該值不為零,Linux將忽略所有傳送到廣播地址的 ICMP_ECHO 資料包。
傳送響應 ICMP_ECHOREQUEST 請求的 ICMP_ECHOREPLY 資料包比率的最大值。
傳送 ICMP_PARAMETERPROB 資料包比率的最大值。當一個具有非法 IP 報頭資料包到達時將傳送這些包。
傳送 ICMP_TIME_EXCEEDED 包比率的最大值。當一個數據包透過太多網段時,這些包用作防止路由迴環。

由於在許多其他實現中不支援 IPPROTO_ICMP 原始套接字(raw socket),可移植程式不能依靠這一特性。

當Linux不作為路由器時,將不被髮送 ICMP_REDIRECT 包。核心也只有在路由表中的舊閘道器和路由重新定向超時時才接受這些包。

ICMP_TIMESTAMP 返回的 64 位毫秒為單位的時間戳是自1970年1月1日以來的時間.

Linux 的 ICMP 在內部使用原始套接字(raw socket)來發送ICMP包。 這個原始套接字可能在 netstat(8) 訊息輸出中出現,帶著一個“zero inode”資訊。

在2.2版本中將再不支援 ICMP_ADDRESS 請求。

在2.2版本中將不再支援 ICMP_SOURCE_QUENCH

參見

ip(7)

RFC792 對ICMP協議進行了詳細的敘述。

LetBright <letbright@netease.com>

2000/10/30

《中國linux論壇man手冊頁翻譯計劃》:

http://cmpp.linuxforum.net

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh

27 Apr 1999 Linux Man Page