🔑

 HTTPとは

2023/03/09に公開約2,100字

HTTPとはなにか

HTTPは、Hypertext Transfer Protocol(ハイパーテキスト転送プロトコル)の略で、インターネット上でWebページや画像、音声、動画などのデータをやりとりするためのプロトコル(通信規約)の一つです。

HTTPは、WebブラウザやWebサーバーが相互に通信する際に使用されます。WebブラウザがWebサーバーにデータを要求するときには、HTTPリクエストという形で要求を送信し、Webサーバーがその要求に対してデータを返すときには、HTTPレスポンスという形でデータを送信します。

HTTPは、ウェブ上の情報交換に必要不可欠なプロトコルであり、WebブラウザやWebサーバーの開発において基本的な技術となっています。最新のバージョンはHTTP/2であり、HTTP/3が開発中です。

HTTPの概要

HTTPの基本的な動作は以下の通りです。

1.WebブラウザがWebサーバーに対してHTTPリクエストを送信する。

Webサーバーは、HTTPリクエストを受信し、リクエストに応じたデータをHTTPレスポンスとして返す。
Webブラウザは、HTTPレスポンスを受信し、表示するために必要なデータを取り出してWebページを表示する。
HTTPは、以下のような特徴を持っています。

2.状態を持たない

HTTPは、リクエストとレスポンスの間で状態を持たない特徴があります。つまり、一度のリクエストとレスポンスのやりとりで、クライアントとサーバー間で完結するため、その後の通信に影響を与えることはありません。

3.プラットフォームに依存しない

HTTPは、プラットフォームに依存しないため、異なるOSやデバイス間でも互換性を持って通信することができます。

4.テキストベースのプロトコル

HTTPは、テキストベースのプロトコルであるため、開発やデバッグが容易であり、可読性が高いという特徴があります。

5.セキュリティに弱い

HTTPは、通信内容が暗号化されないため、通信内容が盗聴されたり、改ざんされたりする可能性があります。そのため、Webサイトに個人情報や重要な情報を扱う場合は、HTTPSという暗号化された通信プロトコルを使用することが推奨されます。

以上が、HTTPの概要です。

HTTP/2 とは

HTTP/2は、Hypertext Transfer Protocol(HTTP)の新しいバージョンであり、2015年に公式にリリースされました。HTTP/2は、HTTP/1.1の後継として開発され、Webページの読み込み速度を改善するために設計されています。

HTTP/2の主な機能

ストリームの多重化

HTTP/2では1つの接続上にストリームと呼ばれる仮想的な双方向シーケンスを作ること(ストリームの多重化)で問題を克服しています。
HTTP/2では1つのコネクション上で複数並列に扱うことができます。そのためHTTP/1.1時代で問題となっていたHTTPパイプライン(HoLブロッキング)問題を解決します。

ストリームはクライアント側からでもサーバーからでも開始することが可能です。ストリームにはIDが振られクライアント側は奇数、サーバー側は偶数番号を割り当て重複を防いでいます。

ストリームの優先度

WEB高速化を行っている方は、「ページ最後にJavascript」という呪文を聞いたことがあるのではないでしょうか。これはページの表示に関係ないJavascriptなどのリソースの読み込みよりHTMLやCSSなどを優先的にロードしてもらうための1つの方法です。

HTTP/2でもストリームの多重化によりブロックされることは無くなりましたが、同じようにレンダリングに関係ないリソースは後回しにする(優先度を下げる)必要があります。HTTP/2の世界でいうと重要なストリームが返却を待たされてしまう可能性があるということです。これを解決するために、HTTP/2ではクライアントがPRIORITYフレー ムを用いてストリームに優先度を付けることが可能となりました。

優先順位は、「重み付け」と「依存関係」の2つがあり、ストリームAを他のストリームより優先させることや、BとCのストリームをそれぞれ2:5の重み付けを付ける事などが可能になります。

HTTP/2ではページコーディング時に、リソースの配置場所を頑張って考える必要がありましたが、HTTP/2にすると配置はそのままで優先度だけ付ければあとはプロトコルがなんとかしてくれるという世界になるかもしれません。

※しかし PRIORITY 関連のパラメーターは全てサーバーへの優先度提案であり、必ずしもパラーメーター通りに配信されるとは限りません。

参考 https://blog.redbox.ne.jp/http2-cdn.html

随時内容修正更新していきます!

Discussion

ログインするとコメントできます