telnetで遊ぶtelnetでFTP
殆どの人は,専用のソフトを使ってFTPしていると思いますが,無理すればこれもtelnetでできます.
FTPの特徴
FTPクライアントからサーバに接続しますが,データを送受信する場合,FTPサーバ側からクライアントへ接続してきます.つまり,いわゆるFTPクライアントはサーバとしても動作しています.しかしtelnetにはサーバとして接続を待ち受ける機能は無いので,PASV(パッシブ)モードという物を使います.PASVモードでは,常にこちら側から接続することになります.それでも,データ用に別のコネクションを張るので,telnetを複数同時に操作する必要があります.
接続してみる
では,とりあえず接続してみましょう.
><KBD>telnet ftp.~~.ne.jp 21</KBD>[enter]
コマンドプロンプト上で上のように入力してくみてださい.ftp.~~.ne.jpというのが,接続したいサーバで,後の21というのがポート番号です.サーバのコンピュータでは色々なサーバが同時に動いていることが多いのですが,提供するサービスによって番号が決められています.FTPは普通は21番です.サーバの管理者はポート番号を自由に設定できますが,変な番号にするとアクセスする人が困るので普通は固定です.
220 ftp.k-k.yi.org FTP server (Version 6.00LS) ready.<BR> <KBD>USER kousuke</KBD>[enter]<BR> 331 Password required for kousuke.<BR> <KBD>PASS ********</KBD>[enter]<BR> 230 User kousuke logged in, access restrictions apply.<BR> <KBD>XPWD</KBD>[enter]<BR> 257 "/" is current directory.<BR>
ここまでは何も問題ありません.
ファイルの一覧を取得してみましょう.ファイルのリストのデータは別のコネクションで行われるので,PASVモードにしてもうひとつtelnetを動かします.
<KBD>PASV</KBD>[enter] 227 Entering Passive Mode (111,222,123,210,246,135)
なにやら,変な数字が並んでいます.最初の4つはIPアドレスです.5番目の数字に256を掛けて,6番目の数字を足したものがポート番号です.というわけで,急いでもうひとつコマンドプロンプトを開いて次の用に入力します.
>telnet 111.222.123.210 63111[enter]
次に,最初のプロンプトに戻って,
<KBD>NLST</KBD>[enter]<BR> 150 Opening ASCII mode data connection for 'file list'.<BR> 226 Transfer complete.<BR>
これで,後に接続した方にデータが送られてきたと思います.
<KBD>QUIT</KBD>[enter]<BR> 221 Goodbye.<BR>
FTPのコマンド
サーバに接続すると,コマンドを受け付ける状態になります.コマンドを打ち込むと,応答コードとメッセージが返ってきます.
USER ユーザ名
ユーザを指定します.
PASS パスワード
パスワードを入力してログインします.
XPWD
カレントディレクトリを表示
NLST
ファイル一覧を取得.
QUIT
終了して接続を切ります.
詳しくはRFCを読んでください.
まとめ
<略>
これで,出かけた先のパソコンが,インターネットに繋がってるのにFTPクライアントがインストールされてない!なんて事はたぶんありません.IEでもFTPは使えますし,WindowsにもFTPコマンドがあります.というか,telnetでファイルのやり取りは無理があります.
履歴
- 2003-05-24 公開