Webサーバの仕組みを理解するには、サーバにどういったリクエストを送り、どういった返答が返ってくるのかを実際に確認するのが理解を早める。
こういった場合は、telnet クライアントで Web サーバと対話するのが定番となる。
telnet で Webサーバと対話
ブラウザがWebページを表示する場合、GET コマンドでダウンロードしたいページの場所を送ると、そのページの HTML ソースが送られてくる。この動作を telnet コマンドで確認してみよう。
telnet コマンドは、相手コンピュータ名とポート番号を指定すると、送るコマンドをキーボードで入力し、返答が画面に表示される。
Windowsへの telnet クライアントのインストール
Windows11 では標準で telnet は使えないが、簡単な操作で telnet クライアントをインストールできる。
スタートメニューの検索で telnet と入力すると「Windows の機能の有効化または無効化」がでてくるので、起動する。
出てきた画面の中から、Telnet Client をチェックし OK を押せば、インストールが行われる。
Windows11 の telnet の使い方
cmd.exe でコンソールを起動したら、以下のようにコンピュータ名(tsaitoh.net)とポート番号(80)を指定する。
C:\Users\t-saitoh> telnet tsaitoh.net 80 (改行)
Windows11 の telnet を起動しても、サーバに送る GET コマンドをキーボード入力しても画面には何も表示されない。これは、ローカルで入力した情報を画面に表示する機能(ローカルエコー)が OFF になっている。
そこで、キーボードで Ctrl+] を押して以下の画面を表示させ、”set localecho” と入力すると、キー入力が画面に表示されるようになる。
Welcome to Microsoft Telnet Client Escape Character is 'CTRL+]' Microsoft Telnet> set localecho (改行) Local echo on Microsoft Telnet> (改行)
GET コマンドを送る
GET コマンドでは、表示させたいページの PATH 部分と、ダウンロードの際のプロトコルバージョン HTTP/1.0 を送る。
例えば、https://tsaitoh.net/~t-saitoh/ctf/you-already-know.php の HTML を表示させるのであれば、
GET /~t-saitoh/ctf/you-already-know.php HTTP/1.0 (改行) (改行) HTTP/1.1 200 OK 緑部分がレスポンスヘッダ Date: Thu, 16 Oct 2025 13:25:26 GMT Server: Apache/2.4.63 (Ubuntu) x-attr: FLAG{YouAreShock!} Vary: Accept-Encoding Content-Length: 204 Connection: close Content-Type: text/html; charset=UTF-8 <html> 紫部分が実際のコンテンツ <head> <title>you-already-know</title> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h1>you already know</h1> </body> </html> Connection to host lost.