とあるWeb屋の備忘録

とあるWeb屋の備忘録。たまに雑記。

HTTP通信のこと

今までよくわかっていなかったHTTP通信周りの知識を得るためにこちらの本を読みました。
初版が2010年なのでほんの一部だけ古い内容などもありますが、全体を通してすごく面白くて一気読みできましたし、とても勉強になりました。

よくわからないところは流し読みしてだいたい5時間程度で読めた感じです。
自分が知りたかった内容が網羅されていたので個人的にはとても満足できる一冊でした。

こちらの本で学習したことを備忘録として簡単にまとめていきます。
※分かりやすく説明するために簡単にまとめていますので、誤解を招く表現などありましたらご指摘いただけると嬉しいです!!


URIってなに?

  • Web上にあるリソースを一意に識別するためのIDのこと
    • Uniform Resource Identifierの略

URIの構成

  • スキーム + ホスト名 + パス + クエリ
    • この構成は代表的な構成で、ほかにも色々な構成がある
/*
スキーム http://
ホスト名   news.google.com
パス     /
クエリ   ?hl=ja&gl=JP&ceid=JP:ja
*/
https://news.google.com/?hl=ja&gl=JP&ceid=JP:ja



HTTPってなに?

  • Web上でリソースのやりとりをするときに使うプロトコル
    • これを使えばHTML、XML、画像、Javascript、各種オフィス、PDFなど何でも転送できる
  • TCP/IPベースのプロトコル
    • TCP/IPについてはこのあとに書く
  • アーキテクチャがクライアントサーバ
    • クライアントからリクエストを投げる→サーバがそれを受けてレスポンスを返す
  • ステートレス
    • TCP/IPの説明のときに書く

TCP/IPとは

ネットワーク層(ここで使用されるプロトコルはIP)でパケットを送信する。IPを使って宛先を特定する。
トランスポート層(ここで使用されるプロトコルTCPまたはUDP)でコネクション張る。(ネットワーク上の接線)

コネクションとセッションを混同しないための以下を覚えておく。

  • コネクションはネットワークレイヤーの話でセッションはWebの話。
  • ネットワークレイヤーの上位階層がWebのレイヤーになる。

つまりHTTPとセッションは関係ない(=HTTPにはセッションの概念がない)
ここでステートレスの話とつながってくる。
そもそもステートレスが何かというと「アプリケーションの状態を持たないこと(=セッション状態を持たないこと)」
セッションについて分かりやすく言うとECサイトでログインして買い物してログアウトするまでが1セッション。
ログイン~ログアウトまでが1セッションなので、この一連の流れ(クライアントが何をリクエストしたかという情報)を持たないってこと。
この間の「ログイン情報」とか「買い物かごの中身」を保持するためにECサイトECサイトのサーバ)がセッションIDを作ってCookieとしてHTTPリクエストに含める。
これによりHTTPはステートレスでも「状態」を保持したリクエストをサーバに送れるので問題なくクライアントサーバでやり取りできる。
このおかげでクライアントが「情報を保持してリクエスト」できるし、サーバは「ステートレスなのでスケールが簡単に行える」。(=クライアントが情報を保持しているため、どのサーバにリクエストが送られても関係なく対応できる)

クライアントサーバとは

HTTPメッセージ

リクエストとレスポンスはHTTPメッセージと総称される。

HTTPメッセージ(リクエスト)の構成

  • リクエストライン
  • ヘッダ
  • ボディ

HTTPメッセージ(レスポンス)の構成

  • ステータスライン
  • ヘッダ
  • ボディ

後日HTTPメッセージのヘッダについてまとめようと思います!
ここまで読んでいただいてありがとうございました!!!