1. としきのやしき正門
  2. 電算棟
  3. ポケ3の部屋

接続編

インターネット接続のための通常の階層構成

図1

DOSでインターネットに接続する場合、通常はこのような構成となります。
プロトコルスタックに dosppp を使う場合にはそれだけですみますが、TEENを使うときにはハードウェアとプロトコルスタックの間にさらに RS-232C のドライバの MCD が必要になります。
ただ、これが標準的な構成ではあるのですが、私は今までこの方法に挑戦して失敗を重ねてきました。

なお、DOSと違って UNIX や95以降の Windows の場合、OSにプロトコルスタックの機能が含まれています。


変換装置による直接IP接続

図2

ポケ3の他にも、シリアルポートしかついていない装置というものがあります。
例えば、昔から使われている、遠隔地の温度などを測定するテレメータなんていうものがあります。しかし、世の中が TCP/IP 化してくるに従い、そういう古い装置の接続も徐々にイーサネットに置き換わりつつあります。でも、新しく導入するところはいいとして、今までシリアル接続の機器を使っていたところでは、新しいもの用にイーサネットを引いても、古いものと相互に接続できず、二重投資のような形になってしまいます。かといって、全部新しいものに置き換えるのもコストがかかってしまいます。このような場合のために、シリアルポートとイーサネットを相互に変換するアダプタというものが存在します。
原理的には、こういう装置を使えば、ポケ3でもイーサネットを経由してインターネットに接続することが可能になるはずです。ただ、これ、WEB等で検索すると1個2万円〜10万円程度で入手できるようですが、用途が特殊なためか、あまり秋葉原等でも見かけません。また、同じ理由からか、一般的な名称と言うものもないようで、あるメーカーでは「シリアル・イーサ変換器」となっているし、メーカーによっては「シリアル・サーバ」とか「メディア・コンバータ」という名称だったりします。でも「メディア・コンバータ」でWEBで検索をかけると、UTPと光ファイバの変換器というのが大量に引っかかってしまいます。
その他の名称としては、「ポート・リダイレクタ」とか「コンソール・サーバ」なんていうのがあるかな。

さて、この方法だと直接イーサネットにつなげるので、あまり問題がないように見えます。が、実は、この変換装置の仕様がよく分からない、というのが一番大きな問題としてあります。例えば、単一の相手先としか繋がらないとか、通信相手に特殊なプログラムが必要といった問題が、もしかしたらあるかもしれません。
あるいは、シリアル・サーバなんていう装置の場合は特に、変換装置をつなげたシリアル端末の側はサーバとしてしか動作せず、クライアントとして他のサーバに接続することができないかもしれません。
そういう、仕様が合わず使い物にならないために買ったはいいがお金が無駄になってしまう、という問題を避ける為に、例えばBLACKBOXという会社では、製品の無料貸出なんていうサービスをやっていたりします。ちなみに、この会社、この他にも注文を受けたら即日発送など、サービスは結構いい会社なのですが、そのせいか商品の値段はややお高くなっています。他の会社の場合、価格は多少安くつきますが、やっぱり接続性という点で不安がつきまといます。

ということで、どなたか、この手の変換専用装置を使ったことのある方は、使用感などをレポートしていただけると幸いです。

追記(Mar.2007)

