Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【Web技術③】「HTTP」を詳細に解説


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210930095324p:plain

おはようございます。Shotaです。

今回はWeb技術を支えている概念の一つ「HTTP」について詳細に解説します。

主に解説するのは以下の通りです。

  • そもそも「HTTP」とは

  • HTTPの歴史

  • HTTPリクエスト・レスポンス


それでは早速、本題に入りましょう。



そもそも「HTTP」とは

私たちは普段Webページを見ているときは、ブラウザーとWebサーバ間で行われているやり取りを意識する必要はありません。ところが、プログラムの開発やシステムの設計を行う際にはHTTPの知識は必須となります。

ウェブシステムでは、アプリケーションプロトコルHTTP(Hypertext Transfer Protocol)を使います。HTTPは、アプリケーションプロトコルの一つです。処理やリソースをリクエストするWebクライアントと、要求に応じてレスポンスを返すWebサーバ間の間の通信に利用されます。


HTTP/1.1はテキストベースプロトコル

アプリケーションプロトコルは、リクエストとレスポンスの形式によって大きく2つに分類できます。

  • テキストベースプロトコル:半角英数字、記号や空白文字を使う
  • バイナリーベースプロトコル:コンピュータ処理に最適化されたバイナリーメッセージを使う

HTTPはテキストベースプロトコルの一つです。ファイル転送用のFTP(コンピュータ上でファイルの転送を行う通信プロトコル)や電子メール送信用のSMTP(インターネット上で電子メールを送信するプロトコル)などもテキストベースプロトコルになります。


HTTPの歴史

Web技術の根幹であるHTTPは時間とともに進化し、バージョンアップを続けています。本章では、HTTPのバージョンの歴史と各バージョンの特徴などについて簡単に解説します。


HTTPのバージョン

HTTPは、ブラウザーなどのWebクライアントとWebサーバのやり取りについて定めたプロトコルです。データの送受信に関する手順やフォーマットなどが定められており、インターネット技術の標準化を推進するIETF(Internet Engineering Task Force)により策定されています。

HTTPはバージョンが異なっても互換性があります。


HTTP/0.9

一番最初のHTTPバージョンです。主な取り決めは以下の通りです。Webサーバからほしいリソースを指定してGETメソッドで取得するだけです。

リクエストが一行だけで構成されるため、ワンラインプロトコルとも呼ばれます。ただし、Webサーバからの受信リソースはHTMLファイルのみに限定され、他のリソースには対応しておりません。


HTTP/1.0

HTTP/1.0では次のような機能が付けられました。

  • クライアントからWebサーバに送信されるHTTPリクエス
  • それに対してWebサーバからWebクライアントに返されるHTTPレスポンス
  • 追加情報としてHTTPヘッダー→HTMLファイル以外の画像や音声などのリソースを転送できるようになる
  • レスポンスの最初にステータスコード→ブラウザがリクエストの成功や失敗を判別できるようになる
  • リクエスト可能なメソッドとして、POST(追加)DELETE(削除)PUT(置き換え)メソッドが使えるようになる


HTTP/1.1

HTTP/1.1では主にパフォーマンスの改善が行われ、複数のデータを効率よく転送するためのHTTPキープアライブ、パイプライン、プロキシ、仮想ホストなどが実装されるようになりました。

それだけではなく、Webサーバからブラウザに対しデータを小分けにして転送するチャンクや、最初のリクエストに対するレスポンスの完了前に次のリクエストを送信するパイプラインなどの機能もHTTPのパフォーマンス改善に大きく貢献しました。

この頃からWebページに大量の画像やドキュメントが使われるようになり、位置ページあたりのコンテンツ数は劇的に増加しました。したがって、ネットワークやサーバの負荷を軽減し、より迅速にWebページを表示するためにパフォーマンスを改善する技術が求められていました。

そこで、一度閲覧したWebページの履歴やデータをブラウザ側で保存するキャッシュの活用や、データをプロキシーサーバに保存してキャッシュし、ブラウザーからはそのプロキシーサーバにアクセスすることでネットワークの負荷を軽減するプロキシを制御できるようになりました。


HTTP/2

HTTP/2(もとはHTTP/2.0)はモバイルネットワークなど環境に依存しないパフォーマンス改善やネットワーク資源の効率的な利用、大きな問題となっていたセキュリティ対策などがその目標としてあげられるようになりました。

HTTP/2が導入されることで、主に以下のような技術が追加されるようになりました。

  • 後方互換:簡単に言えば、より新しい製品が既存の古い製品を扱えることを示す区分。

  • 接続の多重化:信号やデータの流れを、複数の信号やデータの流れで共有すること。

  • フロー制御:データ通信で、受信側の処理が追いつかずにデータを取りこぼすのを防ぐために通信状況に応じて送信停止や速度制限などの調整を行う機能。

  • ヘッダー圧縮:ヘッダーの領域を圧縮して、通信量を削減する技術。

  • サーバプッシュ:サーバがクライアントに対して事前にレスポンスを送信できるようにしておくこと。


2021年現在、主なブラウザはHTTP/2に対応していますが、Webサーバ側はHTTP/1.1対応のものが多く、移行作業が進められている状況です。


HTTPリクエスト・レスポンス

Webシステムでは、WebクライアントからWebサーバに対して行われる要求をHTTPリクエスと呼びます。ここではメッセージの一種としておきましょう。リクエストを受け取ったサーバは応答としてHTTPレスポンスを返します。

クライアントはサーバとの接続を確立した後、再びリクエストを送信します。Webサーバはそれに応じて、HTMLテキストやデータなどのリソースをレスポンスとしてクライアントに転送します。


まとめ

今回は「HTTP」を詳細に解説しました。今回の記事で紹介した内容は次の通りです。



今回の記事を参考に、「HTTP」についての理解を深めていただければ幸いです。

今回の記事はこれで終了です。

【参考資料】