3 Minutes NetWorking
No.57

3Minutes NetWorking

第57回FTP(2) データタイプ

■ データタイプ

インター博士

前回からFTPの説明を始めている。
FTPとは何だった、ネット君。

ネット助手

ふぁいるとらんすふぁーぷろとこる。ファイル共有を行う為のプロトコルですよね。
やだな〜、博士。忘れるわけないじゃないですか。

インター博士

ふむ。自覚症状なしか、末期症状だな。

ネット助手

なんですか?
ちゃんと覚えていたじゃないですか。

インター博士

ネット君。何事にも例外は存在する
例外の安易な一般化は事態を混乱させるだけだぞ。

ネット助手

例外って。
それに事態って、どんな事態ですか?

インター博士

ネット君……、いや、これは私の口から聞かされてはいけないことだろう。
ともかく、FTPだ。

ネット助手

うぅぅ〜、なんなんですか、もう。

インター博士

さて、ネット君。FTPの特徴はOSに依存しないクライアント・サーバシステムという点があったな。

ネット助手

そうでしたね。他のファイル共有、NetBIOSやNFSはファイルマウント型でOSに依存する、と。

インター博士

うむ。OSに依存しない、ということは例えばバイトの取り扱いをどうするか、などという問題が発生する。

ネット助手

ばいと?
8ビットですよね。それがどう問題なんです?

インター博士

何故8ビットと断定できるのだ?

ネット助手

え?
だって、8ビットじゃないですか。教養のコンピュータ基礎とかの授業ではそう教えてもらいましたよ?

インター博士

確かにそういう基礎的な授業ではそう教えるが、実際は1バイト=8ビットとは必ずしもいえない。
システムによっては、1バイトが7ビットだったり、9ビットだったりする。 ▼ link

ネット助手

へ? 1バイトが7ビットだったり、8ビットだったり、9ビットだったりするんですか?

インター博士

うむ、そういうことだ。なのでネットワークでは8ビットで区切ることを、「バイト」とは言わず「オクテット」という。オクテットという言葉は以前出てきたな?

ネット助手

え〜っと、う〜んと。

インター博士

ふむ、やはり、進行中か。あなどれんな

ネット助手

何がです?

インター博士

こっちの話だ。以前というのは、IPアドレスのところだ。第21回だ。
このようにバイトの扱いが違う以外にも、OSによって違いがあるのでFTPで差異を吸収してやらなければ、OSを無視したファイル交換ができない。

ネット助手

そりゃそうですね。

インター博士

FTPではデータタイプという考えがあって、この問題を解決している。

ネット助手

でーたたいぷ?

インター博士

うむ。以下の4つがある。

  • ASCII(text)
  • IMAGE(Binary)
  • EBCDIC
  • LOCAL

■ ASCIIモード

インター博士

下の2つ。EBCDICとLOCALは現在はほとんど使われていないので省略する。
ASCIIとIMAGEはFTPクライアント・サーバは必ずサポートしていなければならないASCIIがデフォルトになる。

ネット助手

ASCIIって、あのASCIIですか? 文字コードの。

インター博士

そうだ。そのASCIIだ。文字データを転送するにはこのモードを使う
動作としては、以下の形になる。

[Figure57-01:ASCIIモード]

ネット助手

えぬぶいてーあすきー。ねっとわーくばーちゃるたーみなる。
telnetが使うASCIIですよね。

インター博士

そうだ。telnet同様NVT-ASCIIを使用してデータを送る。
ASCIIモードのポイントは文字データを送るためにあることだ。

ネット助手

文字データってどんなのです?

インター博士

テキスト文書やHTMLファイルなどだな。つまり文字そのものが主要なデータとなっているファイルだ。
これらはホストの文字コードで規定されているため、NVT-ASCIIに変換してすることが可能だ。

NVT-ASCIIへの変換

[Figure57-02:NVT-ASCIIへの変換]

インター博士

