1台の機器内で通信するアプリケーションを識別するための番号。
ポート番号とは、1台の機器の中で動いている複数のアプリケーション(通信相手のソフト)を見分けるための番号です。データが機器に届いた後、「どのアプリに渡せばよいか」を判断するために使います。
通信の宛先は 192.168.1.10:80 のように「IPアドレス:ポート番号」の形で表されます。
・IPアドレス(=機器の住所):どの機器に届けるかを決める
・ポート番号(=アプリの窓口):機器内のどのアプリに渡すかを決める
身近な例で考えると、マンションの住所と部屋番号に似ています。住所(IPアドレス)だけでは建物までしか届きませんが、部屋番号(ポート番号)まで指定すれば特定の住人(アプリ)に荷物が届きます。上の図解では、同じIPに届いたデータがポート番号で各アプリに振り分けられる様子を示しています。
ポート番号は16ビットで表されます。そのため、とり得る値は 0 〜 65535 の範囲で、全部で65536通りあります(2の16乗)。
計算式は次のとおりです。
・表現できる個数:2^16 = 65536
・最小値:0
・最大値:65535(= 65536 − 1)
0から数え始めるので最大値は65536ではなく65535になる点に注意しましょう。IPアドレス(機器の住所)が世界に1つを指すのに対し、ポート番号は「その機器の中の窓口の番号」なので、機器ごとに同じ番号を使い回せます。たとえば、どのWebサーバも基本的に同じ80番でアクセスできます。
65536個のポート番号は、用途によって大きく3つの区分に分けられています。
・ウェルノウンポート(0〜1023):HTTPやFTPなど主要なサービスにあらかじめ予約された番号
・登録済みポート(1024〜49151):特定のアプリケーション用に登録された番号
・エフェメラルポート(49152〜65535):通信のたびに一時的に割り当てられる番号
サービスを待ち受けるサーバ側は、相手が迷わず接続できるように決まった番号(ウェルノウンポート)を使います。一方、接続しに行くクライアント側は、その都度OSが空いている番号を一時的に貸し出します。これがエフェメラルポート(動的ポート)です。
身近な例で考えると、お店の電話番号(ウェルノウンポート)は誰でもかけられるよう固定されていますが、こちらからかける自分の電話(エフェメラルポート)はそのとき使える回線が割り当てられる、というイメージです。次のページではウェルノウンポートをくわしく見ていきます。
通信では、宛先のポート番号だけでなく送信元のポート番号も使われます。1つの通信は、「送信元IP : 送信元ポート」と「宛先IP : 宛先ポート」の組み合わせで1本ずつ区別されています。
だから、たくさんのPCが同じWebサーバの80番に同時につないでも、通信が混ざりません。
・宛先:どのPCから見ても サーバのIP : 80(固定)
・送信元:PCごと・接続ごとに違うポート(例:PC-Aは 51000、PC-Bは 52000)
・サーバはこの4つの情報の組で「どのPCのどの通信か」を見分ける
身近な例で考えると、お店の同じ受付窓口(80番)に複数のお客さんが同時に来ても、受付が「誰から来たか(送信元)」で取り違えずに応対できるのと同じです。上の図のように、宛先が同じ :80 でも、送信元が違えば別々の通信として扱われます。
じつはポート番号には、「TCP用」と「UDP用」の2系統があります。だから TCPの80番 と UDPの80番 は、番号は同じでもまったく別の窓口です。
なぜ2系統に分かれているのか。それは、TCPとUDPが「データの届け方」が違う2つの方式だからです。役割が違うので、ポート番号もそれぞれが別に持っています。
・TCP:確実さを重視。順番どおりに届け、抜けたら送り直す(Web・メールなど)
・UDP:速さを重視。届いたか確認しない代わりに速い(動画・音声・オンラインゲームなど)
なぜ同じ番号が両方で使えるのか。データが機器に届くと、OS(=基本ソフト)はまず「TCPかUDPか」を見分け、そのあとでポート番号からアプリを選びます。つまり宛先は「方式+ポート番号」の組で決まるため、方式が違えば同じ番号でも別の相手になるのです。
たとえば DNS(=ドメイン名からIPアドレスを調べる仕組み)は、ふだんの小さな問い合わせを UDPの53番、大きなデータのやり取りを TCPの53番 というように、同じ53番をTCPとUDPで使い分けています。番号は同じでも別系統だからこそ、両方を同時に使えるのです。
ウェルノウンポート(0〜1023)の中でも、とくによく登場する代表的なものを挙げます。番号と役割をセットで覚えておくと、通信の宛先を見たときに「何の通信か」が見当をつけられます。
| ポート | サービス | 役割 |
|---|---|---|
| 20 / 21 | FTP | ファイル転送 |
| 22 | SSH | 暗号化された遠隔操作 |
| 25 | SMTP | メールの送信 |
| 53 | DNS | 名前解決(ドメイン名→IP) |
| 80 | HTTP | Web(暗号化なし) |
| 110 | POP3 | メールの受信(取り出す) |
| 143 | IMAP | メールの受信(サーバで管理) |
| 443 | HTTPS | Web(暗号化あり) |
たとえば https://example.com にアクセスすると、暗号化ありの HTTPS=443番 が使われます。番号を自分で入力しなくても、ブラウザがサービスごとに決まったポートへ自動でつなぎに行きます。まずは 80(HTTP)・443(HTTPS)・22(SSH)・25(SMTP)・53(DNS) から押さえると覚えやすいです。