FTP(File Transfer Protocol)

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参照 ) とユーザーア
カウントを@で関連付けることにより成り立っている。
例 [email protected]
コマンドと応答
●
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 動作確認
[email protected].
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 コード