Bibi's DevLog ๐Ÿค“๐ŸŽ

[TIL-Codesquad] HTTP - Request Message, Response Message ๋ณธ๋ฌธ

TIL

[TIL-Codesquad] HTTP - Request Message, Response Message

๋น„๋น„ bibi 2021. 2. 2. 17:54

[210202]

์˜ค๋Š˜์€ ์ˆ˜์—…์„ ๋“ฃ๊ณ  ๋ฏธ์…˜์„ ๋งˆ๋ฌด๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋‚ .

์นœ์ ˆํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์•Œ๋“ฏ๋ง๋“ฏํ•œ ๋งˆ์Šคํ„ฐJK์˜ ๋„คํŠธ์›Œํฌ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ ,
์–ด์ œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ฐ€์ง€๊ณ  ๋ฏธ์…˜ ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ์งœ ๋ณด์•˜๋‹ค.

์—ฌ์ „ํžˆ ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ์ด ์žˆ์–ด (HTTP request-response) ๊ทธ ๋ถ€๋ถ„์„ ์ถ”๊ฐ€ํ•™์Šต ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

TIL

HTTP ์†Œ๊ฐœ

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„

  • ํด๋ผ์ด์–ธํŠธ client
    : ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ request ํ•˜๋Š” ์ปดํ“จํ„ฐ.

    • ๋ฌด์—‡์„ ์š”์ฒญํ•˜๋Š”๊ฐ€? ์›นํŽ˜์ด์ง€์˜ ์ปจํ…์ธ  contents.
      HTML, CSS, JS, img ๋“ฑ๋“ฑ
  • ์„œ๋ฒ„ server
    : ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์•„ ์‘๋‹ต response ํ•˜๋Š” ์ปดํ“จํ„ฐ.

HTTP : HyperText Transfer Protocol

: ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ฐ„ request์™€ response๋ฅผ ํ•˜๊ณ , ์ปจํ…์ธ ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์•ฝ์†.

HTTP๋Š” ํ•˜์ดํผํ…์ŠคํŠธ๊ฐ€ ๋‹ค๋‹ˆ๋Š” ๋„๋กœ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • request๋ฅผ ์œ„ํ•œ ๋ฉ”์‹œ์ง€,
  • response๋ฅผ ์œ„ํ•œ ๋ฉ”์‹œ์ง€ ๊ฐ€ ์žˆ๋‹ค.

*๊ตฌ๊ธ€ ํฌ๋กฌ - ๊ฐœ๋ฐœ์ž๋„๊ตฌ - Networkํƒญ์— ๋“ค์–ด๊ฐ€ ๊ฐ ํŒŒ์ผ์„ ํด๋ฆญํ•˜๋ฉด HTTP์š”์ฒญ ๋‚ด์—ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์›น๋ธŒ๋ผ์šฐ์ €, ์›น์„œ๋ฒ„

  • ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•ด,
    ์„œ๋ฒ„์— ์ž์›์„ ์š”์ฒญํ•˜๋ฉฐ HTTP Request Header๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋‚ด๊ณ ,
    ์›น์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์š”์ฒญํ•œ ์ž์›๊ณผ HTTP Response Header๋ฅผ ๋ฐ›์•„์„œ ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์›น์„œ๋ฒ„๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญํ•œ ์ž์›๊ณผ HTTP Response Header๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋‚ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

*์•„๋ž˜ ๊ฐ•์˜ ๋‚ด์šฉ์€ ์ƒํ™œ์ฝ”๋”ฉ์—์„œ, ์ฒจ๋ถ€ ์ด๋ฏธ์ง€๋“ค์€ ์—ฌ๊ธฐ์—์„œ ์ฐธ์กฐํ•ด ์™”์Šต๋‹ˆ๋‹ค.

HTTP-3 Request Message

HTTP Request Message ์˜ˆ์‹œ

HTTP REQUEST

HTTP Request Message ๋Š” ์œ„์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

  • Request Line
    : Request Message์˜ ๋งจ ์ฒซ ์ค„์— ํ•ด๋‹นํ•จ.
  • Request Headers
    : Request Line ๊ณผ Request Message Body ์‚ฌ์ด ๋ถ€๋ถ„์— ํ•ด๋‹นํ•จ.
    (Request Headers์™€ Request Body ์‚ฌ์ด์—๋Š” ํ•œ ์ค„์ด ๋„์›Œ์ ธ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋‹ค)
  • Request Message Header
    : Request Line๊ณผ Request Headers๋ฅผ ๋ฌถ์–ด ๋ถ€๋ฅด๋Š” ๋ง.
  • Request Body (๋˜๋Š” ํŽ˜์ด๋กœ๋“œ)
    : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ ์‹œ ์„œ๋ฒ„ ์ชฝ์œผ๋กœ ์ „์†กํ•ด์•ผ ํ•  ์ •๋ณด๊ฐ€ ์žˆ์„ ๋•Œ, Request Body์— ๋„ฃ์–ด์„œ ๋ณด๋‚ธ๋‹ค.

