Request-Line OR Status-Line
[Header CRLF]
CRLF
[ Body ]

Start Line

  • Request
  • Response

Header

  • ํ—ค๋” ์ค‘ X๊ฐ€ ๋ถ™์€ ๊ฒฝ์šฐ, ์ปค์Šคํ…€ ํ—ค๋”์ž„
  • Pragma: ์˜›๋‚  ์บ์‹œ ์ •์ฑ… Deprecated
  • Cache-Control: ์บ์‹œ ์ •์ฑ…์ธ๋ฐ, ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋œ ๊ฒƒ๋“ค
  • Connection: close, keep-alive ๋‘ ๊ฐœ์˜ ์˜ต์…˜์ด ์žˆ์Œ

Stateless Protocol

  • HTTP๋Š” ์ƒํƒœ๊ฐ€ ์—†๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
    • ์ฆ‰, ์ด์ „ Request์— ๋Œ€ํ•ด์„œ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ
      • ํ„ฐ๋ฏธ๋„ ๊ฐ™์€ ๊ฒฝ์šฐ, ์ด์ „ ์š”์ฒญ์— ์ข…์†์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์คŒ
    • TCP ํ†ต์‹ ์„ ํ•˜๊ฒŒ๋˜๋ฉด ์—ฐ๊ฒฐ๊ณผ์ •์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ƒ๊น€
    • ๊ทธ๋Ÿฐ๋ฐ ์–ด์ฐจํ”ผ ๊ณ„์† ์š”์ฒญ, ์‘๋‹ต์„ ํ• ๊ฑฐ๋ผ๋ฉด ์š”์ฒญ ๋ณด๋‚ผ๋•Œ๋งˆ๋‹ค ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ๋Š๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ 
    • ๊ทธ๋ž˜์„œ ํ•ด๋‹น ํ—ค๋”๊ฐ€ ์žˆ๋‹ค.
    • ๊ทธ๋Ÿฐ๋ฐ ์ด๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.
    • ๋Œ€์šฉ๋Ÿ‰ ์„œ๋น„์Šค ๊ฐ™์€ ๊ฒฝ์šฐ์— ํ•ด๋‹น ์˜ต์…˜์„ ํ‚จ๋‹ค๋Š” ๊ฒƒ์€ ์†Œ์ผ“ํ•˜๋‚˜๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ
    • ๋งŒ์•ฝ ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด์„œ ์ˆœ๊ฐ„์ ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์ด ์—„์ฒญ ๋ชฐ๋ฆฐ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ด ์ƒํ™ฉ์ด๋ฉด ์ผœ๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ, ๋„๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ?
      • ๋„๋Š” ๊ฒฝ์šฐ
        • ๋” ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ๋“ค ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ํ‚ค๋Š” ๊ฒฝ์šฐ (์š”์ฆ˜)
        • ๊ทผ๋ฐ ๋„๊ฒŒ ๋˜์—ˆ์„ ๋•Œ, ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ ํŽ˜์ด์ง€๋Š” ๋–ด์ง€๋งŒ, ์ด๋ฏธ์ง€๋Š” ๋œจ์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.
        • ๋‹ค์‹œ ์žฌ์š”์ฒญ์„ ํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿด ๊ฒฝ์šฐ ํ•ด๋‹น ์š”์ฒญ์ด ๋’ค๋กœ ๋ฐ€๋ฆฌ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ
        • ์ฆ‰, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ํ•œ์‚ฌ๋žŒ์ด ๋Š๋ผ๋Š” ์„œ๋น„์Šค ํ’ˆ์งˆ์ด ์ƒ๋‹นํžˆ ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค.
        • ๋ณดํ†ต ๋“ค์–ด์™€์„œ ์‚ฌ์ดํŠธ ์ „์ฒด๋ฅผ ๋ณด๊ณ , ๋กœ๊ทธ์ธ์„ ํ•˜๋“  ์–ด๋– ํ•œ ํ–‰๋™์„ ์ทจํ•˜๋Š” ๊ฒƒ๊นŒ์ง€๊ฐ€ ํ•˜๋‚˜์˜ ์•ก์…˜์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
        • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฆ˜์—๋Š” keep alive๋ฅผ ํ‚ค๋˜, ํ•ด๋‹น ์—ฐ๊ฒฐ ์ง€์† ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€ํ™”ํ•˜๋Š” ์ถ”์„ธ์ด๋‹ค.

