第4章 通信の制御|4-3|コース全体 19本中15本目
ポート番号とは ― IPアドレスとの役割分担
ポート番号は、
前の記事 ・4-2 TCPの3ウェイハンドシェイクと再送制御
ポート番号は、1台のコンピュータの中で「どのアプリ宛てか」を区別する番号
通信を届けるには、2段階の宛先指定が必要です。IPアドレスで「どのコンピュータか」を指定し、ポート番号で「そのコンピュータの中のどのアプリ宛てか」を指定します。IPアドレスだけでは、Webサーバ宛てなのか、同じ機器のメールサーバ宛てなのかを区別できません。
ポート番号は0〜65535の数字で、TCPとUDPのヘッダにそれぞれ格納されています。
なぜ0〜65535なのか
ポート番号は、TCP・UDPヘッダの16ビットの領域に格納されます。16ビットで表せる値は2¹⁶ = 65536通りです。
IPアドレスの各区切りが8ビットで256通り、範囲が0〜255になるのと同じ考え方です。
ポート番号の3つの区分
0〜65535のポート番号は、用途ごとに3つの範囲に分かれています。区分を定めているのは、インターネットの番号資源を管理する組織のIANAです。
| 区分 | 範囲 | 個数 | 特徴 |
|---|---|---|---|
| ウェルノウンポート | 0〜1023 | 1,024個 | IANAが代表的なプロトコル用に割り当てた番号 |
| 登録済みポート | 1024〜49151 | 48,128個 | 特定のソフトウェアやサービスがIANAに登録して使う番号 |
| 動的ポート | 49152〜65535 | 16,384個 | 特定の用途に固定せず、通信のたびにOSが一時的に割り当てる番号 |
図と表のとおり、ウェルノウンポートは全体のごくわずかな範囲です。HTTPやHTTPSなど、代表的なサービスの番号はこの狭い範囲に集まっています。
主要なポート番号
次の表は、代表的なサービスのポート番号です。いずれもウェルノウンポートで、サーバ側が待ち受ける宛先ポート番号です。
| サービス | プロトコル | ポート番号 |
|---|---|---|
| HTTP | TCP | 80 |
| HTTPS | TCP | 443 |
| DNS | UDP / TCP | 53 |
| DHCP(サーバ側) | UDP | 67 |
| DHCP(クライアント側) | UDP | 68 |
| SSH | TCP | 22 |
| FTP(データ) | TCP | 20 |
| FTP(制御) | TCP | 21 |
| SMTP | TCP | 25 |
| POP3 | TCP | 110 |
| IMAP | TCP | 143 |
| SNMP(エージェント側) | UDP | 161 |
| SNMPトラップ(マネージャ側) | UDP | 162 |
FTPは、制御用の21番とデータ転送用の20番の2つを使います。ただし20番は待ち受けには使わず、アクティブモードでサーバがデータ用の接続を張るときの送信元になります。この違いはFTP・TELNET・NTPの記事で説明しています。22番のSSHがつながるまでの流れは、SSHの記事で説明しています。
DNSは、通常の問い合わせにUDPの53番を使います。応答が大きくなるゾーン転送などでは、TCPの53番も使います。この使い分けはTCPとUDPの違いの記事で説明しています。
80番のHTTPと443番のHTTPSの違いはHTTPとHTTPSの記事で、SMTP・POP3・IMAPの使い分けはメールの記事で説明しています。
SNMPは、向きによって使うポート番号が変わります。マネージャがエージェントに問い合わせるときは、161番を使います。エージェントがマネージャへトラップを通知するときは、162番を使います。
送信元ポートはどう決まるか
ここまでのポート番号は、すべてサーバ側の宛先の番号でした。一方、通信を始めるクライアント側のポート番号はOSが決めます。
OSには、一時的な割り当て用の番号の範囲があります。この範囲をエフェメラルポートと呼びます。PCがサーバへ新しく接続するたびに、OSはこの範囲から空いている番号を1つ選びます。
選ばれた番号は、送信元ポート番号として自動的に割り当てられるので、人が指定する必要はありません。接続を確立する3ウェイハンドシェイクの手順は、1つ前の記事で説明しています。
どの範囲を使うかはOSによって異なります。49152〜65535はIANAが定めた動的ポートの区分で、Windowsなどはこの範囲を使います。
一方、Linuxの初期設定では、32768〜60999をエフェメラルポートとして使います。これはIANAの区分とは別の範囲ですが、その中から空いている番号を選ぶ考え方は共通です。
この仕組みのおかげで、同じPCから同じサイトへ2つのタブで同時にアクセスしても、通信は混ざりません。2つの通信は、宛先IPアドレスと宛先ポート番号(サーバ側の443番)までは同じです。
しかし、OSがタブごとに別の送信元ポート番号を割り当てるので、戻ってきたデータがどちらのタブ宛てかを区別できます。
この送信元ポートは、家庭用ルータでさらに書き換えられることがあります。この仕組みがNAPTで、プライベートIPアドレスとNATの記事で説明しています。
外部から自宅のサーバにアクセスしたいときは、ポート番号を指定して転送するポート開放の設定が必要です。
TCPのポートとUDPのポートは別物
ポート番号の領域は、TCPヘッダとUDPヘッダにそれぞれ独立してあります。TCPの80番とUDPの80番は、番号が同じだけで、無関係の別々の窓口です。TCPの80番が使用中でも、UDPの80番にはまったく影響しません。
次はDNSの記事で、ドメイン名をIPアドレスに変える仕組みを説明します。
練習問題(全5問)
正解:0〜65535
ポート番号は
正解:0〜1023
0〜1023が
正解:443
HTTPSは
正解:送信元の
宛先の
正解:TCPと
ポート番号の
選んでから「採点する」を押すと、解説つきで答え合わせができます。
おすすめの本 PR
ネットワークを初めて学ぶ人向けの入門書です。
![『[改訂新版]3分間ネットワーク基礎講座』の表紙](https://m.media-amazon.com/images/P/4774143731.09.MZZZZZZZ.jpg)
