ICMPまとめ
今日はICMPについて。
概略
- ICMP = The Internet Control Message Protocol
- TCP/IPパケットの転送中において発生した各種エラーの通知や、動作の確認などを行うために利用されるプロトコルping等のツールで利用されている
- IPの上位プロトコルに当たるが、IPと同様のにネットワーク層のプロトコルであるかのような振る舞いをする
- IPヘッダ内のprotocol numberは1
ICMPのフレームフォーマット
- ICMPのヘッダはIPヘッダに後続する
- 主に使われるのは最初の固定4バイト、TypeとCode(※後述)
Type / Code
よく使うもののみ。
Type | Code | 説明 |
---|---|---|
0 Echo Reply |
0 |
Echo reply pingの返信 |
3 Destination Unreachable |
0 | net unreachable |
1 |
host unreachable サーバーがダウンしている等 |
|
2 | protocol unreachable | |
3 |
port unreachable サーバーまではたどり着いているがそのポートをlistenしてない |
|
4 |
fragmentation needed and DF set ルータからIPヘッダ内のDF flag(Don't Fragment flag)がonの状態で、転送容量上限のデータが届いた場合にルータに返される。 ※参考 Resolve IP Fragmentation, MTU, MSS, and PMTUD Issues with GRE and IPSEC - Cisco |
|
5 | source route failed | |
8 Echo Request |
0 |
Echo request pingのリプライ要求 |
ping
- IPネットワークにおいて接続機器の到達性を確認するためのツール
- ICMPのecho requestパケットを対象機器(node)に投げecho replyが帰ってくることで到達性を確認する事ができる
自分のMacでループバックアドレスに向けて3回pingを送ってみる。
ping -c 3 127.0.0.1 ⏎ PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.053 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.074 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.110 ms --- 127.0.0.1 ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.053/0.079/0.110/0.024 ms
ラウンドトリップタイム(RTT)、パケットロス率がわかる。
疑問
- pingを受けてreplyを返すのって誰、NIC?
- だとしたら、無限ループみたいな処理で待ち受けてるのかな??わからん。
感想とか
- 実務経験が無いけどCiscoのサイトを読むと勉強になる
参考
- RFC 792 - Internet Control Message Protocol
- ネットワーク入門サイト - ICMP
- Internet Control Message Protocol - Wikipedia
- ICMP - ping, tracerouteのちょっと深い知識