3 Minutes NetWorking
No.53

3Minutes NetWorking

第53回telnet(1) リモート接続

■ 昔話

インター博士

Long Long ago(むかしむかしのそのむかし).

ネット助手

昔々のその昔?
なんですか、それ?

インター博士

まぁ、ちょっと黙って聞け。
昔々のその昔。まだまだ「コンピュータ」というものが、それほど容易に手に入らなかった時代。例えばハードディスクは1バイト= 1円なんていう時代。

ネット助手

1バイト=1円?
ってことは、例えば20GBのハードディスクだと200億円!?

インター博士

今だと20GBなんて売ってないからな。そのころは20GBなんて集積できないから、メガ単位だな。それでもウン百万円とかいう時代だ。

ネット助手

はわ〜。

インター博士

そういう時代だから、普通のオペレータが使用するコンピュータに大量の記憶容量は持たすことができない。高すぎるからな。
さらに言えば、CPUもあまりスペックのいいものをつけることもできない。もちろん高いからだ。

ネット助手

今だと3GHzのCPUまでコンシューマ向けに販売されていますよね。
はわわ〜。なんかすごい時代だなぁ。

インター博士

さて、そういう時代だとあまりハイスペックでないマシン、はっきりいえば大して能力のないマシンを使って業務をこなす。
ただそれではもちろん能力不足すぎるので、中央にハイスペックのマシンを置いて、それの力を借りて業務をこなすわけだ。

ネット助手

ハイスペックのマシンの力を借りる?
自分のロースペックのマシンの補助をしてもらうんですか?

インター博士

そうだな、モニタとキーボード以外ロクなものがない状態のマシンから、中央のハイスペックマシンに接続する、という形態と言ってもいい。つまり文字通り端末だ。

ネット助手

端末

インター博士

そうだ。
直接接続されていない端末だ。このような端末のことを仮想端末という。

仮想端末

[Figure53-01:仮想端末]

ネット助手

へへぇ。なんていうか、一昔前のスーパーコンピューターな感じですね。

インター博士

うむ。簡単な処理は周辺のコンピュータで行うが、ちょっと大きめのデータの処理や、複雑な計算はすべて中央のコンピュータに命令を送り処理を行ってもらい結果を送ってもらうという形になる。

ネット助手

なるほど。

インター博士

つまり、ネットワーク上の違う場所に存在するコンピュータから、そのコンピュータを操作する必要があるわけだな。

ネット助手

コンピュータを操作する?
え〜っと、そうなりますかね。このデータを処理しなさい、と命令を下す必要があるわけですから。

インター博士

つまり、「他のコンピュータを操作する」=「他のコンピュータの資源を使う」。
これは何だ? ネット君。

ネット助手

資源…資源…、リソース!!
他のコンピュータのリソースを使えるってことは、リソースを共有しているということですね?

インター博士

うむうむ。
リソースの共有こそがネットワークの利点だよな。

ネット助手

えぇ。第一回でそのように説明されました。

インター博士

つまりネットワーク上の他コンピュータを操作可能にする、これがネットワークの基本中の基本ということだ。

ネット助手

リソースを共有することがネットワークの利点、で。
他コンピュータを操作して使うことができる。確かにそう言われればそうかも。

インター博士

うむ。
つまり、このネットワーク上の他のホストから特定のホストにログインすることこそが、最も基本のネットワーキングとわかってもらえたと思う。

ネット助手

なるほどです。

インター博士

うむ。その「他コンピュータを操作可能にする」ためのプロトコルを今回は説明しよう。
telnet(テルネット)というプロトコルだ。▼ link

telnet

[Figure53-02:telnet]

ネット助手

てるねっと?

■ リモート

インター博士

telnetを始める前に、わざわざ昔話をしたのはtelnetが由緒あるプロトコルだ、ということを説明したかったからだ。

ネット助手

由緒ある…。RFC854の日付は…1983年5月。
20年以上前ですね。

