Skip to content

Latest commit

ย 

History

History
393 lines (220 loc) ยท 24.6 KB

File metadata and controls

393 lines (220 loc) ยท 24.6 KB

๋ชฉ์ฐจ



HTTP ์ง„ํ™”๊ณผ์ • ์ดํ•ดํ•˜๊ธฐ ๋‘๋ฒˆ์งธ - HTTP/2.0

์ด์ „ ๊ธ€ - HTTP/0.9 ~ HTTP/1.1์—์„  HTTP ์ดˆ๊ธฐ๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€๋„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š” HTTP/1.1๊นŒ์ง€์˜ ๋ฐœ์ „ ๊ณผ์ •์„ ์‚ดํŽด๋ณด์•˜๋‹ค.

์ด๋ฒˆ ๊ธ€์€ HTTP/1.1์—์„œ HTTP/2.0์œผ๋กœ ๋ฐœ์ „ํ•˜๊ฒŒ๋˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด HTTP/2.0๋ฅผ ์ •๋ฆฌํ•ด๋ณด๊ณ ์žํ•œ๋‹ค.


์—ฌ์ „ํžˆ HTTP/1.1์€ TCP๋ฅผ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค

์กฐ๊ธˆ ์ž๊ทน์ ์ผ ์ˆ˜๋„ ์žˆ๋Š” ๊ธ€๊ท€์ด๊ธดํ•˜์ง€๋งŒ, HTTP/1.1์—์„œ HTTP/2.0์œผ๋กœ ๋ฐœ์ „ํ•˜๊ฒŒ๋œ ๊ณ„๊ธฐ๋Š” ๋ฐ”๋กœ HTTP/1.1์ด TCP Connection์„ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.


๐Ÿ’โ€โ™‚๏ธ ์ž์ฒด์ ์ธ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ๋ถˆ๊ฐ€

์ด์ „ ๊ธ€์—์„œ๋„ ์‚ดํŽด๋ณด์•˜๋“ฏ์ด, HTTP/1.1์—์„œ์˜ ์„œ๋ฒ„๋Š” ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ (FIFO) ์ฒ˜๋ฆฌํ›„ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค.

์ด๋กœ์ธํ•ด TCP Connection์ด ์žฆ์€ idle ์ƒํƒœ๊ฐ€๋จ์œผ๋กœ์จ Connection์„ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜์ง€๋ชปํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์ด Pipielining์ด๋ผ๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ ์ŠคํŽ™์ด ์กด์žฌํ–ˆ์Œ์—๋„, HTTP/1.1์˜ FIFO ํ˜•์‹์˜ ์ฒ˜๋ฆฌํ•œ๊ณ„๋กœ์ธํ•ด HOLB (Head Of Line Blocking)์ด ๋ฐœ์ƒํ•˜๋Š”๋“ฑ ๊ฒฐ๊ตญ Pipelining์€ ๋น›์„ ๋ณด์ง€๋ชปํ•˜๊ณ  ์‚ฌ์šฉ๋˜์ง€์•Š๊ฒŒ๋˜์—ˆ๋‹ค.

์กฐ๊ธˆ ์ž์„ธํžˆ ๋งํ•˜์ž๋ฉด.. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋Š” ์ œ๊ฐ๊ฐ ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ฒซ๋ฒˆ์งธ๋กœ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์šฉ๋Ÿ‰์ด ํฐ ๋ฐ์ดํ„ฐ๋ผ๋ฉด, ๋‘๋ฒˆ์งธ, ์„ธ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋ฌด๋ฆฌ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌ๋˜์–ด๋„ HTTP/1.1์˜ ์šฐ์„ ์ˆœ์œ„ ์›์น™์— ๋”ฐ๋ผ ์ฒซ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์˜ ์‘๋‹ต ์†๋„๊ฐ€ ๋Šฆ์–ด์ง€๋ฉด ํ›„ ์ˆœ์œ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์‘๋‹ต์†๋„๋„ ๋ฉ๋‹ฌ์•„ ๋Šฆ์–ด์ง€๋Š” ๊ฒƒ์ด๋‹ค.

๋ฌผ๋ก  ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋Ÿฌํ•œ HTTP/1.1์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ ์ž ๋ฌผ๋ฆฌ์ ์ธ TCP ์—ฐ๊ฒฐ์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ์ž„์‹œ๋ฐฉํŽธ์— ๋ถˆ๊ฐ€ํ•˜๋‹ค. ๊ทธ ์ด์œ ๋Š” ์•„๋ž˜ TCP ๋‚ด์šฉ์„ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.


๐Ÿ’โ€โ™‚๏ธ TCP ๋น„ํšจ์œจ์  ์‚ฌ์šฉ

TCP๋Š” ๋ณด์ˆ˜์ ์ธ ํ™˜๊ฒฝ์„ ๊ฐ€์ •ํ•˜๊ณ  ๋„คํŠธ์›Œํฌ์ƒ์˜ ๋‹ค์–‘ํ•œ ํŠธ๋ž˜ํ”ฝ ์šฉ๋„๋กœ ๊ณตํ‰ํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.

์ด๊ฒƒ์ด TCP๊ฐ€ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ์˜€์œผ๋ฉฐ, TCP๊ฐ€ ์†๋„๋Š” ์กฐ๊ธˆ ๋А๋ ธ์–ด๋„ ์‹ ๋ขฐ์„ฑ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒํ•˜๋Š”๋ฐ์žˆ์–ด์„œ ํฐ ์˜ํ–ฅ์„ ๋ผ์นœ ์š”์†Œ์ด๊ธฐ๋„ํ•˜๋‹ค.

์‹ ๋ขฐ์„ฑ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํ†ต์‹ ์— ์žˆ์–ด์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์€ TCP์˜ ํ˜ผ์žก ์ œ์–ด (Congestion Control)๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ์—์„  ํ•œ ์—”๋“œํฌ์ธํŠธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฐ๋ฆด ๊ฒฝ์šฐ, ์ž์‹ ์—๊ฒŒ ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ฒŒ๋˜๋Š”๋ฐ, ์ด๋•Œ ๋‹ค๋ฅธ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋˜ ๋‹ค์‹œ ์žฌ์ „์†กํ•˜๊ฒŒ๋˜์–ด ๊ฒฐ๊ตญ ํ˜ผ์žก๋งŒ ๊ฐ€์ค‘์‹œ์ผœ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋‚˜ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐœ์ƒ์‹œํ‚ค๊ฒŒ๋œ๋‹ค.

