[注意]セキュリティ上の理由から(ファイアウォールなどにより)、 Pingに応えないよう設定されたサイトもある。 したがって、「pingには応えないからといって、全てのプロトコルで 到達不能かどうかはわからない」ので注意が必要である。
Unixマシンなどでは、ICMPエコー要求は、カーネルで処理するように実装されている。 そのため、システムがハングしてNFSなどに応えなくなってもpingには応える 場合も多い。 pingにも応えなくなるのはkernelもハングしてしまった場合など。
[ICMP Echo Request/Reply] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 (32bits width) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifer | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Option Data | ... | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ エコー要求の場合: type=8, code=0 エコー応答の場合: type=0, code=0Ping クライアントは、Identifier(識別子)として、pingプロセスのプロセスID を使う(複数のpingプロセスがあっても応答を区別できるように)。
Pingサーバは、Pingクライアントが送ってきた 「Identifier(識別子)、Sequence Number (シーケンス番号)、 オプションデータ」を含めて送り返す
degas$ ping -c 600 vermeer PING vermeer.tsuda.ac.jp (133.99.10.3): 56 data bytes 64 bytes from 133.99.10.3: icmp_seq=1 ttl=250 time=5227.4 ms 64 bytes from 133.99.10.3: icmp_seq=7 ttl=250 time=58.6 ms 64 bytes from 133.99.10.3: icmp_seq=8 ttl=250 time=58.0 ms 64 bytes from 133.99.10.3: icmp_seq=9 ttl=250 time=58.1 ms ^C --- vermeer.tsuda.ac.jp ping statistics --- 10 packets transmitted, 4 packets received, 60% packet loss round-trip min/avg/max = 58.0/1350.5/5227.4 ms
ping に -R をつけると IP の Record Route の様子を見ることができる。 ただし、マニュアルにも書いてあるように経路を見るには traceroute を 使う方が適切である(IP Headerのオプションでは9個までしかIP Addressを 記録できないので→図7.3参照)。
FreeBSD % man ping ... -R Record route. Includes the RECORD_ROUTE option in the ECHO_REQUEST packet and displays the route buffer on returned packets. Note that the IP header is only large enough for nine such routes; the traceroute(8) command is usually better at de- termining the route packets take to a particular destination. Many hosts ignore or discard the RECORD_ROUTE option. ...
renoir % ping -R nws1170 nitta@renoir 104% ping -R nws1170 PING nws1170.tsuda.ac.jp (133.99.128.170): 56 data bytes 64 bytes from 133.99.128.170: icmp_seq=0 ttl=252 time=3.350 ms RR: karel.tsuda.ac.jp (133.99.194.1) cisc250.tsuda.ac.jp (133.99.144.250) cismina.tsuda.ac.jp (133.99.128.254) nws1170.tsuda.ac.jp (133.99.128.170) cisckan.tsuda.ac.jp (133.99.144.254) cisc194.tsuda.ac.jp (133.99.194.250) karel1.tsuda.ac.jp (133.99.10.1) renoir.tsuda.ac.jp (133.99.10.7) 64 bytes from 133.99.128.170: icmp_seq=1 ttl=252 time=3.483 ms (same route) 64 bytes from 133.99.128.170: icmp_seq=2 ttl=252 time=3.437 ms (same route) 64 bytes from 133.99.128.170: icmp_seq=3 ttl=252 time=3.581 ms (same route) ^C --- nws1170.tsuda.ac.jp ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 3.350/3.463/3.581/0.083 ms
[ICMP Time Exceed] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 (32bits width) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Unused (must be 0) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Option Data | ... | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type = 11 配送中のTTL=0の場合: Code = 0 ← tracerouteの場合 リアセンブル中のTTL=0の場合: Code = 1
renoir% traceroute nws1170 traceroute to nws1170.tsuda.ac.jp (133.99.128.170), 30 hops max, 40 byte packets 1 karel1 (133.99.10.1) 0.748 ms 0.687 ms 0.679 ms 2 cisc194 (133.99.194.250) 1.321 ms 1.303 ms 1.283 ms 3 cisckan (133.99.144.254) 1.869 ms 1.772 ms 1.751 ms 4 nws1170 (133.99.128.170) 2.394 ms * 2.167 ms renoir% traceroute nws1170
IPヘッダのオプションとして、Source Route がある。 IPヘッダのオプションは40バイトまでで、3バイトのオーバヘッドがあるので IPアドレスは9個まで指定できる(図8.6参照)。