水野 忠則 静岡大学情報学部情報科学科教授
佐藤 文明 静岡大学情報学部情報科学科助教授

ポートで届け先のアプリケーションを識別する

 ソケットは名前のとおり,アプリケーションと適切な通信サービスを接続するコネクタの役割を持っています。ソケットを使った通信では,どのような通信方式を使うか,どのような相手と通信するかを指定してアプリケーションと下位の通信サービスを接続してからデータを送信します。

 IPはIPアドレスに基づいてあて先のコンピュータまでパケットを配送します。では,複数のアプリケーションが一つのコンピュータで動作している場合は,どうやってパケットを正しいアプリケーションに渡すのでしょうか。そのために使われるのが,ポートと呼ばれるものです。ポートは0~65535の整数で表された識別子で,コンピュータ内部でのパケットの届け先を示します。

 TCPやUDPのパケットのヘッダー部には,送信側とあて先側のポートの番号を指定するフィールドがあります。ここに書かれた番号(ポート番号)を使ってTCPやUDPはパケットのあて先アプリケーションを識別します。アプリケーションとポート番号を対応させるために,ソケットAPIの一つであるbindバインドというコマンドを使います。

 0~255までのポート番号は予約されており,いくつかはよく使うサーバー・アプリケーションに割り当てられています。たとえば,Webサービスで使うhttpサーバーには80番が,ファイル転送のftpサーバーには20番と21番が,電子メールのsmtpサーバーには25番が割り当てられています(pict.2[拡大表示])。