直接使ったわけではないのですが。
職場に、業務の関係で一時的に導入されました。資産としてはよその担当部署(もしかしたら親会社)のものなので、勝手にいじるわけにもいきませんでしたが、説明書はじっくりと読んでみました。
ラステーム・システムズ社LCNV-232RX というものです。
秋葉原でも容易に入手できるようです。若松通商で扱っています。
で、この機種の場合は残念ながら、ポケ3と接続すればポケ3でインターネットに乗り出せる、というわけにはいかないようです。
具体的には、シリアルポートに入ってきたデータをIPパケットにカプセル化して伝送する、というような動作をするだけのようなのです。つまり、伝送の相手方では、IPパケットから取り出したデータをシリアルから入力されたものだとして扱うわけです。仮に相手方がパソコンとなる場合、そのパソコンに仮想シリアルポートソフト(ポート・リダイレクタ)というものを導入し、イーサから入力されたものを仮想シリアルポート(例えばCOM3)から入力されたと見せかけるようにするわけです。つまり、どこまで行っても最後はシリアルポートという感じ。
ただ、この装置を2台ペアで使うと面白いかもしれません。つまり、ポケ3からこの装置に繋ぎ、インターネット経由でどこかのシリアルポートに出力され、そのシリアルポートが下記のようにどこかのルータのシリアルポートに繋がる、という形。必要以上に複雑になるような気もしますが。ただ、仮にこの方式でISDN公衆電話からポケ3でアクセスしようとすると、この装置に加えて携帯可能なISDNルータが必要になるため、はなはだ非現実的です。ちなみに、携帯可能なISDNルータというものは実在します。ちょっと大きいかもしれませんが、ヤマハの RT102i なんていうものも、電源を電池で駆動するというかなり無理矢理な事をすれば、携帯運用は可能です。でも、そんな事をせずに、素直にISDNルータのシリアルポートにポケ3を繋いで、そこから telnet を行う方がはるかに合理的でしょう。

追記(Aug.2013)

さすがに現在では、この装置は入手難のようです。探せば類似の装置はあると思いますが。


DOSTERM による UNIX マシンの遠隔操作

図3

UNIX マシンの場合、OSの中にプロトコルスタックが含まれていますが、その他にOSに適切な設定をしてやれば、アプリケーションの入出力を RS-232C 経由とすることができます。これは、OSの機能として持っています。
豊田さんがDOSTERMを作ったのは、この遠隔入出力のリモート側端末ソフトとして使うためだったといういきさつもあります。また、数年前に田村さんという方が発表された、ニフティのTTYをアクセスラインとしてメールサーバにアクセスするというのも、これと同じような方法だと思っていいでしょう。
ただ、これ、全体の構成を大きく見てみれば分かると思いますが、UNIX マシン全体を前述のようなシリアル・イーサ変換装置に使っている、と言えなくもありません。
ということで、もし Linux や FreeBSD 等のマシンが使えるのであれば、システム管理者に設定の方法を教えてもらいましょう。もし自分がシステム管理者で、どうすればよいかわからないという事であれば、getty 等の検索語でWEBを検索してみましょう。山のように設定方法が引っかかることでしょう。

一方、Windows では、OSとしてはこのような機能を持っていません。MACのことはよく知りませんが、やっぱりこの手の機能はないんじゃないかなぁ。

ポケ3でインターネットアクセスするにあたって、もしかしたらこれが一番安直な方法かも知れません。もし手近に UNIX な環境がなくても、空いているマシンに Linux なり FreeBSD なりをインストールすればいいわけですから。
幸い、空いているマシンもあることですし、私もこの方法を使ってみようと思ったのですが、でも結局やめました。だって、もし外出先などからいつでもポケ3でインターネットに繋げたいと思ったら、24時間そのマシンの電源を入れておかなくてはなりません。でも、既に自宅では Windows でサーバを立ち上げてあって、それが24時間稼動しているのです。さすがにパソコンを2台も連続運転させる気にはなりません。
なので、既存の Windows マシンを使った別の方法を検討することにしました。


Windows マシンを中継装置にする

図4

