[๐Ÿ“Œ] ๋Ÿฌ๋‹ HTTP/2

์ •์€๊ฒฝยท2020๋…„ 5์›” 21์ผ
0

์ฑ… ์ •๋ณด

  • Learning HTTP/2
  • O'REILLY
  • ์Šคํ‹ฐ๋ธ ๋ฃจ๋”˜, ํ•˜๋น„์—๋ฅด ๊ฐ€๋ฅด์‚ฌ ์ง€์Œ, ๊ฐ•์žฌ์ค€ ์˜ฎ๊น€
  • ํ•œ๋น›๋ฏธ๋””์–ด

๋…์„œ๊ธฐ๊ฐ„

  • 1์ฐจ: 2020-05-16-ํ†  ~ 2020-07-02-๋ชฉ

๋ชฉ์ฐจ

Chapter 1 HTTP์˜ ์ง„ํ™”
Chapter 2. HTTP/2 ๋ง›๋ณด๊ธฐ
Chapter 3. ์›น์„ ํŒŒํ—ค์น˜๋Š” ์ด์œ ์™€ ๋ฐฉ๋ฒ•
Chapter 4. HTTP/2๋กœ์˜ ์ „ํ™˜
Chapter 5. HTTP/2 ํ”„๋กœํ† ์ฝœ
Chapter 6. HTTP/2 ์„ฑ๋Šฅ
Chapter 7. HTTP/2 ๊ตฌํ˜„
Chapter 8. HTTP/2 ๋””๋ฒ„๊น…ํ•˜๊ธฐ
Chapter 9. ๋‹ค์Œ์€ ๋ฌด์—‡์ธ๊ฐ€

Chapter 1. HTTP์˜ ์ง„ํ™”

Chapter 2. HTTP/2 ๋ง›๋ณด๊ธฐ

Chapter 3. ์›น์„ ํŒŒํ—ค์น˜๋Š” ์ด์œ ์™€ ๋ฐฉ๋ฒ•

"์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๊ณ  ์žˆ๋Š” ๊ณณ (์ฆ‰, HTTP/2)์„ ์ดํ•ดํ•˜๋ ค๋ฉด,
์šฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ ์žˆ๋Š” ๊ณณ,
์šฐ๋ฆฌ๊ฐ€ ์ง๋ฉดํ•œ ๋ฌธ์ œ,
์šฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ ๊ทธ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์ž‡๋Š” ๋ฐฉ๋ฒ•์„
๋จผ์ € ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค."

3.1 ์˜ค๋Š˜๋‚ ์˜ ์„ฑ๋Šฅ ๋ฌธ์ œ

์›น ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์™€ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋ฟ ์•„๋‹ˆ๋ผ
๋‹จ๊ณ„๋งˆ๋‹ค ๋‚ด์žฌ๋œ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€
์›น์‚ฌ์ดํŠธ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๋ถˆํŽธํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๋‹ค.

3.1.1 ์›นํŽ˜์ด์ง€ ์š”์ฒญ์˜ ๊ตฌ์กฐ

๊ฐœ์ฒด๋ฅผ ๋ฐ˜์ž…(fetching)ํ•˜๋Š” ๋กœ์ง๊ณผ ํŽ˜์ด์ง€๋ฅผ ํŒŒ์‹ฑ(parsing)/๋ Œ๋”๋งํ•˜๋Š” ๋กœ์ง์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ƒ๊ฐํ•˜๋Š” ์›นํ”ผ์ด์ง€์˜ ์š”์ฒญ ์ ˆ์ฐจ

<๊ฐœ์ฒด ์š”์ฒญ/๋ฐ˜์ž… ํ๋ฆ„>
1. ๊ฐ€์ ธ์˜ฌ URL์„ ๋Œ€๊ธฐ์—ด์— ๋„ฃ๋Š”๋‹ค
2. URL ๋‚ด์˜ ํ˜ธ์ŠคํŠธ์ด๋ฆ„์˜ IP์ฃผ์†Œ๋ฅผ ์กฐํšŒํ•œ๋‹ค
3. ํ˜ธ์ŠคํŠธ๋กœ TCP ์—ฐ๊ฒฐ์„ ์—ฐ๋‹ค
4. ์š”์ฒญ์— HTTPS๋ผ๋ฉด, TLS ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ์™„๋ฃŒํ•œ๋‹ค
5. ๊ธฐ์ค€ ํŽ˜์ด์ง€ URL์— ๋Œ€ํ•œ ์š”์ฒญ์„ ์ „์†กํ•œ๋‹ค

<๊ฐœ์ฒด ์‘๋‹ต/ํŽ˜์ด์ง€ ๋ Œ๋”๋ง ํ๋ฆ„>
6. ์‘๋‹ต์„ ์ˆ˜์‹ ํ•œ๋‹ค
7. ๊ธฐ์ค€ HTML์ด๋ผ๋ฉด, HTML์„ ํŒŒ์‹ฑํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ํŽ˜์ด์ง€์˜ ๊ฐœ์ฒด๋“ค์„ ๋ฐ˜์ž…์„ ์‹œ์ž‘ํ•œ๋‹ค
8. ํŽ˜์ด์ง€์˜ ํ•„์ˆ˜ ๊ฐœ์ฒด๋ฅผ ์ˆ˜์‹ ํ–ˆ๋‹ค๋ฉด, ํ™”๋ฉด ๋ Œ๋”๋ง์„ ์‹œ์ž‘ํ•œ๋‹ค
9. ์ถ”๊ฐ€ ๊ฐœ์ฒด๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด, ๋๋‚  ๋•Œ๊นŒ์ง€ ํŒŒ์‹ฑ๊ณผ ๋ Œ๋”๋ง์„ ๊ณ„์†ํ•œ๋‹ค

์–ด๋Š ๋‹จ๊ณ„๋“  ์ตœ์ ํ™”ํ•˜๊ฑฐ๋‚˜, ์ œ๊ฑฐํ•˜๋Š” ์ผ์ด "์›น ์„ฑ๋Šฅ ํŠœ๋‹"์ด๋ผ๋Š” ์˜ˆ์ˆ ์— ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์ด๋‹ค.

3.1.2 ์ค‘์š” ์„ฑ๋Šฅ

