広告 ネットワーク

HTTPとは

2020年3月12日

HTTP(Hypertext Transfer Protocol)

HTTPとは

HTTP(Hypertext Transfer Protocol)とは、Webサイトを表示する際に使用するプロトコルです。

クライアント(利用者のコンピュータ)とWebサーバ間でHTMLなどのテキストで記述されたWebページの送受信で使用されます。

HTTPの通信を開始できるのは、クライアント(利用者のコンピュータ)側のみです。クライアントからHTTP リクエストを送り、WebサーバがクライアントにHTTP レスポンスを返す仕組みです。

HTTPイメージ図

上記図は「http://×××.co.jp」のサイトを閲覧する際のHTTPのやり取りです。クライアントはWebブラウザからWebサーバにHTTPリクエストを送信します。そして、Webサーバは「http://×××.co.jp」のサイト内容をクライアントに返却します。

このように、インターネット上にある様々なWebサイトが閲覧できるのは、HTTPというプロトコルが存在しているからです。

HTTPが使用するポートはデフォルト「80」、また トランスポート層では TCPを使用します。

HTTPSとは

HTTPによる通信をより安全にしたプロトコルを「HTTPS(HTTP over SSL/TLS)」といいます。

HTTPSは、通信内容が暗号化されていない HTTPとは違い通信内容が暗号化されています。HTTPとHTTPSの違いはWebサイトのURLを見れば判断することができます。

httpsで始まるサイト

HTTPのサイトは、サイトのURLが「http://~」 、HTTPSのサイトはサイトのURLが「https://~」からはじまっています。

関連記事

HTTPのバージョン

HTTPには次のバージョンが存在します。

バージョン説明
HTTP/0.91991年に作られた最初のバージョン。メソッドはメソッドは GETのみ存在。
HTTP/1.01996年に作られたバージョン。メソッドに POST など GET 以外のものが増え、レスポンスはヘッダーがつくように。またステータスコードを含めるようになった。
HTTP/1.11997年に初版が作られ、その後、2回改訂。1.0の問題点を解消したバージョン。
HTTP/22015年に作られたバージョン。HTTP/1.1が規定されて以来16年ぶりのバージョンアップ。1.1と比べ高速な通信を可能としている。
HTTP/32018年に作られた最新バージョン。

HTTPのメソッド

スポンサーリンク

HTTP GET

指定されたURIのリソース(Webサイトの内容など)を取り出す、「HTTP/0.9」のバージョンから存在するHTTPの基本メソッドです。

HTTPイメージ図

HTTP GETの動作は次の通りです。

  • クライアント:URIを指定
  • Webサーバ:指定されたURIのリソースを返却

HTTP POST

HTTP POSTではクライアントからの入力内容をWebサーバに送ることができます。お問い合わせフォームや登録画面などから利用者が入力した内容をWebサーバに送り、Webサーバのデータベースに蓄積する際などに利用します。

HTTP POSTイメージ図

HTTP POSTの動作は次の通りです。

  • クライアント:入力内容をWebサーバに送る
  • Webサーバ:クライアントからの入力内容を受け取り、GETと同じようにクライアントへリソース(結果を表示する画面の内容など)を返却する。

その他のメソッド

HTTP GET そして POST以外のHTTPのメソッドは次の通りです。

HTTPのメソッド名説明
PUT指定したURIにリソース(画像など)を保存。もしURIにリソースが存在しない場合は、WebサーバはそのURIにリソースを作成する。
DELETE指定したURIのリソースを削除する。
OPTIONSWebサーバがサポートしているバージョンなどを調査する。
HEADHTTPのヘッダ情報を取得する。
TRACEWebサーバまでの経路情報を取得する。
CONNECTプロキシサーバを経由する際に使用する。

HTTPのヘッダフィールド

HTTPリクエストヘッダ

HTTP/1.1で利用される主なリクエストヘッダは次の通りです。

ヘッダ説明
Acceptレスポンスで受入可能なメディアタイプ(MIME)
Accept-Charsetレスポンスで受入可能な文字セット
Accept-Encodingレスポンスで受入可能な文字エンコーディング
Accept-Languageレスポンスで受入可能な言語
Authorization認証情報
Expectリクエストを正しく扱うためにWebサーバーに期待している要求
From利用者のメールアドレス
Hostリクエスト先のサーバ名
If-Match条件が真の場合のみリクエストを処理するようサーバに要求
If-None-MatchIf-Matchの逆で条件が真でない場合のみリクエストを処理するようにサーバに要求
If-Range条件が真の場合のみ指定したオブジェクトの範囲を返すようサーバに要求
If-Modified-Since指定日時以降にオブジェクトが変更されている場合のみリクエストを処理するよう要求
If-Unmodified-SinceIf-Modified-Sinceの逆で真でないときのみ実行
Max-Forwardsリクエストの中間システムを経路する最大数
Proxy-Authorizationプロキシサーバとの認証情報
Range全体でなくリソースの一部を要求
Refererリクエストの出所。どこからWebサーバに訪問したのかを表す情報
TEレスポンスで受入可能なエンコーディング形式
User-Agentリクエストのユーザエージェント(Webブラウザの情報)