Windows では、OSとしてはこのような機能を持っていませんが、シリアルポートとネットワークを直結し、互いのデータを転送するというアプリケーションを作ることは可能です。ただ、これ、技術的に安定したものを作るのが難しいらしく、ほとんどが高価な商品やシェアウェアでした。そんな中で、「SerialLan」というソフトがフリーウェアであったので、試してみました。
このソフト、使ってみたところ、ネットワーク側は起動時に設定した単一の相手先とのみ通信できるという仕様でした。つまり、メールサーバを設定したらメールのやり取りだけしかできない、WEBサーバに設定したらそのWEBサーバとしかやり取りできす、リンクをたどって別のWEBサーバのデータをもらうことはできない、という仕様なんですね。もちろん、どこかの telnet サーバにつないでやれば、そのサーバのいろいろなネットワーククライアントのソフトを操作して何でもできるようになるでしょう。つまり、ポケ3と Windows マシン両方を合わせて、単一の相手にのみ接続できる1つの telnet クライアントを構成する、ということです。なんか必要以上に複雑な気もしますが。
そのほか、私の環境で使ったときの問題点としては、不正な処理などのエラーメッセージが頻発するなど、動作がかなり不安定でした。ただ、私の試した環境が、職場の Windows2000 だとか、IEの入っていない PC-9821 上の Windows95 などのため、必要なDLLが入っていないとか、あるいはソフトの方で要求しているものとDLLのバージョンが違う、ということが影響しているのかもしれません。

その他、シェアウエアなんですが、tunaterm というのがかなり安定性がいいらしいのですが、いろいろと多機能で、今回の目的にはちょっと「牛刀で鶏を割く」ような感じになるので、今のところは試していません。

でも、初めてポケ3の AutoCom の画面に、ネットワーク経由で取得したHTMLが表示されたときには感動しました。

ためしに、同様なツールを自分でも作ってみましたが、やっぱり難しいですね。
不正な処理こそ発生しないようにできましたが、RS-232C からのアクセス1回ごとにツールを再起動させないとツールが固まってしまうのです。なにかの初期化処理が欠けているだけだと思うので、多分もう一息で完成させることができるとは思うのですが、下記にご紹介する方法でアクセスできるようになった今となっては、もうこれ以上いじる気力がなくなってしまっています。とはいえ、そんな実績のないソフトでも欲しいという方がたくさんおられるようなら気合をいれて完成させますが、いませんよね?


ルータを中継装置にする


さて、ここまで試行錯誤してきてわかったことは、telnet のクライアント機能があって、シリアルポートからそれを操作できる装置があれば、それとポケ3を接続して、全体で1つの telnet クライアントを構成することができる、ということです。そこで、そういったものがないかと身の回りを見まわしてみたところ、1つ見つけました。

ルータです。

最近の廉価なルータには無いかもしれませんが、しっかりした作りのルータや、あるいは一昔前のルータであれば、必ずシリアルポートがついています。もし、これらのシリアルポートにポケ3をつないで、そこから他のマシンに telnet することができれば、問題はほぼ解決です。

運用性に関しては、元々がネットワーク機器なので、パソコンに比べれば消費電力は微々たるものですし、HDDもファンもついていないものが多いので、1日中電源を入れておいても騒音も気になりません。

入手に関しても、近頃は、ちょっと前のISDNルータなんていうのが投売りされているので、ジャンク屋などで破格の値段で入手することも可能でしょう。あるいは、ルータが不要になったお知り合いから入手するとか。

ただ、機種によっては、そもそも telnet の機能がついていないルータなんていうものもあります。そういうものをつかんでしまわないように、事前にWEBなどで情報を集めておいたほうがいいでしょう。
例えば、私が自宅で常用しているISDNルータの MN-128SOHO SL11 には、他のマシンに telnet する機能がありません。が、たまたま会社の先輩からただでもらって予備機として保管してあるヤマハのISDNルータには、この機能がついています。ヤマハのWEBサイトで確認したところでは、多くのヤマハ製のルータのうち、私が仕様を見た5機種ほどのルータには全て telnet の機能がありました。残念ながら、それらのルータにシリアルポートがあるかまでは確認していません。

これを使うことにより、ポケ3からある程度のネットワークアクセスが可能になりました。


ポケ3でモバイルインターネット


ここまでで、ルータやパソコンのシリアルポートにポケ3を直結することによりポケ3からインターネットの大海原に乗り出すことができるようになりました。
でも、せっかくインターネットに接続できるパソコンがあるのに、それを直接使わず、わざわざ複雑な接続をしてまでポケ3でインターネットにアクセスするというのも間抜けな話です。やはりここは、携帯できるというポケ3の利便性を最大限に生かして、モバイルアクセスを試してみるのが筋でしょう。
この場合、次のような構成になります。