ํ˜ผ์žก ์ œ์–ด๋ž€ ์ด๋Ÿฌํ•œ ์ •๋ณด ์†Œํ†ต๋Ÿ‰์ด ๊ณผ๋‹คํ•œ ๊ฒƒ์„ ๊ฐ์ง€ํ•˜์—ฌ ํŒจํ‚ท์„ ์ ๊ฒŒ ๋ณด๋‚ด๋ฉด์„œ ์ ์ ˆํ•œ ์ „์†ก ํŒจํ‚ท ์‚ฌ์ด์ฆˆ๋ฅผ ์ฐพ์•„ ํ˜ผ์žก ๋ถ•๊ดด ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ ๋งํ•œ๋‹ค.

์ด๋•Œ ํ•ต์‹ฌ์€ ํ˜ผ์žก ์œˆ๋„์šฐ (Congestion Window)๋ผ๋Š” ๊ฐœ๋…์ด๋ฉฐ, ์ด๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ํ™•์ธ(ACK)ํ•˜๊ธฐ ์ „๊นŒ์ง€ ์†ก์‹ ์ž๊ฐ€ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” TCP ํŒจํ‚ท์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜ผ์žก ์œˆ๋„์šฐ๊ฐ€ 1๋กœ ์„ค์ •๋˜์–ด์žˆ๋‹ค๋ฉด, ์†ก์‹ ์ž๋Š” ๋‹จ ํ•˜๋‚˜์˜ ํŒจํ‚ท๋งŒ ์ „์†กํ•˜๋ฉฐ, ๊ทธ ํŒจํ‚ท์— ๋Œ€ํ•œ ์ˆ˜์‹ ์ž์˜ ํ™•์ธ์„ ๋ฐ›์•„์•ผ๋งŒ ๋˜ ๋‹ค๋ฅธ ํŒจํ‚ท์„ ์ „์†กํ•  ๊ฒƒ์ด๋‹ค.

๋ฌธ์ œ๋Š” TCP๊ฐ€ ํ˜„์žฌ Connection์— ์•Œ๋งž๋Š” ํ˜ผ์žก ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋А๋ฆฐ ์‹œ์ž‘ (Slow Start)๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด TCP์˜ ํ˜ผ์žก์„ ์ œ์–ดํ•˜๊ณ  ๊ณตํ‰ํ•˜๊ฒŒ ํ†ต์‹ ํ•˜๊ธฐ์œ„ํ•ด ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ๋†’์˜€๋‹ค ์ค„์˜€๋‹คํ•œ๋‹ค.


์ถœ์ฒ˜: http://www.sfu.ca/~ljilja/cnl/presentations/wan/wireless_TCP/sld005.htm

์ฆ‰, ์ตœ์ ์˜ ํ˜ผ์žก ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ์–ป๋Š” ๋ฐ TCP Connection์ƒ ๋ช‡ ๋ฒˆ์˜ ์™•๋ณต์ด ํ•„์š”ํ•˜๋ฉฐ, ์ด๋Š” ๊ฒฐ๊ตญ ์„ฑ๋Šฅ์ ์ธ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ˜ผ์žก ์ œ์–ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ˜ผ์žก์ด ๋ฐœ์ƒํ•˜๋ฉด ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ฑฐ๋‚˜, ํ˜น์€ ์ฆ๊ฐ€์‹œํ‚ค์ง€ ์•Š์œผ๋ฉฐ ํ˜ผ์žก์„ ํšŒํ”ผํ•œ๋‹ค๋ผ๋Š” ๊ธฐ์กฐ๋กœ ๊ตฌํ˜„๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ์กฐ๊ธˆ์ด๋ผ๋„ ํ˜ผ์žก์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์œ„ ๊ทธ๋ฆผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด, ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ ๋‹ค์‹œ 1๋กœ ๋‚ด๋ ค ๋‹ค์‹œ Slow Start๋ฅผ ์‹œํ–‰ํ•œ๋‹ค.

๋ฌผ๋ก  HTTP/2.0๋„ TCP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ์— ์œ„ ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•œ๋‹ค.

๋‹ค๋งŒ, HTTP/2.0์€ HTTP/1.1๊ณผ ๋‹ค๋ฅด๊ฒŒ TCP Connection ํ•˜๋‚˜๋งŒ์„ ๊ฐ€์ง€๊ณ  ๋ณ‘๋ ฌ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ฆ‰, ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ํ˜ผ์žก ์ œ์–ด์˜ ์˜ํ–ฅ์„ ํ›จ์”ฌ ๋” ์ ๊ฒŒ ๋ฐ›์Œ์œผ๋กœ์จ ํ†ต์‹  ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๋‹ค.

์ด์™ธ์—๋„ TCP ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•˜๋Š” HTTP์˜ ํŠน์„ฑ์ƒ Handshake๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•จ์œผ๋กœ์จ ๋ถˆํ•„์š”ํ•œ RTT (Round Trip Time) ์ฆ๊ฐ€๋กœ ์ธํ•ด ๋„คํŠธ์›Œํฌ ์ง€์—ฐ์„ ์ดˆ๋ž˜ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ €ํ•˜ํ•˜๊ฒŒํ•œ๋‹ค.


๐Ÿ’โ€โ™‚๏ธ ๋น„๋Œ€ํ•œ ๋ฉ”์‹œ์ง€ ํ—ค๋”

HTTP/1.1์€ ์‘๋‹ต์˜ ๋ฐ”๋”” ํฌ๊ธฐ๋Œ€๋น„ ํ—ค๋” ํฌ๊ธฐ ๋น„์œจ์€ ๋งค์šฐ ๋‚ฎ์ง€๋งŒ, ์š”์ฒญ์˜ ๊ฒฝ์šฐ ๋ฐ˜๋Œ€๋กœ ํ—ค๋”๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ๋ฐ”๋””๋ฅผ ์••์ถ•ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์กด์žฌํ•˜์ง€๋งŒ, ์‚ฌ์‹ค์ƒ ํ—ค๋”๋ฅผ ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

