๐Ÿ“˜HTTP

์ด์ƒ๋ฏผยท2023๋…„ 8์›” 30์ผ

CS๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
5/5

๐Ÿ“—HTTP/1.0

๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ ์—ฐ๊ฒฐ๋‹น ํ•˜๋‚˜์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„.
-> RTT ์ฆ๊ฐ€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค.

RTT ์ฆ๊ฐ€

  • RTT๋ž€ ํŒจํ‚ท์ด ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•˜๊ณ  ๋‚˜์„œ ๋‹ค์‹œ ์ถœ๋ฐœ์ง€๋กœ ๋Œ์•„์˜ค๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด๋ฉฐ, ํŒจํ‚ท์˜ ์™•๋ณต ์‹œ๊ฐ„์„ ๋งํ•œ๋‹ค.

HTTP/1.0์€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งˆ๋‹ค TCP์˜ 3-way handshake๋ฅผ ๊ณ„์† ์—ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— RTT๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋‹จ์ ์ด์žˆ๋‹ค.

RTT ์ฆ๊ฐ€ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

๋งค๋ฒˆ ์—ฐ๊ฒฐํ•  ๋•Œ๋งˆ๋‹ค RTT๊ฐ€ ์ฆ๊ฐ€ํ•˜๋‹ˆ ์„œ๋ฒ„์— ๋ถ€๋‹ด์ด ๋งŽ์ด ๊ฐ€๊ณ , ์‚ฌ์šฉ์ž ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง„๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์ด๋ฏธ์ง€ ์Šคํ”Œ๋ฆฌํŒ…, ์ฝ”๋“œ ์••์ถ•, ์ด๋ฏธ์ง€ Base64 ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋ฏธ์ง€ ์Šคํ”Œ๋ฆฌํŒ…

๋งŽ์€ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ฒŒ ๋˜๋ฉด ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์ด๋ฏธ์ง€๊ฐ€ ํ•ฉ์ณ์žˆ๋Š” ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ๋ฐ›๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ background-image์˜ position์„ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•
-> ์ฆ‰, ํ•œ๋ฒˆ์˜ TCP์—ฐ๊ฒฐ์— ์ด๋ฏธ์ง€๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•.

์ฝ”๋“œ ์••์ถ•

์ฝ”๋“œ ์••์ถ•์€ ์ฝ”๋“œ๋ฅผ ์••์ถ•ํ•ด์„œ ๊ฐœํ–‰ ๋ฌธ์ž, ๋นˆ์นธ์„ ์—†์• ์„œ ์ฝ”๋“œ ํฌ๊ธฐ๋ฅผ ์ตœ์†Œํ™” ํ•œ๋‹ค.

์ด๋ฏธ์ง€ Base64 ์ธ์ฝ”๋”ฉ

์ด๋ฏธ์ง€ ํŒŒ์ผ์„ 64์ง„๋ฒ•์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด๋กœ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•.
์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ์„ ์—ด๊ณ  ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ๋”ฐ๋กœ HTTP ์š”์ฒญ์„ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
๋‹จ, ๋ณ€ํ™˜ํ•˜๋ฉด ํฌ๊ธฐ๊ฐ€ ๋” ์ปค์ง€๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

๐Ÿ“—HTTP/1.1

  • ๋งค๋ฒˆ TCP ์—ฐ๊ฒฐ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•œ ๋ฒˆ TCP์ดˆ๊ธฐํ™”๋ฅผ ํ•œ ์ดํ›„์— keep-alive๋ผ๋Š” ์˜ต์…˜์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒ์ผ์„ ์†ก์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€๊ฒฝ.

HOL(Head Of Line) Blocking

HOL Blocking์€ ๋„คํŠธ์›Œํฌ์—์„œ ๊ฐ™์€ ํ์— ์žˆ๋Š” ํŒจํ‚ท์ด ์ฒซ๋ฒˆ์งธ ํŒจํ‚ท์— ์˜ํ•ด ์ง€์—ฐ๋ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ํ˜„์ƒ์„ ๋งํ•œ๋‹ค.

