FTP(File Transfer Protocol) 新井 裕 FTP とは File Transfer Protocol( ファイル転送プロトコル ) の名のとおり、異なるコンピュータ間 のファイルの転送に用いられる。 RFC114 で言及され RFC765 、 RFC959 で改訂され た。 FTP は Telnet と同じようにサーバ、クライアントの関係で成り立っている。これ によって、リモートホストのファイルアクセスでき、ファイルの転送や取り出しが行え る。 FTP セッション中は 2 本のコネクションでが使われる。 - 制御コネクション コマンド、応答 - データコネクション データそのもの ユーザー インター フェース サーバー の制御 プロセス クライア ントの制 御 プロセス サーバーの データ転送 プロセス クライア ントの制 御プロセ ス ファイルシステム ファイルシステム ユーザー ファイル転送 (1) 保存されたデータ表現に使われたコードセットを記述するデータタイプ ASCII 表現 送信側はまず保存データを Telnet プロトコルが使う NVT-ASCII に変 換。受信側は NVT-ASCII 形式から適切なフォーマットへデータを変換 する。このことにより、両端によってテキストフォーマット形式が 違っていても問題なく転送が可能となる。 ノンプリント 単なる文字列。 Telnet フォーマット制御 改行やタブなどで見栄えがよくなっているもの。 IMAGE(BINARY) 表現 全てのデータを連続したビット(ビットの並びを文字とし て解釈しない)で送信する。画像ファイルや特定のアプリ ケーションファイル等、非テキストファイルを転送する際 に使用される。 LOCAL 表現 ユーザが指定するオクテットサイズでデータを転送する。 EBCDIC 表現 EBCDIC 文字表現を使うホスト間での効果的なデータ転送 を行う。 ファイル転送 (2) FTP 転送モード ストリームモード データをオクテットのストリームとして転送するモード。転送するデータタイ プに制限はなく、必要であればレコード構造を使うこともできる。レコード構 造のファイルをを転送する場合は、 EOR (レコード終了)として 0x01 、 EOF (ファイル終了)として 0x02 が使用される。 EOR と EOF を両 方とも示す場合は 0x03 で表現する。 データ構造がファイル構造であれば EOR は不要だが、 EOF は示さなければな らない。ただし、 EOF はデータ転送用コネクションの開放で暗黙的に示すこ ととなっているので、制御オクテットは一切使われない。 ファイル転送 (3) ブロックモード データをブロックと言う単位で転送するモード。必要であればレコード構造を使うこと もできる。各ブロックの先頭には下記のような 3 オクテットのヘッダがつけられる。 記述子部分には EOR 、 EOF 、再スタートマーカ、内容データに対する疑問の有無、他 の関連情報当を示す。 0 8 24 •128:EOR を示す •64:EOF を示す 記述子 バイトカウント •32: 内容データに対する疑問(エラーがあるかもしれない)をホストが持っていること を示す •16: 再スタートマーカを示す カウントフィールドにはブロックの全長を示し、次のブロックの開始位置を明示する。 ファイル転送 (4) 圧縮モード 圧縮モードはランレングス圧縮と呼ばれる圧縮形式にてファイルを圧縮し、転 送するモード。圧縮用制御データが付加され転送される。 オクテ 0 ット数 非圧縮データ 最大 127 オクテット ランレングス圧縮は、同一の文字が続いた場合にそれを圧縮する方式とされて いる( [AAAABBCCCD→A4B2C3D1 )。 10 複製数 複製 データ 圧縮データ 最大 63 オクテット → 2 オクテット 11 充填文字 最大 63 オクテット → 1 オクテット ファイル転送 ● アクセス制御コマンド USER ユーザー名入力 PASS パスワード入力 ACCT アカウント情報入力 CWD 作業ディレクトリ変更 CDUP 親ディレクトリへ移動 SMNT 構造をマウントする REIN 再初期化 LOGOUT ユーザーログアウト ファイル転送 (5) ● 転送パラメータ - TYPE データ表現方法を指定 - STRU データのファイル構造を示す F - ファイル ( ファイルを連続したデータオクテットとしてみる ) R - レコード構造 ( 連続したレコードでファイルが構成 ) P - ページ構造 ( 不連続またはランダムアクセスを記述するために用いられる ) - MODE 転送モードを示す S - ストリーム B - ブロック C - 圧縮 FTP 要求応答の具体例 (1) 本来、 ftp は利用を許可されユーザアカウントを取得しているコンピュータ間でファイルを送 受信するためのものだが、誰からでもアクセスできるファイルサーバを運用できる仕組みもあ り anonymous ftp と呼ばれている。自宅のパソコンで anonymous ftp にアクセスしたので、そ れとキャプチャしたもの例として示す。 ・ ncsa.uiuc の anonymous ftp サーバに接続 FTP 応答 220 :新しい ユーザーのための準備が できている 331 :ユー ザ名 OK パスワードが必 要 アクセス制御コマンド USER :ユーザ名入力 PASS :パスワード入力 FTP 要求応答の具体例 (2) ディレ クトリ FTP サービスコマンド LIST: カレントディレク トリの内容を一覧表示す る FTP 応答 150: ファイル状態は OK でデー タコネクションが開かれようと している 226: データコネクションを閉 じようとしている。要求されたファイル 動作は成功。 FTP 要求応答の具体例 (3) PC\Windows に移動に移動して readme.txt をコピー CWD: 作業ディレクトリ変更 PORT: データコネクション用の ホストポートを示す。 RETR: サーバーファイルシステ ムからファイルのコピーを取り出 し保存する。 QUIT:FTP 接続の終了 まとめと補足 FTP 接続の TCP ヘッダ内の宛先ポート番号 20 、 21 番を使用する。 クライアントはコマンド PORT にて、自身の IP アドレスと 1024 番以上の ポート番号を待ち受けポート番号 ( 送信元ポート番号 ) として伝える。サー バーがこの通知を了解すると、コネクションが確立される。 複数クライアントが NAT を介した転送をおこなう場合・・・同ポート番号を 複数台クライアントが使用したとき、 NAT が別のポート番号をクライアン トそれぞれに割り当てる。 SMTP(Simple Mail Transfer Protocols) 新井 裕 SMTP とは ● 信頼性の高いメール配信サービスの提供 ● RFC821 で定義されている。 ● メールは SMTP クライアントから SMTP サーバーへ転送される。サーバーは自身宛のメッ セージならばファイルシステムに保存するが、ほかのメールボックス宛ならば、中間システム を経由してそこへ転送する。 SMTP コマンド と応答、 メール ユーザー 送信者 SMTP クライ アント ファイル システム SMTP サーバー ファイル システム 送信受信装置の決定 ● 電子メールアドレス ホスト固有のドメイン名 ( 15章DNS参照 ) とユーザーア カウントを@で関連付けることにより成り立っている。 例 user@ice.uec.ac.jp コマンドと応答 ● HELO 接続の確認。送信側ホスト名を受信側に示す。 ● EHLO HELO の拡張版。 ● MAIL メール送信者を示す (FROM~) ● RCPT メール受信者を示す。 (1 つの受信者の順パスを示す。複数の受信者にメッセージを送りたい時は 必 要な数だけコマンドを出す) (TO~) ● DATA DATA コマンドに続く行はメッセージそのもの。ピリオド 1 個の行がメッセージの終わりを示す ● 220 サービスの準備ができている ● 250 要求された動作を行った ( 動作確認 ) ● 354 メール入力を開始 ● EHLO 250 MAIL 221 サービスが転送チャンネルを閉じる 250 RCPT クライ アント 250 DATA 354 Message . 250 QUIT 221 サーバ ー SMTP 動作確認 ytk@ice.uec. ac.jp master@ice .uec.ac.jp メッセージのヘッダ ● メッセージにはヘッダをつける。ヘッダにはメッセー ジ作成日時、発信者、メールタイトルなどの情報が入 れられるが、どの情報が入れられるかは任意で、アプ リケーションに依存する。 RFC822 で慣例がまとめられている。 DATA ヘッダの情報は人間のために メールヘッダ あり、メールの送受信に影響は及ぼさない。 メールボディ まとめ SMTPでは使用するポート番号は 25 番を用いる。原則 ASCII 文字しか送れないので、拡張プロトコルとして MIME がある。画像 音声など非テキストファイルの送信も可能になっている。 ● 日本語入力は RFC1468 に詳細あり。 メッセージデータは通常 ASCII 文字だが <ESC>$B がくるとそれ以降は日本語として認識される。 <ESC>$B 日本語 JIS X 0208 -1983 <ESC>(B ASCII コード
© Copyright 2024 Paperzz