インター博士

他ホストへのログインという概念自体はネットワーク初期のころからあるから20年ではすまない。
ただ、その頃のプロトコルは汎用化されていないがな。

ネット助手

ん〜っと。
つまり、「他ホストへのログイン」という昔からある概念を、TCP/IPで行うのがtelnet、ってことですか?

インター博士

うむ。その通り。
telnetはTCP/IPプロトコルスイートの最初期から存在するプロトコルなのだよ。

ネット助手

「他ホストへのログイン」はネットワーキングの基本、でしたよね。

インター博士

うむ。よって、telnetはHTTPやメールやその他もろもろのTCP/IPプロトコルの原型とも言えるプロトコルなのだ。

ネット助手

ははぁ。

インター博士

さて、telnetで実現される「直接に接続されていない他ホスト」への「接続(ログイン)」のことをリモート接続という。

ネット助手

リモート。
もしかして、「リモコン」の「リモ」ですか?

インター博士

「リモ」ってなんか変な言葉だが、「リモコン=リモートコントロール」だからその通りだ。「遠隔操作」の意味だな。
リモート接続することによって、実際は違う場所にありながらあたかも直接接続しているかのように使用することが可能になるなわけだ。

リモート接続

[Figure53-03:リモート接続]

インター博士

リモート接続をして自分が操作する側のホストをローカルホスト遠隔地にあって操作される側のホストをリモートホストという。

ローカルとリモート

[Figure53-04:ローカルとリモート]

ネット助手

僕がいる側のホストで命令をして、反対側のホストを操作するんですね。
実際自分が触るのがローカルホストで、操作される側がリモートホスト、と。

インター博士

うむ。一般的には、ローカルホストがクライアントアプリケーション。リモートホストがサーバアプリケーションになる。

ネット助手

クライアントってことは要求を出す側だから、要求をして、応答しろと命令を出すって意味になるからですか。

インター博士

うむうむ。そうだ。

ネット助手

ははぁ。なるほどです。

■ ネットワーク仮想端末

インター博士

さて、ちょっとややこしいのだが、telnetサーバとtelnetクライアントにはネットワーク仮想端末という考え方がある。

ネット助手

ねっとわーくかそうたんまつ?

インター博士

うむ。
図で示した方がいいな。

ネットワーク仮想端末

[Figure53-05:ネットワーク仮想端末]

ネット助手

telnetのクライアントやサーバアプリケーションの中に、ネットワーク仮想端末がある?

インター博士

そうだ。ネットワーク仮想端末はコンピュータとは別の専用の仕様を持つ端末だ。擬似的に作られたソフトウェア的な端末だな。
ネットワーク仮想端末同士はその仕様に基づいてデータ転送を行う

ネット助手

はぁ。

インター博士

telnetアプリケーションはネットワーク仮想端末の仕様に基づいてデータの変換を行う
それはつまり…。

ネット助手

つまり?

インター博士

コンピュータの仕様がどうあれ、telnetがあれば通信が可能になるということだ。
通信自体はネットワーク仮想端末の仕様に基づいて行われるからな。

ネット助手

コンピュータはどうあれ、telnetによって通信が可能?
なんか、レイヤ6で出てきたデータフォーマットの変換みたいですね。

インター博士

うむ、レイヤ6の役割も担う端末だ。
これにより、OSやアプリケーションが異なるコンピュータ間でも通信を可能とする。

ネットワーク仮想端末・2

[Figure53-06:ネットワーク仮想端末・2]

インター博士

ルータやネットワークプリンタのような、まったく環境もOSも異なるものが相手でも、telnetアプリケーションがインストールされているならば、操作可能になるわけだ。

ネット助手

ははぁ、ネットワーク仮想端末がその差異をなくしちゃうわけですね。

インター博士

Javaで使われるJava仮想マシンと同じ考え方だな。

ネット助手

なるほど。

■ telnetの接続

インター博士