๋ฌด๊ฑฐ์šด ํ—ค๋” ๊ตฌ์กฐ

HTTP/1.1์˜ ํ—ค๋”์—๋Š” ์ฟ ํ‚ค ๋“ฑ ๋งŽ์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๊ณ , ์••์ถ•์ด ๋˜์ง€ ์•Š์•„ ๋ฌด๊ฒ๋‹ค.

HTTP/2

HTTP/1.X๋ณด๋‹ค ์ง€์—ฐ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ์‘๋‹ต ์‹œ๊ฐ„์„ ๋” ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ, ํ—ค๋” ์••์ถ•, ์„œ๋ฒ„ ํ‘ธ์‹œ, ์š”์ฒญ์˜ ์šฐ์„ ์ˆœ์œ„ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.

๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ

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

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ›์•„์˜จ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…๋ฆฝ๋œ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ชผ๊ฐœ์„œ ๋ณ‘๋ ฌ๋กœ ์†ก์ˆ˜์‹ ํ•˜๊ณ , ๋‹ค์‹œ ์กฐ๋ฆฝํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.
    -> ๋‹จ์ผ ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ๋กœ ์—ฌ๋Ÿฌ ์š”์ฒญ,์‘๋‹ต์ด ๊ฐ€๋Šฅํ•˜๊ณ , HTTP/1.X์—์„œ ๋ฐœ์ƒํ•˜๋Š” HOL Blocking์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

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

HTTP/1.X์— ๋ฌด๊ฑฐ์šด ํ—ค๋”๋ฅผ HTTP/2.X์—์„œ๋Š” ํ—ˆํ”„๋งŒ ์ฝ”๋”ฉ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” HPACK ์••์ถ•ํ˜•์‹์„ ํ†ตํ•ด ํ—ค๋”๋ฅผ ์••์ถ•ํ•œ๋‹ค.

๐Ÿ‘‰ํ—ˆํ”„๋งŒ ์ฝ”๋”ฉ

  • ๋ฌธ์ž์—ด์„ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ชผ๊ฐœ, ๋นˆ๋„๊ฐ€ ๋†’์€ ์ •๋ณด๋Š” ์ ์€ ๋น„ํŠธ์ˆ˜, ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ์ •๋ณด๋Š” ๋งŽ์€ ๋น„ํŠธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ๋ฐ์ดํ„ฐ ํ‘œํ˜„์— ํ•„์š”ํ•œ ๋น„ํŠธ์–‘์„ ์ค„์ธ๋‹ค.

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

HTTP/2์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์—†์ด ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

HTML์—๋Š” CSS, JSํŒŒ์ผ์ด ํฌํ•จ๋˜๊ธฐ ๋งˆ๋ จ์ธ๋ฐ, HTML์„ ์ฝ์œผ๋ฉด์„œ ๊ทธ์•ˆ์— CSS, JSํŒŒ์ผ์„ ์„œ๋ฒ„์—์„œ ํ‘ธ์‹œํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ๋จผ์ € ์ค€๋‹ค.

๐Ÿ“—HTTPS

HTTP/2๋Š” HTTPS ์œ„์—์„œ ๋™์ž‘ํ•œ๋‹ค.
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต๊ณผ ์ „์†ก ๊ณ„์ธต ์‚ฌ์ด์— '์‹ ๋ขฐ๊ณ„์ธต์ธ SSL/TLS ๊ณ„์ธต'์„ ๋„ฃ์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” HTTP์š”์ฒญ์„ ๋œปํ•œ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ํ†ต์‹ ์„ ์•”ํ˜ธํ™” ํ•œ๋‹ค.

SSL/TLS

์ „์†ก ๊ณ„์ธต์—์„œ ๋ณด์•ˆ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœํ† ์ฝœ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ํ•  ๋•Œ, ์ œ3์ž๊ฐ€ ๋ฉ”์‹œ์ง€ ๋„์ฒญํ•˜๊ฑฐ๋‚˜ ๋ณ€์กฐํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ๋‹ค.
๋ณด์•ˆ ์„ธ์…˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋ฉฐ, ๋ณด์•ˆ ์„ธ์…˜์ด ๋งŒ๋“ค์–ด์งˆ ๋•Œ, ์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜, ํ‚ค ๊ตํ™˜ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋œ๋‹ค.

๐Ÿ‘‰์„ธ์…˜

  • ์šด์˜์ฒด์ œ๊ฐ€ ์–ด๋– ํ•œ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ž์‹ ์˜ ์ž์‹  ์ด์šฉ์„ ํ—ˆ๋ฝํ•˜๋Š” ์ผ์ •ํ•œ ๊ธฐ๊ฐ„์„ ๋œปํ•จ.

์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜

CA์—์„œ ๋ฐœ๊ธ‰ํ•œ ์ธ์ฆ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
CA์—์„œ ๋ฐœ๊ธ‰ํ•œ ์ธ์ฆ์„œ๋Š” ์•ˆ์ „ํ•œ ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์žˆ์–ด ํ•„์š”ํ•œ ๊ณต๊ฐœํ‚ค๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ œ๊ณตํ•˜๊ณ , ์„œ๋ฒ„๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์ž„์„ ๋ณด์žฅํ•œ๋‹ค.
์ธ์ฆ์„œ๋Š” ์„œ๋น„์Šค ์ •๋ณด, ๊ณต๊ฐœํ‚ค, ์ง€๋ฌธ, ๋””์ง€ํ„ธ ์„œ๋ช… ๋“ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์ž์‹ ์˜ ์„œ๋น„์Šค๊ฐ€ CA์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ ๋ฐ›์œผ๋ ค๋ฉด, ์ž์‹ ์˜ ์‚ฌ์ดํŠธ ์ •๋ณด์™€ ๊ณต๊ฐœํ‚ค๋ฅผ CA์— ์ œ์ถœํ•ด์•ผ ํ•œ๋‹ค.
์ดํ›„ CA๋Š” ๊ณต๊ฐœํ‚ค๋ฅผ ํ•ด์‹œํ•œ ๊ฐ’์ธ ์ง€๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” CA์˜ ๋น„๋ฐ€ํ‚ค ๋“ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ CA ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•œ๋‹ค.

HTTP/3

HTTP/3์€ QUIC๋ผ๋Š” ๊ณ„์ธต์œ„์—์„œ ๋Œ์•„๊ฐ€๋ฉฐ, TCP๊ธฐ๋ฐ˜์ด ์•„๋‹Œ UDP ๊ธฐ๋ฐ˜์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

์ดˆ๊ธฐ์—ฐ๊ฒฐ ์„ค์ •์‹œ ์ง€์—ฐ์‹œ๊ฐ„ ๊ฐ์†Œ

QUIC์€ TCP๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ๋•Œ ๋ฒˆ๊ฑฐ๋กœ์šด 3-WAY-Handshake ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
์ฒซ ์—ฐ๊ฒฐ ์„ค์ •์— 1-RTT๋งŒ ์†Œ์š”๋œ๋‹ค.(UDP๊ธฐ๋ฐ˜)

์ˆœ๋ฐฉํ–ฅ ์˜ค๋ฅ˜ ์ˆ˜์ • ๋ฉ”์ปค๋‹ˆ์ฆ˜(FEC)์ด ์ ์šฉ๋˜์–ด ์žˆ๋‹ค.
์ „์†กํ•œ ํŒจํ‚ท์ด ์†์‹ค๋˜์—ˆ๋‹ค๋ฉด, ์ˆ˜์‹ ์ธก์—์„œ ์˜ค๋ฅ˜๊ฒ€์ถœ ๋น„ํŠธ๋ฅผ ํ†ตํ•ด, ์—๋Ÿฌ๋ฅผ ๊ฒ€์ถœํ•˜๊ณ , ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ์‹
-> ํŒจํ‚ท ์†์‹ค๋ฅ ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค

profile
๊ฐœ๋ฆฐ์ด

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