このようにホストで使用するコードが違っても、ちゃんとAからBへ「A」というアルファベットを送ることができるわけだ。
ちなみに改行(LFCF)もちゃんと変換する。

ネット助手

はは〜。なんかtelnetの時に出てきた、ネットワーク仮想端末みたいですね。

インター博士

そうだな。役割的には同じだな。
テキストモードには、さらにフォーマット制御が付け加えられる。

ネット助手

ふぉーまっと?
データを消す?

インター博士

そっちのフォーマットという意味ではない。もともとの形式という意味だ。
つまり、単なるテキストというのはこう。

ノンプリントテキスト

[Figure57-03:ノンプリントテキスト]

インター博士

文字が連なっている、というだけの形式だ。画面端までいったら折り返したり、スクロールすることによって表示できる。
これをノンプリントという。

ネット助手

のんぷりんと。印刷しない?

インター博士

そうだ。印刷したり、ディスプレイに表示したりという人間が見ることをあまり前提としていない形式だ。純粋な文字データの形式と言ってもいいだろう。これがデフォルトだ。さらに…。

telnetフォーマット

[Figure57-04:telnetフォーマット]

インター博士

改行やタブなどの文章の見栄えを制御するデータが入っているもの。これがtelnetフォーマット制御

ネット助手

文章の見栄え。確かに改行とかって使いますよね。

インター博士

NVT-ASCIIの制御コードを使って改行やタブを入れる。
フォーマットにはもう1つあるが、もう使われない制御フォーマットなので省略する。

ネット助手

NVT-ASCIIの制御コードっていうと、CRLFとかVTとかHTですよね。
単なる文字の羅列データか、改行とか入った「見る」ための文字データか、ってことですか。

■ IMAGEタイプ

インター博士

もう1つのタイプは、IMAGEタイプだ。
これは文字ではない任意のビット列を転送するタイプだ。

ネット助手

任意のビット列?
それってどういうことです?

インター博士

画像や、実行ファイル(.exe)は連続したビット列だ。特にそのビットを文字に変換して何かを行うわけではない。
そのようなデータは純粋なビットとしてそのまま送る必要がある。

IMAGEタイプ

[Figure57-05:IMAGEタイプ]

ネット助手

あ〜、JPGとかを間違ってメモ帳で開いちゃったりすると出てくるわけのわからない文字列。

インター博士

そうだ。これらのファイルはビットはビットとして受け取ってもらわないと困るわけだ。
なので、「文字ではありません。ビット列(binary)ですよ」と明示して送る。

[Figure57-06:IMAGEモード]

ネット助手

ははぁ、なるほど。ビット列をそのまま送る、と。

インター博士

そういうことだ。どちらかといえば、このタイプで送ることの方が多いな。
画像や実行ファイルはこのタイプだし、例えばWordやExecelなどの.docや.xlsもこちらに入る。

ネット助手

へぇ、ASCIIはあまり使わないんですか?

インター博士

そういうわけではないが。一般によく使われるWebサイトのアップロードの際には、HTMLファイルはASCIIタイプで送る。
Webサーバとクライアントの文字コードの違いの問題があるからな。

ネット助手

なるほど。

インター博士

ともかく、FTPではこの2つのタイプがあるということを覚えておきたまえ。
ほとんどのFTPクライアントではこの設定が必要だしな。

ネット助手

了解です。

■ データ構造

インター博士

さて、ファイルと一言で言っても、OSや記憶装置によって違いがある。
FTPではファイルの特性を3つに分類している。

  • ファイル構造
  • レコード構造
  • ページ構造
ネット助手

特性?
どう違うんです?

インター博士

簡単に言うと、保存方式だな。
どういう単位でデータを保存しているか、という構造だ。

ネット助手

どういう単位でデータを保存しているか?
…ファイル構造ならファイル単位、レコード構造ならレコード単位ってことですか?

インター博士

その通り。現在ではほとんどファイル構造だ。他の2つは汎用機などで使われている形式だ。
ファイル構造は、1つのファイルの中身が特に構造化されていない、つまり単なるデータである、という構造だ。

