์ฑ
์ ๋ณด
- 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 ์ฐ๊ฒฐ์ ์ต์ ํํ๋ผ
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 ์น์ฌ์ดํธ์์๋ ๋ ์ด์ ์ ์ฉ๋์ง ์๋ ์ธ๊ธฐ ์๋ ๋ฐฉ๋ฒ๋ค:
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