Request Line

GET /doc/test.html HTTP/1.1
  • GET
    ์›น์„œ๋ฒ„-์›น๋ธŒ๋ผ์šฐ์ € ๊ฐ„์˜ ํ†ต์‹ ๋ฐฉ์‹์„ ๋‚˜ํƒ€๋ƒ„.
    GET์€ ๋ฐ์ดํ„ฐ๋ฅผ ์›น์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹.

  • /doc/test.html
    ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•˜๋Š” ์ •๋ณด๊ฐ€ ๋ฌด์—‡์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ„.

  • HTTP/1.1
    ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” HTTP์˜ ๋ฒ„์ „์„ ๋‚˜ํƒ€๋ƒ„.
    (์›น์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น HTTP๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ์ž์›์„ ๋ณด๋‚ด์ฃผ๋„๋ก ํ•จ.)

Request Headers

Host: www.test101.com
Accept: image/gif, image/jpeg, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0
Content-Length: 35
...
  • HOST (ํ•„์ˆ˜)

    HOST : ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋œ ๊ฐ ์ปดํ“จํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ด๋ฆ„.
    ์š”์ฒญํ•˜๋Š” ์›น์‚ฌ์ดํŠธ ์ฃผ์†Œ + ํฌํŠธ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•จ. (ํฌํŠธ๋ฒˆํ˜ธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ๊ธฐ๋ณธํฌํŠธ๋ผ์„œ ์ƒ๋žต๋œ ๊ฒƒ)
    ํ•˜๋‚˜์˜ ์›น์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ์„ ์„œ๋น„์Šคํ•  ๋–„, ์›น์„œ๋ฒ„๋Š” HOST๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž์›์„ ๋ณด๋‚ด์ค€๋‹ค.

  • User-Agent
    == ์›น๋ธŒ๋ผ์šฐ์ €. (์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹ค๋ฅธ ๋ง์ด User-Agent์ด๋‹ค)
    ์ฆ‰ ์š”์ฒญํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ์›น๋ธŒ๋ผ์šฐ์ €์ธ์ง€, ์–ด๋–ค OS์ธ์ง€ ๋‚˜ํƒ€๋‚˜ ์žˆ๋‹ค.

  • Accept-Encoding
    ์›น์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ์„ ๋•Œ ์••์ถ•ํ•ด์„œ ์ „์†กํ•˜๋ฉฐ, ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ์••์ถ•๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ํ’€์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. (๊ทธ๋ž˜์•ผ ๋„คํŠธ์›Œํฌ ์ž์›์„ ์•„๋‚„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ)
    ์ด ๋•Œ ํ•ด๋‹น ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ง€์›ํ•˜๋Š” ์••์ถ•๋ฐฉ์‹์„ ๋‚˜ํƒ€๋ƒ„.

  • If-Modified-Since
    ์›น์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•˜๋Š” ํŒŒ์ผ์ด ์ด์ „์— ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญํ•œ ์ ์ด ์žˆ๋Š” ํŒŒ์ผ์ด๋ผ๋ฉด,
    ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒŒ์ผ์˜ ์ตœ์ข…์ˆ˜์ •๋‚ ์งœ(๋งˆ์ง€๋ง‰์œผ๋กœ ์›น์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‹ค์šด๋กœ๋“œ๋ฐ›์€ ๋‚ ์งœ)๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด๋ฉฐ ์š”์ฒญํ•จ.
    ์›น์„œ๋ฒ„๋Š” ์š”์ฒญํ•œ ํŒŒ์ผ์˜ ์ตœ์ข…์ˆ˜์ •๋‚ ์งœ๋ฅผ ๋ณด๊ณ ,
    ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€์ง„ ํŒŒ์ผ์ด ์ด๋ฏธ ์ตœ์‹ ์ด๋ผ๋ฉด ์ „์†กํ•˜์ง€ ์•Š์Œ.
    ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€์ง„ ํŒŒ์ผ๋ณด๋‹ค ์›น์„œ๋ฒ„ ์ž์‹ ์ด ๊ฐ€์ง„ ํŒŒ์ผ์ด ์ตœ์‹ ์ด๋ผ๋ฉด ์ตœ์‹  ํŒŒ์ผ์„ ์ „์†กํ•ด ์คŒ.
    -> ๊ฐ™์€ ํŽ˜์ด์ง€์— ์ž์ฃผ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฐ™์€ ํŒŒ์ผ์„ ๋งค๋ฒˆ ์š”์ฒญํ•˜์ง€ ์•Š์•„๋„ ๋˜์–ด ํšจ์œจ์„ฑ๊ณผ ์‘๋‹ต์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

HTTP-4 Response Message

HTTP Response Format