1) ๋„คํŠธ์›Œํฌ ์ˆ˜์ค€์˜ ์ง€ํ‘œ

  • ์ง€์—ฐ ์‹œ๊ฐ„
  • ๋Œ€์—ญํญ
  • DNS lookup
  • ์—ฐ๊ฒฐ ์‹œ๊ฐ„
  • TLS ํ˜‘์ƒ ์‹œ๊ฐ„

2) ์„œ๋ฒ„ ์ž์ฒด์˜ ๋‚ด์šฉ์ด๋‚˜ ์„ฑ๋Šฅ์— ์ข€ ๋” ์˜์กด์ ์ธ ์ง€ํ‘œ

  • TTFB(Time to First Byte)
  • ์ฝ˜ํ…์ธ  ๋‹ค์šด๋กœ๋“œ ์‹œ๊ฐ„ (TTLB, Time to Last Byte)
  • ๋ Œ๋”๋ง ์‹œ์ž‘ ์‹œ๊ฐ„
  • ๋ฌธ์„œ ์˜ค๋‚˜์„ฑ ์‹œ๊ฐ„(=ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ๊ฐ„)

3) ์ธํ„ฐ๋„ท ์„ฑ๋Šฅ์ƒ์˜ ๋ณ‘๋ชฉ์„ ์œ ๋ฐœํ•˜๋Š” ์š”์†Œ๋“ค

  • ๋ฐ”์ดํŠธ ์ˆ˜์˜ ์ฆ๊ฐ€
  • ๊ฐœ์ฒด ์ˆ˜์˜ ์ฆ๊ฐ€
  • ๋ณต์žก๋„์˜ ์ฆ๊ฐ€
  • ํ˜ธ์ŠคํŠธ ์ˆ˜์˜ ์ฆ๊ฐ€
  • TCP ์†Œ์ผ“ ์ˆ˜์˜ ์ฆ๊ฐ€

3.1.3 HTTP/1์˜ ๋ฌธ์ œ์ 

1) HOL ๋ธ”๋กœํ‚น (Head of Line blocking)
HOL ๋ธ”๋กœํ‚น: ์—ฌ๋Ÿฌ ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต ์ค‘ ์–ด๋””์—”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ทธ ์š”์ฒญ/์‘๋‹ต์„ ๋’ค๋‹ค๋ฅด๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๋“ค์€ ๋ง‰ํ˜€๋ฒ„๋ฆผ. ์ด๋Ÿฐ ํ˜„์ƒ์„ HOL ๋ธ”๋กœํ‚น์ด๋ผ๊ณ  ํ•จ
์š”์ฆ˜ ๋ธŒ๋ผ์šฐ์ €๋Š” ํŠน์ • ํ˜ธ์ŠคํŠธ์— ์ตœ๋Œ€ 6๊ฐœ์˜ ์—ฐ๊ฒฐ์„ ์—ด๊ณ , ๊ฐ ์—ฐ๊ฒฐ๋กœ ์š”์ฒญ์„ ์ „์†กํ•ด ์–ด๋Š ์ •๋„ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•จ

2) TCP์˜ ๋น„ํšจ์œจ์  ์‚ฌ์šฉ

  • congestion window
  • slow start

3) ๋น„๋Œ€ํ•œ ๋ฉ”์‹œ์ง€ ํ—ค๋”

4) ์ œํ•œ์ ์ธ ์šฐ์„ ์ˆœ์œ„
์š”์ฒญ๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ์˜ต์…˜์€ ๋งค์šฐ ์ œํ•œ์ 

5) ์„œ๋“œํŒŒํ‹ฐ ๊ฐœ์ฒด

  • ์„œ๋“œํŒŒํ‹ฐ ๊ฐœ์ฒด: ํ˜„๋Œ€ ์›น ํŽ˜์ด์ง€์—์„œ ์š”์ฒญ๋˜๋Š” ๊ฒƒ ์ค‘์— ์›น ์„œ๋ฒ„์˜ ์ œ์–ด ๋ฒ”์œ„์—์„œ ์™„์ „ํžˆ ๋ฒ—์–ด๋‚˜ ์žˆ๋Š” ๊ฒƒ๋“ค

3.2 ์›น ์„ฑ๋Šฅ ๊ธฐ๋ฒ•

  • ์›น ์‚ฌ์ดํŠธ์˜ ์„ฑ๋Šฅ์€ "์ „ํ™˜์œจ, ์‚ฌ์šฉ์ž ์ฐธ์—ฌ์œจ, ๋ธŒ๋žœ๋“œ ์ธ์ง€๋„"์ธก๋ฉด์—์„œ ์ค‘์š”!
  • 2010๋…„ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์—”์ œ์—์„œ url์ˆœ์œ„๋ฅผ ์‚ฐ์ถœํ•˜๋Š” ์ฃผ์š” ํŒŒ๋ผ๋ฏธํ„ฐ์— ์„ฑ๋Šฅ์„ ์ถ”๊ฐ€ํ•จ
  • ๋ธŒ๋ผ์šฐ์ € ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์€ ํ˜ธ์ŠคํŒ…์ธํ”„๋ผ์—์„œ ๊ฐ€์ ธ์˜จ ์ดˆ๊ธฐ ์ฝ˜ํ…์ธ (๋ณดํ†ต html)๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ๋ณด๋‹ค๋Š”, ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ ธ์™€ ํด๋ผ์ด์–ธํŠธ์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐ ์†Œ์š”๋จ
  • ์›น ๊ฐœ๋ฐœ์ž๋“ค์€ ํด๋ผ์ด์–ธํŠธ์˜ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ์„ ์ค„์ด๊ณ , ํŽ˜์ด์ง€ ๋ Œ๋”๋ง ์‹œ๊ฐ„์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์ ์  ๋” ๋งŽ์€ ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด๊ณ  ์žˆ์Œ!

3.2.1 ์›น ์„ฑ๋Šฅ ๋ชจ๋ฒ” ์‚ฌ๋ก€

