[Network] HTTP


2020 12 02
CookieやSessionを勉強している間にわからない用語が出てきて、HTTPの勉強をもっと深くするような気がします.ネットワークを学習する過程で,最初に理解できなかったのはOSI 7層における同一層間の情報交換であり,情報は最下層に低下する.これは何の話ですか...と思っていましたが、最近理解するにつれて、勉强が速くなってきたようです.HTTPはWeb開発者が知っておくべき内容です.

概要


Hyper Text Transfer Protocol


wwwで情報交換できるプロトコル.主にHTMLドキュメントの交換に使用されます.主にTCP、HTTP/3からUDP(QUIC)、80番ポートを使用
  • HTTPは、クライアントとサーバとの間の要求/応答プロトコル
  • である.
  • クライアントWebブラウザがHTTPを介してサーバからウェブページまたはピクチャ情報を要求すると、サーバはこの要求に応答して必要な情報をユーザに渡す.
  • TCP/IPアプリケーション層プロトコル
  • HTTPは非接続プロトコル->CookieとSessionです.

  • NAVERに入り、Chrome開発者モードを開き、Applicationに入り、Cookiesや他のものを見ることができます.

    リクエストメッセージ


    クライアントとサーバ間のコミュニケーションは、コメント(ASCII)メッセージによって行われます.クライアントがサーバに送信するリクエストメッセージは次のとおりです.
  • リクエスト
  • GET/images/logo.gif HTTP/1.1
  • ヘッダー
  • Accept-Language: en
  • 空行
  • その他のメール
  • 等を含む要求メッセージを送信し,要求内容とヘッダはCRLFで終了しなければならない.

    レスポンスメッセージ


  • ステータスライン(Status Line):ステータスコードと理由メッセージが含まれます.
  • HTTP/1.1 200 OK

  • レスポンスヘッダフィールド
  • Contenty-Type: text/html

  • HTTPステータスコードはIANAが管理する.
  • http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
  • HTTPアップグレード


    1.HTTP/0.9-単線プロトコル


  • HTTPの初期バージョンにはバージョン番号がありません.

  • 要求は1行で構成され、GETメソッドのみがリソースのパスとして使用されます.
    GET /login.html

  • 応答もファイル内容そのもので構成される.
  • 2.HTTP/1.0-拡張性


  • バージョン情報はリクエストとともに送信されます

  • Statusコードは応答の先頭にも付着しており,送信->要求の成功/失敗の結果を示している.

  • 通常のHTMLファイルのほか、json、textなど、他のドキュメントを転送する機能も追加されています.
    GET /login.html HTTP/1.0
    User-Agent: NCSA_Mosaic/2.0
    
    200 OK
    Date: Thu, 20 Dec 1995 09:22:11 GMT
    Server: ...
    ...
  • 3.HTTP/1.1-標準


    1995年から様々なHTTP/1.0が実施され、1996年まで標準化されていたが、HTTPの最初の標準HTTP/1.1はHTTP/1.0が発表されて数ヶ月も経たない1997年初頭に公開された.
  • は、各接続の要求を処理することを目的とする.再利用可能な
  • は、使用済みインタフェースを再オープンすることで時間を節約できます.
  • 配管基板を追加し、第1の要求の応答が送信前と第2の要求の送信を可能にする.
  • キャッシュ制御機構
  • を導入する.
  • ホストヘッダにより、同じIPアドレス上でホストの異なるドメインの機能がサーバの位置決めを可能にする.
  • コアアプリケーションの事前定義は、IDCを使用してインターネットサービスを提供する企業が所有する高速ネットワーク接続および管理サーバのサービス
  • であり、直接管理サーバではない.
    その後15年間、HTTP/1.1は非常に安定していた.
    1.安全な伝送のためのHTTP
  • は、TCP/IPスタックを介してHTTPを伝送するのではなく、SSLを追加することによりHTTPSというプロトコル
  • を開発する.
  • SSL->TLS,
  • 2.複雑なアプリケーション向けHTTP
  • REST APIモデルは2000年に設計された.
  • APIによって起動された動作も、基本的なHTTPメソッドを使用する特定のURIアクセスによって伝達されない.
  • 3.Webのセキュリティモデル
  • CORS、CSP等
  • Same Originポリシー
  • 4.HTTP/2.0-パフォーマンスの良いプロトコル


    HTTP/1.1インタフェースは、要求を正しい順序で送信する必要がある.コストと複雑さもたくさんあります.2010年初め、グーグルはクライアントとサーバ間のデータ交換の代わりにSPDYプロトコルを実施した.

  • 最適化テクノロジーの実装

  • 同じ接続でパラレルリクエストできます.(Multiplexed Streams)

  • 1つの接続で複数のメッセージを同時に送信します.

  • 応答順序を考慮する必要はありません.


  • シーケンスの削除(Stream Priorization)
  • リソース依存関係(優先度設定)

  • クライアントがサーババッファと呼ばれるメカニズムをキャッシュして必要なデータを埋め込むことを許可します.

  • 2015年5月に標準化され、大きな成功を収めた.

    HTTP/1.1欠点

  • HOL Blocking
  • 第1の要求に対する応答が遅延すると、第1の応答処理が完了するまで、次の要求に対する応答は
  • を待つ.
  • RTT増加
  • は、1つの接続が1つの要求を処理するので、各要求は1つの接続
  • を作成する.
  • の3パスの握手を繰り返すことにより、不要なRTTの増加とネットワークの遅延を招き、性能を低下させる
  • .
  • 重リーダ構造
    要求
  • 毎に重複ヘッダ値
  • が送信される.
  • ドメインに設定クッキー情報も、各要求のヘッダにおいて
  • を送信する.

    HTTP/3.0 & QUIC


    HTTP 3についての内容とQUICについての内容については次回に議論する.学校の授業でQUICでNS-3でアナログ操作をしてQUICを勉強しましたが、もうちょっと勉強しても良かったです.
    リファレンス
  • https://ko.wikipedia.org/wiki/HTTP
  • https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP
  • https://developers.google.com/web/fundamentals/performance/http2/?hl=ko