HTTP ์•„์นด์ด๋ธŒ์— ๋”ฐ๋ฅด๋ฉด, 2016๋…„ ๋ง, ์š”์ฒญ ํ—ค๋”์˜ ํ‰๊ท  ํฌ๊ธฐ๋Š” ์•ฝ 460bytes์ด๋ฉฐ, 140๊ฐœ์˜ ๊ฐœ์ฒด๊ฐ€์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ์›น ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ, ์š”์ฒญ ํ—ค๋”์˜ ์ „์ฒด ํฌ๊ธฐ๊ฐ€ ์•ฝ 63kb๊ฐ€ ๋œ๋‹ค๊ณ ํ•œ๋‹ค.

ํฐ ๋ฌธ์ œ๊ฐ€ ์—†์–ด๋ณด์ด์ง€๋งŒ TCP ํ˜ผ์žก ์œˆ๋„์šฐ ์ œ์–ด ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณด๋ฉด, TCP๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์„ ๋ณด๋‚ด๋Š”๋ฐ๋งŒ ํ˜ผ์žก ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ํฌ์ง€ ์•Š๊ธฐ์— ์ž์นซ 3~4๋ฒˆ ํ˜น์€ ๊ทธ ์ด์ƒ์˜ ์™•๋ณต์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฒฐ๊ตญ ์ด๊ฒƒ ๋˜ํ•œ ์ „์†กํ•ด์•ผํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ฆ๊ฐ€๋กœ์ธํ•ด ์„ฑ๋Šฅ์— ์•…์˜ํ–ฅ์„ ๋ผ์นœ๋‹ค.


๐Ÿ’โ€โ™‚๏ธ ์šฐ์„ ์ˆœ์œ„ ์„ค์ • ๋ถˆ๊ฐ€

์›นํŽ˜์ด์ง€์—์„œ ์–ด๋–ค ๊ฐœ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐœ์ฒด๋ณด๋‹ค ํ›จ์”ฌ ์ค‘์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌผ๋ก  ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ๊ฐœ์ฒด๋ฅผ ๋จผ์ € ๊ฐ€์ ธ์˜ค๋Š”๊ฒŒ ์ข‹์ง€๋งŒ, HTTP/1.1์—์„  ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์š”์ฒญ/์‘๋‹ต๋ณ„๋กœ ์šฐ์„  ์ˆœ์œ„ ์„ค์ •์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค.

์ฆ‰, ์š”์ฒญํ•œ ์ˆœ์„œ๋Œ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ •ํ•ด์ง€๊ธฐ๋•Œ๋ฌธ์— ์ž์นซ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„์˜ ๊ฐœ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๋А๋ผ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ๊ฐœ์ฒด๋ฅผ ๋Šฆ๊ฒŒ ๊ฐ€์ ธ์™€ ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ์„ ์ง€์—ฐ์‹œํ‚ค๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.


HTTP/2.0์˜ ํ† ๋Œ€ ๋น„ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ - SPDY


๐Ÿ’โ€โ™‚๏ธ ์œ„์—์„œ ์‚ดํŽด๋ณด์•˜๋“ฏ์ด HTTP/1.1์€ ํ•œ๊ณ„๊ฐ€ ๋ถ„๋ช…ํ–ˆ๋‹ค.

1999๋…„, HTTP/1.1์„ ๊ธฐ์ˆ ํ•œ RFC 2616์—์„œ ํ˜„๋Œ€์˜ ์›น ํ† ๋Œ€๊ฐ€ ๋œ HTTP/1.1 ํ‘œ์ค€์ด ์ •์˜๋˜์—ˆ๋‹ค.

๊ทธ์ดํ›„ ์ง€๊ธˆ๊นŒ์ง€๋„ ์‚ฌ์‹ค์ƒ HTTP/1.1์€ ๋Œ€์ค‘์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ ์žˆ์ง€๋งŒ, ๊ตฌํ˜„์˜ ๋‹จ์ˆœ์„ฑ๊ณผ ์ ‘๊ทผ์„ฑ์— ์ฃผ์•ˆ์ ์„ ๋‘๊ณ  ์ตœ์ ํ™”ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค๋ณด๋‹ˆ ์„ฑ๋Šฅ์ธก๋ฉด์—์„  ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ทจ์•ฝ์ ์ด ๋งŽ๋‹ค.

์—ฌ์ „ํžˆ HTTP/1.1์€ TCP๋ฅผ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค

์ดํ›„ ๊ณ„์†๋œ ์›น์˜ ํญ๋ฐœ์ ์ธ ์ˆ˜์š” ์ฆ๊ฐ€์™€ ๋ฐœ์ „์œผ๋กœ ์ธํ•ด ๋” ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅธ HTTP๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ๋˜์—ˆ๊ณ , 2009๋…„ ๊ตฌ๊ธ€์˜ ๋งˆ์ดํฌ ๋ฒจ์‹œ์™€ ๋กœ๋ฒ ๋ฅดํ†  ํŽ˜์˜จ์ด ์ œ์‹œํ•œ SPDY๋ฅผ ์‹œ์ž‘์œผ๋กœ HTTP๋ฅผ ๊ฐœ์„ ํ•˜๊ณ ์žํ•˜๋Š” ์›€์ง์ž„์ด ์‹œ์ž‘๋˜์—ˆ๋‹ค.

SPDY ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • Target a 50% reduction in page load time (PLT).
  • Avoid the need for any changes to content by website authors.
  • Minimize deployment complexity, and avoid changes in network infrastructure.
  • Develop this new protocol in partnership with the open-source community.
  • Gather real performance data to (in)validate the experimental protocol.

์ด์ค‘์—์„œ ๊ฐ€์žฅ ์ค‘์ ์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๊ณ ์žํ•˜๋Š” ๋ถ€๋ถ„์€ page load time์˜ ํ–ฅ์ƒ์ด์—ˆ์œผ๋ฉฐ, SPDY๋Š” ์ƒˆ๋กœ์šด binary framing layer์„ ๋„์ž…ํ•˜์—ฌ ๊ธฐ๋ณธ TCP ์—ฐ๊ฒฐ์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋„๋กํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์ง„ํ–‰ํ–ˆ๋‹ค.


์ถœ์ฒ˜: https://d2.naver.com/helloworld/140351

์œ„ ๊ทธ๋ฆผ์—์„œ SPDY๊ฐ€ binary framing layer๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น ๊ณ„์ธต์— multiplexing, prioritization, head compression์„ ์ ์šฉํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ด๋ฃจ์—ˆ๋‹ค.