図5

これは、自宅などのマシンを、いわゆるプロバイダのアクセスポイントのように使う、というものです。つまり、ポケ3側のモデムの先は、携帯電話とか公衆電話とかになります。また、インターネット接続装置というのは、今までに書いた、パソコンだのルータだのになります。
実際にこの構成で、出先からメールチェックなどに成功しました。

ここで、上記でいうところのインターネット接続装置にパソコンなどのコンピュ ータを使う場合はいいのですが、ルータを使う場合には注意が必要です。
普通、パソコンとルータを接続するときにはストレートのシリアルケーブルを使います。一方、パソコンとモデムを接続するときも、ストレートのシリアルケーブルを使います。ということはつまり、モデムとルータを直結するのであれば、この2つの装置の間はクロスケーブルで接続しなければならないのです。

あと、この場合、モデムやルータの機種によっては、それぞれのDR(DSR)やER(DTR)のシーケンスの設定を変更してやる必要もあるかもしれせん。
この辺のことは、それぞれのモデムやルータの仕様に依存すると思います。

その他、私の場合は、モデム〜ルータ間のシリアル速度がなかなか一致せずに苦労しました。基本的に、ルータのシリアルポートは速度が固定です。一方、モデムは速度が自動設定なんですが、シリアルポートから受信したデータに速度を合わせようとします。ところが、最初にルータの方がデータ("AT"の文字列)を送ることはないので、速度の合わせようがないのです。

これは、私の手元のルータの場合、ルータのシリアルポートをTAモードとすることにより解決する事ができました。こうすると、ルータのシリアルポートがモデムと同じく自動速度設定となります。これで、ポケ3の側から "AT" の文字列を送ってやれば、ルータ側のモデムのシリアルポートが吐き出したデータに合わせ、ルータのシリアルポートの速度の整合が取られます。それから、ATコマンドでコンソールモードに移行することにより、きちんと通信を確立させる事ができました。
ただ、このルータ、TAモードであるということを保存する事ができないようで、一旦電源を切ってしまうと、次に起動した時は必ずコンソールモードになってしまうのです。なにかまだ見落としているところがあるのかなぁ。


データ取得編

telnet によるWEBアクセス


WEBサーバからHTMLファイルを取ってくるだけであれば、telnet で簡単にできます。例えば、http://www.google.co.jp/にアクセスするとします。
telnet で接続するサーバには www.google.co.jp を、接続するポートに80番を指定します。接続しても何も表示されないと思いますが、ここでおもむろに、以下のコマンドを入力してみます。

GET / HTTP/1.0

このコマンドを入力したあと、リターンキーを2回、たたきます。あ、ちなみに、送信改行コードはCR+LFでないとうまく行かないかもしれません。
すると、サーバからの応答が一気に返ってきます。
telnet 端末はあくまでもブラウザではないので、整形して表示する機能がないのは残念ですが、とりあえずログ等に保存しておくことは可能です。また、HtoX などのテキスト整形ツールを使って、それなりに読みやすい整形結果を得ることも可能です。
ただ、残念ながら画像などのバイナリファイルは、そのままではただの文字化けしたテキストとなってしまうので、別の方法を考えなくてはなりません。

ちなみにこの方法は、もちろんパソコンからでも実行可能です。
Windows なんかだと、OSに telnet ソフトが付属していますので、簡単に試すことができます。例えば、コマンドプロンプトを立ち上げ、コマンドラインから

telnet www.google.co.jp 80

なんて入力すればいいわけです。


参考:ベクターのHTML整形ソフト等の紹介ページ


telnet によるメール確認


メールの送受信も、やろうと思えば telnet で可能です。
ここでは、受信メールの確認のみ方法を示します。