1) DNS ์กฐํšŒ๋ฅผ ์ตœ์ ํ™”ํ•˜๋ผ

  • ๊ณ ์œ ํ•œ ๋„๋ฉ”์ธ/ํ˜ธ์ŠคํŠธ์ด๋ฆ„์˜ ์ˆ˜๋ฅผ ์ œํ•œ
  • ์กฐํšŒ ์ง€์—ฐ ์‹œ๊ฐ„ ๋‹จ์ถ•
  • ์ดˆ๊ธฐ html์ด๋‚˜ ์‘๋‹ต์— ๋Œ€ํ•ด DNS ํ”„๋ฆฌํŒจ์น˜๋ฅผ ํ™œ์šฉ
    ์ด๋ฅผ ํ†ตํ•ด dns์˜ ๊ณ ์ •์ ์ธ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™”

    DNS prefetch
    is an attempt to resolve domain names before resources get requested. This could be a file loaded later or link target a user tries to follow.
    https://developer.mozilla.org/en-US/docs/Web/Performance/dns-prefetch

2) TCP ์—ฐ๊ฒฐ์„ ์ตœ์ ํ™”ํ•˜๋ผ

  • preconnect๋ฅผ ํ™œ์šฉ
  • ์กฐ๊ธฐ ์ข…๋ฃŒ ์‚ฌ์šฉ (CDN ์‚ฌ์šฉ~)
  • ์ตœ์‹  TLS ๋ชจ๋ฒ”์‚ฌ๋ก€๋ฅผ ์‹คํ–‰ (https://istlsfastyet.com/)

3) ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ํ”ผํ•˜๋ผ
ํŠน๋ณ„ํ•œ ์ƒํ™ฉ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋Œ€๊ฒŒ๋Š” ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ํ•  ๋งŒํ•œ 'ํƒ€๋‹นํ•œ' ์ด์œ ๊ฐ€ ์—†๋‹ค

  • CDN์„ ํ™œ์šฉํ•˜์—ฌ ํด๋ผ์šฐ๋“œ ๋Œ€์‹  'ํด๋ผ์šฐ๋“œ์—์„œ' ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ์ˆ˜ํ–‰
  • ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์ด๋ผ๋ฉด, ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ , ์›น ์„œ๋ฒ„์—์„œ 'Rewrite Rules'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ์›ํ•˜๋Š” ์ž์›์œผ๋กœ ์—ฐ๊ฒฐ

4) ํด๋ผ์ด์–ธํŠธ์— ์บ์‹ฑํ•˜๋ผ
๊ฐ€์žฅ ๋น ๋ฅธ ์š”์ฒญ์€ ์•„๋ฌด๊ฒƒ๋„ ์š”์ฒญํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.
๊ฐœ์ฒด๋ฅผ ์–ผ๋งˆ๋‚˜ ์˜ค๋žซ๋™์•ˆ ์บ์‹ฑํ• ์ง€๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ์•Œ๋ ค์ฃผ๋Š” ์ง€์‹œ์ž๊ฐ€ ๋ฐ”๋กœ TTL(Time To Live)

  • ์ด๋ฏธ์ง€ ๋˜๋Š” ๋ฒ„์ „์ด ๊ด€๋ฆฌ๋˜๋Š” ์ฝ˜ํ…์ธ ์™€ ์†Œ์œ„ ์ •์  ์ฝ˜ํ…์ธ ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ์บ์‹ฑํ•  ์ˆ˜ ์žˆ์Œ
    ํด๋ผ์ด์–ธํŠธ ์บ์‹ฑ TTL์€ 'Cache-Control' HTTP ํ—ค๋”์˜ 'max-age'(์ดˆ) ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ 'Expires'ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ

5) ๋„คํŠธ์›Œํฌ ๊ฒฝ๊ณ„์— ์บ์‹ฑํ•˜๋ผ
๋„คํŠธ์›Œํฌ์˜ ๊ฒฝ๊ณ„์— ์บ์‹ฑํ•˜๋ฉด ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ผ์šฐ๋“œ ๋‚ด์˜ ๊ณต์œ  ์บ์‹œ์˜ ํ˜œํƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ,
๋” ๋น ๋ฅธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ณ  ์„œ๋น„์Šค ์ธํ”„๋ผ์—์„œ ๋งŽ์€ ์–‘์˜ ํŠธ๋ž˜ํ”ฝ์„ ๋œ์–ด๋‚ผ ์ˆ˜ ์žˆ์Œ

  • ์บ์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›์˜ ์ข…๋ฅ˜:
    • ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž ๊ฐ„ ๊ณต์œ  ๊ฐ€๋Šฅํ•œ ์ž์›
    • ์–ด๋Š ์ •๋„ ๋…ธํ›„๋„๋ฅผ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›

6) ์กฐ๊ฑด๋ถ€ ์บ์‹ฑ
์กฐ๊ฑด๋ถ€ ์บ์‹ฑ: '๊ทธ ๊ฐœ์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉด ๋ณด๋‚ด๋‹ฌ๋ผ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ทธ๋ƒฅ ๋™์ผํ•˜๋‹ค๊ณ  ์•Œ๋ ค๋‹ฌ๋ผ'๊ณ  ์š”์ฒญํ•˜๋Š” ๊ธฐ๋Šฅ

  • ์กฐ๊ฑด๋ถ€ ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•:
    * If-Modified-Since๋ฅผ ์š”์ฒญํ—ค๋”์— ํฌํ•จํ•˜๊ธฐ
    • ETag(๊ฐœ์ฒด๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ์—”ํ‹ฐํ‹ฐ ํƒœ๊ทธ)๋ฅผ ์š”์ฒญํ—ค๋”์— ํฌํ•จํ•˜๊ธฐ

7) ์••์ถ•๊ณผ ์ถ•์†Œํ™”
ํ…์ŠคํŠธ ํ˜•ํƒœ์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ (HTML, JS, CSS, SVG, XML, JSON, ํฐํŠธ)๋Š” ์••์ถ•/์ถ•์†Œํ™” ๊ฐ€๋Šฅ
์••์ถ•๋ฐฉ์‹์—๋Š” gzip, deflate, Brotli๊ฐ€ ์žˆ์Œ

8) CSS/JS ์ฐจ๋‹จ์„ ํ”ผํ•˜๋ผ