スポンサーリンク

HTTPレスポンスヘッダ

HTTP/1.1で利用される主なレスポンスヘッダは次の通りです。

ヘッダ説明
Accept-RangesRange 要求において使用可能な単位
Ageプロキシーのキャッシュに入ってからの経過時間
ETagエンティティとそのバージョンを一意に識別する識別子
Locationリダイレクト先のURL
Proxy-Authenticateプロキシサーバとクライアント間の認証情報
Retry-Afterリクエストの再試行をいつ実行するかを表す情報
Serverサーバのベンダー名、バージョン番号を示す
Varyキャッシュを分ける必要があることを伝える
WWW-Authenticateクライアントに対してリクエストの再発行を要求

その他のヘッダ情報

HTTP/1.1で利用されるその他の主なヘッダ情報は次の通りです。

ヘッダ説明
Cache-Controlキャシュを制御するための情報
Connection接続永続性情報
Date作成された日付
Pragmaメッセージに関する追加情報
Trailerメッセージボディの後に記述されているヘッダフィールド
Transfer-Encodingボディ部分のエンコーディング方式
Upgrade通信相手に別のプロトコルにアップデートするように要求する
Viaメッセージの転送経路を示す
Warningメッセージに関する追加情報(警告)
AllowサポートするHTTPメソッドを示す
Content-Encodingコンテンツのエンコード方式を示す
Content-Languageコンテンツの言語を示す
Content-Lengthコンテンツの長さをバイト単位で示す
Content-Locationコンテンツを識別するURL
Content-MD5コンテンツに関するメッセージ状態チェック
Content-Rangeコンテンツの範囲を示す
Content-Typeコンテンツのタイプを示す
Expires有効期限の日時を示す
Last-Modified最後に変更された日時を示す

HTTPステータスコード

HTTPのステータスコードとは、リクエストに対する処理結果を示すコードです。ステータスコードは3桁の数字で表し次のような分類に分けられています。

  • 100番台:情報(Informational)
  • 200番台:正常(Success)
  • 300番台:リダイレクション(Redirection)
  • 400番台:クライアントエラー(Client Error)
  • 500番台:サーバーエラー(Server Error)

 

HTTPステータスコードの詳細は、以下の記事をご覧ください。

HTTPのセキュリティ技術

スポンサーリンク

Basic認証

Basic認証(ベーシック認証)とは、HTTPで定義されてる認証方式の一つで、基本認証とも呼ばれている認証方式です。

Basic認証は実装が容易で、ほぼ全てのWebサーバおよびブラウザで対応していることもあり、簡易的な認証として広く使われています。

ただし、セキュリティ対策は万全ではない為、しっかりとしたセキュリティ対策が必要なシステムでは使用されません。あくまでも簡易的な認証です。

Basic認証とは

Basic認証の具体的な仕組みは「ログインID」と「ログインパスワード」をBase64と呼ばれるコードにエンコード(変換)して送信します。

暗号化ではなく、Base64にエンコード(変換)しているだけなので、データを盗聴すれば盗聴したデータをBase64でデコード(元に戻す)することで、簡単にログインIDとログインパスワードが分かってしまう欠点があります。

このような理由から、仮に盗聴されても問題にはならないようなシステムで、簡易的な認証として幅広く使用されています。

Digest認証

Digest認証(ダイジェスト認証)とは、HTTPで定義される認証方式の一つです。Basic認証の平文で「ユーザーID」と「パスワード」を送信してしまう欠点を改善した認証方式で、「ユーザーID」と「パスワード」をハッシュ化して送信します。

Digest認証とは

Digest認証はサーバが生成したランダムの文字列をパスワードに付与し、IDとパスワードをMD5でハッシュ化し送信します。そのため、仮に第三者に盗聴されてもパスワードの解析は困難です。

しかし、Digest認証で使われるMD5は解析することが可能な古いハッシュアルゴリズムのため、しっかりとしたセキュリティ対策が必要なシステムでは使用されません。

 

一般的なWebアプリケーションは HTTPS(HTTP over SSL/TLS)で通信内容を暗号化し、認証にはForm認証を使うケースが多いです。

helpful