CS/Network

[๋„คํŠธ์›Œํฌ] HTTP/1.1 ์™€ HTTP/2 ์˜ ์ฐจ์ด์ 

GaGah 2023. 4. 22. 16:43

๐Ÿ‘ฉ‍๐Ÿ’ป HTTP๋ž€?

Hypertext Transfer Protocol ์˜ ์•ฝ์ž๋กœ, HTML ๋“ฑ์˜ ๋ฌธ์„œ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 

WEB์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐ ์‘๋‹ต์˜ ๊ธฐ๋ณธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

์ถ”๊ฐ€) OSI๊ณ„์ธต์˜ Application Layer ํ”„๋กœํ† ์ฝœ

 

๐Ÿ‘ฉ‍๐Ÿ’ป HTTP/1.0 

โœ” ๋‹จ๊ธฐ ์ปค๋„ฅ์…˜

ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•˜๋‚˜์˜ TCP Connection์„ ๋งบ์–ด์•ผ ํ•œ๋‹ค.

TCP๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•ด ์—ฐ๊ฒฐ ์‹œ 3-way handshake, ์—ฐ๊ฒฐ ํ•ด์ œ ์‹œ 4-way handshake ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ 

๊ฒฐ๊ตญ, ์—ฌ๋Ÿฌ API ํ˜ธ์ถœ ์‹œ Latency ์ฆ๊ฐ€ ๋Š” ๋„ˆ๋ฌด ๋‹น์—ฐํ•œ ์–˜๊ธฐ๋‹ค.

 

์ถœ์ฒ˜ : https://bbo-blog.tistory.com/87?category=1004651

 

๋„ˆ๋ฌด ๋น„ํšจ์œจ์ด์—ฌ์„œ HTTP Header ์— Keep-alive ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ์ • ์‹œ๊ฐ„๋™์•ˆ Connection์„ ๋Š์ง€ ์•Š๋Š” ๋ฐฉ์‹๋„ ์‚ฌ์šฉ์ด ๋˜์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, HTTP/1.0 ์—์„œ๋Š” ํ‘œ์ค€์ด ์•„๋‹ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€์›์ด ์•ˆ๋˜๋Š” ๊ณณ๋„ ์žˆ์—ˆ๋‹ค.

Connection : keep-alive

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป HTTP/1.1  

HTTP/1.0์˜ ๋‹จ์ ์„ ํ•ด์†Œํ•˜๊ณ ์ž, HTTP/1.1์ด ๋“ฑ์žฅํ•˜์˜€๋‹ค.

 

โœ”  Persistence Connection

์ง€์ •ํ•œ timeout ์‹œ๊ฐ„ ๋™์•ˆ Connection์„ ๋Š์ง€ ์•Š๋Š”๋‹ค๋Š” ์ปจ์…‰

ํ•˜๋‚˜์˜ Connection์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

HTTP/1.0์—์„œ๋Š” ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Header์— keep-alive๋ฅผ Client๊ฐ€ ์ž‘์„ฑํ•ด์ค˜์•ผ ๋˜์ง€๋งŒ,

HTTP/1.1์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ keep-alive ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ณ (Client๊ฐ€ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„), ํ•„์š” ์—†๋Š” ๊ฒฝ์šฐ๋งŒ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

Connection : close

 

โœ”  Pipelining

์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์„ ๋ณด๋‚ธ ๋’ค, ์‘๋‹ต์„ ๋ฐ›์ง€ ์•Š์•„๋„ ๋‘ ๋ฒˆ์งธ Request ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

์ถœ์ฒ˜ : https://en.wikipedia.org/wiki/HTTP_pipelining

 

๋‹จ, ์š”์ฒญ์„ ๋ณด๋‚ธ ์ˆœ์„œ์— ๋งž๋„๋ก ์‘๋‹ต์ด ์™€์•ผํ•œ๋‹ค.(์ˆœ์„œ๋ณด์žฅ)

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ์ฒซ ๋ฒˆ์งธ ์‘๋‹ต์ด ๋Š๋ฆฌ๊ฒŒ ์˜ค๋ฉด, ๋‘ ๋ฒˆ์งธ/์„ธ ๋ฒˆ์งธ ์‘๋‹ต์—๋„ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•œ๋‹ค. 

