LoginSignup
4
6

More than 3 years have passed since last update.

手を動かして学ぶHTTP入門

Last updated at Posted at 2021-05-09

何気なく、ブラウザに、https://example.com と入力するとサイトの内容が表示されますが、
どういう仕組みでできているのか、説明するのは意外と難しいものです。

その仕組みを手を動かして体験するのが、この記事の目的です。

HTTP通信してみる

ブラウザで隠蔽化されているHTTPの仕組みをコマンドラインを使って体験していきます。

telnetコマンドを使って、HTTP通信をしてみます。(※https://のサイトには使えません)
入ってない場合は、brew install telnet で入れてください。

まず、ドメイン名 + ポート番号を指定して通信開始します。電話で例えると、相手の電話番号を入力して通話ボタンを押した状態です。

telnet www.example.com 80

次のような文字が表示されます。相手が受話器を取った状態です。

Trying 93.184.216.34...

Connected to www.example.com.
Escape character is '^]'.

次のように入力してください。
電話で例えると、用件(GET)、日本語で(HTTP/1.1)、〇〇さん(HOST: www.example.com)という内容を伝えています。

何語で、〇〇さんに、どんな要件があるというのをコンピューター的に書くと次のようになり、これをリクエストヘッダーと言います。

GET / HTTP/1.1
HOST: www.example.com

そして、Enterを2回押すと、次のように表示されます。
電話で例えると、質問に対する回答です。

HTTP/1.1 200 OK
Age: 470364
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Sun, 09 May 2021 03:44:33 GMT
Etag: "3147526947+ident"
Expires: Sun, 16 May 2021 03:44:33 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (oxr/8310)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
~~ 中略 ~~
</body>
</html>

1行目は、
電話で例えると日本語(HTTP/1.1)、回答できるよ(200 ok) という内容です。

HTTP/1.1 200 OK

2行目からは、回答した時刻(Date)など、回答の文字数(Content-Length)などが書いてあります。

Age: 470364
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Sun, 09 May 2021 03:44:33 GMT
Etag: "3147526947+ident"
Expires: Sun, 16 May 2021 03:44:33 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (oxr/8310)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256

1行改行して、回答内容(HTML)が書いてあります。

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
~~ 中略 ~~
</body>
</html>

ブラウザのリクエストヘッダーを見る

次に、ブラウザが送信しているリクエストヘッダーを見てみる(GoogleChromeでは、開発者ツール > Network)と、telnetで送信したリクエストヘッダー以外にも多くの情報を送信していることが分かります。

例えば、User-Agentを使って、PCかモバイルを検出して別の情報を返すこともできます。

スクリーンショット 2021-05-09 13.43.31.png

まとめ

Webブラウザ(電話をかける人)と、Webサーバー(電話を受ける人)は、このような、取り決めに従って通信しています。この取り決めを HTTP(Hyper Text Transfer Protocol)と言います。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6