Arch manual pages

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_destunreach_rate
發送目的地不可到達 ICMP 消息包的最大數據包比率。這限制了發送到任意一個 路由或目的地的數據包的比率。 這個限制不影響發送用來發現數據鏈路最大傳送單位(MTU)的 ICMP_FRAG_NEEDED包 數據包。
icmp_echo_ignore_all
如果該值不爲零,Linux將忽略所有的 ICMP_ECHO 請求。
icmp_echo_ignore_broadcasts
如果該值不爲零,Linux將忽略所有發送到廣播地址的 ICMP_ECHO 數據包。
icmp_echoreply_rate
發送響應 ICMP_ECHOREQUEST 請求的 ICMP_ECHOREPLY 數據包比率的最大值。
icmp_paramprob_rate
發送 ICMP_PARAMETERPROB 數據包比率的最大值。當一個具有非法 IP 報頭數據包到達時將發送這些包。
icmp_timeexceed_rate
發送 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

http://cmpp.linuxforum.net

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