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(レスのみ)