9) ์ด๋ฏธ์ง€๋ฅผ ์ตœ์ ํ™”ํ•˜๋ผ

  • ์ด๋ฏธ์ง€ ์ตœ์ ํ™”: ์ตœ์†Œํ•œ์˜ ๋ฐ”์ดํŠธ ์ˆ˜๋งŒ์œผ๋กœ ์›ํ•˜๋Š” ์‹œ๊ฐ ํ’ˆ์งˆ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ
  • ์ด๋ฏธ์ง€ ์˜ค๋ฒ„๋กœ๋”ฉ: ์ด๋ฏธ์ง€์˜ ์›๋ณธ ํฌ๊ธฐ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฐฝ ํฌ๊ธฐ๋ฅผ ๋„˜๊ฑฐ๋‚˜ ์ด๋ฏธ์ง€ ํ•ด์ƒ๋„๊ฐ€ ๋””๋ฐ”์ด์Šค ํ™”๋ฉด์˜ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด, ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ค„์–ด๋“ ๋Š ๊ฒƒ

3.2.2 ์•ˆํ‹ฐํŒจํ„ด

HTTP/2๋Š” ํ˜ธ์ŠคํŠธ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ๋งŒ ์—ฐ๋‹ค!

HTTP/2 ์›น์‚ฌ์ดํŠธ์—์„œ๋Š” ๋” ์ด์ƒ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ์ธ๊ธฐ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋“ค:

  • ์Šคํ”„๋ผ์ดํŒ…๊ณผ ์ž์› ํ†ตํ•ฉ/์ธ๋ผ์ด๋‹

    • ์Šคํ”„๋ผ์ดํŒ…: ์ด๋ฏธ์ง€ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ํฐ ์ด๋ฏธ์ง€ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฏธ์ง€ ์š”์†Œ๋ฅผ ๋‹จ ํ•œ๋ฒˆ๋งŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ
  • ์ƒค๋”ฉ

    • ์ƒค๋”ฉ: ํ˜ธ์ŠคํŠธ์ด๋ฆ„๋งˆ๋‹ค ๋‹ค์ˆ˜์˜ ์—ฐ๊ฒฐ์„ ์—ด์–ด ์ฝ˜ํ…์ธ ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋‚ด๋ ค๋ฐ›๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ
  • ์ฟ ํ‚ค ์—†๋Š” ๋„๋ฉ”์ธ

    • http/1์—์„œ๋Š” ํ—ค๋” ์••์ถ•์ด ์•ˆ๋˜์–ด์„œ ์ฟ ํ‚ค์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ž์›์„ ์œ„ํ•ด ์ฟ ํ‚ค ์—†๋Š” ๋„๋ฉ”์ธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ธ ๊ถŒ๊ณ  ์‚ฌํ•ญ์ด์—ˆ์Œ
    • http/2์—์„œ๋Š” ํ—ค๋”๋ฅผ ์••์ถ•๊ฐ€๋Šฅ
    • ์ด๋ฏธ ์•Œ๋ ค์ง„ ์ •๋ณด๋ฅผ ์ „์†กํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์–‘ ๋‹จ์— 'ํ—ค๋” ์ด๋ ฅ'์„ ์ €์žฅ

3.3 ์š”์•ฝ

  • http2๋Š” http1์˜ ์„ฑ๋Šฅ์ด์Šˆ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋“ฑ์žฅ!

Chapter 4. HTTP/2๋กœ์˜ ์ „ํ™˜

์›น์‚ฌ์ดํŠธ๋ฅผ HTTP/2๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์ „์— ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ช‡๊ฐ€์ง€:

  • ๋ธŒ๋ผ์šฐ์ €์˜ h2 ์ง€์›
  • TLS(HTTPS)๋กœ์˜ ์ „ํ™˜
  • ์›น์‚ฌ์ดํŠธ์˜ h2 ์ตœ์ ํ™”(h1์šฉ ์„ค์ • ์ œ๊ฑฐ)
  • ์›น์‚ฌ์ดํŠธ์˜ ์„œ๋“œํŒŒํ‹ฐ ๊ฐœ์ฒด
  • ๊ธฐ์กด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•œ ์ง€์› ์œ ์ง€

4.1 ๋ธŒ๋ผ์šฐ์ € ์ง€์›

์ด ์ฑ…์˜ ์ง‘ํ•„ ์‹œ์  ๊ธฐ์ค€์œผ๋กœ, ์•ฝ 80%์˜ ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ h2๋ฅผ ์–ด๋Š ์ •๋„ ์ง€์›ํ•˜๊ณ  ์žˆ์Œ
h2๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ํ”„๋กœํ† ์ฝœ ํ˜‘์ƒ ์ ˆ์ฐจ๊ฐ€ ๋ฌด์‹œ๋˜๋ฏ€๋กœ,
h2๋กœ ํ†ต์‹ ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €๋Š” ์‰ฝ๊ฒŒ ๋‹ค์‹œ h1์œผ๋กœ ๋˜๋Œ์•„์™€ ์ธํ”„๋ผ์— ์ ‘์†ํ•  ๊ฒƒ์ž„!

4.2 TLS๋กœ์˜ ์ „ํ™˜

๋ชจ๋“  ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ TLS(HTTPS ์š”์ฒญ)๋กœ๋งŒ h2์— ์ ‘์†!
๊ทธ๋ž˜์„œ! TLS๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค!

TLS ์ „ํ™˜์„ ์œ„ํ•ด ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ํ•ญ๋ชฉ๋“ค(6):

(1) ์›น ์„œ๋ฒ„๋ฅผ ํŒŒ์•…ํ•˜๋ผ
(2) ์ธ์ฆ์„œ๋ฅผ ํ™•๋ณดํ•˜๋ผ
(3) ๊ฐœ์ธํ‚ค๋ฅผ ๋ณดํ˜ธํ•˜๋ผ
(4) ์ฆ๊ฐ€ํ•˜๋Š” ์„œ๋ฒ„ ๋ถ€ํ•˜์— ๋Œ€๋น„ํ•˜๋ผ

  • ๋Œ€์นญ ์•”ํ˜ธ์˜ ์ตœ์ ํ™”๋Š” ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ๋ฐ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์ง€๋งŒ, ์ž„์‹œํ‚ค๊ตํ™˜์˜ ์‚ฌ์šฉ์€ ๋ฐ˜๋Œ€๋กœ ๋ถ€ํ•˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ด
  • ์ฒ˜์Œ์‹œ์ž‘ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผํ•  ๋ช‡ ๊ฐ€์ง€ ๋ชจ๋ฒ”์‚ฌ๋ก€:
    ์—ฐ๊ฒฐ์„ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ธธ๊ฒŒ ์œ ์ง€(TLS์˜ ๊ฐ€์žฅ ๋น„์‹ผ๋ถ€๋ถ„์€ ํ•ธ๋“œ์…ฐ์ดํฌ ์‹œ๊ฐ„!)
    ์„ธ์…˜ ํ‹ฐ์ผ“์„ ์‚ฌ์šฉ! (ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์ „์˜ ํ•ธ๋“œ์…ฐ์ดํฌ์—์„œ ์–ป์€ ๊ฐ’๋น„์‹ผ ์•”ํ˜ธ ๊ณ„์‚ฐ๊ฐ’์„ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ๋‹ค์‹œ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ!)
    * ์•”ํ˜ธํ™” ์ง€์›์„ ๋‚ด์žฅํ•œ ์นฉ์…‹์„ ์‚ฌ์šฉ
    (5) ๋ณ€ํ™”๋ฅผ ์ฃผ์‹œํ•˜๋ผ
    ์ตœ์‹  ์„œ๋ฒ„/https์˜ ๋ณด์•ˆ ์ทจ์•ฝ์  ํŒŒ์•…ํ•˜๊ธฐ
    (6) ์›น์‚ฌ์ดํŠธ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ ๊ฒ€ํ•˜๋ผ

