Telnet【Telecommunication Network】

広告

広告

Telnetとは

最終更新
2005-12-25T13:21:00+09:00
この記事のURI参照
http://www.7key.jp/nw/technology/protocol/telnet.html#what

Telnetは、TCP/IPネットワークにおいてネットワークに接続された他の端末を遠隔操作するためのシステム(Telnetサーバが相手端末のNVTとなる)を指します。また、そのシステムを提供するプロトコルを指す場合もあります。Telnetに限ったことではありませんが、操作する側の端末をローカルホスト、遠隔地にあり操作される側の端末をリモートホストと呼びます。まず、Telnetサーバが起動されている端末にローカルホストからTelnetクライアントを使ってログインします。その際は接続先のホスト名かIPアドレスを指定し、ユーザアカウントとパスワードを入力します。認証されれば、その端末があたかも目の前にあるように操作することができます。通常TelnetはTCPポート番号23番を利用しますが、このポート番号を変更することによって、SMTPHTTPのようにテキストの入出力を行うアプリケーション層のプロトコルを実行することもできます。

補足

Telnet等により、リモートホストへ接続することをリモート接続と言います。

Telnetプロトコル概要

最終更新
2005-12-30T16:59:00+09:00
この記事のURI参照
http://www.7key.jp/nw/technology/protocol/telnet.html#outline

TelnetクライアントがTelnetサーバへ接続する際は、お互いの間でコマンドとデータをやり取りします。ここで言うコマンドはTelnetシステムを実現するために必要な制御情報を指し、データとはクライアント端末とリモートシステム間でやり取りされる情報(ローカルホストでどのキーが押されたか等)のことを指します。ただ、Telnetコマンドで送られる文字コードはUS-ASCII文字で使うコードの範囲外となっており、何らかの方法でコマンドを区別してやらなければ、コマンドとして送られてきたコードがUS-ASCII文字では無いと判断され、無視されることとなります。そこで、コマンドについてはIACエスケープコード(0xFF)と呼ばれるデータを先頭に付け、ASCIIコードではなくTelnetコマンドだと言う目印としています(下記サンプル参照)。

IAC(0xFF) WILL(0xFB) TRANSMIT-BINARY
Telnetコマンド
コード項目機能
0xF0(240)SE[Sub-negotiaon End]オプションのサブネゴシエーションパラメータ終了。
0xF1(241)NOP[No Operation]オペレーションなし。受信した側はこれを無視する。
0xF2(242)DM[Data Mark]同期信号送出。必ずTCP緊急通知URGと共に指定されなければならない。
0xF3(243)BRK[Break]ブレーク。
0xF4(244)IP[Interrupt Process]NVTが接続されているプロセスの割り込み又は中止を行う。
0xF5(245)AO[Abort Output]ユーザに出力を送信しないよう、出力を抑止する。
0xF6(246)AYT[Are You There]AYTが受信されたと言う視覚的な証拠をNVTに送信することにより、相手が動作しているかどうかを確認する。
0xF7(247)EC[Erase Character]受信側はデータストリームから最後の文字を消去する。
0xF8(248)EL[Erase Line]受信側はデータストリームから最後の行を消去する(前回のCRLFは除く)。
0xF9(249)GA[Go Ahead]送信可能であることを通知し、送信を促す。
0xFA(250)SB[Sub-negotiation Begin]指定されたオプションでサブネゴシエーションを開始する。
0xFB(251)WILL(オプションコード)指定されたオプションでの実行開始要求/現在の実行の確認を指示。
0xFC(252)WON'T(オプションコード)指定されたオプションでの実行又は実行の継続の拒否を指示。
0xFD(253)DO(オプションコード)指定されたオプションでの相手方による実行の要求/実行の要求の確認を指示。
0xFE(254)DON'T(オプションコード)指定されたオプションでの相手方による実行の停止/実行停止の要求の確認を指示。
0xFF(255)IAC[Interpret as Command]Telnetエスケープシーケンス。

Telnetではデータとしてローカルホストのキーボードから入力されたコマンドが、1文字ずつUS-ASCII文字の最上位有効ビットを0に設定した8bitとしてリモートホストへ送信されます。つまり、キーボードから1文字入力するごとに、その1文字(1オクテット)がTCPセグメントペイロード部に格納され、リモートホストへと送信されることとなるのです。また、文字情報以外にもBackspaceTabと言った特殊なキーをキーボードから押したと言う情報もリモートホストへ伝える必要があります。そのために標準NVT文字と呼ばれる制御文字が幾つか用意されています。