์ด ์ƒˆ๋กœ์šด 3๊ฐ€์ง€ ๊ฐœ๋…์ด HTTP/2.0์—๋„ ๊ทธ๋Œ€๋กœ ์ด์–ด์ง€๋ฉฐ, ์‚ฌ์‹ค์ƒ ์„ฑ๋Šฅ ๊ฐœ์„ ์˜ ํ•ต์‹ฌ ๊ฐœ๋…์ด๋œ๋‹ค.

์ด ์„ธ๊ฐ€์ง€ ๊ฐœ๋…์— ๋Œ€ํ•ด์„  ์•„๋ž˜ HTTP/2.0์—์„œ ๋” ์ž์„ธํžˆ ๋‹ค๋ฃฌ๋‹ค.


๐Ÿ’โ€โ™‚๏ธ Hello HTTP/2, Good Bye SPDY

SPDY๋ฅผ ๋ฐœํ‘œํ•œ์ง€ ์–ผ๋งˆ์•ˆ๋˜์–ด ๊ตฌ๊ธ€์˜ ๋งˆ์ดํฌ ๋ฒจ์‹œ์™€ ๋กœ๋ฒ ๋ฅดํ†  ํŽ˜์˜จ์€ ์—ฌ๋Ÿฌ ์‚ฌ์ดํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœํ•œ SPDY์˜ ๊ฒฐ๊ณผ์™€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ–ˆ๋‹ค.

์ด๋•Œ ํƒ‘ 25 ์›น์‚ฌ์ดํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ™ˆ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ๊ธฐ์ค€ 55%์ด์ƒ์˜ ๋น ๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๋‹ค๊ณ ํ•œ๋‹ค. - ์ถœ์ฒ˜ -

๋งˆ์ง€๋ง‰์œผ๋กœ 2012๋…„์— Chrome, Firefox, Opera๋“ฑ ์—ฌ๋Ÿฌ ๋ธŒ๋ผ์šฐ์ €์™€ ๋Œ€ํ˜• ์›น์‚ฌ์ดํŠธ๋“ค์ด SPDY๋ฅผ ์ ์šฉํ•˜์˜€์œผ๋ฉฐ, ์ ์ฐจ ๋งŽ์€ ๊ธฐ์—…๋“ค์ด ์ฑ„ํƒํ•จ์—๋”ฐ๋ผ ์‚ฌ์‹ค์ƒ ํ‘œ์ค€์ด ๋˜๋Š” ๊ถค๋„์— ์˜ฌ๋ž๋‹ค.

์ดํ›„ HTTP Working Group (HTTP-WG)๊ฐ€ SPDY์—์„œ ๋ฐฐ์šด ๊ตํ›ˆ์„ ๋ฐ”ํƒ•์œผ๋กœ SPDY๋ฅผ ์ฑ„ํƒ ๋ฐ ์กฐ๊ธˆ ๊ฐœ์„ ํ•˜์—ฌ ๊ณต์‹์ ์œผ๋กœ HTTP/2.0 ํ‘œ์ค€์„ ๊ณต๊ฐœํ•˜๊ฒŒ๋œ๋‹ค.

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ Hello HTTP/2, Good Bye SPDY์— ์ž์„ธํžˆ ๋‚˜์™€์žˆ๋‹ค.


๐Ÿ’โ€โ™‚๏ธ SPDY๋Š” ๊ธฐ์กด HTTP ํ‘œ์ค€์„ ๋Œ€์ฒดํ•˜๋ ค๋Š” ๋ชฉ์ ์ด ์•„๋‹Œ HTTP๋ฅผ ํ†ตํ•œ ์ „์†ก์„ ๋” ํšจ์œจ์ ์œผ๋กœ ํ™•์žฅํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋˜์—ˆ๋‹ค.

SPDY๋ผ๊ณ  ๊ธฐ์กด HTTP์˜ ์ŠคํŽ™์„ ๋Œ€์ฒดํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

๊ธฐ์กด HTTP์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—์„œ์˜ ๋™์ž‘์€ ๋™์ผํ•˜๋ฉฐ, ๊ธฐ์กด์— ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ์ด๋‚˜ HTTP ๋ฉ”์„œ๋“œ, ์ƒํƒœ ์ฝ”๋“œ, URI ๋ฐ ํ—ค๋” ํ•„๋“œ์™€ ๊ฐ™์€ ํ•ต์‹ฌ ๊ฐœ๋…์„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋‹ค.

์ฆ‰, ๊ธฐ์กด์˜ HTTP์˜ ์ŠคํŽ™์€ HTTP ๊ณ„์ธต์—์„œ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜๋ฉฐ, ์ƒˆ๋กœ ์ƒ๊ธฐ๋Š” SPDY ๊ณ„์ธต์—์„œ HTTP/1.1์˜ ์„ฑ๋Šฅ ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์žํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ ์ƒ๊ธด ๊ณ„์ธต์ด ๋ฐ”๋กœ SPDY์—์„  SPDY ๊ณ„์ธต์ด๋ผํ•˜๋ฉฐ, HTTP/2.0์—์„  binary framing layer๋ผ๊ณ  ํ•œ๋‹ค.


HTTP/2.0


๐Ÿ’โ€โ™‚๏ธ HTTP/2.0์€ low-latency์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค.

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด, HTTP/1.1๊นŒ์ง„ ๋„คํŠธ์›Œํฌ ์ž์› (TCP Connection)์„ ์‹ญ๋ถ„ ํ™œ์šฉํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

๊ทธ๋ฆฌํ•˜์—ฌ HTTP/2.0์€ ํ•˜๋‚˜์˜ TCP Connection์— ์—ฌ๋Ÿฌ ์š”์ฒญ/์‘๋‹ต์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœํ–ˆ์œผ๋ฉฐ, ํ—ค๋” ์••์ถ•, ์šฐ์„ ์ˆœ์œ„ ์„ค์ •๋“ฑ์„ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ์ž์›์„ ์‹ญ๋ถ„ ํ™œ์šฉํ•˜๊ณ ์žํ–ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ HTTP/2.0์€ HTTP/1.1์— ๋น„ํ•ด ๋” ์ ์€ ์ˆ˜์˜ TCP Connection์„ ์‚ฌ์šฉํ•˜์—ฌ ๋”์šฑ ๋น ๋ฅด๊ฒŒ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์„ค๊ณ„๋˜์—ˆ๋‹ค.

