HTTPメッセージ
- HTTP(HyperText Transfer Protocol)は、HTMLやテキストファイルなどのコンテンツのやりとりを行うときに使われるプロトコル。
- HTTPメッセージとは、サーバーとブラウザ間で行われる通信のこと。
- HTTPメッセージには、「HTTPリクエスト」「HTT Pレスポンス」の2つがある。
- HTTPリクエストとは、webブラウザからの要求のこと
- HTT Pレスポンスとは、webサーバーからの返答のこと
HTTPリクエスト / HTTPレスポンス
-
HTTPリクエスト は、「リクエスト行」「メッセージヘッダー」「メッセージボディ」の3つに分けることができる。
-
リクエスト行
どのような処理をしてほしいかという要内容。
-
メッセージヘッダー
ブラウザの種類やバージョン、送信データの形式などの付加的な情報。
-
メッセージボディ
webページ内のフォーム欄などのデータをサーバーに転送
-
-
HTTPレスポンスは、「ステータス行」「メッセージヘッダー」「メッセージボディ」の3つに分けることができる。
-
ステータス行
HTTPリクエストに対して処理結果を送信。
-
メッセージヘッダー
ブラウザの種類やバージョン、送信データの形式などの付加的な情報。
-
メッセージボディ
ブラウザからリクエストされたHTMLなどのデータを格納
-
HTTPメソッド
-
HTTPメソッド、HTTPリクエストを用いてwebサーバーに具体的な内容を伝えている。
- GETメソッドとは、HTMLなどのコンテンツを取得したい場合に使用。
- POSTメソッドは、データをサーバーに送信する際に使用。
この二つが主に使用される。
-
他にもHEAD,PUT,DELETE,CONNECT,OPTIONS,TRACEがある。
- PUTは、データをアップロードをする
- DELETEは、指定したデータを削除する
ステータスコード
- ステータスコードとは、HTTPレスポンス内に含まれる処理結果
- 100 → HTTPリクエストを処理していることを通知
- 200 → HTTPリクエストに対して正常に処理できたかを通知
- 300 → HTTPリクエストに対してブラウザ側で追加の処理が必要であること
- 400 → クライアント(ブラウザ)のエラーであること
- 500 → サーバーのエラーであること
メッセージヘッダー
- メッセージヘッダーとは、HTTPリクエストとHTTPレスポンスで詳細な情報を送信するときに必要。複数のヘッダーフィールドからなる。
HHTP/1.1のやり取り
- HTTPには、HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP2という風にアップデートしてきた。
- HTTP/1.1より以前の場合は、一回の通信でコネクションを切断していたが、1.1以降はコネクションを継続して利用することでwebページないに多くの情報を載せることができるうになった。これをHTTPキープアライブという。
- HTTPパイプラインと呼ばれるサポートが1.1以降追加されたのでデータ転送時間を短縮できるようになった。
HTTP2へアップデート
- 基本的にはHTTP1.1と変わらない。
- HTTP1.1では、HTTPレスポンスが終わるまで待つ必要があったので、HTTP2から仮想的な通信経路(ストリーム)を複製することでHTTPリクエストとレスポンスのやり取りをスムーズにした。
HHTPの仕組み
- なりすましサイトなどによって個人情報を抜き取られる場合がある。そのような脅威からデータを守る仕組みをHTTPSという。
- HTTPSとは、HTTPに加えてSSL(Secure Sockets Layer)やTLS(Transport Layer Security)を利用して通信の暗号化を行なっている。
- HTTPSでは3つの仕組みにより安全性を確保している。
-
盗聴防止
- データの暗号化を行う。
-
改ざん防止
- データから一意の短いデータを取り出し計算して一致するかをみる。
-
なりすまし防止
SSLサーバー認証という電子証明書を配置していることにより、運営の身元がわかるようになっている。
-
HTTPのやりとり
<暗号化の決定> → <通信の証明> → <鍵の交換> → <暗号化方式の確認>
- これら4つのフェーズのやり取りをSSL/TLSハンドシェイクと呼ばれる。
ステートフルとステートレス
-
ステートレスとは、状態を維持しないことを表し、1往復の処理が完結された処理であること。(HTTPの通信)
-
ステートフルとは、状態を維持し続けることを表し、相手の情報を保持したまま処理を行う。
複数のクライアントに対しては負担が大きくなる。
Cookie(クッキー)
- webサイトに情報を保持管理する必要がある場合には、Coookieというデータが用いられる。
- Cookieの送信でwebサーバーはHTTPレスポンスに「Set-Cookie」ヘッダーを含めることで送信できる。
- webブラウザーは、HTTPリクエストに「Cookie」ヘッダーを含めることで送信できる。
- 有効期限が設定されていないCookieはブラウザーを閉じると同時に削除され、「セッションCookie」と呼ぶ。
- 有効期限が設定されたCookieはブラウザーを閉じても消去されず有効期限が来るまで残り続ける。
セッション
- webブラウザーとwebサーバーのやり取りにおいて、一連の関連性のある処理の流れをセッションと呼ぶ。
- セッションを管理するに置いてwebブラウザーを認識するための情報を「セッションID」と呼ぶ。
- セッションIDを用いてcookieを使う場合がほとんどですが、cookieが使えないwebブラウザーがあるため、その場合はURLにセッションIDを含めることができる。だが、情報漏洩の危険があるためその手法は利用されない。
URL
- 情報やデータを識別するための記述方法をURI(Uniform Resource Identifiler)と呼ぶ。
- URIのうちリソースが存在する場所をあらわす物をURL(Uniform Resource Locator)という。
- URIのうちリソースの名前をあらわす物をURN(Uniform Resource Name)という。