๊ด€๋ฆฌ ๋ฉ”๋‰ด

Bin's Blog

์˜ค๋Š˜์˜ CS(HTTP- 1.0/1.1/2/3) ๋ณธ๋ฌธ

CS

์˜ค๋Š˜์˜ CS(HTTP- 1.0/1.1/2/3)

hotIce 2023. 8. 23. 18:23
728x90

1๏ธโƒฃ HTTP/1.0

๐Ÿ‘‰ HTTP/1.0์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ ์—ฐ๊ฒฐ๋‹น ํ•˜๋‚˜์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค. ์ด๋Š” RTT(ํŒจํ‚ท์ด ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•˜๊ณ  ๋‚˜์„œ ์ถœ๋ฐœ์ง€๋กœ ๋Œ์•„์˜ค๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด๋ฉฐ ํŒจํ‚ท ์™•๋ณต์‹œ๊ฐ„)

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

 

๐Ÿค” TCP๋ž€?(์ง€๋‚œ ๊ธ€ ๋ณด๊ธฐ)

 

์˜ค๋Š˜์˜ CS(๋„คํŠธ์›Œํฌ - TCP/IP 4๊ณ„์ธต ๋ชจ๋ธ(์ „์†ก๊ณ„์ธต))

์ „์†ก๊ณ„์ธต์€ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ํ†ต์‹  ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์—ฐ๊ฒฐ ์ง€ํ–ฅ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ์ง€์›, ์‹ ๋ขฐ์„ฑ, ํ๋ฆ„ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ธํ„ฐ๋„ท ๊ณ„์ธต ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋‹ฌ๋ 

hobin49.tistory.com

 

๐Ÿ› ๏ธ RTT์˜ ์ฆ๊ฐ€๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

 

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

 

(1) ์ด๋ฏธ์ง€ ์Šคํ”Œ๋ฆฌํŒ…: ๋งŽ์€ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ฒŒ ๋˜๋ฉด ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ธฐ ๋–„๋ฌธ์— ๋งŽ์€ ์ด๋ฏธ์ง€๊ฐ€ ํ•ฉ์ณ ์žˆ๋Š” ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค.

 

(2) ์ฝ”๋“œ ์••์ถ•: ์ฝ”๋“œ๋ฅผ ์••์ถ•ํ•ด์„œ ๊ฐœํ–‰ ๋ฌธ์ž, ๋นˆ์นธ์„ ์—†์• ์„œ ์ฝ”๋“œ์˜ ํฌ๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

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

 

2๏ธโƒฃ HTTP/1.1

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

๐Ÿ‘‰ ํ•œ ๋ฒˆ TCP 3-way-handshake๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ทธ๋‹ค์Œ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์„œ ์•ˆ์— ํฌํ•จ๋œ ๋‹ค์ˆ˜์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์š”์ฒญํ•  ๋ฆฌ์†Œ์Šค ๊ฐœ์ˆ˜์— ๋น„๋ก€ํ•ด์„œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

๐Ÿ“š HTTP/1.1์˜ ํŠน์ง•

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

์˜ˆ๋ฅผ ๋“ค์–ด, image.jpg๊ฐ€ ๋Š๋ฆฌ๊ฒŒ ๋ฐ›์•„์ง„๋‹ค๋ฉด ๊ทธ ๋’ค์— ์žˆ๋Š” ๊ฒƒ๋“ค์ด ๋Œ€๊ธฐํ•˜๊ฒŒ ๋˜๋ฉฐ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์ง€์—ฐ๋˜๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

 

(2) ๋ฌด๊ฑฐ์šด ํ—ค๋” ๊ตฌ์กฐ: HTTP/1.1์˜ ํ—ค๋”์—๋Š” ์ฟ ํ‚ค ๋“ฑ ๋งŽ์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด ์žˆ๊ณ  ์••์ถ•์ด ๋˜์ง€ ์•Š์•„ ๋ฌด๊ฑฐ์› ๋‹ค. 

 