์ด๋Š” TCP ๋„คํŠธ์›Œํฌ์ƒ Connection์ˆ˜๊ฐ€ ์ ์–ด์ง์— ๋”ฐ๋ฅธ ๊ฒฝ์Ÿ์ด ์ค„์–ด๋“ค๊ณ , Connection์˜ ์ˆ˜๋ช…์ด ๊ธธ์–ด์ ธ ๋„คํŠธ์›Œํฌ์˜ ํ™œ์šฉ๋„๋ฅผ ๋” ๋†’์ด๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผ์ผฐ๋‹ค.

์ด์ œ ์–ด๋–ป๊ฒŒ ์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ถˆ๋Ÿฌ์™”๋Š”์ง€ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.


Binary Framing Layer

HTTP/2์˜ ๋ชจ๋“  ์„ฑ๋Šฅ ํ–ฅ์ƒ์˜ ํ•ต์‹ฌ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์— ๋ฉ”์‹œ์ง€๋ฅผ ์บก์Аํ™”ํ•˜๊ณ  ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์„ ์ง€์ •ํ•˜๋Š” ์ƒˆ๋กœ์šด Binary Framing Layer ๊ณ„์ธต์ด๋‹ค.


์ถœ์ฒ˜: https://web.dev/performance-http2/

HTTP/1.1์™€ HTTP/2.0์˜ ์ฃผ์š”ํ•œ ์ฐจ์ด์ ์ธ ์ด ๊ณ„์ธต์€ ์†Œ์ผ“ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌํ˜„ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)์— ๋…ธ์ถœ๋˜๋Š” HTTP API ์‚ฌ์ด์— ์ตœ์ ํ™”๋œ ์ƒˆ๋กœ์šด ์ธ์ฝ”๋”ฉ ๋งค์ปค๋‹ˆ์ฆ˜์„ ์ ์šฉํ•œ๋‹ค.

๊ทธ๋ž˜์„œ HTTP/2.0์—์„  1.1์—์„œ์˜ text๋กœ ์ „์†ก๋˜๋˜ ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ binary frame์œผ๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ์ „์†ก๋œ๋‹ค.

์ด๋•Œ ๊ธฐ์กด์˜ HTTP ๋ฉ”์„œ๋“œ, ํ—ค๋”์™€ ๊ฐ™์€ ๊ธฐ์กด ์ŠคํŽ™์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๋ฉฐ ์˜ํ–ฅ๋ฐ›์ง€์•Š๋Š”๋‹ค.

๊ทธ์ € ์ „์†ก๋˜๋Š” ๋ฐฉ์‹์ด ์ธ์ฝ”๋”ฉ๋˜๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ๋ถ„ํ• ๋˜์–ด ์ „์†ก๋˜๋Š” ๊ฒƒ ๋ฟ์ด๋‹ค.

๋˜ํ•œ HTTP/1.1์—์„  \r์ด๋‚˜ \n์™€ ๊ฐ™์€ ๊ฐœํ–‰ ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„๋˜๋˜ ํ—ค๋”์™€ ๋ฐ”๋””๋ฅผ HTTP/2.0์—์„  ์œ„ ๊ทธ๋ฆผ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ํ—ค๋”์™€ ๋ฐ”๋””๊ฐ€ layer๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

์ด๋กœ์ธํ•ด ๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ ๋ฐ ์ „์†ก ์†๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜์˜€์œผ๋ฉฐ, ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์–ด๋“ค์—ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํ—ค๋”์™€ ๋ฐ”๋””๊ฐ€ ๋”ฐ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์ „์†ก๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ์ƒˆ๋กœ์šด ๊ณ„์ธต์ด ์ƒ๊ฒผ๋‹ค๋Š” ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘ ์ด ๊ณ„์ธต์— ๋Œ€ํ•œ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ์–ด์•ผํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ๋„ํ•˜๋‹ค.


๐Ÿ’โ€โ™‚๏ธ Streams, Messages, Frames

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ธ์ฝ”๋”ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„๋•Œ, HTTP/2.0์˜ ์ƒˆ๋กœ์šด ์šฉ์–ด๋ฅผ ์ดํ•ดํ•ด์•ผํ•œ๋‹ค.


HTTP/2 streams, messages, frames
์ถœ์ฒ˜: High Performance Browser Networking. Ilya Grigorik

  • Stream - ์—ฐ๊ฒฐ๋œ Connection ๋‚ด์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์–‘๋ฑกํ–ฅ์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š” ์–‘๋ฐฉํ–ฅ ๋ฐ”์ดํŠธ ํ๋ฆ„. (์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์˜ค๊ฐ€๋Š” ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ ๋‹จ์œ„.)
  • Message - HTTP/1.1์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•˜๋‚˜์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จ์œ„. ๋‹ค์ˆ˜์˜ Frame์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด ๋ผ์ธ.
  • Frame - HTTP/2.0์˜ ๊ฐ€์žฅ ์ž‘์€ ํ†ต์‹  ๋‹จ์œ„๋กœ, Header ํ˜น์€ Data๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ๋‹ค.
    • ์œ„ ๊ทธ๋ฆผ์—์„œ DATA์™€ HEADERS ๊ฐ๊ฐ ๋‹จ์œ„๊ฐ€ Frame์ด๋ฉฐ, ๋„คํŠธ์›Œํฌ์ƒ์—์„œ ์ „์†ก๋˜๋Š” ์ตœ์†Œ ๋‹จ์œ„๋ผ๊ณ  ๋ณด๋ฉด๋œ๋‹ค.

HTTP/2.0์€ HTTP ์š”์ฒญ/์‘๋‹ต (๋ฉ”์‹œ์ง€)์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Frame๋กœ ๋‚˜๋ˆ„๊ณ  ์ธ์ฝ”๋”ฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์š”์ฒญ/์‘๋‹ต ๋ฉ”์„ธ์ง€๋Š” ํŠน์ • Stream์— ์†ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ Stream์€ ํ•˜๋‚˜์˜ Connection์— ์†ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.


๐Ÿ’โ€โ™‚๏ธ ์„ธ ์šฉ์–ด์˜ ๊ด€๊ณ„๋ฅผ ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์ •๋ฆฌํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.


