理系学生日記

おまえはいつまで学生気分なのか

telnet で FTP

FTP は制御コネクションとデータコネクションでポートを 2 つ使うので、telnet で FTP を話そうと思うと HTTP とかよりかはちょっとメンドくなったりします。ここではちょっと ftp.ne.jp さんでテスト。

**制御コネクション

制御コネクション用のポートである 21 番ポートに telnet。

|| $ telnet ftp.ne.jp 21 Trying xxx.xxx.xxx.xxx Connected to ftp.ne.jp. Escape character is '^]'. 220- 220-Welcome to KDDI R&D Labs, INC. 220-=============================== 220- (略) USER anonymous 331 Please specify the password. PASS anonymous 230-[Announcement] 230- This server only accepts the FTP passive mode. 230- Don't use FTP/HTTP(Web) acceleration softwares an 230 Login successful. PASV 227 Entering Passive Mode (192,26,91,193,209,19) ||< USER、PASS コマンドを使ってログインして、PASV コマンドでパッシブモード用のポートを教えてもらいます。括弧で囲まれてる 6 つの数字のうち、後ろの 2 つでポート番号を表します。 ここでは、209 * 256 + 19 = 53523 番ポートがデータコネクション用ポートです。

**データコネクション

52523 ポートに telnet で接続します。

|| $ telnet ftp.ne.jp 52523 Trying 192.26.91.193... Connected to ftp.ne.jp. Escape character is '^]'. ||< もちろん接続できます。

**制御コネクション

制御コネクション (21 番ポート) で LIST コマンドを発行します。LIST コマンドの結果はデータコネクションで送られるので、ここではその結果は表示されません。

|| LIST 150 Here comes the directory listing. 226 Directory send OK. ||<

**データコネクション このとき、さっき telnet で接続したデータコネクションには、リストがずらっと出力されてます。

|| drwxr-xr-x 3 ftp ftp 50 May 08 22:47 000 drwxr-xr-x 6 ftp ftp 68 Oct 22 2008 001 drwxr-xr-x 3 ftp ftp 31 May 19 2008 010 drwxr-xr-x 10 ftp ftp 128 May 19 2008 011 drwxr-xr-x 4 ftp ftp 52 May 19 2008 020 drwxr-xr-x 3 ftp ftp 31 May 19 2008 021 drwxr-xr-x 8 ftp ftp 87 Oct 08 2008 030 drwxr-xr-x 6 ftp ftp 65 Aug 19 2008 031 drwxr-xr-x 3 ftp ftp 31 May 19 2008 032 drwxr-xr-x 3 ftp ftp 31 Mar 18 14:20 033 drwxr-xr-x 13 ftp ftp 151 Oct 22 2008 040 (略) ||<