• 締切済み

FTP通信について

現在、FTPデータ通信ポート20番を利用したデータの流れを確認したく、WindowsDosプロンプトでFTPを行った所、データ通信ポートが20以外を利用しておりました。(Etherealで確認したら3000番台を利用) 実際には、FTP通信は20番がデータ通信用、21番が制御用ポートと学習しておりました。 データ通信20番ポートを利用してFTP通信をしたいのですが、どのような方法があるのでしょうか。FTPサーバ側の問題なのでしょうか。 FTPサーバが問題だとすれば、上記実現するために、フリーのFTPサーバ(できればWindows)をご紹介頂けると幸いです。 お世話になりますが、宜しくお願い致します。

みんなの回答

  • ency
  • ベストアンサー率39% (93/238)
回答No.2

FTPの仕様ですね。 FTPデータポート20番、FTP制御ポート21番というのは、あくまで「FTPサーバ側」で使用するポート番号のことです。 確かに、FTPでは、データコネクションはサーバのほうから張りにきます。 しかし、それが可能なのは、事前に制御コネクション側で、クライアントからサーバに対して、「Active IP」と「Active Port」を通知しているからなんです。 サーバは、制御コネクション側でクライアントから通知された「Active IP」「Active Port」に対して、データコネクションを張りにきているんです。 # Ethereal でご確認しているのであれば、データコネクション接続前に #  Request: Port xxx,xxx,xxx,xxx,xxx,xxx # というような FTP のメッセージが見えると思います。 # これが、クライアントから Active IP と Active Port を通知している箇所になります。 ですので、クライアント側のデータポートを 20番にすることはできません。 クライアント側は Well-known Port をはずした番号が割り当てられることに…っと、このへんの話は問題なさそうですね。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

PASVモードを使用していたのではないですか? 通常だと、FTPのデータ通信様のコネクションはサーバ側から接続されます。 が、ルータ配下などNAT環境では外部からの接続は基本的にフィルタされます。 そのため、PASVモードを使用してクライアントからサーバ側へ接続することになります。 その際にサーバ側から接続ポートの指定があります。 クライアント側のポート番号は通常TCP/IPドライバが設定する(未使用のポートをランダムに…など)ので、プロトコル関係なく決定されます。 # ちなみに、ルータ配下にあるサーバでも開けていないポートの場合は弾かれます。 # ルータによってはFTPの制御用パケットを監視していてPASVモード時の接続を通してくれるものもあります。

関連するQ&A