httpとは?httpプロトコルの仕組みとセキュリティをわかりやすく解説
httpは、ウェブサイトを閲覧する際にユーザーとサーバーの間でデータの送受信を行なう際に使用されます。ブラウザでウェブサイトのURLを入力する際に、httpとは何かと思った方もいるかもしれません。こちらの記事では、httpをはじめ、httpプロトコルの仕組みやセキュリティなどについてわかりやすく解説します。
httpとは?
httpとは「HyperText Transfer Protocol」の略で、ユーザー(クライアント)がウェブサイトを見る際に使用しているデバイスと、サーバーの間でウェブデータの送受信を行なう時に使われるプロトコル(通信規約)です。httpは、TCP/IPプロトコルと同様にインターネットを通してウェブサイトを閲覧するために必要不可欠な構成要素のひとつといえます。
通常、ウェブサイトの閲覧はユーザーが使用しているデバイスからHTMLのテキストや画像、動画などのウェブデータのリクエストをサーバーに送信し、ドメイン名やサブネットIPアドレスをもとにサーバーがレスポンスを返すことで成り立っており、httpはその際の重要なプロトコルというわけです。
一方でhttp接続を通して送信されるデータは暗号化されておらず、公衆Wi-Fiの普及で中間者攻撃や盗聴、なりすまし等のサイバー犯罪事件が起きるなどセキュリティ面が長年の課題でもありました。そこで登場したのがhttpsと呼ばれるいわゆるSSL化です。httpsはデバイスとサーバー間で送受信するデータを暗号化することで、セキュリティ面を強化しています。
httpとwwwの違い
一般的にアドレスバーには「http」や「www」が表示されます。httpがデバイスとサーバー間のウェブデータを送受信する際に使用されるプロトコルであるのに対し、www(World Wide Web)は、その名の通り世界中に存在する無数のコンテンツをインターネット経由で繋ぐ巨大なシステムのことです。また、wwwは主に、httpをはじめ、HTML (Hypertext Markup Language)、URL (Uniform Resource Locator)の3つで構成されています。
httpを使用することでデバイスとサーバー間のウェブデータの送受信が容易になるなど、httpはwwwを支える重要なプロトコルであり、ウェブサイトを閲覧する際にはどちらの仕組みも必要不可欠な要素といえます。
httpの仕組み
httpの基本的な流れは以下の通りです。
- ユーザーがリクエストを送信する:ユーザーはウェブサイトを閲覧する際にブラウザ上でURLを入力するか、リンクをクリックすると、サーバーへhttpリクエストメッセージが送信され、ウェブページのデータを要求することができます。
- サーバーがリクエストを処理する:サーバーがhttpリクエストメッセージを受信し、処理します。この際、ユーザーに提供する前にデータベースやファイルシステムからウェブページを取得して組み立てます。
- サーバーがレスポンスを送り返す:要求されたウェブページが組み立てられると、サーバーはhttpレスポンスメッセージをブラウザに送り返します。このメッセージには要求されたコンテンツとその種類をはじめ、クッキー、その他のメタデータ、そしてリクエストが正常に完了したことを示す3桁のhttpステータスコードなどの情報が含まれています。
- ユーザーがレスポンスを受信する:ウェブブラウザは、サーバーからhttpレスポンスメッセージを受信し、ウェブページを表示します。もし、リクエストにエラーやその他の問題がある場合は、ブラウザにエラーメッセージが表示されます。
- 接続を終了する:レスポンスが送信されると、クライアントとサーバー間のhttp接続は終了です。さらにユーザーが別のウェブページを要求した場合は、この過程を繰り返します。
上記は、ウェブサイトを閲覧する際の基本的な流れといえますが、他にも使用するhttpのバージョンをはじめ、リクエストメッセージとレスポンスメッセージの性質、そしてその他の要因によって、さまざまなバリエーションが存在します。
httpのセキュリティ
http自体は、データをテキスト形式で送信するため、ネットワーク通信にアクセス可能な人であれば簡単に傍受して読み取ることができるので、完全に安全なプロトコルではありません。httpは暗号化や認証機能を提供していないため、httpで送信されたデータはサイバー犯罪者によって簡単に傍受され、読み取られる可能性があります。
たとえば、httpを使用しているウェブサイトでSNSのログイン情報を入力してしまうと、犯罪者はそれらの情報を簡単に傍受して読み取ることができてしまいます。最悪の場合、SNSのアカウントを乗っ取られることもあるので、httpの脆弱性やSNSの危険性を軽視してはいけません。また、httpを使用しているオンラインショッピングサイトでユーザーがクレジットカード情報を入力した場合にも同様のことが言えます。
httpには、クロスサイトスクリプティング(XSS)やクロスサイトリクエストフォージェリー(CSRF)というオンライン上での攻撃を防ぐための機能があります。ただし、これらを使用することで完璧に防げるというわけではなく、より安全性を高めるためには、さらなるセキュリティ対策が必要になるでしょう。
NordVPNは、強力な暗号化と高度なセキュリティ機能を提供します。インターネットトラフィックを暗号化するだけでなく、マルウェアを含むサイバー脅威から保護します。
httpのバージョン
ここからは、httpのバージョンの違いについて紹介します。
- http/0.9:最初のウェブシステムで使用されていたプロトコル。ウェブサーバーがリソースを指定してGETメソッドで取得するのみという仕様で、HTMLファイルだけが転送可能です。
- http /1.0:最初の実用的なhttp規格。ユーザーとサーバー間で送受信するhttpリクエストとレスポンス機能が追加されました。また、httpヘッダーからhttpファイル以外の画像や音声なども転送可能になりました。転送速度は遅いですが、データを確実に相手に届くことを目的としたプロトコルであるTCP(Transmission Control Protocol)を使用しています。
- http /1.1:様々なパフォーマンスの改善が行われたおかげで、ウェブページにたくさんの画像が使用可能になるなど、コンテンツ数が劇的に増加されました。また、プロキシーサーバーによってネットワークやサーバーへの負荷が軽減されました。
- http /2:ネットワーク資源をより効率的に利用したり、環境に依存しないパフォーマンスの改善やセキュリティ対策などの問題を解決したりするために後方互換性、接続の多重化、フロー制御、ヘッダー圧縮、サーバープッシュなど新たな技術が追加されました。TCP(Transmission Control Protocol)を使用しています。
- http /3:ウェブのパフォーマンスを改善するためにGoogleが製作し、UDPを用いたQUICプロトコルを使用しているおかげで、通信セキュリティが向上し、ウェブサイトの表示速度が高速化されました。
httpリクエストとは?
HTTPリクエストとは、ユーザーからサーバーへ要求を伝えるメッセージのことを指します。以下に、HTTPリクエストのメソッド(文字列)をまとめました。
名前 | リクエストメソッドの意味 |
---|---|
GET | 特定のリソースをまるまるリクエストします。 |
HEAD | 本文を含まない特定のリソースをリクエストします。 |
POST | 既存のウェブリソースの下にある新しいページに、コンテンツ、メッセージ、もしくはデータを追加します。 |
PUT | 既存のウェブリソースを直接変更するか、もし必要な場合は新しいURIを作成します。 |
DELETE | 指定されたリソースを削除します。 |
TRACE | ウェブリソースに追加されたあらゆる変更、もしくは追加をユーザーに表示します。 |
OPTIONS | 特定のURLで利用可能なhttpリクエストメソッドを表示します。 |
CONNECT | リクエスト接続を透明な TCP/IP トンネルに変換します。 |
PATCH | ウェブリソースを部分的に変更します。 |
httpレスポンス
httpレスポンスは、httpリクエストに対してサーバーがユーザーへ送り返すメッセージのことです。ユーザーがウェブブラウザを通してサーバーにhttpリクエストを送信すると、サーバーはそのリクエストされたデータを含んだhttpレスポンスを生成します。
httpレスポンスは、レスポンスステータスライン、レスポンスヘッダー、レスポンスボディ(メッセージボディ)で構成されており、以下でそれぞれ紹介します。
レスポンスステータスライン
ステータスラインには、httpバージョン、ステータスコード、テキストフレーズが含まれます。例えば「http/1.1 200 OK」の場合は、「”http/1.1″」がバージョン、「”200″」がリクエストの成功を示すステータスコード、「”OK”」がステータスコードに関連するテキストフレーズです。
レスポンスヘッダー
レスポンスヘッダーは、レスポンスに関連した追加の情報を提供し、コンテンツの種類やコンテンツの大きさ、キャッシュディレクティブ、サーバー情報などの詳細を含むことができます。ヘッダーは通常、コロンで区切られたキーと値のペアです。以下は一例です。
コンテンツの種類:text/html
コンテンツの大きさ:1024
サーバー:Apache/2.4.10 (Unix)
レスポンスボディ(メッセージボディ)
メッセージボディは、実際のレスポンスの内容(HTML、JSON、画像、もしくはクライアントから要求された他のデータなど)を伝えるのが役割です。メッセージボディの存在と形式は、リクエストとサーバーのレスポンスの特性に依存します。たとえば、リクエストがウェブページの場合、メッセージボディにはそのページのHTMLマークアップが含まれます。
httpステータスコードとは?
httpにおいて、サーバーから返信されるレスポンス内容を表現する3桁の数字のコードのことをhttpステータスコードと呼びます。
たとえば、時々インターネット上で「404(ページが見つかりません)」というメッセージが表示されますが、これは404がサーバーからのレスポンスを表すステータスコードで、クリックしたURLが存在しないということを意味しています。
また、このステータスコードには例外もありますが、大きく分けて5種類あります。100番台は処理中、200番台は成功レスポンス、300番台はリダイレクト、400番台はクライアントエラー、500番台はサーバーエラーとなります。もし、インターネット上でエラーが出た場合はこの数字を参考にしてみましょう。
httpプロトコルの必要性
httpプロトコルは、インターネット上でウェブサイトを閲覧する際の過程において、重要な仕組みの1つといえます。httpプロトコルがなければ、ブラウザとサーバー間のデータの送受信が難しくなります。さらにSSL化(https)にすることで通信内容が暗号化され、セキュリティ面が向上します。
また、インターネットで使われているインターネットプロトコル(IP)には、「TCP(Transmission Control Protocol)」と「UDP (User Datagram Protocol)」という2つの通信プロトコルがあります。TCPはしっかりと全てのデータを転送したい時に使用され、UDPは動画のように高速な通信を優先するアプリケーションなど使用されます。
そして、信頼性の高さと高速通信というTCPとUDPの2つの違いを1つに集約して実現するためにGoogleが新たにQUICを開発し、それがhttp/3に導入されてウェブの高速化に繋がりました。QUICは、限界と思われたhttpの可能性をもう一歩広げることに成功しました。このようにインターネットの世界は今後も私達の想像をはるかに超えて進化していくことでしょう。