telnet で接続するサーバには、例えば pop.nifty.com といった、自分のメールアカウントのあるサーバを、接続するポートに110番を指定します。接続すると、サーバから接続メッセージが帰ってきますが、多くのサーバでは、特にプロンプトを出さずにユーザからの入力待ちになります。
まず、ログインしてみます。

USER username
PASS password

これらのコマンドを送ると、サーバからはそのたびに「+OK」といった応答があるはずです。なお、USER コマンドのときに送るのはメールアカウント(通常、@マークの左側のみ)であって、メールアドレスではないということに注意する必要があります。

ログインしたら、メールサーバのメールボックスに、どのくらいのメールがきているか確認してみましょう。

LIST

これで、メールボックスにあるメールがそれぞれどのくらいのバイト数かということがわかります。大した量でなければ、全部受信してしまってもいいかもしれませんが、通数が多いときや、1通のサイズが大きいときは、まずヘッダだけを読んで、差出人やタイトルを確認してみましょう。

TOP n 0

このとき、引数にメール番号は必須です。ただ、複数の番号を同時に指定することはできないようなので、そういう場合は、繰返しコマンドを送ってやる必要があります。また、最後のゼロは「本文を0行」という意味なので、もし5通目のメールの本文の頭も3行ほど同時に出力したいようなときには「TOP 5 3」とコマンドを送ってやります。
なお、タイトルや発信者・受信者などに日本語を使っている場合、文字コードが違っていますので、別途コード変換してやらないと読めないでしょう。

メールそのものを読むコマンドは次のとおりです。

RETR [n]

この場合も、引数でメール番号を指定することができます。また、文字コードも変換してやらないといけないのですが、タイトルなんかとは文字コードが違っているので、例えば miel なんかで自動変換して読むことも可能です。
また、メールを読んでも、メールそのものはメールボックスからは削除されません。なので、telnet でメールを読んでも、別途いつも使っているメールソフトでアクセスしなおせば、そちらでも読むことができます。

もし、メールを読んだらそのメールをサーバから削除したいというときには、別途、DELE コマンドで削除する必要があります。

DELE [n]

参考:ベクターの nkf のページ


なお、これらの、telnet でもろもろのネットワークアクセスをするという話は、Use Telnetのサイトなどを参照すると、詳しいことが分かります。


応用編

Windows マシンを telnet サーバにする


これまでに示した方法で、ポケ3をリモート telnet クライアントとすることにより、WEBやメールのサーバにアクセスできることがおわかりいただけたかと思います。
ただ、これだと、まだちょっと自由度が低いです。例えば、メールなんていうのは、バイナリファイルが添付されていても、本質的には純粋なテキストのやり取りなだけなので、やろうと思えば telnet クライアントだけでメールの送受信は可能です。でも、HTTP で画像ファイルを受信するような場合、ポケ3の画面にバイナリのデータが表示されても文字化けしたようになってしまうだけで、あまり面白くありません。また FTP の場合、複数のコネクションを必要とするので、単一のコネクションの telnet しか接続できないポケ3+αというハードウェア構成ではどうしようもありません。また、メールにしたところで、ちょっと受信確認するだけにあんなに何回もコマンドを入力するようでは面倒です。もっとも、この場合に限って言えば、AUTOCOM あたりでマクロを組んでしまえばよいのかもしれませんが。

実は、上記の接続編で示した方法のうち、UNIX マシンにログインする場合には、このような困難さはありません。なぜなら、ポケ3は画面とキーボードの入出力を担当しているだけで、プログラムの実体は UNIX マシンの方で動いているからです。つまり、UNIX 用のいろいろなネットワークアプリケーションを使うことが可能だということです。
一方、ルータを使った場合や Windows マシンを使った場合は、それらのマシンとポケ3を合わせても、telnet という単一のネットワークアプリケーションしか使えないわけです。

