Linux では、フロー制御とモデム制御の各信号線が、 すべて正しく結線されている必要があります。 ヌルモデムケーブルの正しい結線は、 Figure 11-1 と、もう一つ Figure 11-2 に示してあります。
Linux は CTS と RTS を使ってハンドシェークを行なって、 端末のオーバーランからコンピュータを保護し、 またコンピュータのオーバーランから端末を保護しています。 2 台のコンピュータをつなぐつもりなら、 CTS/RTS のハンドシェークを使わないと、 信頼性の高いファイル転送はできません。
Linux は端末が接続されていることを検知するために、 DSR と DCD を使います。 そのあとログインを要求します。 もしセッションが確立しているときに DCD が落ちると、Linux はユーザーをログアウトさせます。
Linux は DTR を使って、 リンクを強制的にクリアします。 これはユーザーがログオフして、通信チャンネルを解放した後に行ないます。
ヌルモデムケーブルは、 Figure 11-1 と Figure 11-2 の、 どちらのデザインでも、Linux カーネルの要件に合います。 しかし、両方のコンピュータが遠隔地にある場合は、 Figure 11-2 の方が若干良いかもしれません。 というのは、 ヌルモデムケーブルのどちら側に欠陥があるのかを、 DSR と DCD のステートの違いを使って決められるからです。
ヌルモデムの設計にはすべて、共通の欠陥があります。 ローカルコンピュータが "Data Terminal Ready" を落として、 ローカルモデムをリセットした後、 モデムと相互接続しているコンピュータが "Data Set Ready" を相当な時間落としてしまうのです。 しかしほとんどのソフトウェアは、モデムリンクとヌルモデムリンクの間の、 この若干の差異を調整するようになっています。
セキュリティ上重要な情報が無防備になり、 信頼が大きく損なわれてしまうのは、 Figure 11-3 や Figure 11-4、それに Figure 11-5 で示しているケーブルをはじめとして、 ヌルモデムケーブルの結線が間違っている場合です。
Figure 11-1. ステータスとハンドシェークを完全にしたヌルモデムケーブル
Signal ground ---------------------- Signal ground Receive data ---------------------- Transmit data Transmit data ---------------------- Receive data Ready to send ---------------------- Clear to send Clear to send ---------------------- Ready to send Data terminal ready -----------------+---- Data carrier detect | +---- Data set ready Data carrier detect ----+----------------- Data terminal ready | Data set ready ----+ Ring indication -- 未使用 未使用 -- Ring indication |
Figure 11-2. ステータスとハンドシェークを完全にした別バージョンのヌルモデムケーブル
Signal ground ---------------------- Signal ground Receive data ---------------------- Transmit data Transmit data ---------------------- Receive data Ready to send ---------------------- Clear to send Clear to send ---------------------- Ready to send Data terminal ready ----+----------------- Data carrier detect | Data set ready ----+ +---- Data set ready | Data carrier detect ----+------------+---- Data terminal ready Ring indication -- 未使用 未使用 -- Ring indication |
そんな場合に、RS-232 のハンドシェイクをさせないようにする方法が二つあります。 ソフトウェアによる方法とハードウェアによる方法です。
ヌルモデムケーブルに関しては、 使っている端末エミュレータソフトウェアで、 ハンドシェークを無効にするのが最良のやり方です。
ヌルモデムケーブルに関して最悪の場合は、 ハンドシェークと制御信号を改造しているケーブルが必要になります。 本番環境では、このようなケーブルは使わないようにして下さい。
Figure 11-3. ステータスとハンドシェークを改造したヌルモデムケーブル
Signal ground ---------------------- Signal ground Receive data ---------------------- Transmit data Transmit data ---------------------- Receive data Data terminal ready ---+ +--- Data terminal ready | | Clear to send ---+ +--- Clear to send | | Data carrier detect ---+ +--- Data terminal ready | | Data set ready ---+ +--- Data set ready Ready to send -- 未使用 未使用 -- Ready to send Ring indication -- 未使用 未使用 -- Ring indication |
Figure 11-4. ステータスもハンドシェークもないヌルモデムケーブル
Signal ground ---------------------- Signal ground Receive data ---------------------- Transmit data Transmit data ---------------------- Receive data |
Figure 11-5. ステータスもハンドシェークもない片方向のヌルモデムケーブル
Signal ground ---------------------- Signal ground Transmit data ---------------------- Receive data |