์ถœ์ฒ˜: https://web.dev/performance-http2/

  • ๋ชจ๋“  ํ†ต์‹ ์€ ๋‹จ์ผ TCP Connection์—์„œ ์ˆ˜ํ–‰๋˜๋ฉฐ, ํ•œ Connection์•ˆ์—์„œ ์›ํ•˜๋Š” ์ˆ˜๋งŒํผ์˜ ์–‘๋ฐฉํ–ฅ Stream์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํ•˜๋‚˜์˜ ์ปค๋„ฅ์…˜์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Stream์ด ๋™์‹œ์— ์—ด๋ฆฌ๋‹ˆ ์†๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋น ๋ฅด๋‹ค. (๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ)
  • ๊ฐ Stream์€ ์–‘๋ฐฉํ–ฅ ๋ฉ”์„ธ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ณ ์œ  ์‹๋ณ„์ž์™€ ์„ ํƒ์  ์šฐ์„  ์ˆœ์œ„ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.
  • ๊ฐ Message๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ Frame์œผ๋กœ ๊ตฌ์„ฑ๋œ ์š”์ฒญ/์‘๋‹ต๊ณผ ๊ฐ™์€ ๋…ผ๋ฆฌ์  HTTP ๋ฉ”์‹œ์ง€๋‹ค.
  • Frame์€ ํŠน์ • ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ (HTTP ํ—ค๋”๋‚˜ Payload)๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ํ†ต์‹  ๋‹จ์œ„๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ Frame์œผ๋กœ ๋ถ„ํ• ๋˜์–ด ์ „์†ก๋œ๋‹ค๊ณ ๋ณด๋ฉด ๋œ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ Stream์˜ Frame์€ ์„œ๋กœ ์ธ์ ‘ํ•˜์ง€์•Š์œผ๋ฉฐ, ๊ฐ Frame์˜ ํ—ค๋”์— ํฌํ•จ๋œ Stream ์‹๋ณ„์ž๋ฅผ ํ†ตํ•ด ์žฌ์กฐ๋ฆฝ๋œ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋ก  HTTP/2.0์€ ๊ธฐ์กด HTTP ๋ฉ”์‹œ์ง€๋ฅผ Binary๋กœ ๊ตฌ์„ฑ๋œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Frame์œผ๋กœ ๋ถ„ํ•ดํ•œ ๋‹ค์Œ ํŠน์ • Stream์— ๋งคํ•‘๋˜์–ด ์ „์†ก๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  Stream์€ ๋‹จ์ผ TCP Connection ๋‚ด์—์„œ ๋‹ค์ค‘ํ™”๋˜์–ด ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋œ๋‹ค. (Multiplexing)

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ HTTP/2.0์€ multiplexing, prioritization, header compression์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋˜์—ˆ๋‹ค.

์ด์ œ๋ถ€ํ„ฐ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ด ์„ธ๊ฐ€์ง€ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณธ๋‹ค.


Multiplexing

๋‹ค์ค‘ํ™”


๐Ÿ’โ€โ™‚๏ธ Multiplexing

์—ฌ์ „ํžˆ HTTP/1.1์€ TCP๋ฅผ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค์—์„œ ์ •๋ฆฌํ–ˆ๋“ฏ์ด HTTP/1.1์€ ์š”์ฒญ/์‘๋‹ต์„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๋กœ์ธํ•ด ๋ณ‘๋ ฌ์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋ž˜์„œ ์ž„์‹œ์ ์ธ ๋ฐฉ์•ˆ์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ TCP Connection์„ ์—ด์–ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค.

HTTP/2.0์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•ด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ binary framing layer๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ HTTP ๋ฉ”์‹œ์ง€๋ฅผ binary ํ˜•ํƒœ์˜ frame์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ํ•˜๋‚˜์˜ connection์œผ๋กœ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ message stream์„ ์‘๋‹ต ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์ฃผ๊ณ ๋ฐ›๋Š” multiplxing์„ ์ ์šฉํ–ˆ๋‹ค.


์ถœ์ฒ˜: https://web.dev/performance-http2/

multiplexing์„ ๋„์ž…ํ•จ์œผ๋กœ์จ ๋™์ผํ•œ Connection์—์„œ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์–ด๋–ค ์ˆœ์„œ๋กœ๋“  ์‘๋‹ต์„ ๋‹ค์‹œ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ๋˜์—ˆ๋‹ค.


๐Ÿ’โ€โ™‚๏ธ HTTP/1.1 ํ†ต์‹  ๊ณผ์ •๊ณผ HTTP/2.0 ํ†ต์‹  ๊ณผ์ •

์•„๋ž˜ HTTP/1.1์™€ HTTP/2.0์˜ ํ†ต์‹ ๊ณผ์ •์„ ์‚ดํŽด๋ณด๋ฉด Multiplexing์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.


์ถœ์ฒ˜: HTTP/2 in action. https://freecontent.manning.com/mental-model-graphic-how-is-http-1-1-different-from-http-2/

HTTP 1.1์€ TCP Connection์„ ๋งบ๊ณ ๋‚˜์„œ ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ, ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ๋„์ฐฉํ•˜๊ณ ๋‚˜์„œ์•ผ ํ•ด๋‹น TCP ์ปค๋„ฅ์…˜์— ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ์œ„์™€ ๊ฐ™์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๋“ค์€ TCP Connection์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ์„ ๋งŒ๋“ค์–ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๋ฐ˜๋ฉด์— HTTP/2.0์€ ํ•˜๋‚˜์˜ TCP Connection์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ Stream์ด ๋™์‹œ์— ์š”์ฒญ/์‘๋‹ต์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

HTTP 1.1์€ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ๋ฉ”์‹œ์ง€๋ผ๋Š” ๋‹จ์œ„๋กœ ๊ตฌ๋ถ„๋˜์–ด์žˆ์—ˆ์ง€๋งŒ, HTTP/2.0๋ถ€ํ„ฐ๋Š” Stream์„ ํ†ตํ•ด ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ๋ฌถ์ผ ์ˆ˜ ์žˆ์–ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ ๊ฒƒ์ด๋‹ค.

