全5090文字
PR

インター博士 今日はファイル転送のプロトコル「FTP」を解説しよう。

ネット君 今さらFTPですか? レガシーというか時代遅れというか。

インター博士 いやいや。まだ使われているし、面白い特徴があるのでプロトコルの勉強になるぞ。

 ネットワークを構築する目的は、物理的に離れているコンピューターがリソース(資源)を共有できるようにすることだ。

 リソースの共有方法の1つがリモート接続である。ネットワークを経由して離れた場所にあるコンピューターに接続し、そのコンピューターのCPUやメモリー、周辺機器を利用する。この場合、接続する側はローカル、接続される側はリモートと呼ばれる。

 リモート接続のプロトコルとしてはTELNETが挙げられる。TELNETではローカルのコンピューターから送ったコマンドでリモートのコンピューターを操作し、その結果をローカルに表示させる。

 ファイル転送もリソース共有の代表例だ。ローカルにあるファイルをリモートに、あるいはリモートにあるファイルをローカルに送信することでファイルを共有する。一般的に前者はアップロード、後者はダウンロードと呼ばれる。ファイル転送の代表的なプロトコルがFTPである。

2本のコネクションを使う

 FTPの特徴は、2本のTCPコネクションを使うことだ。1本は制御コネクション、もう1本はデータコネクションである。制御コネクションはTCP 21番ポート、データコネクションはTCP 20番ポートを使用する。

 使用するポートを複数指定すること自体は珍しくない。例えばSNMPはUDP 161番とUDP 162番、DHCPはUDP 67番とUDP 68番を使用する。

 これらのプロトコルはクライアント(エージェント)とサーバー(マネジャー)のそれぞれで使用するポートを指定している。

 SNMPではSNMPマネジャーがUDP 162番ポート、SNMPエージェントがUDP 161番を使う(図1)。SNMPエージェントからSNMPマネジャーにエラー情報を送信するトラップではUDP 162番宛てに情報が送られる。SNMPマネジャーからSNMPエージェントにリクエストを送信するポーリングはUDP 161番を使う。つまりポート番号を変えることで、エージェント宛ての情報か、マネジャー宛てのデータなのかを区別できるようにしている。

図1●2本のTCPコネクションを同時に使う
図1●2本のTCPコネクションを同時に使う
FTPの特徴は2本のTCPコネクションを同時に使うこと。そのためにサーバー側で使用するポートを2つ指定している。
[画像のクリックで拡大表示]

 DHCPも同様だ。DHCPサーバーはUDP 67番、DHCPクライアントはUDP 68番を使う。DHCPクライアントからDHCPサーバーへのデータはUDP 67番宛て、DHCPサーバーからDHCPクライアントへのデータはUDP 68番宛てに送られる。

 一方FTPは、サーバー側でTCP 21番ポートとTCP 20番ポートの両方を使用し、2本のTCPコネクションを同時に張る。

 このようなプロトコルは、主要なTCP/IPプロトコルではFTPだけである。

ネット君 2本のTCPコネクションを使うんですか。1本が送信用で、もう1本が受信用ってわけじゃないですよね?

インター博士 TCPコネクションは双方向なので1本で送受信できるぞ。それぞれ異なる役割を担っているのだ。