ICMP
Section: Linux Programmer's Manual (7)
Updated: 1999-04-27
Index
JM Home Page
roff page
名前
icmp, IPPROTO_ICMP - Linux IPv4 ICMP カーネルモジュール
説明
このカーネルモジュールは RFC 792 で定義されている Internet
Control Message Protocol を実装したものである。
このプロトコルはエラー状況を知らせたり診断を行うために用いられる。
ユーザーはこのモジュールとは直接には通信できない。
このモジュールはカーネルの他のプロトコルと通信し、
それらのプロトコルが ICMP エラーをアプリケーションレイヤに渡す。
カーネルの ICMP モジュールは ICMP リクエストに対する応答も行う。
raw ソケットをプロトコル
IPPROTO_ICMP
でオープンすれば、
ユーザープロトコルはローカルなソケット全てに対する
ICMP パケットを受信することができる。
詳細は
raw(7)
を参照のこと。
ソケットに渡される ICMP パケットのタイプは
ICMP_FILTER
オプションによってフィルターできる。
ICMP パケットは (たとえユーザーソケットに渡される場合でも)、
常にカーネルによって (も) 処理される。
Linux では ICMP エラーパケットのレートをそれぞれの送り先に対して
制限している。
ICMP_REDIRECT
と
ICMP_DEST_UNREACH
も到着したパケットの行き先経路 (destination route)
を制限する。
sysctl
ICMP では、いくつかのグローバルな IP パラメータを
sysctl を通して設定することができる。
これらの sysctl へアクセスするには、
/proc/sys/net/ipv4/*
ファイルを読み書きする方法と、インターフェースに対して
sysctl(2)
を用いる方法がある。
これらの sysctl のほとんどは特定の ICMP タイプに対するレート制限
(rate limitation) である。
Linux 2.2 は ICMP の制限にトークン・バケット・フィルタ
(token bucket filter) を用いる。
それぞれの値は、バーストの後にトークン・バケット・フィルタがクリア
されるまでのタイムアウトを秒単位で表したものである。最小単位(jiffy)は
システム依存の単位で x86 システムは通常 10ms、alpha や ia64 では
1ms である。
- icmp_destunreach_rate
-
ICMP 不達パケット (Destination Unreachable packet) を送る最大レート。
これは特定のルートまたは行き先にパケットを送信するレートを制限する。
この制限は、
path MTU discovery に必要な
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
パケットの最大送信レート。
これらのパケットはパケットがあまりに多くの hop を通過した場合に、
ループを防ぐために送られる。
バージョン
ICMP_ADDRESS
要求に対するサポートは 2.2 で削除された。
ICMP_SOURCE_QUENCH
は Linux 2.2 で削除された。
注意
他の多くの実装では、
IPPROTO_ICMP
raw ソケットがサポートされていない。
この機能は移植性が必要なプログラムでは用いるべきでない。
Linux がルーターとして動作していないときには、
ICMP_REDIRECT
パケットは送信されない。
またこれらが受け取られるのも、発信元がルーティングテーブルに定義されている
古いゲートウェイで、リダイレクト・ルート (redirect route) が
適当な時間の後に期限切れになっている場合に限られる。
ICMP_TIMESTAMP
から返される 64 ビットのタイムスタンプは、
1970 年 1 月 1 日からの経過時間をミリ秒単位で表したものである。
Linux ICMP は ICMP を送るために内部で raw ソケットを用いる。
raw ソケットは
netstat(8)
の出力に 0 inode として出力される。
関連項目
ip(7)
RFC 792:
ICMP プロトコルの説明
Index
- 名前
-
- 説明
-
- sysctl
-
- バージョン
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:45 GMT, November 19, 2007