muk’s blog

都内で働くSESのブログ

HTTPについて勉強すべきだという声が多いので、調べて整理してみる。

 

HTTPとは?

まとめからいうと、このWebサーバーとクライアントの間で情報をやりとりするための仕組みである。

まずは私たちがHTTPを使っていることを確認すること。ブラウザのアドレスバーを見る。 だいたいが、「http://www.なんとか/」か「https://www.なんとか/」であることがわかる。

私たちが普段どれだけHTTPを使っているのかを認識できる。 HTTPSというのも頻繁に目にするが、これはhttpとほぼ同じものである。 ただ、安全性が高いHTTP(セキュア)なだけである。

もう少し詳しくHTTPについて知る。 HTTPとは「Hypertext Transfer Protocol」の略であり、ネットワークプロトコルと呼ばれるものである。

ネットワークプロトコルとは、通信プロトコルとは。

冒頭で情報をやりとりするといったが、プロトコルは例えて言えば、自動車の交通ルールのようなもの。 訳すと、約束事や手順のことである。

行き交う自動車が十字路で安全に交通できるように。 通信プロトコルも「双方向」で通信上の約束事を定めることによって情報をやりとりする仕組みになっている。

双方向とは?

双方向の双が何を指すのか、 それは「Webサーバー」と「クライアント」。

「Webサーバー」がサイトの画面を公開、提示する側。 「クライアント」が「ブラウザ」を用いてサイトを閲覧する側。

HTTP通信の順序

まずは簡単に流れを見ていく。

初動はクライアント側。 HTTPを使ったリクエストを情報を、保有しているWeb サーバーに送り、Webページを「要求」する。 しかしまずはHTML。一回ですべてのファイルを送れとは言わない。

この要求に対してサーバ側がHTTPレスポンスとして「応答」する。 この時にHTMLページの情報をクライアントに渡す。

また、WebページがHTMLを読み込んだ際、CSSJavaScriptや画像・フォント等の読み込みをしている場合は、 それらのファイルも取得する必要があるため何度も通信を行う。 たまにWebページの表示が少し遅いサイトがあるのはこの作業に時間がかかっている。

ちなみにこれらのCssJavaScriptはキャッシュとして一時的に保存されるため、 そのキャッシュが残っている間は、2回目から通信に対して時間がかからない。

しかし、Chromeなどの履歴からキャッシュを削除してしまうと、 次の通信でも再度初回のやりとりが行われるため時間がかかる。

HTTPリクエストとは具体的になんなのか

HTTPリクエストでは一枚の書類のようなものを渡す。 情報を要求する書類のようなもの。

3つの項目があり、 ①HTTPリクエストライン ②HTTPリクエストヘッダ(ヘッダ) ③HTTPリクエストメッセージボディ(メッセージボディ) のように名前がついている。 ③番はPOST通信の場合のみ記述されるものであり、GET通信では記述されない。 なぜなら、POST通信というのは通信する際にサーバー側に何かしらのパラメータ(値)を渡す。 ③番のボディ部分はその情報を記述するためにあるので、GET通信では使わない。

HTTPレスポンスの中身は?

HTTPレスポンスも同様に3うの要素から成っている。 ①HTTPステータスライン(ステータスライン) ②HTTPレスポンスヘッダ(ヘッダ) ③HTTPレスポンスボディ(レスポンスボディ) 今回の③番、ボディにはHTMLのWebページの情報が記述されている。 こうして、ブラウザ側でこのレスポンスを受け取るとその情報を読んでWebページを表示するという流れである。

では、