10. HTTP/2.0

์ด ์ฑ…์€ 8๋ฒˆ์งธ ์ดˆ์•ˆ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Œ

๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

http/1.1 : ๊ตฌํ˜„์˜ ๋‹จ์ˆœ์„ฑ๊ณผ ์ ‘๊ทผ์„ฑ ์œ„์ฃผ

๋ฌธ์ œ : ํšŒ์ „ ์ง€์—ฐ

์‘๋‹ต์„ ๋ฐ›์•„์•ผ๋งŒ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ

(์šฐํšŒ์ ์ธ) ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ๋ณ‘๋ ฌ ์ปค๋„ฅ์…˜

  • ํŒŒ์ดํ”„๋ผ์ธ ์ปค๋„ฅ์…˜

๋Œ€์•ˆ : ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ

WAKA

Microsoft S+M (Speed + Mobility)

SPDY (2.0์˜ ๊ธฐ๋ฐ˜)

SPDY์˜ ํŠน์ง•

  • ํ—ค๋” ์••์ถ• โ†’ ๋Œ€์—ญํญ ์ ˆ์•ฝ

  • 1 TCP ๋‹ค์ค‘ ์ปค๋„ฅ์…˜ (ํšŒ์ „์ง€์—ฐ ์ค„์ž„)

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

SPDY์— ๊ธฐ๋ฐ˜ํ•œ HTTP 2.0

ํ”„๋ ˆ์ž„

๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ด๋Š” ์ˆ˜๋‹จ.

์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์ด ๋‹ด๊ฒจ ์žˆ์Œ.

ํ”„๋ ˆ์ž„์˜ ์ข…๋ฅ˜

  • ๋ฐ์ดํ„ฐ (DATA)

  • ํ—ค๋” (HEADERS)

  • ์šฐ์„ ์ˆœ์œ„ (PRIORITY)

  • ์ŠคํŠธ๋ฆผ ๋ฆฌ์…‹ (RST_STREAM)

  • SETTINGS, PUSH_PROMISE, ... ๋“ฑ ์ด 10๊ฐ€์ง€

์ŠคํŠธ๋ฆผ

ํ•œ ์Œ์˜ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‹จ์œ„.

  • ํ”„๋ ˆ์ž„๋“ค์˜ ๋…๋ฆฝ๋œ ์–‘๋ฐฉํ–ฅ ์‹œํ€ธ์Šค.

  • ํ•˜๋‚˜์˜ ์ปค๋„ฅ์…˜์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ TCP ์ปค๋„ฅ์…˜์„ ๋งŒ๋“œ๋Š” ํšจ๊ณผ.

  • ์—ฌ๋Ÿฌ ์š”์ฒญ์ด ๋™์‹œ์— ๋ณด๋‚ด์งˆ ์ˆ˜ ์žˆ๊ณ  ์šฐ์„ ์ˆœ์œ„๋„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

  • ์—ฌ๋Ÿฌ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ธ”๋ก๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ๋ฆ„์ œ์–ด ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉ.

์ŠคํŠธ๋ฆผ ์‹๋ณ„์ž

ํ•œ TCP ์ปค๋„ฅ์…˜์—์„œ ์ŠคํŠธ๋ฆผ์„ ์‹๋ณ„ํ•˜๋Š” 31๋น„ํŠธ ํ•„๋“œ

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งŒ๋“ค๋ฉด : ํ™€์ˆ˜

  • ์„œ๋ฒ„๊ฐ€ ๋งŒ๋“ค๋ฉด : ์ง์ˆ˜

  • ์ŠคํŠธ๋ฆผ ์‹๋ณ„์ž๋Š” ์ ์  ์ฆ๊ฐ€ํ•ด์•ผ๋งŒ ํ•œ๋‹ค.

    • ๊ทœ์น™์„ ์–ด๊ธฐ๋ฉด PROTOCOL_ERROR (์ปค๋„ฅ์…˜ ์—๋Ÿฌ)

  • ์‹๋ณ„์ž๋Š” ์„œ๋ฒ„์™€ ํด๋ผ๊ฐ€ ํ˜‘์ƒ ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ๋งŒ๋“ฆ

  • ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•œ ์‹๋ณ„์ž ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€

  • ์‹๋ณ„์ž๊ฐ€ ๊ณ ๊ฐˆ๋˜๋ฉด ๋‹ค์‹œ ์ปค๋„ฅ์…˜ ๋งบ์Œ

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

