(์ˆ˜๊ทผ์ˆ˜๊ทผ)

HTTP ํ๋ฆ„ ๊ฐ€๋ณ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ (1~3๊นŒ์ง€) ๋ณธ๋ฌธ

web

HTTP ํ๋ฆ„ ๊ฐ€๋ณ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ (1~3๊นŒ์ง€)

InformationFarm 2022. 8. 3. 21:59

๐ŸŒž HTTP์ด ๋ฐœ์ „ ์ดํ•ดํ•˜๊ธฐ ๐ŸŒž

HTTP/0.9

  • GET๋ฉ”์†Œ๋“œ๋งŒ ์กด์žฌ
  • HTML๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๊ณ  ํด๋ผ์ด์–ธํŠธ ์ •๋ณด X
  • ํ•˜์ง€๋งŒ WWW์˜ ๊ทผ๊ฐ„์ด ๋˜์–ด ๋”์šฑ์ด ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ์—ˆ์Œ

HTTP/1.0

  • ํ—ค๋”๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์ •๋ณด ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค.
  • ๋˜ํ•œ, content-typeํ—ค๋”๋ฅผ ํ†ตํ•ด์„œ HTML๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ด๋ฏธ์ง€ ๋™์˜์ƒ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
  • POST๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๋ฅผ ์›น์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
  • content-Encoding์„ ํ†ตํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์˜ ์••์ถ•์ •๋ณด๋ฅผ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค.

HTTP/1.1

  • HTTP์˜ ์ฒซ ๋ฒˆ์จฐ ๊ณต์‹ ํ‘œ์ค€๋ฒ„์ „์ด๋‹ค
  • GET, POST, PUT, DELETE์˜ ํ•จ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ง€์›
  • ํ•˜๋‚˜์˜ TCP ์—ฐ๊ฒฐ์„ ์ง€์†์  ์—ฐ๊ฒฐ์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ ์žฌ์‚ฌ์šฉํ•ด ๋งŽ์€ ์ฝ˜ํ…์ธ  ์ „๋‹ฌ
  • via ํ—ค๋”๋กœ ์ค‘๊ณ„์„œ๋ฒ„ ์ •๋ณด ๊ณต์œ , acceptํ—ค๋”๋กœ ํด๋ผ์ด์–ธํŠธ ์ง€์› ํ˜•์‹์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋จ
  • ํ•˜์ง€๋งŒ HOL(Head-Of-Line-blocking)๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
    • ์ด๋Š” ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ์ง€์—ฐํ•˜๋ฉด ๋‚˜๋จธ์ง€์˜ ์š”์ฒญ๋˜ํ•œ ์ง€์—ฐ์ด ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

HTTP/2

  • ๋ณด๋‹ค ๊ฐœ์„ ๋œ ์›นํ”„๋กœํ† ์ฝœ์„ ์œ„ํ•ด ๊ตฌ๊ธ€์ด ์‹œ์ž‘ํ•œ SPDYํ”„๋กœ์ ํŠธ์ด๋‹ค.
  • ํ…์ŠคํŠธ ๋ฐฉ์‹์œผ ํ”„๋กœํ† ์ฝœ ๋ฉ”์‹œ์ง€๋ฅผ binaray format์„ ์‚ฌ์šฉํ•ด ๊ฒฝ๋Ÿ‰ํ™” ํ•จ
  • HTTP1.1์˜ ๋น„ํ•ด ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ, ์ŠคํŠธ๋ฆผ ์šฐ์„ ์ˆœ์œ„ ์„ค์ •, ํ—ค๋”์••์ถ•, ์„œ๋ฒ„ ํ‘ธ์‹œ๊ฐ™์€ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.
  • HTTP2.0์€ HOC์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์œผ๋‚˜ TCP์˜ HOC๋ฌธ์ œ๋Š” ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