標準NVT文字(Windows例)
名前コードコード機能
NULL文字NULL0x00(0)オペレーション無し。
BELL文字BEL0x07(7)音声又は視覚的な信号を生成。
バックスペースBS0x08(8)印刷ヘッドを1文字分左マージンの方向へ移動。
水平タブHT0x09(9)プリンタを次の水平タブ停止位置に移動。
改行LF0x0A(10)プリンタの水平位置を維持したままで次のラインに印刷ヘッドを移動。
垂直タブVT0x0B(11)プリンタを次の垂直タブ停止位置に移動。
フォームフィードFF0x0C(12)プリンタの水平位置を維持したままプリンタを次のページの上端に移動。
キャリッジリターンCR0x0D(13)現在の行の左マージンに印刷ヘッドを移動。

行の終わりはCR(0x0D)とそれに続くLF(0x0A)として送信されます。CR自体を送信したい場合は、CRとそれに続くNULL文字(0x00)として送信されます。

Telnetのオプション

最終更新
2006-01-07T15:39:00+09:00
この記事のURI参照
http://www.7key.jp/nw/technology/protocol/telnet.html#option

Telnetには幾つかのオプション機能があり、このオプション機能を使って接続に関する設定等、NVTの各設定を変更することが出来ます。リモート端末側で利用できるサービス機能をローカル側と変わらないように出来ますので、高機能な端末であれば(NVTに対する)追加機能を使用することも出来ますし、能力の低い端末で不都合が生じることもありません。セッション開始時には両端ともNVTであると仮定され、その後のセッション中はどちらの側から何時でもコマンドを使用する事によりオプション交渉を開始する事ができます。各オプションについては個別のRFCに記述されていますが、交渉をする手順には前述のDODON'TWILLWON'Tのコマンド/応答が使用されます。オプションの使用要求を相手側に送信しても相手がそれを受け入れる保障はありませんが、オプション無効要求を拒否することは認められていません。

Telnetオプションネゴシエーションの組み合わせ
送信側受信側注意
DO相手にオプションの使用を要求WILLオプションを使用するオプションは有効となる
WON'Tオプションを使用しないオプションは有効にならない
WILL自分がオプションの使用を宣言DOオプションの処理が可能であるオプションは有効となる
DON'Tオプションをサポートしていないオプションは有効にならない
WON'T相手のオプション使用を中止WON'T自身のオプションを無効受信側は同意しなければならず、オプションは無効となる
DON'T自分のオプションの無効化を宣言DON'T了解する受信側は同意しなければならず、オプションは無効となる

ネゴシエーションの際の注意点

ネゴシエーションの例

例えば、NVTにも幾つかの種類があり、クライアントサーバの双方で同じ使用の端末を使う必要があります。そこで、クライアントがサーバに対して端末タイプを問い合わせる場合は次のようなネゴシエーションとなります。

ネゴシエーションサンプル

Telnetオプションの例

Telnetオプションの例
名前略意オプションRFC意味
Binary Transmissionバイナリ転送0(0x00)856受信した非IAC文字は8bitのバイナリデータと解釈される。
Echoエコー1(0x01)857Telnetコネクション上でデータをエコーする(ローカルエコーに加える場合もある)。
Suppress Go AheadGo Ahead 抑止3(0x03)858Go-Ahead文字の転送を抑止する。
Status状態オプション5(0x05)859コネクションのリモート側から見たTelnetオプションの状態をユーザやプロセスから見られるようにする。
Timing MarkTelnetタイミングマーク6(0x06)860それまでに受信したデータが処理済みであることを示すタイミングマークの送信を受信側に要求する。
Terminal Typeターミナルタイプ24(0x18)1091最適なターミナルタイプを両端で交渉する。
End of Recordエンドオブレコード25(0x19)885送信データをEOR文字で終了する。
LinemodeTelnetラインモード34(0x22)1184テキストを1文字ずつ送るのではなく、テキストラインをローカルで編集して完全な形としてリモート側へ送る。
X Display LocationXディスプレイ位置35(0x23)1096TelnetをX Windows上で使用している場合にウィンドウ位置が受信側に分かるようにする。
Extended Option Listオプション拡張255(0xFF)861利用可能なオプションを256以上に増やすために使われる。

補足知識

最終更新
2005-12-25T13:44:00+09:00
この記事のURI参照
http://www.7key.jp/nw/technology/protocol/telnet.html#supplement

Telnetにはログイン時に入力するパスワードが平文でネットワーク上を流れてしまう等、セキュリティ上の問題点が多い。そのためインターネット経由ではssh等のよりセキュアなシステムを使う事が推奨されている。

広告

当ページ作成にあたり、参考にさせてもらったリソース

Copyright (C) 2005-2006 七鍵 key@do.ai 初版:2005年12月26日 最終更新:2006年01月07日