HTTP(エイチティーティーピー)とは | 意味や読み方など丁寧でわかりやすい用語解説
HTTP(エイチティーティーピー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
ハイパーテキスト転送プロトコル (ハイパーテキストテンソウプロトコル)
英語表記
HTTP (エイチティーティーピー)
用語解説
HTTP(Hypertext Transfer Protocol)は、World Wide Webにおいてクライアントとサーバー間で情報をやり取りするための通信プロトコルである。これはインターネット上でウェブページや画像を閲覧する際の基盤となる技術であり、ウェブブラウザやウェブサーバーが互いに通信するためのルールを定めている。ウェブブラウザがウェブサーバーに特定の情報(ウェブページ、画像、CSS、JavaScriptファイルなど)を要求し、ウェブサーバーがその要求に応じて情報を提供するという「リクエスト-レスポンス」モデルに基づいている。
HTTPは、TCP/IPプロトコルスタックの上位層で動作し、通常はポート80を使用する。クライアントがウェブサーバーに接続し、HTTPリクエストを送信するところから通信は始まる。リクエストメッセージには、どのような操作を行いたいかを示すメソッド、対象となるリソースの場所を示すURI(Uniform Resource Identifier)、そして通信に関する付加情報を示すHTTPヘッダなどが含まれる。代表的なメソッドには、サーバーからリソースの取得を要求するGETや、クライアントからサーバーにデータを送信するPOSTがある。例えば、ウェブブラウザのアドレスバーにURLを入力してウェブページを閲覧する場合、通常はGETメソッドを用いてサーバーにHTMLファイルや関連する画像ファイルの取得を要求している。また、ウェブサイトのフォームに入力したデータを送信する際にはPOSTメソッドが使われることが多い。
サーバーはクライアントからのリクエストを受け取ると、それを処理し、HTTPレスポンスをクライアントに返送する。レスポンスメッセージには、リクエストの結果を示すステータスライン(プロトコルバージョン、ステータスコード、理由フレーズ)、通信に関する付加情報を示すHTTPヘッダ、そして要求されたリソースの本体(例えばHTMLコンテンツや画像データ)が含まれる。ステータスコードは、リクエストが成功したかどうか、どのような種類のエラーが発生したかを示す3桁の数字で、例えば「200 OK」はリクエストが正常に処理されたことを、「404 Not Found」は要求されたリソースがサーバー上で見つからなかったことを、「500 Internal Server Error」はサーバー側で予期せぬエラーが発生したことを意味する。これらの情報に基づいて、ウェブブラウザは受け取ったデータを解釈し、適切にユーザーに表示する。
HTTPの重要な特性の一つに「ステートレス性」がある。これは、サーバーが個々のリクエストについて、過去のリクエストの状態や情報を一切保持しないという性質である。つまり、サーバーから見ると、すべてのリクエストは独立しており、それぞれが初めての通信であるかのように扱われる。このステートレス性により、サーバー側の負荷が軽減され、システムの設計がシンプルになり、高いスケーラビリティを実現できるというメリットがある。しかし、ユーザーがログイン状態を維持したり、ショッピングカートに商品を追加したりするような、複数のリクエストにまたがる状態管理が必要な場合には課題となる。この課題は、Cookieやセッション管理といった仕組みを利用することで解決される。クライアント側で状態情報を保持するCookieをサーバーに送信したり、サーバー側でセッションIDを管理したりすることで、ステートレスなHTTPの上で擬似的に状態を持つウェブアプリケーションが構築される。
HTTPプロトコルは長い歴史の中で進化を遂げてきた。初期のHTTP/0.9やHTTP/1.0は、リクエストごとにTCPコネクションを確立・切断していたため、特に多くのリソースを必要とするウェブページでは通信効率が悪かった。HTTP/1.1では「持続的接続(Persistent Connection)」が導入され、一度確立したTCPコネクションを複数のリクエスト-レスポンスサイクルで再利用できるようになり、通信効率が大幅に向上した。これにより、ウェブページの読み込み速度が改善された。
さらに高速化と効率化を目指し、HTTP/2が開発された。HTTP/2は、単一のTCPコネクション上で複数のリクエストとレスポンスを並行して送受信できる「多重化」の機能を導入した。これにより、従来のHTTP/1.1で問題となっていた、一つのリソースの遅延が他のリソースの受信を妨げるヘッドオブラインブロッキングの問題が解消され、ページの表示速度がさらに向上した。また、HTTPヘッダの圧縮や、サーバーがクライアントの要求なしにリソースを先回りしてプッシュ送信できる「サーバープッシュ」といった機能も追加され、より効率的な通信が可能になった。
最新のHTTP/3は、TCPではなくUDPをベースとしたQUIC(Quick UDP Internet Connections)プロトコル上に構築されている。TCPは信頼性は高いものの、パケットロスが発生した場合に全てのデータフローが停止してしまうヘッドオブラインブロッキングの問題や、コネクション確立の際のハンドシェイクが複数回必要で遅延が発生しやすいといった課題があった。QUICはこれらの課題を解決するため、UDP上で独自の信頼性、暗号化(TLS 1.3が組み込まれている)、フロー制御、多重化、コネクション移行機能などを実現している。特にコネクション確立時のハンドシェイク回数の削減や、TCPにおけるヘッドオブラインブロッキングの回避により、不安定なネットワーク環境下でも高速な通信が可能となる。これにより、モバイル環境やIoTデバイスなどでの利用において大きなメリットが期待されている。
HTTP自体は暗号化されていないため、通信内容が第三者に傍受・改ざんされる危険性がある。このセキュリティ上の問題を解決するために生まれたのが「HTTPS(HTTP Secure)」である。HTTPSは、HTTPとSSL/TLS(Secure Sockets Layer/Transport Layer Security)プロトコルを組み合わせたもので、クライアントとサーバー間の通信を暗号化する。これにより、送受信されるデータが保護され、機密情報の漏洩やデータの改ざんが防がれる。現在のWebサイトでは、ユーザーのプライバシー保護やデータの完全性を確保するために、HTTPSの利用が広く推奨されており、多くのウェブブラウザがHTTPSではないサイトに対して警告を表示するようになっている。システムエンジニアにとって、HTTPの基本的な仕組みを理解することは、ウェブアプリケーション開発やネットワーク構築、セキュリティ対策を行う上で不可欠な知識である。