HPACK ๋ช…์„ธ์— ๋”ฐ๋ผ ์••์ถ•ํ•œ ๋’ค ์ฒญํฌ๋กœ ์ „์†ก

๋ฐ›๋Š” ์ชฝ์—์„œ๋Š” ํ•ญ์ƒ ์••์ถ•์„ ํ’€์–ด์•ผ๋งŒ ํ•œ๋‹ค.

์••์ถ• ์ฝ˜ํ…์ŠคํŠธ

HPACK์€ ์••์ถ•์„ ํ•˜๊ณ , ํ•ด์ œํ•  ๋•Œ ์••์ถ• ์ฝ˜ํ…์ŠคํŠธ๋ผ๋Š” ๊ฒƒ์ด ๋ณ€๊ฒฝ ๋จ.

  • ๊ฐ ํ”ผ์–ด์—์„œ ์••์ถ•์„ ํ•ด์ œํ•œ๋‹ค๊ณ  ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Œ.

  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ—ค๋”๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๋ฒ„๋ฆฐ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋ฌด์กฐ๊ฑด ์••์ถ•์„ ํ•ด์ œํ•ด์•ผ ํ•จ.

  • ๊ทธ๋Ÿด ์ˆ˜ ์—†๋‹ค๋ฉด COMPRESSION_ERROR (์ปค๋„ฅ์…˜ ์—๋Ÿฌ, ์ข…๋ฃŒ)

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

์–ด๋–ค HTML ํŒŒ์ผ์„ ์š”์ฒญํ•  ๋•Œ ์„œ๋ฒ„์—์„œ ์ด ํŒŒ์ผ์ด ๋งํฌํ•˜๊ณ  ์žˆ๋Š” CSS, JS, ์ด๋ฏธ์ง€ ๋“ฑ์„ ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญํ•˜๊ธฐ ์ „์— ๊ฐ™์ด ๋ฐ˜ํ™˜ ํ•ด์ค„ ์ˆ˜ ์žˆ์Œ.

PUSH_PROMISE

์„œ๋ฒ„ ํ‘ธ์‹œ๋ฅผ ์›ํ•˜๊ณ ์ž ํ•  ๋•Œ ํด๋ผ์˜ ์› ์š”์ฒญ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ŠคํŠธ๋ฆผ์— ์ „์†กํ•˜๋Š” ํ”„๋ ˆ์ž„

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ํ‘ธ์‹œํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ๋ณด๋‚ด์•ผ ํ•จ

  • ์ด ํ”„๋ ˆ์ž„์„ ๋ฐ›์œผ๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์„ ์˜ˆ์•ฝ๋จ ์ƒํƒœ๋กœ ๋งŒ๋“ฆ.

  • ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์ด ๋‹ซํžˆ๊ธฐ ์ „๊นŒ์ง€ ์„œ๋ฒ„ํ‘ธ์‹œ ๋Œ€์ƒ์ธ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๋ฉด ์•ˆ ๋จ.

RST_STREAM

PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ํ‘ธ์‹œ๋ฅผ ์›์น˜ ์•Š์„ ๋•Œ ๋ณด๋‚ด๋Š” ํ”„๋ ˆ์ž„

  • ๋ฐ”๋กœ PUSH_PROMISE ํ”„๋ ˆ์ž„์œผ๋กœ ๋ถ€ํ„ฐ ์˜ˆ์•ฝ๋œ ์ŠคํŠธ๋ฆผ์ด ๋‹ซํžˆ๊ฒŒ ๋จ.