HTTP

  • ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ์ธ QUIC(์ „์†กํ”„๋กœํ† ์ฝœ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” HTTP์˜ ์ตœ์ƒ์œ„ ๋ฒ„์ „์ด๋‹ค
  • QUIC๋Š” UDPํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ–ˆ๊ณ , ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • QUIC๋Š” ํ•œ ๋ฒˆ ๋งบ์€ QUIC๋ฅผ ์ตœ๋Œ€ํ•œ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ๋งŒ๋‹ค๋Š” ๊ณผ์ •์˜ ์‹œ๊ฐ„์ด ๋Œ€ํญ ์ค„์–ด๋“ค์—ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์•„์ง์€ ์‹คํ—˜์ ์ธ ๋‹จ๊ณ„์ด๋ฏ€๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.


๐ŸŒ HTTP/2์˜ ์ตœ์ ํ™” ๊ธฐ์ˆ  ๐ŸŒ

์ •๋ฆฌ

  • ๊ธฐ์กด ํ…์ŠคํŠธ ๋ฐฉ์‹์„ ์ด์ง„ํ”„๋ ˆ์ž„๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊พธ๋ฉฐ ํ”„๋กœํ† ์ฝœ์„ ๊ฒฝ๋Ÿ‰ํ™”ํ–ˆ๋‹ค.
  • HTTP์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ์ค‘๋ณตํ—ค๋”๋ฅผ ๊ฑธ๋Ÿฌ ๋‚ด์–ด ํ—ค๋”์˜ ํฌ๊ธฐ๋ฅผ ์ตœ์†Œํ™” ํ•จ
  • ์„œ๋ฒ„ํ‘ธ์‹œ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๊ฐ€ ๋ฏธ๋ฆฌ ๋น ๋ฅด๊ฒŒ ์ „์†กํ•˜์—ฌ RTT๋ฅผ ์ตœ์†Œํ™” ํ•จ
  • ๊ตฌ๊ธ€ SPDY๋ฅผ ํ†ตํ•ด ์ตœ๋Œ€ 55%๋น ๋ฅธ ์•ฑ์„ ๋งŒ๋“ฌ

HTTP/2 ์˜ ์ด์ง„ํ”„๋ ˆ์ž„

  • HTTP2 ์ด์ „์— ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ๋ฉ”์„ธ์ง€๋ผ๋Š” ๋‹จ์œ„๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.
  • HTTP/2์—์„œ๋Š” ๋ฉ”์‹œ์ง€ ๋‹จ์œ„ ๋ง๊ณ ๋„ ํ”„๋ ˆ์ž„, ์ŠคํŠธ๋ฆผ์ด๋ผ๋Š” ๋‹จ์œ„๊ฐ€ ํ‘ธ๊ฐ€๋˜์—ˆ๋‹ค.
  • ํ”„๋ ˆ์ž„ : HTTP2ํ†ต์‹ ์ƒ ๊ฐ€์žฅ ์ž‘์€ ์ •๋ณด ๋‹จ์œ„์ด๋ฉฐ ํ—ค๋”๋‚˜ ๋ฐ์ดํ„ฐ ์ค‘ ํ•˜๋‚˜
  • ๋ฉ”์„ธ์ง€ : HTTP1๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‘๋‹ต๋‹จ์œ„์ด๊ณ  ๋‹ค์ˆ˜์˜ ํ”„๋ ˆ์ž„์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์Œ
  • ์ŠคํŠธ๋ฆผ : ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์˜ ๋งบ์–ด์ง„ ์—ฐ๊ฒฝ์„ ํ†ตํ•ด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š” ํ•˜๋‚˜ ํ˜น์€ ๋ณต์ˆ˜์˜ ๋ฉ”์ง€์‹œ์ด๋‹ค.

  • ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„์ด ๋ชจ์—ฌ ๋ฉ”์„ธ์ง€๊ฐ€ ๋˜๊ณ , ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋ชจ์—ฌ์„œ ์ŠคํŠธ๋ฆผ์ด ๋œ๋‹ค.
  • ํฐ ๋ฐ์ดํ„ฐ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋ ˆ์ž„์— ๋‚˜๋‰˜์–ด ์ „๋‹ฌ๋˜๋Š”๋ฐ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์ด ์ ์šฉ๋˜์–ด ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์ „๋‹ฌ์ด ๋˜๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” ํ”„๋ ˆ์ž„๋“ค์„ ์กฐ๋ฆผํ•˜์—ฌ ์™„๋ฃŒํ•˜์—ฌ ์™„์ „ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ธ๋‹ค
  • ํ•˜๋‚˜์˜ TCP์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋‹ค์ˆ˜์˜ ํด๋ผ์ด ์–ธํŠธ ์š”์ฒญ๊ณผ ์„œ๋ฒ„์˜ ์‘๋‹ต์ด ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์„ ์‚ฌ์šฉ๋˜์–ด HTTP1.1์˜ HOC๋ฌธ์ œ๊ฐ€ ์ž์—ฐ์Šค๋ ˆ ํ•ด๊ฒฐ์ด ๋˜์—ˆ๋‹ค.

๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ

  • ํŒŒ์ดํ”„๋ผ์ด๋‹์€ ์„ ์ž…์„ ์ถœ์˜ ๋ฐฉ์‹์„ ๊ณ„์†ํ•ด์„œ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— HOC๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. HTTP๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์˜ ์ŠคํŠธ๋ฆผ์˜ ์œ ์—ฐํ•œ ๊ตฌ์กฐ๋กœ ์ธํ•ด ์‘๋‹ต ํ”„๋ ˆ์ž„๋“ค์€ ์š”์ฒญ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๋งŒ๋“ค์–ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ํด๋ผ์ด ์–ธํŠธ์— ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ : TCP ์—ฐ๊ฒฐ์ƒ์—์„œ ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ๊ณผ ์„œ๋ฒ„์˜ ์‘๋‹ต์ด ๋น„๋™๊ธฐ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๊ธฐ์ˆ ์„ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์ด๋ผ ํ•œ๋‹ค.

ํ—ค๋”์••์ถ•

  • HTTP1.1๊นŒ์ง€๋Š” content-Encoding์„ ํ—ค๋”๋ฅผ ํ†ตํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด HTTPํŽ˜์ด๋กœ๋“œ๋ฅผ ์„œ๋ฒ„์—์„œ ์••์ถ•ํ–ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ํ—ค๋”๋Š” ์••์ถ•์—†์ด ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ์ด ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.
  • HTTP2๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์‚ฌ์ด์˜ ๊ฐ€์ƒํ…Œ์ด๋ธ”์„ ์„ค์ •ํ•˜๊ณ  ์ค‘๋ณต๋˜๋Š” ํ—ค๋”๊ฐ’์„ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๊ณ  ์ฐธ๊ณ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ค‘๋ณต ์ „๋‹ฌ์„ ์ œ๊ฑฐํ–ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‘๋ฒˆ์˜ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด HTTP/1.x์˜ ๊ฒฝ์šฐ ๋‘๊ฐœ์˜ ์š”์ฒญ Header์— ์ค‘๋ณต ๊ฐ’์ด ์กด์žฌํ•ด๋„ ๊ทธ๋ƒฅ ์ค‘๋ณต ์ „์†กํ•œ๋‹ค. ํ•˜์ง€๋งŒ HTTP/2์—์„  Header์— ์ค‘๋ณต๊ฐ’์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ Static/Dynamic Header Table ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต Header๋ฅผ ๊ฒ€์ถœํ•˜๊ณ  ์ค‘๋ณต๋œ Header๋Š” index๊ฐ’๋งŒ ์ „์†กํ•˜๊ณ  ์ค‘๋ณต๋˜์ง€ ์•Š์€ Header์ •๋ณด์˜ ๊ฐ’์€ Huffman Encoding ๊ธฐ๋ฒ•์œผ๋กœ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ ํ•˜์—ฌ ์ „์†กํ•œ๋‹ค.

 

์„œ๋ฒ„ ํ‘ธ์‹œ

ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์—†์ด๋„ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ์•Œ์•„์„œ ๋ณด๋‚ด๋Š” ์„œ๋ฒ„ํ‘ธ์‹œ ๊ธฐ๋Šฅ์ด HTTP2์—์„œ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

 

  • ์„œ๋ฒ„ํ‘ธ์‹œ์˜ ๋Œ€์ƒ์€ ์›น์„œ๋ฒ„ ๊ด€๋ฆฌ์ž๋‚˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฏธ๋ฆฌ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ถ”๊ฐ€์ ์ธ ์™•๋ณต์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

๐ŸŒˆ HTTP/3์˜ ์ตœ์ ํ™” ๊ธฐ์ˆ  โ›ฑ๏ธ

QUIC (์ƒˆ๋กœ์šด ์ „์†ก๊ณ„์ธต)

  • ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœํ•œ OSI ๋„ค๋ฒˆ์งธ ๊ณ„์ธต์ธ ์ „์†ก๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  • Quick UDP Internet Connections๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ์ „๋‹ฌ ์†๋„ ํ–ฅ์ƒ๊ณผ ๋”๋ถˆ์–ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์—ฐ๊ฑธ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋Œ€์—ญํญ์„ ์˜ˆ์ƒํ•ด ํŒจํ‚ท์˜ ํ˜ผ์žก์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ฃผ์š” ํŠน์ง•์ด๋‹ค
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋ฅผ ํ•œ ๋ฒˆ์ด๋ผ๋„ ์ ‘์†์„ ํ–ˆ๋‹ค๋ฉด, ๋ณ„๋กœ์˜ ์ •๋ณด๊ตํ™˜ ์—†์ด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๊ธฐ์ˆ ์„ Zero RTT๋ผ๊ณ  ํ•œ๋‹ค.

 

UDP๋กœ ๋ฐ”๊พธ๋Š”๊ฒŒ ์„ฑ๋Šฅํ–ฅ์ƒ์ด ๋˜๋Š”์ด์œ 

  1. UDP์˜ ํ—ค๋”์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์€๋งŒํผ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง€์—ฐ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. QUIC ๋ฐฉ์‹์ด UDP์˜ ๋ฐฉ์‹์œผ๋กœ Zero RTT(Round Trip Time, ์™•๋ณต ์‹œ๊ฐ„)๋กœ ์—ฐ๊ฒฐ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

HTTP/3์˜ ํŠน์ง•

  • ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ TCP/IP๊ธฐ๋ฐ˜์˜ ๋ ˆ์ด์–ด ํ”„๋กœํ† ์ฝœ์ธ HTTP๋ฅผ QUIC์œ„๋กœ ์ด๋™์‹œ์ผฐ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ด๋ฅผ HQ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค(HTTP over QUIC)

 

Comments