Blank Line

  • header์™€ body๋ฅผ ๊ตฌ๋ถ„ํ•ด์ฃผ๋Š” ๋ผ์ธ์ด๋‹ค.
  • CR (Carriage return)
    • \r
    • Ascii 13
  • LF (Line Feed)
    • \n
    • Ascii 10
  • ํƒ€์ž๊ธฐ์—์„œ ๋ฐœ์ƒํ•œ ์–ด์›
    • ์ด์ „์—๋Š” ์ข…์ด๊ฐ€ ์›€์ง์ด๊ณ  ์•„์ดํ•‘ํ•˜๋Š” ๊ฒƒ์€ ํƒ€์ž๊ธฐ์˜ ์ค‘์•™์— ์œ„์น˜ํ–ˆ์Œ
    • ์ด ๋•Œ, ์ข…์ด๋ฅผ ์›€์ง์ด๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ carriage๋ผ ๋ถˆ๋ €์Œ
    • ํ•œ์ค„์„ ๋‹ค ์น˜๊ฒŒ๋˜๋ฉด, ์™ผ์ชฝ์œผ๋กœ ์˜ฎ๊ฒจ์กŒ๋˜ ์ข…์ด๋ฅผ ๋‹ค์‹œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•จ
      • ์ด ๊ณผ์ •์—์„œ ๋‚˜์˜จ ๊ฒƒ์ด Carriage return
    • ๋˜ ๋‹ค์Œ์ค„์„ ์ณ์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข…์ด๋ฅผ ์œ„๋กœ ์˜ฌ๋ ค์•ผ ํ•จ
      • ์ด ๊ณผ์ •์—์„œ ๋‚˜์˜จ ๊ฒƒ์ด Line feed
  • ํ˜„์žฌ
    • ์ด์ œ๋Š” Carriage Return์„ ํ•  ํ•„์š”๊ฐ€ ์—†์Œ
    • Line Feed๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ์˜๋ฏธ๋ฅผ ์ถฉ๋ถ„ํžˆ ์ „๋‹ฌํ•  ์ˆ˜๊ฐ€ ์žˆ์Œ
    • ํ•˜์ง€๋งŒ..
      • Window: CRLF ์‚ฌ์šฉ \r\n
      • Unix ๊ณ„์—ด: LF๋งŒ ์‚ฌ์šฉ \n
      • ์—๋””ํ„ฐ์—์„œ๋Š” ์ด๋ฅผ ๋˜‘๊ฐ™์ด ์ธ์‹ํ•ด์ฃผ๋‚˜, ์ด์ „ HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•œ ๊ฒฝ์šฐ, \r\n ์ด ์—†์–ด์„œ ๊ณค์—ญ์„ ์น˜๋ €๋˜ ๊ฒฝํ—˜์ด ์žˆ์Œ

Body

  • ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ
    • ์ผ๋ฐ˜ ํ…์ŠคํŠธ, JSON, XML, HTML ๋“ฑ
  1. ์ด์ง„ ๋ฐ์ดํ„ฐ
    • ์ด๋ฏธ์ง€, ์˜ค๋””์˜ค, ๋น„๋””์˜ค ๋“ฑ
  2. ํผ ๋ฐ์ดํ„ฐ
    • HTML ํผ์„ ํ†ตํ•ด ์ œ์ถœ๋œ ๋ฐ์ดํ„ฐ
  3. ๊ธฐํƒ€ ํ˜•์‹