HTTP

クライアントとサーバー間でファイルをやり取りするためのプロトコル。

  • 0.9:テキストファイルだけ
  • 1.0:テキスト、画像など様々なファイルが使える
  • 1.1:TCPコネクションを使いまわせるし、レスを待たずにリクエストをたくさん送れる(問題あり)
  • 2.0:TCPコネクション内にさらにコネクション作る、データの圧縮、関連するやつも全部一緒に返す(効率UP)
  • 3.0:UDPメインで使う、TLS暗号化の短縮
のバージョンがある。
 

 

  HTTPメッセージ

クライアントやサーバーから送るデータ。

  • スタートライン:HTTPバージョン、メソッド(GET)、URIの相対パス
  • メッセージヘッダー:めっちゃいろいろある:HOSTだけ必須(URIのオリジン)
  • メッセージボディ:
 

 

  メッセージヘッダー

重要そうなものだけピックアップ。

 

  • Accept:MIME指定(text/htmlとか):クライアントがサーバーに対してレスしてもらうファイルを指定
  • Accept-*:Language, Encoding, Charsetとかいろいろ指定できる
  • HOST:必須。オリジン指定
  • Referer:アクセス元のURI:これを使って広告を打ったりする
  • User-Agent:クライアントのOS、ブラウザ
  • Control-Cache:キャッシュの制御情報(no-cache, no-store)
  • Connection / Keep-Alive:TCPコネクションの制御情報(通信回数、TTL)
  • SetCookie:Cookieの制御
  • X-Forward-For:ロードバランサーなどを経由した際に、送信元のIPを記載
  • Location:リダイレクト先URI(レスのみ)