概要
FTP(File Transfer Protocol)は異なるコンピューター間でファイル転送を行うときに使用されるプロトコルです。
インターネット上には誰でもログイン可能なFTPサーバーが用意されており、anonymous ftpサーバーで「anonymous」か「ftp」というログイン名を入力すれば接続できます。
仕組み
FTPでは通常、制御用とデータ転送用の二つのTCPコネクションが使われます。
制御用のTCPコネクションはポート番号21を使用し、FTPの操作を制御します。具体的には、認証、ファイル名や転送方法の指示などをASCII文字列でやり取りします。このコネクションは、ユーザーからの切断指示があった場合や一定時間コマンドが送信されない場合に自動的に切断されます。
一方、データ転送用のコネクションは通常ポート番号20を使用し、GET(RETR)、PUT(STOR)、LISTなどのコマンドによってデータの転送が行われます。各コマンド実行時にデータ転送用のTCPコネクションが確立され、その後すぐに切断されます。セキュリティ強化のため、PORTコマンドを使ってランダムにポート番号を割り当てることもできます。
これらのコネクションは逆方向になっているため、外部のFTPサーバーとのコネクションをNAT経由で確立することはできません。この問題を解決するために、PASVコマンドを使用してデータ転送用のTCPコネクションの方向を変更する事が出来ます。
ASCII文字列によるやりとり
FTPでは要求コマンドにASCII文字列が利用され、その応答には3文字の数字をASCII文字列で表したものが利用されます。また、ASCII文字列型のプロトコルでは1行が1つのコマンドや応答を意味するため改行が重要な意味を持ちます。つまり改行がコマンドや応答を意味し、引数は空白で区切られます。
コメント