๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TIL (Today I Learned)/Network

[Network] HTTP2

728x90

HTTP ์—ญ์‚ฌ

image

1. HTTP/0.9 - ์›๋ผ์ธ ํ”„๋กœํ† ์ฝœ

1989๋…„ ์ œ๋„ค๋ฐ”์˜ CERN์—์„œ ์ผํ•˜๊ณ  ์žˆ๋˜ Tim Berners-LEE๋Š” ์ธํ„ฐ๋„ท์˜ ํ•˜์ดํผํ…์ŠคํŠธ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ œ์•ˆ์„ ํ•˜์˜€๋‹ค. ์ด๋ ‡๊ฒŒ HTML, HTTP, WorldWideWeb, httpd์˜ ์ดˆ๊ธฐ ๋ฒ„์ „์ด 1990๋…„ ๋ง์— ์™„๋ฃŒ๋˜์—ˆ๊ณ  ์ฒซ๋ฒˆ์งธ ์„œ๋ฒ„๋Š” 1991๋…„ ์ดˆ์— CERN ์™ธ๋ถ€์—์„œ ๊ฐ€๋™์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์ดˆ๊ธฐ์—๋Š” ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•˜์ง€๋งŒ, ์ดํ›„์— ๋‹ค๋ฅธ ๋ฒ„์ „๋“ค๊ณผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ 0.9๋ผ๋Š” ๋ฒ„์ „์„ ๋ถ™์ด๊ฒŒ ๋˜์—ˆ๋‹ค. 0.9 ๋ฒ„์ „์€ ๋‹จ์ผ ๋ผ์ธ์œผ๋กœ ๊ตฌ์„ฑ ๋˜์—ˆ์œผ๋ฉฐ path๋Š” GET์ด ์œ ์ผํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ œํ•œ์ ์ธ ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ์—ˆ๋˜ HTTP/0.9๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ์—ˆ๋‹ค.
HTTP์˜ ์ดˆ๊ธฐ ๋ฒ„์ „์—๋Š” ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ์—†์—ˆ๊ณ  ์ฐจํ›„์— ๊ตฌ๋ถ„์„ ์œ„ํ•ด 0.9๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„์ฃผ ๋‹จ์ˆœํ•˜๊ฒŒ GET ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  ์ดํ›„์— ๋ฒ„์ „์— ์กด์žฌํ•˜๋Š” HTTP ํ—ค๋”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ „์†ก์€ HTML ๋ฌธ์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  ๋‹ค๋ฅธ ์œ ํ˜•์€ ์ „์†กํ•  ์ˆ˜ ์—†๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„, ์š”์ฒญ-์‘๋‹ต ํ”„๋กœํ† ์ฝœ
  • TCP/IP ๋งํฌ๋ฅผ ํ†ตํ•ด ์‹คํ–‰๋˜๋Š” ASCII ํ”„๋กœํ† ์ฝœ
  • ํ•˜์ดํผ ํ…์ŠคํŠธ ๋ฌธ์„œ(HTML)์„ ์ „์†กํ•˜๋„๋ก ์„ค๊ณ„
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ์—ฐ๊ฒฐ์€ ๋ชจ๋“  ์š”์ฒญ ํ›„์— ๋‹ซํžŒ๋‹ค.

2. HTTP/1.0

HTTP/1.0 ์—์„œ๋Š” ์ƒํƒœ์ฝ”๋“œ๊ฐ€ ์‘๋‹ต๊ฐ’ ์‹œ์ž‘ ๋ถ€๋ถ„์— ํฌํ•จ๋˜์–ด ์š”์ฒญ์— ๋Œ€ํ•œ ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ„์— ์–ธ๊ธ‰ํ•˜์˜€๋˜ HTTP ํ—ค๋”๊ฐ€ ์š”์ฒญ๊ณผ ์‘๋‹ต ๋ชจ๋‘์— ์ถ”๊ฐ€๋˜์–ด ํ”„๋กœํ† ์ฝœ์˜ ํ™•์ƒ์ด ๊ฐ€๋Šฅํ•ด์ง€๊ณ  ํ—ค๋”์˜ โ€˜Content-Typeโ€™์˜ ๋„์›€์œผ๋กœ HTML ํŒŒ์ผ ์ด์™ธ์˜ ๋‹ค๋ฅธ ๋ฌธ์„œ๋“ค๋„ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋˜ํ•œ ๋ฉ”์„œ๋“œ POST, HEAD๊ฐ€ ์ถ”๊ฐ€

# html ์š”์ฒญ
GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

