アプリケーションを識別するポート
TCP/IPを利用した通信に置いて、最終的な情報の宛先はアプリケーションソフトウェアである。IPアドレスによって目的のコンピュータに情報を送ることができたとしても、そこで最後にアプリケーションソフトウェアに情報を渡すという仕事が残っている。この仕事を行なっているのがトランスポートプロトコルのTCP/UDPである。
IPアドレスはコンピュータそのものを指定しているが、アプリケーションまでは指定してない。アプリケーションを識別する情報がポート番号なのである(図3)。このポート番号によって通信しているアプリケーションを識別できるため、1つのコンピュータで同時に複数の通信アプリケーションを稼働させることができるのである。
ポート番号の決め方
それではポート番号とTCP/IPアプリケーションの対応はどこで決められているのであろう。ポート番号とサーバの対応はIANA(Internet Assigned Numbers Authority)という組織が管理している。最新の情報はIANAのWebサイトから入手できる。
ポート番号は16ビット長で0~65,535のアドレス空間がある。IANAはこれをウェルノウンポート、レジスタードポート、ダイナミック/プライベートポートの3つに分けている(表1)。
「ウェルノウンポート(Well-Known Port Numbers)」は、一般的なTCP/IPアプリケーションを対象に、IANAが割り当て管理している番号である。ポート番号の範囲は0~1023番までで、インターネットでよく使われるサービスとポート番号が対応付けられている(表2)。
「レジスタードポート(登録済みポート、Registered Port Numbers)」は、おもにソフトウエアベンダーが独自アプリケーション用に申請し、IANAが管理するポート番号である。ポート番号の範囲は1024~49151番の範囲である。
この範囲には、マイクロソフトのSQL Serverの「1433」や、X Window Systemの「6000~6063」などがある。多くのポート番号が登録されているが、システムで使用していないポートは、特に支障がなければ自由に使ってよい。実際Windows系OSではクライアントのポートとして未使用のポートを動的に割り当てている。
「ダイナミック/プライベートポート(Dynamic and/or Private Port Numbers)」は、ローカルで動的にまたはプライベートに自由に利用できるポートである。
トランスポートプロトコルとポート番号
ポート番号が同じでも、TCPとUDPとの組み合わせでアプリケーションの動作を変えることもできる。一例としてDNSというサービスを紹介しよう。
DNSはWebサイトのURLなどに含まれるホストの名前からIPアドレスを解決するプロトコルである。DNSへの問い合わせはUDPプロトコルで53番ポートへ送る。DNSはUDPプロトコルの53番ポートで受け取ったパケットはIPアドレスの問い合わせの処理を行ない、その応答を返す。
一方TCPを使った53番への通信は、「ゾーン転送」と呼ばれるDNSサーバ間の名前解決のデータベースを交換する場合である。
なぜこのようなことができるかというと、これはインターネット層がIPヘッダからトランスポートプロトコルを識別し、TCPならTCPモジュールへ、UDPならUDPモジュールへ渡し、そのあとでポート番号によりアプリケーションが識別されるからだ。
このように、ポート番号はアプリケーションを識別するためのものである。しかし、TCPまたはUDPプロトコルとの組み合わせにより、同じポート番号でも異なるアプリケーションの機能にも利用されているのである。
この連載の記事
-
第5回
ネットワーク
Windowsネットワークの名前と番号 -
第4回
ネットワーク
インターネットで使うドメイン名と名前解決 -
第3回
ネットワーク
EthernetでのID「MACアドレス」を理解する -
第1回
ネットワーク
TCP/IPで使われるIPアドレスとポート番号 -
ネットワーク
完全解剖「名前とアドレス」<目次> - この連載の一覧へ