- 締切済み
FTP通信について
現在、FTPデータ通信ポート20番を利用したデータの流れを確認したく、WindowsDosプロンプトでFTPを行った所、データ通信ポートが20以外を利用しておりました。(Etherealで確認したら3000番台を利用) 実際には、FTP通信は20番がデータ通信用、21番が制御用ポートと学習しておりました。 データ通信20番ポートを利用してFTP通信をしたいのですが、どのような方法があるのでしょうか。FTPサーバ側の問題なのでしょうか。 FTPサーバが問題だとすれば、上記実現するために、フリーのFTPサーバ(できればWindows)をご紹介頂けると幸いです。 お世話になりますが、宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ency
- ベストアンサー率39% (93/238)
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)
PASVモードを使用していたのではないですか? 通常だと、FTPのデータ通信様のコネクションはサーバ側から接続されます。 が、ルータ配下などNAT環境では外部からの接続は基本的にフィルタされます。 そのため、PASVモードを使用してクライアントからサーバ側へ接続することになります。 その際にサーバ側から接続ポートの指定があります。 クライアント側のポート番号は通常TCP/IPドライバが設定する(未使用のポートをランダムに…など)ので、プロトコル関係なく決定されます。 # ちなみに、ルータ配下にあるサーバでも開けていないポートの場合は弾かれます。 # ルータによってはFTPの制御用パケットを監視していてPASVモード時の接続を通してくれるものもあります。