しょっちゅう耳にするけれど、あまりしっかり理解していなかった用語「ポート番号」についてまとめてみました。
ローカル環境のとあるアプリを、リモートサーバーに接続したかったのですが上手くゆかず、そもそも諸々必要な知識が欠けていることに気が付き、この機会に調べた内容になります。
ポート番号とは
ポート番号とはコンピュータが通信を行うために
通信先のアプリケーションを特定するための番号のことです。
コンピュータに「通信用のドア」がいくつも用意されているイメージです。
ポート番号は各ドアの識別番号を表します。
ポート番号をドアとした場合に、建物に相当するのがサーバーやコンピュータであり、それを指定するのがIPアドレスですね。
(ポートを直訳するとドアというか港という意味で、荷物だったり人だったり乗せるもので停船場所がかわるというのがポート番号の語源でもあります。)
アプリケーションによってどのポート番号を使うか決まっており、代表的なものは以下の通りです。
番号 | 通信 | 役割 |
---|---|---|
20 | FTP | データ送信 |
22 | SSH | 暗号化通信 |
25 | SMTP | メール送信 |
80 | HTTP | HTTP通信 |
110 | POP3 | メール受信 |
443 | HTTPS | 暗号化通信 |
上の番号はウェルノウンポート番号と呼ばれ、
1023番以下の値で定義されています。
例えばパソコンからWebページを閲覧するときの送信先のポート番号は80です。
送信元ポート番号と宛先ポート番号
ポート番号には送信元ポート番号(Source Port Number)と宛先ポート番号(Destination Port Number)の2種類の値が存在します。
この2つは(Webサイトの閲覧やメールの送受信など)通信が発生するときに合わせてセットされます。
※どこにセットされるのか、という説明はひとまず割愛します。
宛先ポート番号は前項で示した通り扱うアプリケーションを識別するための番号で、Webサイトを閲覧する場合には80番がセットされます。
そして送信元ポート番号は23456番というようにランダムな番号がセットされます。
送信元ポート番号は、単に他の通信と混同しなければよいだけなので0~1023以外の番号が適当に自動で割り当てられます。
このように送信元と宛先の双方のポート番号セットで管理することによって、メールを受信しながらブラウザを複数起動したり、通信サービスの明確な識別を可能にしています。
登録ポート番号とダイナミックポート番号
HTTP通信の80番を例とするウェルノウンポート番号以外に以下の番号もあります。
登録ポート番号(1024~49151番)
登録済みポート番号はウェルノウンポート番号ほどではないですが、よく使うアプリケーションに割り振られているポート番号群です。
例えばMicrosoft SQL Serverに割り振られている1433は登録ポート番号に該当します。
ダイナミックポート番号(49152~65535番)
用途の決まっていないポート番号群です。前項で送信元にはランダムな番号がセットされると記載しましたが、このダイナミックポート番号の範囲からセットされます。
その他補足
そもそもポート番号はTCPまたはコネクション型と呼ばれる通信において、
通信開始前に相手との間で仮想的な通信路を確保するために用いられます。
TCP/IPといったキーワードを調べてみると、より具体的なイメージや用途が実感でき理解が深まると思いますが、本記事ではあくまでポート番号という用語を主体として記載をしてみました。
その他、予備知識です。
- ウェルノウンポート番号、登録ポート番号、ダイナミックポート番号を管理しているのはIANAと呼ばれる管理機関
- 通常サーバー側は利用するポート番号のみ開放しており、利用しないポート番号を開放したままにするのは一般的にはNGです
以上、ポート番号についての説明記事でした。