TLS๋Š” ํ•„์ˆ˜์ธ๊ฐ€?

HTTP/2๋Š” ๊ทœ๊ฒฉ์ƒ TLS๊ฐ€ ํ•„์š” ์—†์œผ๋ฉฐ, ํ‰๋ฌธ์œผ๋กœ ํ”„๋กœํ† ์ฝœ์„ ํ˜‘์ƒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ!
์–ด๋–ค ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €๋„ TLS์—†์ด๋Š” h2๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ณ  ์žˆ์Œ!
๊ทธ ์ด์œ :

  • 1) ์›น์†Œ์ผ“๊ณผ SPDY๋ฅผ ์‹œํ—˜ํ•œ ๊ฒฐ๊ณผ, 80 ํฌํŠธ๋ฅผ ํ†ตํ•ด upgrade ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋ฝ์‹œ ์ฐจ๋‹จ ๋“ฑ์˜ ์›์ธ์œผ๋กœ ์ธํ•ด ๋†’์€ ์˜ค๋ฅ˜์œจ์„ ๋ณด์ž„!
  • 2) ์•ˆ์ „๊ณผ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ๊ฒƒ์„ ์•”ํ˜ธํ™”ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฏฟ์Œ์ด ์ฆ๊ฐ€

4.3 HTTP/1.1 ์ตœ์ ํ™” ์ œ๊ฑฐํ•˜๊ธฐ

h2์—์„œ๋Š” ์š”์ฒญ์˜ ๊ตฌ์กฐํ™”๊ฐ€ ํ›จ์”ฌ ๋” ์ตœ์ ํ™”๋จ!
๊ฒฐํ•ฉ์„ ํ•˜์ง€ ์•Š์•„์•ผ ์š”์ฒญ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์–ด์ง€๊ณ  ๊ฐœ๋ณ„ํŒŒ์ผ์— ๋Œ€ํ•œ ๋” ์„ธ๋ฐ€ํ•œ ๋ธŒ๋ผ์šฐ์ € ์บ์‹ฑ์„ ํ•  ์ˆ˜ ์žˆ์Œ!

4.4 ์„œ๋“œํŒŒํ‹ฐ

4.5 ๊ธฐ์กด ํด๋ผ์ด์–ธํŠธ์˜ ์ง€์›

4.6 ์š”์•ฝ

h2๋กœ์˜ ์ „ํ™˜์€ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋‹ค๋ฃจ์–ด์•ผ ํ•œ๋‹ค!
์‹œํ—˜ํ•˜๊ณ , ์‹œํ—˜ํ•˜๊ณ , ๋˜ ์‹œํ—˜ํ•ด์•ผ ํ•œ๋‹ค!

Chapter 5. HTTP/2 ํ”„๋กœํ† ์ฝœ

5.1 HTTP/2์˜ ๊ณ„์ธต

  • ํ”„๋ ˆ์ด๋ฐ ๊ณ„์ธต : h2 ๋‹ค์ค‘ํ™” ๊ธฐ๋Šฅ์˜ ํ•ต์‹ฌ! ํ”„๋ ˆ์ด๋ฐ ๊ณ„์ธต์˜ ๋ชฉ์ ์€ ๋‹ค๋ฆ„ ์•„๋‹Œ HTTP๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•จ!!
  • ๋ฐ์ดํ„ฐ ๊ณ„์ธต(=http ๊ณ„์ธต) : ์ „ํ†ต์ ์ธ http ๋ฐ ๊ด€๋ จ
  • HTTP/2๋Š” ์ด์ „์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ์ˆ˜ํ–‰๋˜๋˜ ์ƒ๋‹น์ˆ˜์˜ HTTP/1.1 ์ž„์‹œ ๋ฐฉํŽธ์„ ์‹คํ–‰์ทจ์†Œํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ „์†ก ๊ณ„์ธต ๋‚ด์—์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ์œผ๋กœ์จ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋” ๋น ๋ฅด๊ณ , ๋‹จ์ˆœํ•˜๊ณ , ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์คŒ

h2๋งŒ์˜ ํŠน์„ฑ(4):

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

5.2 ์—ฐ๊ฒฐ

  • ์—ฐ๊ฒฐ: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐœ์‹œํ•œ TCP/IP ์†Œ์ผ“์œผ๋กœ ์ •์˜, HTTP ์š”์ฒญ์„ ์ „์†กํ•  ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜๋ฏธ
  • ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š” h1๊ณผ๋Š” ๋‹ฌ๋ฆฌ, h2๋Š” h2 ์œ„์—์„œ ํ๋ฅด๋Š” ๋ชจ๋“  ํ”„๋ ˆ์ž„๊ณผ ์ŠคํŠธ๋ฆผ์ด ์—ฐ๊ด€๋œ ์—ฐ๊ฒฐ ์ˆ˜์ค€์˜ ์š”์†Œ๋“ค์„ ํ•จ๊ป˜ ๋ฌถ์Œ
  • ํด๋ผ์ด์–ธํŠธ ์—”๋“œํฌ์ธํŠธ๊ฐ€ h2๋กœ ํ†ต์‹ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์„œ๋ฒ„์— ๋‹ค์‹œ ํ•œ๋ฒˆ ๋” ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด, ํด๋ผ์ด์–ธํŠธ๋Š” "์—ฐ๊ฒฐ ์ „๋ฌธ"์ด๋ผ๋Š” ๋งˆ๋ฒ•์˜ ์˜ฅํ…Ÿ ์ŠคํŠธ๋ฆผ์„ ์—ฐ๊ฒฐ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋กœ ์ „์†ก

