Chapter 9 -- ICMP(internet control message protocol)

Prev Chapter 8 -- IP version 6
INDEX
Next Chapter 10 -- TCP(Transmission Control Protocol)

誤り報告プロトコル (error reporting protocol)

 IPはコネクションレス型のネットワーク層プロトコルであり、 パケットを中継するのに最大の努力はするがパケット転送の保証はしない。 ルータやノードで異常が発生し、宛先までパケットが到達しない場合もある。 この時、異常を送信元に知らせる必要がある。 TCP/IPではこの目的のために、ICMP(Internet Control Message Protocol)というプロトコルを使用する。 また、通信を行う前に、宛先ノードが存在するかどうかという診断も行う。 ICMPは、5つのエラー(誤り)メッセージと、 4つの情報(診断)メッセージに分類される。


ICMPメッセージの構造

type field
(1byte)
code
(1byte)
checksum
(2byte)
depend on type
(field is variable in length)

typemessagedescription
0 echo reply echo reauest(8)の返答
3 destination unreachable IPデータグラムが到達しない(ルータ→発信者)
4 source quench 輻輳制御(データ転送抑制要求)
5 redirect 経路変更要求
8 echo request 返答要求
11 time exceeded for a datagram TTLが0になった(ルータ→発信者)
12 parameter problem データグラム形式による問題通知
13 timestamp request 時刻(14)を要求
14 timestamp replay timestamp request(13)の返答
15 information request ルータへの情報要求(使われていない)
16 information reply information request(15)の返答(使われていない)
17 address mask request サブネットマスク要求
18 address mask reply address mask request(17)の返答


5つのエラーメッセージ


4つの情報メッセージ


ICMPメッセージのカプセル化

 ICMPメッセージはIPデータグラムのIPデータ領域に格納されて送られる。


ICMPを利用したソフトウェア

PING

 pingは宛先が到達可能かを調べるソフトウェアである。 pingプログラムはICMPのエコー要求メッセージを送信し、その返答が 返ってきたかどうかを利用する。
 エコー要求を送信し、短時間待ち、返答がない場合は要求を2度再送信する。 それでも返答がない場合は、宛先到達不可能と判断する。

TRACE ROUTE

 trace routeは宛先までのルートを追跡するツールである。 このプログラムは時間超過(time exceeded)メッセージと宛先不達(destination unreachable)メッセージを利用する。 まず、TTL=1としてデータグラムを送信すると、最初のルータでTTL=0となるので、 そのルータは時間超過メッセージを返す。trace routeプログラムはそのメッセージ に含まれるルータのIPアドレスを出力する。その後、TTL=2,3,4,...と増やして データグラムを送信することによって、宛先ホストまでのルータのIPアドレスを調べることができる。

 TTLを増やしていくと、データグラムは、いずれ宛先ホストまで到着することになる。 ルート追跡プログラムはUDP(User Datagram Protocol)を利用する。 宛先の存在しないプログラムに対してこのUDPメッセージを送ることによって、 宛先のホストはこのデータグラムを受け取ると、ICMP宛先不達メッセージを返す。 これが、trace routeプログラムの終了通知となる。

 ルート追跡プログラムでは、タイムアウトの時間をユーザが指定する。 宛先までのルートは動的に変化するので、ルートが相対的に安定している インターネットワークに対してtrace routeは有効である。 (インターネットの多くの部分において、数日、数週間の間はルートが変化しないことが多い)

trace routeの仕組み


パスMTU発見のためのICMPの利用

 パスMTUを発見するために、ホストはICMPフラグメンテーション要求(fragmentation required message)メッセージ を利用する。まず、ホストはフラグメント不可ビットを立てて 大きいデータグラムを送信する。ルータは転送するネットワークのMTUを越えた データグラムサイズを受け取るので、フラグメンテーション要求メッセージを返すしかない。 このメッセージを受け取ると、ホストは送信に成功するまで探索メッセージを小さくして送信する。 ルート追跡と同様に、ホストは応答を受信できない場合、メッセージを再送する仕組みが必要である。


Prev Chapter 8 -- IP version 6
INDEX
Next Chapter 10 -- TCP(Transmission Control Protocol)