์กฐ๊ธˆ ํ’€์–ด๋งํ•˜๋ฉด, TCP Connection ํ•˜๋‚˜๋กœ ์—ฌ๋Ÿฌ ์š”์ฒญ/์‘๋‹ต์ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š”๊ฒƒ์ธ๋ฐ, ์ด๊ฒŒ ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ๊ฐ Stream์˜ ์š”์ฒญ/์‘๋‹ต์— ๊ณ ์œ ์‹๋ณ„์ž๊ฐ€ ์กด์žฌํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๋‚˜ ์„œ๋ฒ„์— Frame์ด ์ „๋‹ฌ๋˜์—ˆ์„ ๋•Œ binary framing layer์—์„œ ์ด frame์ด ์–ด๋А Stream์˜ ๊ฒƒ์ธ์ง€ ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•˜๊ธฐ๋•Œ๋ฌธ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ์š”์ฒญ/์‘๋‹ต Frame์ด ๊ฐ๊ฐ ์–ด๋–ค Stream์— ์†ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ์š”์ฒญ/์‘๋‹ต์„ ๋ณด๋ƒ„์œผ๋กœ์จ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

HTTP/1.1์—์„  ์‘๋‹ต์ด ์š”์ฒญ์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์–ด ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.


๐Ÿ’โ€โ™‚๏ธ Multiplexing ๋„์ž…์œผ๋กœ TCP๋ฅผ ๋”์šฑ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋˜์—ˆ๋‹ค.

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด, ๊ธฐ์กด์˜ HTTP/1.1์€ ๋ณ‘๋ ฌ์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ์œ„ํ•œ ์ž„์‹œ๋ฐฉํŽธ์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ TCP Connection์„ ์—ด์–ด ์‚ฌ์šฉํ–ˆ๋‹ค.

์ด๊ฒฝ์šฐ ๊ฐ TCP Connection๋ณ„๋กœ TCP์˜ ํŠน์„ฑ์ƒ ํ˜ผ์žก์ œ์–ด๋กœ์ธํ•ด ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์˜€๋‹ค ๋Š˜๋ ธ๋‹คํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ์ ์œผ๋กœ ์•…์˜ํ–ฅ์„ ๋ผ์น˜๊ฒŒ๋œ๋‹ค.

๋ฐ˜๋ฉด Multiplexing์„ ๋„์ž…ํ•œ HTTP/2.0์€ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ํ˜ผ์žก ์ œ์–ด์˜ ์˜ํ–ฅ์„ ํ›จ์”ฌ ๋” ์ ๊ฒŒ ๋ฐ›์Œ์œผ๋กœ์จ ํ†ต์‹  ์†๋„๊ฐ€ ํ›จ์”ฌ ๋” ๋น ๋ฅธ ๊ฒƒ์ด๋‹ค.

์ฆ‰, HTTP/2.0์€ TCP Connection์„ ์‹ญ๋ถ„ ์ž˜ ํ™œ์šฉํ•˜๊ฒŒ๋˜์—ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ, HTTP/1.1์—์„œ Pipelining์€ HOLB๋กœ์ธํ•ด ์‚ฌ์šฉ๋˜์ง€์•Š๊ฒŒ๋˜์—ˆ๋Š”๋ฐ, HTTP/2.0์€ ์ˆœ์„œ๋Œ€๋กœ ์‘๋‹ต์„ ๋ฐ›์„ ํ•„์š”๊ฐ€์—†๊ธฐ์— ์•„๋ž˜์™€ ๊ฐ™์ด Pipelining๊ณผ ๋‹ค๋ฅด๊ฒŒ ์š”์ฒญ์„ ๋™์‹œ์—ํ•˜์ง€๋งŒ ์ˆœ์„œ๋Œ€๋กœ ์‘๋‹ต์„ ๋ฐ›์ง€์•Š์•„๋„๋˜๊ฒŒ๋˜์—ˆ๋‹ค.


HTTP2.0 with Push

HTTP/2.0์—์„  Multiplexing์™ธ์—๋„ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•ด ๋ฏธ๋ž˜์— ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฏธ๋ฆฌ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTML์„ ์š”์ฒญํ–ˆ์„ ๋•Œ, ์„œ๋ฒ„๋Š” ํ•ด๋‹น HTML ๋ฌธ์„œ๊ฐ€ ๋งํฌํ•˜๊ณ ์žˆ๋Š” ์ด๋ฏธ์ง€, CSSํŒŒ์ผ, JS ํŒŒ์ผ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์Šค์Šค๋กœ ํŒŒ์•…ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ๋ฏธ๋ฆฌ pushํ•ด์„œ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ๊ฐ€์ ธ๋‹ค๋†“๋Š” ๊ฒƒ์ด๋‹ค.

์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์š”์ฒญํ•˜์ง€์•Š์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฏธ๋ฆฌ ๊บผ๋‚ด์„œ ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ํŠน์ • ๊ฐœ์ฒด๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ฐ”๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ด๋Œ์–ด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

push ๊ด€๋ จ๋œ ์ž์„ธํ•œ ๋™์ž‘ ๊ณผ์ •์€ HTTP/2 in action์— ์ž์„ธํžˆ ๋‚˜์™€์žˆ๋‹ค.


Stream Prioritization

์ŠคํŠธ๋ฆผ ์šฐ์„ ์ˆœ์œ„


๐Ÿ’โ€โ™‚๏ธ ์ŠคํŠธ๋ฆผ ์šฐ์„ ์ˆœ์œ„

HTTP/2.0์—์„  HTTP ๋ฉ”์„ธ์ง€๋ฅผ ์—ฌ๋Ÿฌ Binary Frame์œผ๋กœ ๋ถ„ํ• ํ•˜๊ณ , ์—ฌ๋Ÿฌ Frame์„ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋˜๋ฉด์„œ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ๋™์‹œ์— ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ๋น„์•ฝ์ ์ธ ์†๋„ ํ–ฅ์ƒ์ด ๋˜์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ TCP Connection์— ์—ฌ๋Ÿฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ๋’ค์„ž์ด๋ฉด์„œ Stream์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์ƒ๊ธฐ๊ฒŒ๋˜์—ˆ๋‹ค.

์ด๋กœ์ธํ•ด HTTP/2.0 ํ‘œ์ค€์—” ๊ฐ Stream์— ์šฐ์„ ์ˆœ์œ„ ๊ด€๋ จ๋œ ๊ฐ€์ค‘์น˜์™€ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

  • ๊ฐ Stream์—๋Š” 1๋ถ€ํ„ฐ 256์‚ฌ์ด์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ Stream์—๋Š” ๋‹ค๋ฅธ Stream์— ๋Œ€ํ•œ ๋ช…์‹œ์ ์ธ ์˜์กด์„ฑ์ด ๋ถ€์—ฌ๋  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ ๋ธŒ๋ผ์šฐ์ €์˜ ์š”์ฒญ ์šฐ์„ ์ˆœ์œ„๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ์—ฌ๊ธฐํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