HTTP RESPONSE Format

  1. Status(์ƒํƒœ) ๋˜๋Š” Status Line
    ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ–ˆ์„ ๋•Œ ์ •์ƒ ์‘๋‹ต์ธ์ง€ / ๋น„์ •์ƒ ์‘๋‹ต์ธ์ง€,
    ๋น„์ •์ƒ ์‘๋‹ต์ด๋ฉด ์–ด๋–ค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ์ •๋ณด์ž„.

    • version : http ๋ฒ„์ „์— ๋Œ€ํ•œ ์ •๋ณด
    • status code : ์„œ๋ฒ„์˜ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฝ”๋“œ
      • 1xx : Informational
        100๋ฒˆ๋Œ€ ์ฝ”๋“œ๋Š” ์–ด๋–ค ์ •๋ณด๋ฅผ ์˜๋ฏธํ•จ.
      • 2xx : Successes
        200๋ฒˆ๋Œ€ ์ฝ”๋“œ๋Š” ์„œ๋ฒ„๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์‘๋‹ตํ–ˆ์Œ์„ ์˜๋ฏธํ•จ.
      • 3xx : Redirection
        300๋ฒˆ๋Œ€ ์ฝ”๋“œ๋Š” ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ํ–ˆ์Œ์„ ์˜๋ฏธํ•จ.
      • 4xx : Client Error
        400๋ฒˆ๋Œ€ ์ฝ”๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ ์—๋Ÿฌ๋ฅผ ์˜๋ฏธํ•จ.
        *404 Not Found : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ–ˆ์„ ๋•Œ.
      • 5xx : Server Error
        500๋ฒˆ๋Œ€ ์ฝ”๋“œ๋Š” ์„œ๋ฒ„ ์ธก ์—๋Ÿฌ๋ฅผ ์˜๋ฏธํ•จ.
        *500 Internal Server Error : ์„œ๋ฒ„ ๋‚ด๋ถ€์ ์ธ ๋ฌธ์ œ๋กœ ์‘๋‹ตํ•  ์ˆ˜ ์—†์„ ๋•Œ.
    • phrase : status code๋ฅผ ์ธ๊ฐ„์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ’€์–ด ์“ด ๋‚ด์šฉ
  2. Response Headers

    *1.Status Line๊ณผ 2.Response Headers๋ฅผ ๋ฌถ์–ด Response Message Header๋ผ๊ณ  ํ•œ๋‹ค.

  3. Response Message Body (๋˜๋Š” ํŽ˜์ด๋กœ๋“œ)

    ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•ด ์ฃผ๋Š” ์ปจํ…์ธ ๊ฐ€ ๋‹ด๊ธด ์‹ค์ œ ๋‚ด์šฉ์— ํ•ด๋‹นํ•จ.
    (2.Response Headers์™€ ํ•œ ์ค„ ๋„์–ด์ ธ ์žˆ๋‹ค)

HTTP Response Message ์˜ˆ์‹œ

HTTP RESPONSE

  1. Status Line

    • HTTP/1.1 : ํ•ด๋‹น ๋ฒ„์ „์˜ http๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ„

    • 200 : status code์— ํ•ด๋‹นํ•จ. (HTTP Status Codes๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์˜๋ฏธ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ)

    โ€‹ 200์€ ์„œ๋ฒ„๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์‘๋‹ตํ–ˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ์ฝ”๋“œ.

    • OK : phrase์— ํ•ด๋‹นํ•จ.
  2. Response Headers

    • Content-Type : ์›น์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•œ ์ปจํ…์ธ ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋ƒ„.
      ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์ •๋ณด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ™”๋ฉด์— ํ•ด๋‹น ์‘๋‹ต์„ ์–ด๋–ป๊ฒŒ ๋‚˜ํƒ€๋‚ผ์ง€ ๊ฒฐ์ •ํ•จ.
      Content-Type : text/html ์€ ํ•ด๋‹น ์‘๋‹ต์ด HTML๋กœ ๋œ textํŒŒ์ผ์ž„์„ ์˜๋ฏธ.

    • Content-Length : ์›น์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•œ ์ปจํ…์ธ ์˜ ์ „์ฒด ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ„. (๋‹จ์œ„๋Š” byte)

    • Content-Encoding : ํ•ด๋‹น ์ปจํ…์ธ ๊ฐ€ ์••์ถ•๋œ ๋ฐฉ์‹์„ ๋‚˜ํƒ€๋ƒ„.
      ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์ •๋ณด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ปจํ…์ธ  ์••์ถ•์„ ํ•ด์ œํ•ด ํ™”๋ฉด์— ๋‚˜ํƒ€๋ƒ„.

    • Last-Modified : ํ•ด๋‹น ์ปจํ…์ธ ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์ •๋œ ๋‚ ์งœ๋ฅผ ๋‚˜ํƒ€๋ƒ„

+ HTTP์™€ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด ๋ณผ ๋งŒํ•œ ์ฃผ์ œ๋“ค

https(SSL), cache, cookie์™€web storage, proxy(์ค‘๊ฐœ ์„œ๋ฒ„), ๋„คํŠธ์›Œํฌ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ(ํฌ๋กฌ ๊ฐœ๋ฐœ์ž๋„๊ตฌ ๋˜๋Š” wireshark)