HTTP/2 ๋‘ ๊ฐ€์ง€ ํƒ์ƒ‰ ๋ฉ”ํ„ฐ๋‹ˆ์ฆ˜:

(1) ์—ฐ๊ฒฐ์ด ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ํด๋ผ์ด์–ธํŠธ upgrade ํ—ค๋”๋ฅผ ํ™œ์šฉํ•ด h2๋กœ ํ†ต์‹ ํ•˜๋ ค๋Š” ์š”๊ตฌ๋ฅผ ์ „๋‹ฌ
(2) HTTP Alternative Services(Alt-Svc)๋ฅผ ์‚ฌ์šฉ

5.3 ํ”„๋ ˆ์ž„


5.4 ์ŠคํŠธ๋ฆผ



5.4.1 ๋ฉ”์‹œ์ง€

HTTP/1๊ณผ HTTP/2 ๋ฉ”์‹œ์ง€ ๊ฐ„์˜ ์ฐจ์ด์ 

(1) ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค ํ—ค๋”๋‹ค
(2) ์ฒญํฌ ๋ถ„ํ•  ์ธ์ฝ”๋”ฉ์ด ํ•„์š” ์—†๋‹ค
(3) 101 ์‘๋‹ต์ด ํ•„์š” ์—†๋‹ค

5.4.2 ํ๋ฆ„์ œ์–ด

5.4.3 ์šฐ์„ ์ˆœ์œ„

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

  • HTTP/2์˜ ์„œ๋ฒ„ ํ‘ธ์‹œ ๊ธฐ๋Šฅ์˜ ๋ชฉํ‘œ: ๊ฐœ์ฒด๊ฐ€ ์š”์ฒญ๋˜๊ธฐ ์ „์— ๋ธŒ๋ผ์šฐ์ €์˜ ์บ์‹œ์— ๋ฏธ๋ฆฌ ๊ฐ€์ ธ๋‹ค ๋‘๋Š” ๊ฒƒ!

5.5.1 ๊ฐœ์ฒด ํ‘ธ์‹œํ•˜๊ธฐ

5.5.2 ํ‘ธ์‹œํ•  ๋Œ€์ƒ ์„ ์ •ํ•˜๊ธฐ

5.6 ํ—ค๋” ์••์ถ•(HPACK)

5.7 ์ „์†ก ์ ˆ์ฐจ

5.7.1 ๊ฐ„๋‹จํ•œ GET

5.8 ์š”์•ฝ

์งˆ๋ฌธ!:

Chapter 6. HTTP/2 ์„ฑ๋Šฅ

์‹ค์ œ HTTP/2 ์„ฑ๋Šฅ์— ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์—ฌ๋Ÿฌ ์š”์†Œ๋“ค.

6.1 ํด๋ผ์ด์–ธํŠธ ๊ตฌํ˜„

๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ํŠน์„ฑ๋“ค์ด ์žˆ์Œ

6.2 ์ง€์—ฐ ์‹œ๊ฐ„

  • ์™•๋ณต์‹œ๊ฐ„(RTT): ํŒจํ‚ท์ด ์ˆ˜์‹ ์ž์—๊ฒŒ ๋„์ฐฉํ–ˆ๋‹ค๊ฐ€ ์†ก์‹ ์ž์—๊ฒŒ ๋˜๋Œ์•„์˜ค๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„
  • ์ง€์—ฐ์‹œ๊ฐ„์— ๋ฏธ์น˜๋Š” ์š”์ผ 2๊ฐ€์ง€: ๋‘ ์ง€์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ, ์‚ฌ์šฉํ•˜๋Š” ์ „์†ก ๋งค์ฒด์˜ ์†๋„
  • ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์–‘ ๋์ ์„ ๋” ๊ฐ€๊นŒ์ด ๋‘๋Š” ๊ฒƒ(๋˜๋Š” ๋” ๋น ๋ฅธ ์ „์†ก ๋งค์ฒด๋ฅผ ๊ฐœ๋ฐœ)

6.3 ํŒจํ‚ท ์†์‹ค

  • ๋†’์€ ํŒจํ‚ท ์†์‹ค๋ฅ ์€ h2๋กœ ์ „์†ก๋˜๋Š” ํŽ˜์ด์ง€์— ์•…์˜ํ–ฅ์„ ๋ฏธ์นจ!
  • ์ด๋Š” h2๊ฐ€ ๋‹จ ํ•˜๋‚˜์˜ TCP ์—ฐ๊ฒฐ๋งŒ ์ˆ ๋น„ํ•˜๊ณ , ์†์‹ค/ํ˜ผ์žก์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค TCP ํ”„๋กœํ† ์ฝœ์ด TCP ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๊ธฐ ๋•Œ๋ฌธ!

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

6.5 TTFB(Time To First Byte)

6.6 ์„œ๋“œํŒŒํ‹ฐ

6.7 HTTP/2 ์•ˆํ‹ฐํŒจํ„ด

h1 ์„ฑ๋Šฅ ํŒจํ„ด ์ค‘ ์ผ๋ถ€๋Š” h2์—์„œ๋Š” ์•ˆํ‹ฐํŒจํ„ด์ด ๋จ

6.7.1 ๋„๋ฉ”์ธ ์ƒค๋”ฉ

์ƒค๋”ฉ์€ ํ˜ธ์ŠคํŠธ์ด๋ฆ„๋งˆ๋‹ค ๋‹ค์ˆ˜์˜ ์—ฐ๊ฒฐ(์ตœ๋Œ€ 6๊ฐœ)์„ ์—ด์–ด ์ฝ˜ํ…์ธ ๋ฅผ ๋™์‹œ์— ๋‚ด๋ ค๋ฐ›๊ณ 
h1์˜ ์ˆœ์ฐจ์  ํŠน์„ฑ์„ ๊ทน๋ณตํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•จ
=> h2์—์„œ๋Š” ์—ฐ๊ฒฐ ๋ณ‘ํ•ฉ๊ณผ ์ƒค๋”ฉ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค

6.7.2 ์ธ๋ผ์ด๋‹

์ธ๋ผ์ด๋‹(inlining)์€ ์™ธ๋ถ€ ์ž์›์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐ ํ•„์š”ํ•œ ์ถ”๊ฐ€์ ์ธ ์—ฐ๊ฒฐ๊ณผ ์™•๋ณต์„ ์ค„์ด๋ ค๋Š” ๋ชฉ์ ์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, CSS, ์ด๋ฏธ์ง€๋ฅผ HTML ํŽ˜์ด์ง€ ์•ˆ์— ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
=> ๋Œ€๊ฒŒ h2์—์„œ๋Š” ์ธ๋ผ์ด๋‹์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ ๋•Œ๋กœ๋Š” ๋„์›€์ด ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ

6.7.3 ๊ฒฐํ•ฉ (concatenating)

๊ฒฐํ•ฉ์ด๋ž€ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ํŒŒ์ผ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ํฐ ํŒŒ์ผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์„ ๋งํ•จ

6.7.4 ์ฟ ํ‚ค ์—†๋Š” ๋„๋ฉ”์ธ

์ฟ ๊ธฐ๊ฐ€ ์—†๋Š” ๋„๋ฉ”์ธ์„ ์œ„ํ•ด์„œ๋Š” ๋ณ„๋„์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ๋” ๋งŽ์€ ์—ฐ๊ฒฐ์„ ์—ด์–ด์•ผ ํ•จ์„ ์˜๋ฏธ.
=> h2์—์„œ๋Š” ํ—ค๋”์— ์ฟ ๊ธฐ๊ฐ€ ์žˆ์–ด๋„ ์••์ถ•์ด ๊ฐ€๋Šฅํ•˜๋‹ˆ! ์˜คํ‚ค๋„ํ‚ค!

6.7.5 ์Šคํ”„๋ผ์ดํŒ…

์Šคํ”„๋ผ์ดํŒ…์€ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๊ฐœ์ฒด๋“ค์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์š”์ฒญํ•˜๋Š” ์ผ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋ฒ•.
=> h2์—์„œ๋Š” ๋‹ค์ค‘ํ™”์™€ ํ—ค๋” ์••์ถ•์„ ํ†ตํ•ด ๋งŽ์€ ์š”์ฒญ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ”„๋ผ์ดํŒ…์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Œ! ํ•˜์ง€๋งŒ ์Šคํ”„๋ผ์ดํŒ…์ด ๋„์›€์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ์„ ์ˆ˜ ์žˆ์Œ

6.7.6 ํ”„๋ฆฌํŒจ์น˜ (prefetch)

ํ”„๋ฆฌํŒจ์น˜๋ž€ ์บ์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ฒด๋ฅผ ๊ฐ€๋Šฅํ•œ ์‹œ์ ์— ๋ฏธ๋ฆฌ ๋‚ด๋ ค๋ฐ›์•„ ๋‘๋„๋ก ๋ธŒ๋ผ์šฐ์ €์— ์•Œ๋ ค์ฃผ๋Š” ์›น์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•.
=> ์„œ๋ฒ„ํ‘ธ์‹œ๊ฐ€ ๋„์ž…๋œ h2์—์„œ๋Š” ๋ณ„ ์“ธ๋ชจ๊ฐ€ ์—†์Œ
ํ”„๋ฆฌํŒจ์น˜๊ฐ€ ์„œ๋ฒ„ํ‘ธ์‹œ๋ณด๋‹ค ๋‚˜์€ ์ ์€ ๊ฐœ์ฒด๊ฐ€ ์บ์‹œ์— ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ์— ๊ฐœ์ฒด๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„๊ณผ ๋Œ€์—ญํญ์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ !
h2์˜ ์„œ๋ฒ„ ํ‘ธ์‹œ๊ฐ€ ํ”„๋ฆฌํŒจ์น˜๋ฅผ ๋Œ€์ฒดํ•œ๋‹ค๊ธฐ๋ณด๋‹ค๋Š” ์„œ๋กœ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์„ ๋ณด์™„ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค!

6.8 ์‹ค์„ธ๊ณ„์˜ ์„ฑ๋Šฅ

6.8.1 ์„ฑ๋Šฅ ์ธก์ • ๋ฐฉ๋ฒ•

  • ์กฐ๊ฑด:
    • ํ…Œ์ŠคํŠธ ์œ„์น˜
    • ๋ธŒ๋ผ์šฐ์ €
    • ์—ฐ๊ฒฐ
    • ํ…Œ์ŠคํŠธ ์‹คํ–‰

6.8.2 ์—ฐ๊ตฌ 1: www.facebook.com

6.8.3 ์—ฐ๊ตฌ 2: www.yahoo.com

6.9 ์š”์•ฝ

์ค‘์š”ํ•œ ๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ํ•ด์„œ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋˜๊ณ 
์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋˜์ง€ ์•Š๋Š”์ง€ ๊ทธ ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ!
์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋ ฅ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฝ”๋”ฉํ•˜๊ณ , ํ…Œ์ŠคํŠธํ•˜๊ณ , ๋ถ„์„ํ•˜๊ณ , ์ตœ์ ํ™”ํ•˜๋Š” ๊ณผ์ •์ด ๋ฐ˜๋ณต๋  ๊ฒƒ์ž„!

Chapter 7. HTTP/2 ๊ตฌํ˜„

7.1 ๋ฐ์Šคํฌํ†ฑ ์›น ๋ธŒ๋ผ์šฐ์ €

7.1.1 ํ•„์ˆ˜์ ์ธ TLS

7.1.2 HTTP/2 ๋น„ํ™œ์„ฑํ™”

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

7.1.4 ์—ฐ๊ฒฐ ๋ณ‘ํ•ฉ

7.1.5 ๋””๋ฒ„๊น… ๋„๊ตฌ

7.1.6 ๋ฒ ํƒ€ ์ฑ„๋„

7.2 ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €

7.3 ๋ชจ๋ฐ”์ผ ์•ฑ ์ง€์›

7.4 ์„œ๋ฒ„, ํ”„๋ฝ์‹œ, ์บ์‹œ

7.5 ์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ

7.6 ์š”์•ฝ