ただ、以前にもちょこっと書きましたが、自宅には常時稼動している Windows9x マシンが1台あります。そこでもう一工夫して、そのマシンを telnet のサーバにしてみました。このようにして、ポケ3からの最初のインターネットの接続先をその Windows マシンとすることにより、Windows 上で動く様々なネットワークアプリケーションをポケ3から使う事ができるようになります。ただ、そのパソコンがモデム経由でポケ3に繋がっているような場合、telnet のサーバとクライアントを1台のマシンで兼ねるような格好になって、ちょっと効率が悪いような気もしますが、あいにくと今のところ、シリアルポートに繋いだ端末をクライアントとできる Windows 用の telnet サーバ、もしくはそれに類する使い勝手のよいツールが見つかっていないのでしかたがありません。もしそのようなソフトの情報をお持ちの方がいらっしゃいましたら、ぜひお教えいただけると幸いです。

さて、NT系の Windows であれば、OS設定をちょっといじってやれば telnet のサーバにすることが可能です。ところが、95/98/ME系の場合は、別途サーバソフトを調達する必要があります。
ところが、Windows 用の telnet サーバなんですが、シェアウェアには高機能なものが各種ある一方、フリーウェアに限って言えば、例えば以下のようなものぐらいしか選択肢がありません。

その他に、手元には石田修悟氏の作られたサーバソフトもあるのですが、これは現在、WEB上では見つからないようです。まぁ、上記の2つと比べて特に目立った特徴があるというものでもないのですが。

ここで問題なのは、これらのものはいずれも、Windows のDOS窓の標準入力と標準出力を、単にクライアント側、すなわちこの場合はポケ3側にリダイレクトしているだけという事です。これは、以下のような大きな2つの欠点を抱えていることになります。

1つは、telnet のコマンドラインでリダイレクションが使えないのですね。これができないと、ポケ3の側からアップロードしたデータを、母艦の側でファイルに落す事ができないのです。もちろん、その先のなにかのサーバを中継させれば可能ですが、これ以上話を複雑にしても仕方ないので、今回は、母艦のデータ、またはインターネット上のサーバのデータの取得という事に話をしぼってみたいと思います。また、もう一つの欠点として、例えば more 等をはじめとする、対話的な入出力が必要なものも動作しない、というものがあります。
ということで、実質的に動くものは、コマンドラインで全ての指示を与えることができて、かつ、結果を標準出力に書き出すだけのもの、ということになります。
そして、telnet サーバにて標準出力に出力されたものは、そのままポケ3のほうでログとして取得できますので、必要に応じてそのログから情報を抽出するという形になります。

具体的に、telnet サーバの動いている母艦、インターネット上の各サーバ、そしてポケ3相互間でデータの転送を行うには、以下のような手順となります。

上記で「可能です」と明記していないものについては、私自身がまだ試していないものなので、もしかしたら必要な仕様を満足するツールが入手できないなどで実現不可能かもしれません。なんとなく、kermit 使えば解決できるかもしれないようなものがいくつかありますが、ポケ3で動く kermit の所在を知らないため、今のところ実現不可能です。


Windows マシンの telnet サーバを使って簡易なデータ転送


さて、Windows マシンで telnet サーバが動き出すと、UNIX 並とはいかずとも、かなりいろいろなツールが使えるようになります。ま、みなさんそれぞれ異なったニーズというものがあると思うのですが、私の場合、特に次のようなことを行いたいと思っておりました。

さて、上記にも記したとおり、インターネット上のサーバからポケ3にデータを転送するためには、Windows 上で動き、サーバにアクセスし、結果を標準出力に出力するツールが必要です。その手のツールって、探せばありそうな気もしますが、面倒だったのでサクッと作ってしまいました。

あんまりバグ取りもしていませんが、今まで自分で使った範囲では、それほど不都合もなく動いているようです。
もし、もっとまっとうなツールをご存知でしたら、ぜひともご紹介いただけると幸いです。


ポケ3の部屋
電算棟
やしきの間取り


Copyright © 2004-2007,2010,2011,2013 としき
このページの情報及び著作権は「としき」に帰属します。
Toshiki / toshiki @ jcom.zaq.ne.jp