์ฃผ์˜์ 

  • ์ค‘๊ฐ„์˜ ํ”„๋ก์‹œ๊ฐ€ ์„œ๋ฒ„ ํ‘ธ์‹œ์˜ ์˜๋„์™€๋Š” ๋ณ„๊ฐœ๋กœ ์›์น˜ ์•Š๋Š” ์ „์†ก / ์›์น˜ ์•Š๋Š” ๋ฏธ์ „์†ก์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ์Œ

  • ์•ˆ์ „ํ•˜๊ณ  ์บ์‹œ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ณธ๋ฌธ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์š”์ฒญ์— ๋Œ€ํ•ด์„œ๋งŒ ํ‘ธ์‹œ ๊ฐ€๋Šฅ

  • ํ‘ธ์‹œํ•  ๋ฆฌ์†Œ์Šค๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๋ณด๋‚ธ ๊ฒƒ๊ณผ ์—ฐ๊ด€์ด ์žˆ์–ด์•ผ๋งŒ ํ•จ

  • ํด๋ผ๋Š” ์„œ๋ฒ„๊ฐ€ ํ‘ธ์‹œํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ CORS์— ๋”ฐ๋ผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•จ. = ๋‹ค๋ฅธ origin ์—์„œ ์˜จ ๋ฆฌ์†Œ์Šค๋Š” ๊ฑฐ๋ถ€ํ•ด์•ผ ํ•จ.

  • ์„œ๋ฒ„ ํ‘ธ์‹œ๋ฅผ ๋„๊ณ  ์‹ถ๋‹ค๋ฉด SETTING_ENABLE_PUSH = 0 ์œผ๋กœ ์„ค์ •

์•Œ๋ ค์ง„ ๋ณด์•ˆ ์ด์Šˆ

์ค‘๊ฐœ์ž ์บก์Šํ™” ๊ณต๊ฒฉ

Intermediary Encapsulation Attacks

2.0 ๋ฉ”์‹œ์ง€๋ฅผ ํ”„๋ก์‹œ๊ฐ€ 1.1 ๋ฉ”์‹œ์ง€๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์˜๋ฏธ ๋ณ€์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

  • 2.0 ๋ฉ”์‹œ์ง€๋Š” ํ—ค๋” ํ•„๋“œ์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ธ์ฝ”๋”ฉ

    • ์ด๋กœ์จ ์–ด๋–ค ๋ฌธ์ž์—ด์ด๋“  ํ—ค๋” ํ•„๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค

    • ์ •์ƒ์ ์ธ 2.0 ์š”์ฒญ/์‘๋‹ต์„ ๋ถˆ๋ฒ•์ ์ธ 1.1 ๋ฉ”์‹œ์ง€๋กœ ๋ฒˆ์—ญ๋˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ

    • ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ˜๋Œ€๋กœ 1.1๋ฉ”์‹œ์ง€๋Š” ์ด๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ถˆ๊ฐ€๋Šฅ

๊ธด ์ปค๋„ฅ์…˜ ์œ ์ง€ = ๊ฐœ์ธ์ •๋ณด ๋ˆ„์ถœ ์šฐ๋ ค

์ผ๋ฐ˜์ ์œผ๋กœ, ํ•œ ์ปค๋„ฅ์…˜์ด ์ŠคํŠธ๋ฆผ ์‹๋ณ„์ž๊ฐ€ ๊ณ ๊ฐˆ๋˜๊ฑฐ๋‚˜ ํ•œ ์ชฝ์—์„œ ๊ฐ•์ œ๋กœ ๋Š๊ธฐ ์ „์—๋Š” ๊ณ„์† ์œ ์ง€๋จ.

RTT ๊ฐ€ ์ค„์–ด๋“œ๋Š” ๋Œ€์‹  ์งง์€ ์ปค๋„ฅ์…˜์ด ์•„๋‹Œ ๊ฒฝ์šฐ (๊ธธ๊ฒŒ ๊ณ„์† ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ) ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

  • ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ, ์ด์ „ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ ์•Œ์•„๋‚ผ ์ˆ˜๋„ ์žˆ์Œ.

Last updated