(図4) pingのしくみ

(図4)pingのしくみ

● 通信できるかどうかの
  確認pingコマンド

 コンピュータと通信できるかどうかを確認する方法の1つに,pingというコマンドがあります.pingは,図4のようなしくみになっています.
 pingでは指定されたIPアドレスに対して,エコー要求(Echo Request)と呼ばれるパケットを送信します.このパケットを受け取ったコンピュータは,エコー返答(Echo Reply)というパケットを,送り元のIPアドレスに対して送信します.そして,このエコー返答を受信することができれば,通信ができたということになります.
 では,コンピュータAからコンピュータBに対してpingを行ったようすを図2(a)に示します.同様に,コンピュータCに対してpingしたのが図2(b)です.
 コンピュータAからコンピュータBに対しては,自動的にルーティングが設定されるため,うまく通信することができます.しかし,コンピュータCに対するルーティングが存在しないため,「経路がないため指定されたコンピュータとは通信できない」というエラーを出力してしまいます〔図2(c)〕.

● 中継のためのルーティング情報を追加する「routeコマンド」
 それではコンピュータAで,コンピュータCに対するルーティングを追加してみましょう.
 図2(d)に示すように,routeコマンドを使います.routeコマンドではTCP/IPソフトウェアの内部にあるルーティングテーブルを表示したり,ルーティングテーブルに項目を追加や変更をすることができます(Windowsのrouteコマンドも同様).routeコマンドでルーティングテーブルを変更したら,必ずnetstatコマンドを使って変更を確認しましょう〔図2(e)〕.
 FreeBSDでは,以下のようにします.

  route add 送り先IPアドレス 中継依頼先IPアドレス
意味:「送り先IPアドレスに送るには,中継依頼先IPアドレスに送りなさい」
 もし,中継依頼先IPアドレスが直接通信可能なIPアドレスでなかった場合は,エラーが表示されます.このときは,ネットワークの構成とIPアドレスを見比べて,正しいかどうかチェックします.
 図2ではルーティングを追加したことによって,コンピュータAからコンピュータCまで通信できていることがわかかります.
<コラム> SLIPドライバのインストール

 FreeBSD-2.x,-3.x,-4.xでは,デフォルトでSLIPドライバがカーネルに組み込まれています.しかし,1つしかデバイスが組み込まれていません.実験の中のコンピュータBの役割をするには,2つのデバイスが必要ですので,デバイスの数を増やさなくてはなりません.これには/usr/src/sys/i386/conf/GENERICの中の,
  pseudo-device sl 1 # Kernel SLIP

の1を2に増やして,カーネルを再構築する必要があります.
 LinuxのSlackware-7.0でも,SLIPドライバは標準で組み込まれています.FreeBSDとは異なり,いくつでもSLIPを使うことができます.
 Windows95/98では,ダイヤルアップネットワークのフォルダで,「接続」を作成した後,図Aのように使用するプロトコルのところでSLIPを選択します.しかし,モデムを経由した接続となるので,コンピュータどうしを直接接続することはできません.  Windows2000 Professionalでは,スタートメニューの「設定」で,「ネットワークとダイヤルアップ接続」を選択し,「新しい接続の作成」をダブルクリックします.ウィザードが起動するので,この中でSLIPを選択します.
 このほかのOSに関しては,筆者の環境にないため調査ができませんでした.各種OSのマニュアルやヘルプを参考にしてインストールをしてください.
 ICMPはTCP/IPソフトウェアの中の機能ですから,コンピュータどうしがTCP/IPを介して通信できていることを確認することができます.
 ただし,あるコンピュータのWebサーバと通信できないときに,pingを使うことでWebサーバの動いているコンピュータのTCP/IPソフトウェアと通信できるかどうかを確認することができるのであって,Webサーバソフトウェアと通信できているかどうかは確認できないことに注意してください.

(図A) (図A) Windows98の「接続」ダイアログボックスの「ダイヤルアップサーバの種類」でSLIPを選択する


 CQ出版 TOP OPENDESIGN TOPOPENDESIGN Online目次に戻る
  
Copyright CQ Publishing Co.,Ltd. 1997-2001