|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > i > icmp - 約束事その他の説明 icmp - 約束事その他の説明 - Linux コマンド集 一覧表名前icmp, IPPROTO_ICMP - Linux IPv4 ICMP カーネルモジュール 説明このカーネルモジュールは RFC792 で定義されている 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) を制限する。 SYSCTLICMP では、いくつかのグローバルな 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 である。
注意他の多くの実装では、 IPPROTO_ICMP raw ソケットがサポートされていない。 この機能は移植性が必要なプログラムでは用いるべきでない。 Linux がルーターとして動作していないときには、 ICMP_REDIRECT パケットは送信されない。 またこれらが受け取られるのも、発信元がルーティングテーブルに定義されている 古いゲートウェイで、リダイレクト・ルート (redirect route) が 適当な時間の後に期限切れになっている場合に限られる。 ICMP_TIMESTAMP から返される 64 ビットのタイムスタンプは、 1970 年 1 月 1 日からの経過時間をミリ秒単位で表したものである。 Linux ICMP は ICMP を送るために内部で raw ソケットを用いる。 raw ソケットは netstat (8) の出力に 0 inode として出力される。 バージョンICMP_ADDRESS 要求に対するサポートは 2.2 で削除された。 ICMP_SOURCE_QUENCH は Linux 2.2 で削除された。 関連項目
RFC
792
:
ICMP プロトコルの説明
|
|