プロトコル番号

読み:ぷろとこるばんごう / 英語表記:protocol number

IPヘッダーの中にある、IPパケットのデータ部分に入っている上位のプロトコルを示す番号。TCPなら6、UDPなら17のように決まっている。

イマシルちゃんの解説

IPパケットを受け取ったパソコンは、「この中身は誰に渡せばいいの?」って迷っちゃうよね。
TCPに渡すのか、UDPに渡すのか、ICMPなのか。

そこで、IPヘッダーには「中身はこれですよ」っていう番号札が付いてるんだ。
それがプロトコル番号! 番号を見れば、すぐに正しい相手に渡せるんだよ。

より深い解説

定義

プロトコル番号は、IPv4ヘッダーにある8ビットの「プロトコル」フィールドの値で、IPパケットのデータ部分に入っている上位プロトコルの種類を示す。IPv6では、同じ役割をNext Header(次ヘッダー)フィールドが担う。番号はIANAが管理している。

代表的なプロトコル番号

番号プロトコル
1ICMP
2IGMP
6TCP
17UDP
41IPv6(IPv4の中にIPv6を入れて運ぶとき)
47GRE
50ESP(IPsec)
51AH(IPsec)
58ICMPv6
89OSPF

OSPFは、TCPやUDPを使わず、IPの上に直接載るルーティングプロトコルである点もよく問われる。

階層ごとの「中身を示す番号」

ネットワークの各層には、それぞれ「次はどの層の誰に渡すか」を示す番号がある。この3つを混同しないことが大事である。

層どこにあるか何を示すか例
データリンク層イーサネットのタイプフィールド中身のネットワーク層プロトコル0x0800=IPv4
ネットワーク層IPヘッダーのプロトコル番号中身のトランスポート層などのプロトコル6=TCP
トランスポート層TCP・UDPヘッダーのポート番号中身を受け取るアプリケーション443=HTTPS

たとえば、受信したイーサネットフレームのタイプが0x0800ならIPv4に渡し、IPヘッダーのプロトコル番号が6ならTCPに渡し、TCPヘッダーの宛先ポート番号が443ならWebサーバのプログラムに渡す、という順で中身が届けられる。

IPv6の拡張ヘッダー

IPv6では、Next Headerが上位プロトコルだけでなく、拡張ヘッダー(経路制御ヘッダー、フラグメントヘッダーなど)の種類も示す。拡張ヘッダーがいくつも連なる場合は、各ヘッダーのNext Headerが次のヘッダーを指し、最後にTCPやUDPにたどり着く。

実際の試験ではここに出る!

この用語が出てくる記事

↑