さて、そのデータ転送だが。
まず知っておいて欲しいことは、telnetはCUIである、ということだ。

ネット助手

しーゆーあい、っていうと。
コマンドプロンプトとかのアレですよね。わかりづらくって苦手ッス。

インター博士

うむ。GUIと違って知らないと使いづらいな、確かに。
とりあえず、Windowsの標準telnetクライアントの画面を見てもらおうか。

  • c:\> telnet

Windws telnetクライアント

[Figure53-07:Windws telnetクライアント]

ネット助手

ははぁ。なんというかシンプルな画面ですねぇ。

インター博士

まぁ、CUIだからな。
これでリモートホストに接続するわけだ。通常接続にはユーザIDとパスワードが必要だ。

ネット助手

ふむふむ。接続してもいいユーザかどうか判断するんですね。

ユーザ認証

[Figure53-08:ユーザ認証]

インター博士

telnetでのユーザIDとパスワードの送信はクリアテキストで送信される。

ネット助手

くりあてきすと?

インター博士

うむ。暗号化されていないため、盗聴の危険性があるということだ。

ネット助手

ははぁ。セキュリティ面で弱いんですね。

インター博士

うむ。なのでSSLなどと組み合わせた方法も考え出されている。
ともかく、ユーザIDとパスワードが一致すれば、リモート接続完了で、リモートホストにログインされる。

ログイン

[Figure53-09:ログイン]

ネット助手

え〜っと。「Welcome to Microsoft Telnet Server.」と出てますが。
こっからどうすればいいんです?

インター博士

どうするもなにも、すでにリモートホストへログインしたんだ。
この場合、リモートホスト側はWindowsだから、普通にWindowsを操作すればいい。

リモートでのWindowsの操作

[Figure53-10:リモートでのWindowsの操作]

インター博士

ちょっとモザイクで隠させてもらったが、このようにMS-DOSコマンドにちゃんと反応する。

ネット助手

ほわっ、すごい。
なんか普通にdirコマンドを実行していますよッ!!

インター博士

当たり前だ。
リモート接続後は、ネットワークを使っている・いないは関係なく端末となると先ほど話しただろう。

ネット助手

あ〜、なるほど。
まさしく仮想的な端末になるわけですね。

インター博士

このように、telnetは直接リモートホストを操作可能にするプロトコルだ。

ネット助手

直接操作可能…。
Windows上でDOSコマンドが入力できるってことは大半の事ができるってことですもんね。

■ telnetのデータ転送

インター博士

では、telnetがどのようにデータを送っているかという話だが。
telnetはTCPを使う。ポート番号は…、以前覚えろという話をしたな?

ネット助手

はわっ!!

インター博士

…。
ネット君?

ネット助手

…は、博士。
その温和な顔での握りこぶしはやめてください

インター博士

ちっ
ともかく、ポート番号は23番をデフォルトでは使用する。もちろん変更も可能だがな。

ネット助手

TCPで23番、と。

インター博士

うむ。
TCPなので、スリーウェイハンドシェイクから始まり、データを転送するわけだが…。

ネット助手

わけだが?

インター博士

telnetでは入力したコマンドが1文字1文字送信される

ネット助手

1文字ずつですか?

[Figure53-11:Telnetでのデータの転送]

インター博士

うむ。基本的には上のように本当に1文字ずつだ。

ネット助手

ははぁ、なんというか面倒な形ですね。

インター博士

うむ、確かにそうかもしれん。
ここで重要なのはどんな命令でも1文字ずつ送ることが出来るという点だ。

ネット助手

どんな命令でも送ることができる?

インター博士

そうだ。
つまりtelnetの仕組みを使えば、HTTPやメールなども可能なのだよ。

ネット助手

インター博士

例えば、Webサーバのポート80番にtelnetクライアントで接続する。
そこで、通常ならばブラウザが送る要求(命令)を、telnetクライアントで1文字ずつ送ることが出来るのだよ。

ネット助手

