FTPの通信

 FTPは、「File Transfer Protocol」の略で、ファイル転送プロトコルとも呼ばれます。ネットワークでファイルの転送を行うための通信プロトコルで、インターネットの初期の頃から存在するインターネット上で最もよく利用されているファイル転送用プロトコルとなっています。

 ファイル転送用プロトコルは、他にも、NetBIOSやNFSなどがあります。こちらは、OSのファイルシステムを利用して外部のファイルシステムに対して仮想的にマウントすることでファイル転送を実現しています。

 FTPでは、相手先のコンピュータにログインした上でFTPサーバにファイルをアップロードしたり、FTPサーバからダウンロードを行うことができます。しかし、その際にやり取りするユーザ名とパスワードは暗号化されずに平文で送信されてしまうために、盗聴されてしまう恐れがあります。

 セキュアなFTP通信を行いたい場合は、FTPS(FTP over SSL/TLS)やSFTP(SSH FTP)でファイル転送を行う必要があります。

 FTPでのファイル転送は、コマンドベースで行うことになりますが、現在は、Windows環境においても、Linux環境においても、GUIで操作できるFTP専用ソフトが充実しています。GUIツールでは、コマンドを意識することなくファイル転送を行えるようになっています。

 FTPでは、制御用とデータ転送用の2つのコネクションを使って通信を行います。制御用には21番ポート(FTP)を、データ転送用には20番ポート(FTP-DATA)が使用されます。

 まず、最初に制御コネクションを張り、ユーザ認証が行われます。ユーザ認証に成功したら、制御用コネクションが確立されます。これは、FTPサーバへ、クライアント側から要求することで確立されます。クライアントは空いている任意のポートを使って、サーバの21番へ接続します。

 制御コネクションの確立が終わったら、データコネクションを確立します。このように、FTPでは、データの送受信とは別に制御用のコネクションを確立することで、データ転送中であっても、停止命令など他の命令が出せるようになっています。

 データコネクションは、制御コネクションで渡されるコマンドによって、その都度生成され、データの転送が終了したら切断されます。データコネクションは、1回のFTP通信の間に何回も接続と切断を繰り返しながら、ファイルが転送されることとなります。