ポート (コンピュータネットワーク)
以下は、一般的に使用されるポート番号の一覧である。
TCP/20 : FTP (データ)
TCP/21 : FTP (制御)
TCP/22 : SSH
TCP/23 : Telnet
TCP/25 : SMTP
UDP/53 : DNS
UDP/67 : DHCP(サーバ)
UDP/68 : DHCP(クライアント)
TCP/80 : HTTP
TCP/110 : POP3
TCP/119 : NNTP
UDP/123 : NTP
UDP/137〜138 : NetBIOS
TCP/139 : NetBIOS
TCP/143 : IMAP
TCP/443 : HTTPS
TCP/445 : ダイレクトホスティングSMBサービス
TCP/587 : Submission(メール送信)
プロトコル名称とポートの対応表は、Unix系OSやmacOSでは/etc/servicesに、Windows NT系では%SystemRoot%\System32\drivers\etc\servicesにテキストファイルとして存在する。ただしIANAに登録されているものがすべて記載されているとは限らない。
プログラムでポートを用いて通信するには、一般にソケットと呼ばれる仕組みを用いる(ソケットはBSDで開発されたため、特にBSDソケットとも呼ぶ)。ソケットとは通信の端点のことで、2台のコンピュータが通信しているとき、その通信路の両端、すなわちそれぞれのコンピュータにソケットが存在する。また、ソケットのインターフェイス(API)やソケットを扱うライブラリプログラムも併せてソケットと呼ぶこともある。ソケットを利用したプログラムを記述することをソケットプログラミングと呼ぶ。
ソケットを用いた通信は、以下のような手順で行われる(クライアントサーバモデル)。
サーバ機でサービスを提供するプログラムは、ソケットを作成し、サービス固有のポート番号をソケットに割り当て (bind)、待ち行列を用意し (listen)、クライアントからの接続を待ち受ける (accept)。
サービスを利用するクライアントプログラムは、ソケットを作成し、そのソケットの通信相手としてサーバ機のIPアドレスとサービスのポート番号を指定し (connect)、接続を行う。
サーバは接続を受け付けると、新規にソケットを作成し、そのソケットとクライアントとの間に通信を確立する。もとのソケットは再び待ち受けに戻る(これは、会社などで、受付係が来客を担当者に引き合わせ、その後また受付に戻るようなものと考えることができる)。
通信が終わると、2.および3.で作成したソケットは破棄される。
ポート番号は大別して3種類に分けられる。
システムポート (System Ports) 番号(旧称:ウェルノウンポート (Well Known Ports) 番号)は、基本的なシステムサービスやプロトコルで使用される、よく知られたポート番号であり、Internet Assigned Numbers Authority (IANA) が管理している。ユーザーポート (User Ports) 番号(旧称:登録済みポート (Registered Ports) 番号)に関しても、IANAが利便性を考慮して公開している。いずれの用途にも該当しないポート番号を使用する場合は、49152番以降を使用する。
クライアントが用いるポートはエフェメラルポート(短命なポート)と呼ばれる。かつては、動的・私用ポート (Dynamic and/or Private Ports) の範囲のポート番号を用いることが一般的であったが、 RFC 6056 によって現在では1024から65535までの範囲を用いるべきとされている。
1992年まではウェルノウンポート番号は1〜255までだった。
ただし、これはあくまで指針であり強制力はない。これに従わず任意のポート番号を勝手に用いて通信することも技術的には可能だが、使用するポートが意図せず重複した場合、不具合を起こす可能性がある。
なお、Unix系のOSでは、0〜1023番のポートを使用するには、通常、root権限が必要で、予約ポートとも呼ばれる。