ネット助手

単なるデータであるという構造?

インター博士

ネット君。壊れたアナログレコードじゃあるまいし、同じ言葉を繰り返すのはよしなさい。

ネット助手

はぁ。でもさっぱりです。
もうちょっと日本語でお願いします

インター博士

十二分に日本語だが。
まぁ、そうだな。図で表すとこういう形だ。

ファイル構造

[Figure57-07:ファイル構造]

ネット助手

ファイルの中にレコードやページがある?

インター博士

簡単に言えばそうなるな。例えばレコード構造で言えば、「住所ファイル」というファイルがあったとすると、1人分のデータがレコードとして保存されている。ファイルにアクセスすると、1人分のレコードを読み書きする、という形になる。

ネット助手

ははぁ、わかるようなわからないような。

インター博士

現在普通に使うファイルは、そのファイルにアクセスすればファイル全体のデータが表示されるだろう? レコード構造やページ構造はそうではない、ということだ。

ネット助手

ファイルの中にレコードやページがある…。
例えば、Wordファイル(.doc)はページがありますよね。ということはWordファイルはページ構造なんですか?

インター博士

いや。ページ構造は、各ページ単位にアクセスが可能なのだ。
Wordファイルでは、3ページ目だけを取り出す、というファイルアクセスはできないだろう?

ネット助手

確かにそれはできないですね。

インター博士

うむ。Wordファイルは開く(アクセス)すると全ページが表示されるわけだ。つまり、ファイル構造なのだな。

ネット助手

なんとなく、わかったかな?

インター博士

うむ。レコード構造やページ構造は使われないことが多い。
なので、まぁ、特に覚える必要はないと言えばない。

ネット助手

あららら。そうなんですか。

インター博士

うむ。
さて、今回はこれぐらいにしておこう。

ネット助手

はい。

インター博士

FTPがOS・システムの差異を無視するクライアント・サーバシステムを実現するために、色々やっているのがわかるだろう?

ネット助手

そうですね。
でも、なんかこれは使われないとか、そんなんばっかりでしたね。

インター博士

うむ、それはやはりFTPが由緒ある古いプロトコルだ、ということが影響している。
昔のOSやシステムに対応するため、様々な手法を使っている、ということだよ。

ネット助手

古いプロトコルですからね。

インター博士

現在では、タイプはASCIIタイプかIMAGEタイプ、構造はファイル構造のみ、というFTPソフトがほとんどだ。
WindowsやUNIXならばそれぐらいしか使わないからな。

ネット助手

なるほど。

インター博士

次回はデータの転送について説明しよう。
ともかく、それではまた次回。

ネット助手

いぇっさ〜。
3分間ネットワーキングでした〜♪

7ビット
DECのTOPS-20sが1バイト=7ビット。
TOPS-20sはDECの汎用機DECSYSTEM-20用OS。
参考リンクは日本HPサイトのOpenVMS内の「History of Digital」。
9ビット
Multicsが1バイト=9ビットのOS。
MulticsはUNIXの起源ともなったOS。
省略
EBCDICタイプはEBCDICを使用するホスト間での効率的な転送のため。
LOCALタイプは任意のビットをバイトとして転送する。
もう1つ
ASA垂直フォーマット方式と呼ばれる方式。
文字コードの違い
主に改行(CRLF)の違いのため。
ネット助手ネット君の今日のポイント
  • FTPでOS・システムの差異を吸収する。
  • 転送するデータはデータタイプが決められている。
  • ASCIIタイプは文字データの転送を行う。
    • ホストの文字データをNVT-ASCIIに変換して転送する。
    • 受け取ったホストは自分が使用している文字コードに変換しなおす。
  • IMAGEタイプはデータを変換せず元のビット列のまま送る。
  • 使用するファイルの保存方法をFTPで区別してデータを転送する。

3 Minutes NetWorking No.57

管理人:aji-ssz(at)selene.is.dream.jp