PORTコマンド

PORTコマンド

 PORTコマンドは、FTP(File Transfer Protocol)において、FTPクライアントがデータ接続用のポートをサーバーに指定するために使用されるコマンドです。FTPは、通常、2つのポートを使用して通信を行います。コマンド接続用のコントロールポート(通常はTCPポート21)と、データ転送用のデータポート(通常はTCPポート20)です。データポートは、クライアントとサーバー間でのファイル転送時に使用されます。

 FTPクライアントがデータ転送用のポートを指定する場合、PORTコマンドを使用して、自分のIPアドレスとポート番号をサーバーに送信します。このポート番号は、クライアントがサーバーに接続するポートとは異なるランダムなポート番号であることが一般的です。

PORTコマンドの構文は以下の通りです。

PORT h1,h2,h3,h4,p1,p2

 ここで、h1〜h4はFTPクライアントのIPアドレスの各オクテット、p1とp2はポート番号を表します。例えば、192.168.0.10のクライアントがポート番号50000を使用する場合は、以下のようにコマンドを送信します。

PORT 192,168,0,10,195,80

 このコマンドは、FTPサーバーに、192.168.0.10のIPアドレスを使用し、ポート番号195x256+80(つまり、50000)のポートを開くよう指示します。

 FTPサーバーは、データポートの開放に成功した場合、"200 PORT command successful"のようなメッセージを返します。一方、ポートの開放に失敗した場合は、"425 Can't open data connection"のようなエラーメッセージが返されます。

 なお、FTPには、データ転送用のポートを自動的に開くためのPASV(Passive)モードも存在します。PASVモードでは、クライアントが指定するデータポートを使用するのではなく、サーバーが開いたランダムなポートを使用します。PASVモードは、ファイアウォールなどのネットワークセキュリティ機構がある場合に有用です。