SYSTEM DEVELOPMENT

STUDY GROUP

HTTP 通信

HTTP

HTTPとは、HyperText Transfer Protocolの略称で、HTMLなどのHyperTextを受け渡すためのTCP/IP上で実現するプロトコルの一つです。
HTTPのデフォルトでは80番のポートを使う決まりになっています。HTTPでは、メタ情報を持つヘッダなどを送ることができます。

HTTP通信をやってみよう

コンソールに以下のコマンドを入力してみましょう。
nc {ホスト名} 80
これは、ホスト名で表されるサーバーの80番ポートに接続する、というncコマンドです。
ncコマンドはTCP/IPの通信を開始し、待機状態になります。すぐに、次のコマンドを入力
GET / HTTP/1.1
Enterキーを2回入力し、改行を2つ入れてみましょう。
これはHTTPのGETメソッドと呼ばれる情報取得のための宣言で、/という場所、すなわちドキュメントのルートの情報をHTTPプロトコルのバージョン1.1で取得する、という要求です。
このような要求のことを、リクエストと呼びます。
あるホスト名を入力しリクエストを送信すると、以下のように表示されました。
(※ホスト名により表示は異なります。)

HTTP/1.1 400 Bad Request
Date: Tue, 11 Jul 2017 09:58:41 GMT
Content-Type: text/html
Content-Length: 177
Connection: close
Server: -nginx
CF-RAY: –
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor=”white”>
<center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare-nginx</center>
</body>
</html>

これは、HTTPのレスポンスと呼ばれるもので、リクエストの結果です。
上から簡単に説明すると

HTTP/1.1 400 Bad Request

これは、サーバーが受け取ったリクエストが、悪いリクエストだったよというヘッダです。
400と書いてあるのは、HTTPのステータスコードと呼ばれる番号です。
簡単に言えば、不適切なリクエストでしたという意味です。
セキュリティのため、対応するWebブラウザでアクセスをしていない場合、このように表示されることがほとんどです。

Date: Tue, 11 Jul 2017 09:58:41 GMT
Content-Type: text/html
Content-Length: 177
Connection: close
Server: -nginx
CF-RAY: –

この部分はヘッダ情報と呼ばれ、送られた日付やサーバーの情報、レスポンスとして返されるデータの大きさ、コネクションの状態、このヘッダに続く内容となるレスポンス本体のコンテンツ形式などが記載されています。

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor=”white”>
<center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare-nginx</center>
</body>
</html>

この部分は、ブラウザに表示されるレスポンスの内容です。
今回のリクエストに対しては、レスポンスがHTMLで返ってきて、
「あなたのブラウザから不適切なリクエストが送られましたよ」というメッセージがHTMLの中に記述してあります。
この、レスポンスの本体部分のことをContentと呼びます。
これが、HTTPの通信のリクエストとレスポンスの例です。

menu