3๏ธโƒฃ HTTP/2

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

 

๐Ÿ“š HTTP/2์˜ ํŠน์ง•

 

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

 

(2) ํ—ค๋” ์••์ถ•: HTTP/1.x์—๋Š” ํฌ๊ธฐ๊ฐ€ ํฐ ํ—ค๋”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ํ—ˆํ”„๋งŒ ์ฝ”๋”ฉ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” HPACK ์••์ถ• ํ˜•์‹์„ ๊ฐ€์ง„๋‹ค. 

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

 

(3) ์„œ๋ฒ„ ํ‘ธ์‹œ: HTTP/1.1์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•ด์•ผ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค๋ฉด, HTTP/2๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์—†์ด ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. html์—๋Š” css๋‚˜ js ํŒŒ์ผ์ด ํฌํ•จ๋˜๊ธฐ ๋งˆ๋ จ์ธ๋ฐ html์„ ์ฝ์œผ๋ฉด์„œ ๊ทธ ์•ˆ์— ๋“ค์–ด ์žˆ๋˜ cssํŒŒ์ผ์„ ์„œ๋ฒ„์—์„œ ํ‘ธ์‰ฌํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ๋จผ์ € ์ค„ ์ˆ˜ ์žˆ๋‹ค. 

 

4๏ธโƒฃ HTTP/3

๐Ÿ‘‰ HTTP/3์€ Word Wide Web์—์„œ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” HTTP์˜ ์„ธ ๋ฒˆ์งธ ๋ฒ„์ „์ด๋‹ค. QUIC(๋ฒ”์šฉ ๋ชฉ์ ์˜ ์ „์†ก ๊ณ„์ธต ํ†ต์‹  ํ”„๋กœํ† ์ฝœ)์ด๋ผ๋Š” ๊ณ„์ธต ์œ„์—์„œ ๋Œ์•„๊ฐ€๋ฉฐ TCP ๊ธฐ๋ฐ˜์ด ์•„๋‹Œ UDP ๊ธฐ๋ฐ˜์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.  (UDP๋„ TCP๋ž€? ๊ธ€ ์ฐธ๊ณ ํ•˜๊ธฐ)

๐Ÿ‘‰ HTTP/2์—์„œ ์žฅ์ ์ด์—ˆ๋˜ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ดˆ๊ธฐ ์—ฐ๊ฒฐ ์„ค์ • ์‹œ ์ง€์—ฐ ์‹œ๊ฐ„ ๊ฐ์†Œ(TCP๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์„œ ๋ฒˆ๊ฑฐ๋กœ์šด ๊ณผ์ • ์ƒ๋žต)๋ผ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

๐Ÿ‘‰ QUIC์€ ์ฒซ ์—ฐ๊ฒฐ ์„ค์ •์— 1-RTT๋งŒ ์†Œ์š”๋œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์–ด๋–ค ์‹ ํ˜ธ๋ฅผ ํ•œ ๋ฒˆ ์ฃผ๊ณ , ์„œ๋ฒ„๋„ ๊ฑฐ๊ธฐ์— ์‘๋‹ตํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฐ”๋กœ ๊ธฐ๋ณธ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๐Ÿ‘‰ QUIC์€ ์ˆœ๋ฐฉํ–ฅ ์˜ค๋ฅ˜ ์ˆ˜์ • ๋ฉ”์ปค๋‹ˆ์ฆ˜(Forward Error Correction)์ด ์ ์šฉ๋๋‹ค. ์ด๋Š” ์ „์†กํ•œ ํŒจํ‚ท์ด ์†์‹ค๋˜์—ˆ๋‹ค๋ฉด ์ˆ˜์‹  ์ธก์—์„œ ์—๋Ÿฌ๋ฅผ ๊ฒ€์ถœํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ ์—ด์•ฝํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ๋„ ๋‚ฎ์€ ํŒจํ‚ท ์†์‹ค๋ฅ ์„ ์ž๋ž‘ํ•œ๋‹ค. 

728x90