そうなんですか?

インター博士

うむ。HTTPのところで説明するが、HTTPでは「GET」というコマンドをWebサーバに送ることによって、ページを送ってもらう。
それをtelnetクライアントで1文字1文字送るだけだ。

telnetクライアントでのWebブラウズ

[Figure53-12:telnetクライアントでのWebブラウズ]

インター博士

そうすると、Webサーバはブラウザからでもtelnetクライアントからでも「GET」という命令を受け取ったら、その命令に応じた応答を返す。
結果、Webページが送られてくるわけだ。

telnetクライアントでのWebブラウズ・結果

[Figure53-13:telnetクライアントでのWebブラウズ・結果]

インター博士

telnetクライアントはCUIなのでグラフィカルに見ることは出来ないが、HTMLソースがちゃんと送られてくる。

ネット助手

ははぁ、なんかすごい。

インター博士

つまり、ブラウザのHTTPや、メーラのSMTPなどは、より効率的・効果的に行うだけで、データ転送の基本はtelnetと同じなのだよ。

ネット助手

リモート接続して相手に要求(命令)を送るって形なんですね。

インター博士

そうだ。telnetが原型と言った意味がわかるだろう?

ネット助手

なるほどです。

インター博士

さて、telnetにはまだまだ話すことがある。
だが今回は長くなったのでこの辺にしておこう。

ネット助手

はい。

インター博士

なんか今回はtelnetの話というよりも、データ転送の基本の話になってしまったな。

ネット助手

そうですね。
多くの通信は、リモート接続して相手に命令を送るってことなんですよね。

インター博士

うむ、そうだ。それを忘れないよう。

ネット助手

了解です。

インター博士

次回もtelnetだ。

ネット助手

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

端末
[terminal]
仮想端末
[virtual terminal]
ログイン
[login]
ユーザがコンピュータを操作可能(アクセス可能)な状態にすること。
通常はユーザアカウントとパスワードが必要。
ログオン[logon]とも言う。
telnet
RFC854で定義。
リモート接続
[remote access]
リモートログイン[remote rogin]とも言う。
remoteは遠隔の、遠いの意味。
CUI
[Character User Interface]
アプリケーションやOSの操作方法として、キーボードから文字を入力して操作するタイプのこと。出力(画面表示)も文字だけとなる。
UNIXやMS-DOSのCLI(Command Line Interface)がコレに当てはまる。
反概念はアイコンやウィンドウを使ったGUI(Graphical User Interface)。
通常接続には
Windows2000でtelnetを試した場合、デフォルトでは下のユーザIDとパスワード入力画面は表示されません。
NTLM認証というWindowsドメインを使った認証がデフォルトで使用されています。これをはずさないと出てきません。
クリアテキスト
[clear text]
暗号化されていないそのままの文字列の意。
SSL
[Secure Socket Layer]
サーバとクライアント間のデータ通信を暗号化して行うプロトコル。
dirコマンド
ディレクトリ表示のコマンド。
そのディレクトリにあるフォルダ・ファイルが表示される。
ネットワーク仮想端末
[Network Virtial Terminal]
NVTと略される。
Java仮想マシン
[Java Virtual Machine]
Javaのソースコードをそのコンピュータにあったコードに変換するソフトウェア。
Java VMとも呼ばれ、Javaを実行するためには必要。
ネット助手ネット君の今日のポイント
  • ネットワーク経由で他のホストに接続することをリモート接続という。
  • リモート接続をする側をローカルホスト、される側をリモートホストという。
  • telnetはダイレクトに他のコンピュータを操作できる。
  • NVTを使うことによって、ハードウェアの差異をなくすことができる。
  • telnetはTCP・ポート23番を使う。
  • telnetクライアントは1文字1文字コマンドを送信する。
  • 多くのアプリケーションプロトコルはリモート接続をするためのプロトコルであり、telnetが原型となっている。

3 Minutes NetWorking No.53

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