# html ์‘๋‹ต
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image
  <IMG SRC="/myimage.gif">
</HTML>

# gif ์š”์ฒญ
GET / myimage.gif HTTP/1.0

# gif ์‘๋‹ต
200 OK  
...
Content-Type: text/gif

3. HTTP/1.1 - HTTP ํ‘œ์ค€

1995๋…„๋ถ€ํ„ฐ ๋‹ค์–‘ํ•œ HTTP/1.0 ๊ตฌํ˜„์ด ๋™์‹œ์— ์ง„ํ–‰๋˜์—ˆ๊ณ , ๋ช‡๋‹ฌ ๋’ค 1997๋…„ ์ดˆ์— HTTP/1.1์ด ๋ฐœํ‘œ๋˜์—ˆ๋‹ค. ๊ทธ ํ›„ 2๋…„ ๋ฐ˜ ํ›„์ธ 199๋…„ 6์›” ์—ฌ๋Ÿฌ ๊ฐœ์„  ์‚ฌํ•ญ๊ณผ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ‘œ์ค€์— ํ†ตํ•ฉ๋˜์–ด RFC 2616์œผ๋กœ ์ถœ์‹œ ๋˜์—ˆ๋‹ค.

4. HTTP/2

HTTP/2๋Š” 2010๋…„ ์ „๋ฐ˜๊ธฐ์— ๊ตฌ๊ธ€์ด ์‹คํ—˜์ ์ธ SPDY ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ๋Œ€์ฒดํ•  ์ˆ˜๋‹จ์„ ์‹ค์ฆํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด HTTP/2์˜ ๊ธฐ์ดˆ๋กœ์„œ ๊ธฐ์—ฌํ–ˆ๋‹ค.

  • SPDY์™€ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ HTTP2์˜ ๋“ฑ์žฅ
    • SPDY๋Š” Google์—์„œ ๊ฐœ๋ฐœํ•œ ์‹œํ—˜์šฉ ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ 20009๋…„ ์ค‘๋ฐ˜์— ๋ฐœํ‘œ๋˜์—ˆ๋‹ค.
    • ์ฐธ๊ณ : PLT 50% ๊ฐœ์„ ์„ ์‹คํ˜„ํ•˜๊ธฐ ์œ„ํ•œ SPDY์˜ ๋ชฉํ‘œ๋Š” ์ƒˆ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”„๋ ˆ์ด๋ฐ ๊ณ„์ธต์„ ๋„์ž…ํ•˜์—ฌ ์š”์ฒญ/์‘๋‹ต ๋‹ค์ค‘ํ™”, ์šฐ์„ ์ˆœ์œ„ ์ง€์ • ๋ฐ ํ—ค๋” ์••์ถ•์„ ์ง€์›ํ•จ์œผ๋กœ์จ ๊ธฐ๋ณธ TCP ์—ฐ๊ฒฐ์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. Latency as a Performance Bottleneck์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    • ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ํž˜์ž…์–ด SPDY๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜์—ˆ๊ณ  ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€์ด ๋˜์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ์ฃผ์‹œํ•˜๊ณ  ์žˆ๋˜ HTTP-WG๋Š” HTTP/2 ํ‘œ์ค€์„ ์„ ๋ณด์ด๋ ค๋Š” ๋…ธ๋ ฅ์„ ํ–ˆ๊ณ  ์ด ํ”„๋กœํ† ์ฝœ์˜ ์ถœ๋ฐœ์ ์„ SPDY ์‚ฌ์–‘์„ ์ฑ„ํƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ 2012๋…„๋ถ€ํ„ฐ 2015๋…„๊นŒ์ง€ 3๋…„๊ฐ„์˜ ๋…ธ๋ ฅ์œผ๋กœ HTTP/2 ํ‘œ์ค€์ด ๋ฐœํ–‰๋˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋ช‡๋…„๊ฐ„ ํ•จ๊ป˜ ๋ฐœ์ „ํ•ด์˜จ SPDY๋Š” ์ง€์›์„ ์ค‘๋‹จํ•˜๋ฉฐ, HTTP2๊ฐ€ ๋„๋ฆฌ ์ฑ„ํƒ๋œ๋‹ค๋Š” ๋ง์„ ๋‚จ๊ธฐ๊ณ  ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜์—ˆ๋‹ค.

์ฐธ๊ณ 

HTTP์˜ ๋ฒ„์ „ ๋ณ„ ์ฐจ์ด์— ๋Œ€ํ•ด

HTTP/2 ์†Œ๊ฐœ