Flow Control

ํ๋ฆ„ ์ œ์–ด

HTTP/2.0์—์„  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€์˜ ํ๋ฆ„ ์ œ์–ด๋ฅผ ์ง€์›ํ•œ๋‹ค.

๊ด€๋ จํ•˜์—ฌ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ .


Header Compression

HTTP/1.1์—์„  ํ—ค๋”๋ฅผ ์•„๋ฌด๋Ÿฐ ์••์ถ•์—†์ด ๊ทธ๋Œ€๋กœ ์ „์†กํ•˜์˜€๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด HTTP/2.0์—์„  HTTP ๋ฉ”์‹œ์ง€์˜ ํ—ค๋”๋ฅผ ์••์ถ•ํ•˜์—ฌ ์ „์†กํ•œ๋‹ค.

๊ฑฐ๊ธฐ์—๋”ํ•ด HTTP/1.1์—์„œ์˜ ํ—ค๋”๊ฐ’ ์ค‘๋ณต๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•ด, HTTP/2.0์—์„  ์ด์ „ Message์˜ ํ—ค๋” ๋‚ด์šฉ์ค‘ ์ค‘๋ณต๋˜๋Š” ํ•„๋“œ๋ฅผ ์žฌ์ „์†กํ•˜์ง€ ์•Š๋„๋กํ•˜์˜€๋‹ค.


์ถœ์ฒ˜: https://web.dev/performance-http2

์ค‘๋ณต ํ—ค๋”๋Š” Static / Dynamic Header Table ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต ํ—ค๋”๋ฅผ ๊ฒ€์ถœํ•˜์—ฌ, ์ค‘๋ณต๋œ ํ—ค๋”์˜ index ๊ฐ’๋งŒ ์ „์†กํ•˜๊ณ  ์ค‘๋ณต๋˜์ง€ ์•Š์€ Header ์ •๋ณด์˜ ๊ฐ’์€ ํ˜ธํ”„๋งŒ ์ธ์ฝ”๋”ฉ (Huffman Encoding) ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” HPACK ์••์ถ• ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ „์†กํ•œ๋‹ค.


HTTP/2.0๋„ ์™„๋ฒฝํ•˜์ง„ ์•Š๋‹ค. HTTP/3.0์˜ ๋“ฑ์žฅ

์ด๋ฒˆ ๊ธ€์€ HTTP/1.1์˜ ๋ฌธ์ œ์ ์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๊ณ , ๊ทธ ๋ฌธ์ œ์ ์„ HTTP/2.0์—์„  ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜์˜€๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค.

gRPC๋“ฑ์˜ RPC ํ†ต์‹ ์ด ๋Š˜์–ด๋‚จ์—๋”ฐ๋ผ ์ ์ฐจ HTTP/2.0์˜ ์‚ฌ์šฉ๋Ÿ‰๋„ ๋งŽ์•„์งˆ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š”๋ฐ, HTTP/2.0๋„ ์—ฌ์ „ํžˆ ์„ฑ๋Šฅ์ ์ธ ํ•œ๊ณ„๊ฐ€์žˆ๋‹ค.

  • TCP๋กœ์ธํ•œ ์—ฌ์ „ํ•œ RTT(Round Trip Time)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    • ์•„๋ฌด๋ฆฌ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์œผ๋กœ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ–ˆ๋‹ค๊ณ ํ•ด๋„, HTTP/2.0๋„ ์—ฌ์ „ํžˆ TCP์œ„์—์„œ ๋™์ž‘ํ•œ๋‹ค. ๋‹น์—ฐํžˆ Handshake์— ๋Œ€ํ•œ RTT๋กœ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•œ๋‹ค.
    • ์ด ๋ฌธ์ œ๋Š” ์‚ฌ์‹ค TCP๋กœ ํ†ต์‹ ํ•˜๋Š”ํ•œ ๊ณ„์†ํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋‹ค.
  • TCP ์ž์ฒด์˜ Head Of Line Blocking
    • ํŒจํ‚ท์„ ์ด์šฉํ•˜๋Š” TCP์—์„œ ํŒจํ‚ท์ด ์œ ์‹ค๋˜๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ๋•Œ ์žฌ์ „์†กํ•˜๊ฒŒ๋˜๋Š”๋ฐ, ์ด ์žฌ์ „์†ก ๊ณผ์ •์—์„œ ํŒจํ‚ท์˜ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•˜๋ฉด TCP ๋ ˆ๋ฒจ์—์„œ HOLB๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    • ์ฆ‰, HTTP/2.0์—์„  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์˜ HOLB๋ฅผ ํ•ด๊ฒฐํ–ˆ์„์ง€๋ชฐ๋ผ๋„, ์ „์†ก ๊ณ„์ธต์—์„œ์˜ HOLB๋Š” ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•˜๊ฒŒ๋œ๋‹ค.
  • TCP์˜ ํ˜ผ์žก ์ œ์–ด
    • TCP๋Š” ํ˜ผ์žก ์ œ์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ์— ์ „์†ก ์†๋„ ๋ฐ ํ˜ผ์žก Window๋ฅผ ๋‚ฎ์€ ์ƒํƒœ์—์„œ ์ฒœ์ฒœํžˆ ๋†’์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์†๋„ ๋ฐ ํ˜ผ์žก์„ ์ œ์–ดํ•œ๋‹ค. (Slow Start)
    • ์ด๋Š” ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์ด ์ข‹์„ ๋•Œ ์‚ฌ์‹ค์ƒ ๋ถˆํ•„์š”ํ•œ ์ง€์—ฐ์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ HTTP/2.0๋„ TCP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ์— TCP๊ฐ€ ๊ฐ–๋Š” ๋ฌธ์ œ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ฒŒ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ์ธ์ง€ HTTP/3.0์—์„  TCP๋ฅผ ๋ฒ„๋ฆฌ๊ณ  UDP๋ฅผ ์ฑ„ํƒํ•˜์˜€๋‹ค. ์ •ํ™•ํžˆ๋Š” UDP๋ฅผ ๊ฐœ์กฐํ•œ QUIC๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์ธ๋ฐ ์ด์™€ ๊ด€๋ จํ•ด์„œ ๋‹ค์Œ ๊ธ€์—์„œ ๋‹ค๋ค„๋ณด๊ณ ์žํ•œ๋‹ค.


์ฐธ๊ณ