Chapter 8. HTTP/2 ๋””๋ฒ„๊น…ํ•˜๊ธฐ

8.1 ์›น ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ

8.1.1 ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ

  • net-internals : ํ•˜์ง€๋งŒ http2 ์ตœ์‹ ๋ฒ„์ „์—์„œ๋Š” ์—†....ใ… ใ… 
  • ์„œ๋ฒ„ ํ‘ธ์‹œ ์‹œ๊ฐํ™”
  • ํฌ๋กฌ ์„ธ์…˜ํ‚ค ๋กœ๊น…

8.1.2 ํŒŒ์ด์–ดํญ์Šค ๊ฐœ๋ฐœ์ž ๋„๊ตฌ

  • HTTP ์„ธ์…˜ ๋กœ๊น…
  • ํŒŒ์ด์–ดํญ์Šค ์„ธ์…˜ํ‚ค ๋กœ๊น…

8.1.3 iOS์—์„œ ์ฐฐ์Šค ํ”„๋ฝ์‹œ๋ฅผ ์‚ฌ์šฉํ•ด h2 ๋””๋ฒ„๊น…ํ•˜๊ธฐ

  • iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ
  • iOS ๋””๋ฐ”์ด์Šค

8.1.4 ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ h2 ๋””๋ฒ„๊น…ํ•˜๊ธฐ

8.2 ์›นํŽ˜์ด์ง€ ํ…Œ์ŠคํŠธ

8.3 OpenSSL

8.3.1 OpenSSL ๋ช…๋ น์–ด

8.4 nghttp2

8.4.1 nghttp ์‚ฌ์šฉํ•˜๊ธฐ

8.5 curl

8.5.1 curl ์‚ฌ์šฉํ•˜๊ธฐ

  • ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ๊ฐ„ ์ธก์ •ํ•˜๊ธฐ

8.6 h2i

8.7 ์™€์ด์–ด์ƒคํฌ

8.8 ์š”์•ฝ

Chapter 9. ๋‹ค์Œ์€ ๋ฌด์—‡์ธ๊ฐ€?

๊ธ‰์†ํ•œ ๋ณ€ํ™”์˜ ๊ทผ์›๊ณผ ๊ทธ ์ด๋ฉด์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ ค๋ฉด,
HTTP์˜ ํ† ๋Œ€๊ฐ€ ๋˜๋Š” stack์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹์„ ๊ฐ–๋Š” ๊ฒƒ์ด ์ค‘์š”!

9.1 TCP์ธ๊ฐ€, UDP์ธ๊ฐ€

  • ํ˜„๋Œ€์˜ OS ๋Œ€๋ถ€๋ถ„์€ TCP ์Šคํƒ์ด ์ปค๋„์— ํฌํ•จ๋˜์–ด ์žˆ์Œ
  • UDP๋กœ ์“ฐ๋ ค๋Š” ์ด์œ ๋Š” ์ œ์–ด๊ถŒ์„ ์œ„ํ•จ!
  • "TCP์ธ๊ฐ€, UDP์ธ๊ฐ€"๊ฐ€ ์•„๋‹ˆ๋ผ, "์ปค๋„ ๊ณต๊ฐ„์ธ๊ฐ€, ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์ธ๊ฐ€"์ž„!

9.2 QUIC (Quic UDP Internet Connection)

  • HTTP/2์˜ ์•ฝ์ ์€ TCP ๊ตฌํ˜„์— ์˜์กด์ ์ด๋ผ๋Š” ๊ฒƒ
  • QUIC๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ์ƒ์ฃผํ•˜๋Š” UDP ๊ธฐ๋ฐ˜์˜ ์ „์†ก ํ”„๋กœํ† ์ฝœ ์œ„ํ—ค HTTP/2๋ฅผ ๋‘๋ฉฐ, ํ”„๋กœํ† ์ฝœ๋กœ์„œ์˜ ์™„์ „ํ•œ ๋ฉด๋ชจ๋ฅผ ๊ฐ–์ถ”๊ธฐ ์œ„ํ•ด ์•”ํ˜ธ์™€ ์ธ์ฆ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•จ!
  • QUIC์˜ ํŠน์ง•
    • ๋น„์ˆœ์ฐจ ํŒจํ‚ท ์ฒ˜๋ฆฌ
    • ์œ ์—ฐํ•œ ํ˜ผ์žก ์ œ์–ด
    • ๋‚ฎ์€ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ์˜ค๋ฒ„ํ—ค๋“œ
    • ์ „์†ก ์ •๋ณด์˜ ์ธ์ฆ => QUIC๋Š” ํŒจํ‚ทํ—ค๋” ์ธ์ฆ
    • ์—ฐ๊ฒฐ ์ด๋™ => QUIC๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋™ํ•  ๋•Œ๋„ ์—ฐ๊ฒฐ์„ ๋ณด์กดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•จ

9.3 TLS 1.3

  • TLS (Transport Layer Security)
  • ์•”ํ˜ธํ™” ๋ฐ ์ธ์ฆ ๊ณ„์ธต

9.4 HTTP/3

9.5 ์š”์•ฝ

๋Š๋‚€์ 

  • "TCP์ธ๊ฐ€, UDP์ธ๊ฐ€"๊ฐ€ ์•„๋‹ˆ๋ผ, "์ปค๋„ ๊ณต๊ฐ„์ธ๊ฐ€, ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์ธ๊ฐ€"์ž„!
  • UDP๋Š” ๋‹จ์ˆœํžˆ tcp์ฒ˜๋Ÿผ 3-way handshake ๋ฐ ์ „์†ก์™„๋ฃŒ ์—ฌ๋ถ€๋“ฑ์„ ์ฒดํฌํ•˜์ง€ ์•Š์•„์„œ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค๊ณ ๋งŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ! tcp๋Š” ์ปค๋„์— ํฌํ•จ๋˜์–ด ์žˆ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์ปค์Šคํ…€ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— udp๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ด€์ ์„ ์ƒ๊ฐ์ง€๋ชปํ–ˆ๋‹ค! ์‹ ์„ ํ•˜๋‹ค!

Reference

profile
#์˜์‹์˜ํ๋ฆ„ #์ˆœ๊ฐ„์ˆœ๊ฐ„ #์ƒ๊ฐ์˜์Šค๋ƒ…์ƒท

0๊ฐœ์˜ ๋Œ“๊ธ€