情報処理安全確保支援士 2018年 春期 午前2 問18
問題文
IPv4において、IPパケットで送られているデータが、ICMPメッセージであることを識別できるヘッダ情報はどれか。
選択肢
ア:IPヘッダのプロトコル番号(正解)
イ:MACヘッダのイーサタイプ値
ウ:TCPヘッダのコントロールフラグ
エ:UDPヘッダの宛先ポート番号
🔒 解説は解答すると表示されます
IPヘッダのプロトコル番号【午前2解説】
正解の理由
IPパケットのヘッダ内にある「Protocol」フィールドが、上位プロトコル(IPのペイロードで何が運ばれているか)を識別します。したがってICMPを識別する情報はIPヘッダ側にあり、選択肢の中では ア が正解です。IPv4ヘッダではこのProtocolフィールドは1バイト長で、ヘッダ先頭から数えて10バイト目(オフセット9)に格納されます。ICMPのプロトコル番号は1です(TCPは6、UDPは17)。
解法ステップ
- ICMPがOSIモデルのどの層に属するか確認する(ICMPはIPによって運ばれるネットワーク層の制御プロトコル)。
- 上位プロトコルを示す情報がどのヘッダにあるかを考える(物理/データリンク層のヘッダは「フレームの中身がIPかどうか」程度しかわからない)。
- IPv4ヘッダのProtocolフィールド(10バイト目、オフセット9)の値を見て、値が1ならICMPと判定する。
選択肢別の誤答解説
- ア IPヘッダのプロトコル番号
正しい。Protocolフィールド(10バイト目=オフセット9)により、IPのペイロードがICMP/TCP/UDP等のどれかを判別できる。ICMPはプロトコル番号1。 - イMACヘッダのイーサタイプ値
EthernetのEtherType(フレーム内のフィールド)は「ペイロードがIPv4かIPv6かARPか」を示す(例:0x0800 = IPv4)が、IPv4の内部で何が運ばれているか(ICMPかTCPか)は分からない。 - ウTCPヘッダのコントロールフラグ
TCPヘッダはそもそもTCPセグメントにのみ存在する。データがICMPであればTCPヘッダ自体が存在しないため参照できない。 - エUDPヘッダの宛先ポート番号
UDPヘッダはUDPペイロードにのみ意味を持つ。ICMPはUDPではないため、宛先ポート番号で判別することはできない。
よくある誤解
- 「EtherTypeでICMPを判別できる」
EtherTypeはネットワーク層プロトコル(IPv4/IPv6/ARP等)を示すだけで、IP内部の上位プロトコルは識別できません。 - 「Protocolフィールドの位置はヘッダ先頭付近だが詳細なオフセットを知らなくても良い」
試験やトラブルシューティングでは具体的なオフセット(IPv4では10バイト目=オフセット9)が問われることがあるので、代表的なフィールド位置は覚えておくと有利です。
補足コラム
IPv4ヘッダの前半フィールド配置(バイト単位、0始まりのオフセットを併記)例:
オフセット0: Version(4) + IHL(4)
オフセット1: Type of Service
オフセット2-3: Total Length
オフセット4-5: Identification
オフセット6-7: Flags + Fragment Offset
オフセット8: Time To Live (TTL)
オフセット 9: Protocol ← ここ(1バイト)
オフセット10-11: Header Checksum
オフセット12-15: Source IP
オフセット16-19: Destination IP
主要プロトコル番号(抜粋):ICMP = 1、TCP = 6、UDP = 17。IPv6では同等の役割を持つフィールドは「Next Header」です。
簡単な実用コマンド例(パケット解析):
- tcpdumpでICMPを直接表示: sudo tcpdump -n icmp
- 生ダンプでIPヘッダのバイトを確認: sudo tcpdump -n -s 0 -X icmp
FAQ
Q. IPv6ではどのフィールドで上位プロトコルを識別するのですか?
A. IPv6では「Next Header」フィールドが同じ役割を果たします(位置はヘッダ仕様に依存します)。
A. IPv6では「Next Header」フィールドが同じ役割を果たします(位置はヘッダ仕様に依存します)。
Q. EtherTypeが0x0800のフレームなら必ずICMPを含むのですか?
A. いいえ。0x0800はIPv4を示すだけで、ペイロードがICMP、TCP、UDPのいずれかを判断するにはIPv4ヘッダのProtocolフィールドを参照する必要があります。
A. いいえ。0x0800はIPv4を示すだけで、ペイロードがICMP、TCP、UDPのいずれかを判断するにはIPv4ヘッダのProtocolフィールドを参照する必要があります。
Q. IPヘッダ以外でICMPを識別できる方法は?
A. パケット解析ツール(Wireshark等)やOSのログは上位プロトコルを解析して表示しますが、プロトコル自体の識別は最終的にIPヘッダのProtocol(またはIPv6のNext Header)に依存します。
A. パケット解析ツール(Wireshark等)やOSのログは上位プロトコルを解析して表示しますが、プロトコル自体の識別は最終的にIPヘッダのProtocol(またはIPv6のNext Header)に依存します。
関連キーワード: IPヘッダ、Protocolフィールド、オフセット9、ICMP、EtherType、Next Header、プロトコル番号、パケット解析

\ せっかくなら /
情報処理安全確保支援士を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

