「プロトコル番号」と「ポート番号」、どちらもネットワーク通信でよく耳にする言葉ですが、混同している方も多いでしょう。
実はこの二つはまったく異なる概念で、それぞれが異なる層で異なる目的に使われています。
本記事では、プロトコル番号の意味・役割・代表的な一覧・ポート番号との違いをわかりやすく解説していきます。
ネットワークの仕組みを深く理解したい方にとって、必ず役立つ内容です。
プロトコル番号とは何か?基本的な意味と役割
それではまず、プロトコル番号の基本的な意味と役割について解説していきます。
プロトコル番号(Protocol Number)とは、IPパケットのヘッダーに含まれる番号で、IPの上位層(トランスポート層)でどのプロトコルを使っているかを識別するための数値です。
IPはネットワーク層のプロトコルですが、IPの上にはTCP・UDP・ICMPなど複数のプロトコルが存在します。
受信したIPパケットをどの上位プロトコルに渡すべきかを決めるために、IPヘッダーの「プロトコル」フィールドにプロトコル番号が記載されています。
プロトコル番号の位置:IPヘッダーのどこにあるか
IPv4のIPヘッダーは20〜60バイトの構造を持ち、その中の9バイト目(8ビット)がプロトコルフィールドです。
IPv6では「次ヘッダー(Next Header)」フィールドとして同様の役割を担っています。
このフィールドの値を見ることで、受信したOSはパケットのペイロードをTCPスタック・UDPスタック・ICMPハンドラーのどれに渡すかを判断します。
代表的なプロトコル番号一覧
IANAによって管理されているプロトコル番号の代表的なものを以下に示します。
| プロトコル番号 | プロトコル名 | 用途 |
|---|---|---|
| 1 | ICMP | ネットワーク診断・エラー通知(pingなど) |
| 2 | IGMP | マルチキャストグループ管理 |
| 6 | TCP | 信頼性の高いコネクション型通信 |
| 17 | UDP | 高速コネクションレス型通信 |
| 41 | IPv6(カプセル化) | IPv4内にIPv6をカプセル化するトンネリング |
| 50 | ESP(IPsec) | IPsecの暗号化ペイロード |
| 51 | AH(IPsec) | IPsecの認証ヘッダー |
| 89 | OSPF | ルーティングプロトコル |
| 132 | SCTP | ストリーム制御転送プロトコル |
特に重要なのがプロトコル番号6(TCP)と17(UDP)で、インターネット通信の大部分はこの二つのプロトコルによって実現されています。
ポート番号とは何か?プロトコル番号との違い
続いては、ポート番号の意味とプロトコル番号との違いを確認していきます。
ポート番号(Port Number)とは、TCP・UDPヘッダーに含まれる番号で、同じコンピューター上で動作する複数のアプリケーションを識別するための数値です。
プロトコル番号はIPヘッダーにあり「どのトランスポート層プロトコルを使うか」を示す一方、ポート番号はTCP・UDPヘッダーにあり「どのアプリケーションにデータを渡すか」を示します。
プロトコル番号とポート番号の違いを整理
プロトコル番号
・IPヘッダーの「プロトコル」フィールドに記載
・L3(ネットワーク層)のIPがL4(トランスポート層)のプロトコルを識別するために使う
・TCP=6、UDP=17、ICMP=1など
・範囲は0〜255(8ビット)
ポート番号
・TCP・UDPヘッダーの「送信元ポート」「宛先ポート」フィールドに記載
・L4(トランスポート層)がL7(アプリケーション層)のサービスを識別するために使う
・HTTP=80、HTTPS=443、SSH=22など
・範囲は0〜65535(16ビット)
たとえばHTTPS通信では、IPヘッダーにプロトコル番号6(TCP)が記載され、TCPヘッダーに宛先ポート番号443が記載されます。
受信側のOSはプロトコル番号を見てTCPスタックに渡し、TCPがポート番号を見てHTTPSアプリケーションに渡す、という流れになっています。
ウェルノウンポートとポート番号の分類
ポート番号は用途によって三つのカテゴリに分類されています。
| カテゴリ | 範囲 | 用途 | 代表例 |
|---|---|---|---|
| ウェルノウンポート | 0〜1023 | 標準的なサービスに予約済み | HTTP:80・HTTPS:443・SSH:22 |
| 登録済みポート | 1024〜49151 | アプリが登録して使用 | MySQL:3306・PostgreSQL:5432 |
| 動的・プライベートポート | 49152〜65535 | クライアント側の一時ポートとして使用 | OSが動的に割り当て |
プロトコル番号とファイアウォール設定への影響
続いては、プロトコル番号とファイアウォール設定の関係について確認していきます。
ファイアウォールのルール設定においてプロトコル番号は重要な要素です。
ファイアウォールルールでのプロトコル番号の活用
ファイアウォールでは「IPプロトコル番号」「ポート番号」「送受信IPアドレス」の組み合わせでパケットのフィルタリングを行います。
たとえば「プロトコル番号6(TCP)かつ宛先ポート443のパケットを許可する」というルールを設定することで、HTTPS通信のみを許可する制御が可能です。
ICMPを使ったping(プロトコル番号1)を遮断したい場合は、プロトコル番号1のパケットを拒否するルールを設定します。
プロトコル番号をセキュリティ設計で活用する際の重要なポイントです。
IPsecのESP(プロトコル番号50)とAH(プロトコル番号51)はポート番号を持たないため、ポート番号ベースのファイアウォールルールでは制御できません。
プロトコル番号50・51を明示的に許可するルールが必要となります。
また、GRE(Generic Routing Encapsulation、プロトコル番号47)はVPNトンネリングに使われるプロトコルで、こちらもポート番号を持ちません。
VPN接続を許可する場合はプロトコル番号ベースのルール設定が必要な点を覚えておきましょう。
まとめ
本記事では、プロトコル番号の意味・役割・代表的な一覧・ポート番号との違い・ファイアウォール設定への応用について解説してきました。
プロトコル番号はIPヘッダーに記載されてトランスポート層のプロトコルを識別し、ポート番号はTCP・UDPヘッダーに記載されてアプリケーションを識別するという役割の違いを正確に理解することが重要です。
特にTCP(番号6)・UDP(番号17)・ICMP(番号1)の三つは最もよく使われるプロトコル番号であり、ネットワーク設計・セキュリティ設計・トラブルシューティングのすべての場面で基礎知識として活用できるでしょう。