ポート番号とは
ポート番号とは、TCP/IP通信において、 コンピュータが通信に使用するプログラムを識別するための番号です。 ポート番号は16ビットの整数であり、 0番~65535番まであります。
TCP/IP通信においては、 IPアドレスがあればネットワーク上のコンピュータを一意に識別することができますが、 該当コンピュータのどのプログラムに通信パケットを届けるかは、 IPアドレスだけでは決定できません。 どのプログラムに通信パケットを渡すのかを決定するために、 ポート番号を使用します。
例えば、クライアントがHTTPを使って通信する際は、 該当サーバのIPアドレスとポート番号80番を指定してパケットを送ります。 ここで、ポート番号80番を指定するのは、HTTPのサーバは、 80番ポートでパケットを待っていることが多いためです。 サーバ側では、80番ポートが宛先となっているパケットが届くと、 事前に指定しておいたそのポート宛のパケットを処理するプログラム(ApacheやIISなど)が動き、 パケットの中身を処理します。
上記のような仕組みにより、 クライアントからのパケットを受け取ったサーバは、 宛先のポート番号が80番であることからWebサービスを提供すれば良いことがわかり、 適切なプログラムで処理を行うことができます。 また、サーバがクライアント端末にパケットを返す時にも、 そのクライアント端末のIPアドレスとポート番号を指定して通信を行います。
このように、 TCP/IPネットワーク上でコンピュータ同士が通信を行う際には、 IPアドレスとポート番号をセットで用いて通信を行います。
ポート番号には、下記のような三つの種別があります。
- WELL KNOWN PORT NUMBERS(ウェルノウンポート番号)
- 0番~1023番
- REGISTERED PORT NUMBERS(登録ポート番号)
- 1024番~49151番
- DYNAMIC AND/OR PRIVATE PORTS(ダイナミック/プライベートポート番号)
- 49152番~65535番
上記のうち、WELL KNOWN PORT NUMBERSは、 使用目的が定められたポート番号であり、 Internet Assigned Numbers Authority (IANA)が管理しています。 先ほど例に挙げたポート番号80番も、 このWELL KNOWN PORT NUMBERSに該当します。 REGISTERED PORT NUMBERSに関しては、IANAが登録を受け付け、 公開しています。 DYNAMIC AND/OR PRIVATE PORTSについては、 誰でも自由に使用できるポートとして開放されています。 なお、 ポート番号の一覧はIANAのWebサイトで見ることができます*。
実際に通信を行う際には、上記の種別を踏まえた上で、 通信プログラムの性質に応じて柔軟にポート番号を使用します。
- * IANA Matrix : Port Numbers
- http://www.iana.org/assignments/port-numbers