ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
ICMP とは
ICMP(Internet Control Message Protocol)は、IP ネットワークにおける制御メッセージ・エラー通知専用のプロトコルです。IP 層(インターネット層)と同居して動作し、IP の不具合や状態を中継ノードや送信元へ伝える役割を担います。
| 項目 | 内容 |
|---|---|
| レイヤ | OSI の第 3 層(ネットワーク層)/ TCP/IP のインターネット層 |
| 標準 | RFC 792(ICMPv4)/ RFC 4443(ICMPv6) |
| カプセル化 | IP パケットのペイロードとして搬送(プロトコル番号 1 / 58) |
| 役割 | 制御メッセージ / エラー通知 / 診断 |
| ポート | なし(TCP/UDP のような概念を持たない) |
主なメッセージタイプ(ICMPv4)
| Type | 名称 | 用途 |
|---|---|---|
| 0 | Echo Reply | ping の応答 |
| 3 | Destination Unreachable | 到達不可(網不到達 / ホスト不到達 / ポート不到達 / DF 必要) |
| 5 | Redirect | より良い経路の通知 |
| 8 | Echo Request | ping の問い合わせ |
| 9 / 10 | Router Advertisement / Solicitation | ルータ発見(ほぼ NDP に置換) |
| 11 | Time Exceeded | TTL 切れ(traceroute の核) |
| 12 | Parameter Problem | ヘッダ異常 |
| 13 / 14 | Timestamp / Reply | 時刻同期(現代では NTP に置換) |
ICMP メッセージの構造
+------+------+----------+
| Type | Code | Checksum | ← 共通ヘッダ 4 バイト
+------+------+----------+
| Type 依存データ |
+-------------------------+
| 問題のあった IP ヘッダ | ← エラー通知の場合
| + 先頭 8 バイト |
+-------------------------+
Type が大分類、Code がサブ分類です。たとえば Type=3(Destination Unreachable)の中に Code=0(Net Unreachable)/ Code=1(Host Unreachable)/ Code=3(Port Unreachable)/ Code=4(DF Set / Fragmentation Needed)などがあります。
ping(Echo Request / Reply)
もっとも有名な ICMP 用途。送信側で Type=8 を送り、受信側が Type=0 で返します。RTT(往復時間)とパケットロスを測れます。
# 基本的な ping
ping 8.8.8.8
# 回数指定(Linux)
ping -c 4 example.com
# パケットサイズ指定(MTU 調査)
ping -M do -s 1472 8.8.8.8 # DF 立てて 1472 バイト送る
traceroute / tracert の仕組み
traceroute はTTL を 1, 2, 3, ... と増やしながらパケットを送り、途中のルータが TTL=0 を検出して返す Time Exceeded メッセージを集めることで経路ノードを特定します。
traceroute example.com # Linux/Mac
tracert example.com # Windows
- TTL=1 のパケット送信 → 最初のルータが TTL=0 で破棄、Time Exceeded を返す
- TTL=2 → 2 段目のルータが返す
- … 最終的に宛先ホストが Echo Reply(または Destination Unreachable)を返す
Linux 版は既定で UDP(ポート 33434+)、Windows 版は ICMP Echo を使うなど実装差があります。
Path MTU Discovery と ICMP
送信ホストは DF(Don't Fragment)ビットを立てた IP パケットを送り、途中で MTU を超えるとルータが ICMP "Fragmentation Needed"(Type 3 Code 4)を返します。これを受け取った送信ホストはパケットサイズを下げて再送します。
ICMP がファイアウォールで遮断されている経路ではPMTUD ブラックホールが発生し、特定サイズの通信だけ詰まる不具合が起きやすい。
Destination Unreachable の主なコード
| Code | 意味 |
|---|---|
| 0 | Network Unreachable |
| 1 | Host Unreachable |
| 2 | Protocol Unreachable |
| 3 | Port Unreachable(UDP で受け先がいない時に返る) |
| 4 | Fragmentation Needed / DF set |
| 9 / 10 | Administratively prohibited(管理者ブロック) |
| 13 | Communication Administratively Prohibited(FW で遮断) |
ICMPv6(IPv6 用 ICMP)
IPv6 では ICMPv6 が必須プロトコルです。アドレス解決やルータ広告など、IPv4 で ARP / DHCP が担っていた役割の多くを引き受けます。
| Type | 名称 |
|---|---|
| 1 | Destination Unreachable |
| 2 | Packet Too Big(PMTUD の核) |
| 3 | Time Exceeded |
| 128 / 129 | Echo Request / Reply |
| 133 / 134 | Router Solicitation / Advertisement(NDP) |
| 135 / 136 | Neighbor Solicitation / Advertisement(NDP) |
セキュリティ観点
- Smurf 攻撃 — ブロードキャスト宛 Echo Request で大量応答を引き起こす(現代では IP Directed Broadcast 禁止で対策済み)
- Ping of Death — 異常サイズの ICMP で OS をクラッシュ(古い脆弱性、対策済み)
- ICMP トンネリング — FW を通る ICMP ペイロードに任意データを載せて C&C と通信
- ICMP Redirect 攻撃 — ルート情報を偽装して中間者攻撃
ICMP を遮断するべきか
「セキュリティのため ICMP 全遮断」は非推奨です。Type 3(Destination Unreachable)と Type 11(Time Exceeded)を遮断すると PMTUD や経路調査が破綻します。
| 方針 | 説明 |
|---|---|
| Echo Request を制限(レート制限) | ping flood 対策、完全遮断は避ける |
| Type 3 / 11 / 12 は通す | 到達性・PMTUD のため必要 |
| ICMPv6 は遮断しない | NDP が壊れて通信不能になる |
パケットキャプチャの例(tcpdump)
# ICMP のみ表示
sudo tcpdump -i any 'icmp'
# ICMPv6 含めて
sudo tcpdump -i any 'icmp or icmp6'
# Echo Request のみ
sudo tcpdump -i any 'icmp[icmptype] = icmp-echo'
FAQ
Q: ICMP に「ポート番号」はある?
A: ありません。代わりに Type / Code でメッセージ種別を区別します。Identifier / Sequence フィールドが「同じ ping 対応の問い合わせ⇔応答」を識別します。
Q: TCP と UDP の関係は?
A: ICMP は TCP/UDP の上下関係ではなく同列の独立プロトコルで、IP の直下に座ります。プロトコル番号は IPv4 で 1、ICMPv6 で 58。
Q: クラウド環境で ping が通らない
A: AWS / GCP / Azure ではセキュリティグループ・NSG の既定で ICMP が許可されていないことが多い。必要なら明示的に許可する。
関連
- インターネット層(第2層) — 親カテゴリ
- IP / IPv4 / IPv6 — 上位プロトコル基盤
- ping / traceroute — ICMP を使うツール
- NDP / ARP — アドレス解決
- Path MTU Discovery
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?