🕌

【3分間HTTP&メールプロトコル基礎講座】第3、4、5回HTTPの動作、 HTTPリクエスト、HTTPレスポンス

2023/02/15に公開

HTTPの動作

HTTP

- HTTPハイパーテキストの要求と転送を行うプロトコル
 - 現在はHTTP1.1が主流

  • クライアントは、ブラウザや、検索サイトが使うロボットなどがあり、それらをまとめて***ユーザーエージェント(UA)***と呼ぶ。
  • サーバーソフトはwebサーバーアプリケーションと呼ばれることがおおい。
  • 「ホームページをみる」とよくいうが、サーバにあるファイルを「見て」いるわけではない。
  • 実際は、「ダウンロードして、キャッシュに保存する」。それをUAで「開いて」「見て」いる。「ダウンロードしている」ということ。
  • 一つのweページを閲覧するのには、通常、複数のリクエストとレスポンスを行う。
    • htmlファイルを受け取り、そこに書かれている内容を見て、画像などが必要であれば別個に要求する。

HTTPメッセージ

  • HTTPは文字ベースのリクエストとレスポンスを行う
    - 改行が意味を持っている
    - リクエストとレスポンスの制御情報は文字で書かれている。
    - リクエストとレスポンス、まとめてHTTPメッセージと呼ぶが、構成は「ヘッダ」+「ボディ」の形をとる。
    - httpヘッダでは、改行コードにより区切りが行われる
    - ヘッダはいくつかある。
    - ボディには、 HTMLファイルや、画像ファイルなど、リクエストによって要求されたファイルのデータが入ることになる。リクエストの場合はボディなし、か、webページを見るために必要なデータを入れることになる。
    - HTTPメッセージは開始行、メッセージヘッダ、ボディからなる

HTTPリクエスト

メソッド

  • リクエストの開始行である、リクエスト行には、3つの情報が書かれている。メソッドリクエストURIHTTPバージョン。この3つは空白文字で区切られる
  • メソッドは、リクエストで何を要求したかを決めるもの。
  • GET・・・リソースの転送を要求するもの。
  • POST・・・データを送信する際に使用される。CGIなどにデータを送るときに使う。
    • CGは動的ページ(こちらの入力に合わせてページを新しく作成するための仕組み)
    • このような動的ページを作る仕組みが、CGIと呼ばれる

リクエストURI

  • URI・・・リクエストするリソースを指定するためのもの
  • 子の書き方は相対URIを記述するのが一般的。
    • 相対URIは、ホームディレクトリからみたリソースの場所
    • 相対URIは必ずスラッシュから始まる
  • 例外として絶対URIを記述する場合がある。これはプロキシサーバ経由でのリクエストを行う場合に使用する。
    • プロキシサーバは簡単にいうと、HTTPメッセージを中継するサーバのことで、これを使う場合はhttp://から始まるURIで、WWWでのリソースの場所を示す。

HTTPレスポンス

ステータスコード

  • レスポンスの開始行、ステータス行は、HTTPバージョン、ステータスコード、応答フレーズからなる。リクエスト行と同じく空白文字で区切られる
  • HTTPバージョンが、サーバが使用できるバージョンを示す。
    • UAが使っているHTTPバージョンをリクエストで送り、サーバが使用しているHTTPバージョンをレスポンスで送る。
  • ステータスコードと応答フレーズは、レスポンスの意味を説明するためのもの。

代表的なステータスコード

  • 200OK・・・リクエストが正常であり、正しく受け入れられたことを示す
  • 301 Moved Permanently・・・指定したリソースが移動し他ので、移動さきのURIを要求してください
    • リクエストURIの最後のスラッシュがない場合に使われる
    • 最後のスラッシュがない場合、2回リクエストを送る場合がある。
  • 401 Unauthorized・・・認証失敗
  • 404 Not Found・・・指定したリソースが存在しない
  • 500 Internal Server Error ・・・Webサーバアプリケーション側の事情でエラーになった場合。

Discussion