Webサーバーを調査すると


図3 telnetコマンドの動作原理
telnetコマンドはUNIXサーバーへリモートからログインするために使うのが一般的だが,ポート番号を指定することで,さまざまなサーバー・ソフトへ接続要求パケットを送り,対話形式のやりとりができる。

[画像のクリックで拡大表示]

図4 自分からメッセージを送って,応答メッセージを得る
Webサーバーなどに対してtelnetコマンドでアクセスしても,普通には応答が返ってこない。そんなときは,こちらからプロトコルの仕様に合ったメッセージを送ってやると,応答が返ってくる。

[画像のクリックで拡大表示]

 図1の例では,ポート番号として25番を指定することで,SMTPサーバー・ソフトの稼働状況を確認した。しかし,調査できるのはSMTPサーバー・ソフトだけではない。

 多くのサーバー・ソフトはクライアントからの待ち受けポート番号が決まっている。例えば,FTPサーバーなら21番,Webサーバーなら80番,POP3*サーバーなら110番といった具合だ(図3[拡大表示])。したがって,telnetコマンドでこれらのポート番号を指定すれば,調べたいサーバー・ソフトへ接続できる。つまり,Webサーバー・ソフトへ接続するには,

telnet 192.168.0.100 80
のように打ち込めばよい(図4[拡大表示]の(1))。

 ただ,Webサーバー・ソフトに接続した場合は,うまくつながると画面が真っ黒になり,何も表示されない((2))。Webサーバー・ソフトはクライアントとTCPコネクションを確立しても,自分からメッセージを返信しないからである。

 そこで,試しにEnterキーを2回押してみよう((3))。これは1回目のEnterキーで送信メッセージを確定させ,2回目のEnterキーでサーバー・ソフトへメッセージを送信するという意味。つまり,空のメッセージをサーバー・ソフトへ送ってみたわけだ。

 この結果,運がよければ,Webサーバー・ソフトからエラー・メッセージが返信されてきて,コマンド・プロンプト画面にそのメッセージが表示される((4))。調査対象のWebサーバー・ソフトがIIS*なら,エラー・メッセージが表示されるだろう。

正規メッセージを送ってみる

 ただ,Enterキーを2回押して空のメッセージをWebサーバー・ソフトへ送信しても,何も応答メッセージが返信されないケースもある。例えば,Webサーバー・ソフトとしてApache(アパッチ)*が稼働しているケースだ。

 こうした場合は,Webサーバー・ソフトにWebページのデータを要求するための正規のHTTPリクエスト*を送ってみよう。それには,真っ黒になった画面で,

GET / HTTP/1.0
と打ち込み,Enterキーを2回押す(図4の(3)’)。すると,画面に「Apache/2.0.46」のような文字列が含まれた応答メッセージが表示されるだろう。ただし,ここで打ち込んだHTTPリクエストは画面に表示されないので,注意深く打ち込もう。

 正規のメッセージは,プロトコルごとに異なるので,あとは調べたいサーバー・ソフトの種類に合わせてメッセージを変えてみよう。TCPを使うサーバー・ソフトは,何でも調べられるはずだ。ただし,telnetコマンドはTCP通信だけをサポートし,UDP通信はサポートしていない。このため,UDPを使うサーバー・ソフト(例えば,DHCPサーバー・ソフトや動画配信サーバーの多く)は調べられない。