๋Œ€๋ถ€๋ถ„์˜ ์„œ๋ฒ„๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๊ตฌ์กฐ๋กœ 1,2,3๋ฒˆ์งธ ์‘๋‹ต์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์„œ๋ฒ„์—์„œ๋„ 1๋ฒˆ์งธ ์‘๋‹ต์„ ์ œ๊ณตํ•ด์ฃผ๊ธฐ ์ „๊นŒ์ง€๋Š” 2,3๋ฒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ด์„œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๋„ ํ•จ๊ป˜ ์ผ์–ด๋‚œ๋‹ค.

 

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐ”๋กœ Head of Line Bloking ์ด๋‹ค.

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป HTTP/2 

โœ” Header ์••์ถ•

Header ํ”„๋ ˆ์ž„๊ณผ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์œผ๋กœ ๋‚˜๋ˆˆ ํ›„, ์••์ถ•ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.

 

โœ” Multiplexing

ํŒŒ์ดํ”„๋ผ์ด๋‹๊ณผ ๋‹ค๋ฅด๊ฒŒ ์š”์ฒญ์˜ ์ˆœ์„œ๋Œ€๋กœ ์‘๋‹ต์„ ์ œ๊ณตํ•ด์ค„ ํ•„์š” ์—†์ด

๋ณ‘๋ ฌ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉฐ ๋นจ๋ฆฌ ๋๋‚œ ์š”์ฒญ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ „์†กํ•ด์ค€๋‹ค.

์ถœ์ฒ˜ : https://www.luroconnect.com/http2-magento/

 

HTTP/1.1 ์— ๋น„ํ•ด latency๊ฐ€ ์ค„์–ด๋“ค์—ˆ์ง€๋งŒ, TCP ํŠน์„ฑ์— ๋”ฐ๋ฅธ TCP Head of Line Bloking ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

 

์•„๋ž˜ ๊ทธ๋ฆผ์˜ TCP Connection์„ ์ฃผ๋ชฉํ•ด๋ณด์ž.

TCP ์ „์†ก์„ ํ•  ๋•Œ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜๋‰˜์–ด์ ธ ์ „์†ก์ด ๋˜๋Š”๋ฐ

๋งŒ์•ฝ, 3๋ฒˆ์˜ ํŒจํ‚ท์ด ์ „์†ก ์ค‘ ๋ˆ„๋ฝ(?)๋˜์–ด ์žฌ์ „์†ก์ด ์ผ์–ด๋‚˜๋ฉด ๊ทธ ๋’ค์— ์žˆ๋Š” ๋ชจ๋“  ํŒจํ‚ท๋“ค์€ ์ง€์—ฐ์ด ๋œ๋‹ค.

TCP์˜ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํŠน์„ฑ์—์„œ ๋ฐœ์ƒํ•˜๋Š” TCP Head of Line Bloking ๋ฌธ์ œ์ด๋‹ค. 

 

์ถœ์ฒ˜ : https://devopedia.org/quic

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป QUIC

HTTP/2์˜ TCP Head of Line Blocking ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‚˜ํƒ€๋‚œ Application ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ

 

UDP ์‚ฌ์šฉ์„ ํ•˜์—ฌ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†กํ•˜๋Š” ์ปจ์…‰์œผ๋กœ ๊ตฌ๊ธ€์—์„œ ๋งŒ๋“ค์—ˆ๋‹ค.

UDP ๊ฐ€ ์‹ ๋ขฐ์„ฑ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค๊ณ ? ์–ด๋–ป๊ฒŒ ํ•˜๋Š”๊ฑฐ์ง€?

 

QUIC์€ ๋…๋ฆฝ ์ŠคํŠธ๋ฆผ์„ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.

์ฆ‰, 3๋ฒˆ์ด ์ง€์—ฐ ๋ฐœ์ƒ์ด ๋œ๋‹ค๋ฉด, ๋‚˜๋จธ์ง€๋“ค์€ ์˜ํ–ฅ์ด ์—†๊ฒŒ๋œ๋‹ค.

์ถœ์ฒ˜ : https://devopedia.org/quic

 

LIST