HTTP
HTTP
(Hyper Text Transfer Protocol)๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํต์ ๊ท์ฝ์ด๋ค. ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต
์์ ๋์ํ๊ณ ์น ์๋น์ค ํต์ ์ ์ฌ์ฉ๋๋ค. HTTP/1.0
๋ถํฐ HTTP/3
๊น์ง ๋ฐ์ ํด ์๋ค.
- ๋ฌด์ํ์ฑ(stateless)
- HTTP๋ ์์ฒญ์ ๋ํ ์ํ๋ฅผ ๊ฐ์ง์ง ์์
- ๊ฐ ์์ฒญ์ ๋ ๋ฆฝ์ โ ์์ฒญ ๊ฐ์ ์๋ก ์ํฅ ์ฃผ๊ณ ๋ฐ์ง ์์
- ์ํ(๋ก๊ทธ์ธ ์ ๋ณด ๋ฑ)๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ธ์ ์ด๋ ์ฟ ํค ์ฌ์ฉ - ๋น์ฐ๊ฒฐ์ฑ(Connectionless)
- ์์ฒญ์ ์ฃผ๊ณ ๋ฐ์ ๋๋ง ์ฐ๊ฒฐ์ ์ ์งํ๊ณ ์ ์ก์ด ๋๋๋ฉด ์ฐ๊ฒฐ ๋๊น - ์๋ฒ-ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ
- ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๋ ์น๋ธ๋ผ์ฐ์
- ์๋ฒ๋ ์์ฒญ ๋์์ธ ์๋ฒ ์ปดํจํฐ ์๋ฏธ
๐HTTP/1.0
ํ ์ฐ๊ฒฐ๋น ํ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค. ์๋ฒ๋ก๋ถํฐ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ง๋ค TCP ์ฐ๊ฒฐ(3-way handshake)๊ณผ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ RTT๊ฐ ์ฆ๊ฐํ๋ค๋ ๋จ์ ์ด ์๋ค.
๐ก RTT (Round Trip Time)
- ์ง์ญํ๋ฉด โ์๋ณต ์๊ฐโ์ด๋ผ๋ ์๋ฏธ
- ์ธํฐ๋ท์์์ ํจํท์ด ์ก์ ์ง์ ๋ชฉ์ ์ง ์ฌ์ด ์๋ณตํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋งํ๋ค.
(ํจํท ์๋ณต ์๊ฐ)

RTT ์ฆ๊ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
๋งค๋ฒ ์ฐ๊ฒฐํ ๋๋ง๊ฐ RTT๊ฐ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ถ๋ด์ด ๋ง์ด ๊ฐ๊ณ ์ฌ์ฉ์ ์๋ต ์๊ฐ์ด ๊ธธ์ด์ง๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ฏธ์ง ์คํ๋ฆฌํ
, ์ฝ๋ ์์ถ
, ์ด๋ฏธ์ง Base64 ์ธ์ฝ๋ฉ
์ ์ฌ์ฉํ๋ค.
์ด๋ฏธ์ง ์คํ๋ฆฌํ (์ด๋ฏธ์ง ์คํ๋ผ์ดํธ)
์ด๋ฏธ์ง ์คํ๋ผ์ดํธ๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ์ด ๊ธฐ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ํ๋์ ์ด๋ฏธ์ง๋ก ํฉ์ณ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ค. ํฉ์ณ ์๋ ํ๋์ ์ด๋ฏธ์ง๋ง ๋ค์ด๋ฐ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ํ ์ด๋ฏธ์ง๋ง ํ๋ฉด์ ํ์ํ๋ค. ์คํ๋ผ์ดํธ ์ด๋ฏธ์ง์์ ์ฌ์ฉํ ์ด๋ฏธ์ง์ ์ ํํ width
์ height
, position
๊ฐ์ ์ด์ฉํด ํ๋ฉด์ ํ์ํ๋ค.

์ฝ๋ ์์ถ
์ฝ๋์์ ๊ฐํ ๋ฌธ์, ๋น์นธ์ ์์ ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ์ต์ํํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค.
console.log('log1:'+txt);
if (true) {
var txt = 'text';
console.log('log2:'+txt);
}
console.log('log3:'+txt);
console.log('log1:'+txt);if(true){var txt='text';console.log('log2:'+txt)}console.log('log3:'+txt);
์ด๋ฏธ์ง Base64 ์ธ์ฝ๋ฉ
์ด๋ฏธ์ง ํ์ผ์ 64์ง๋ฒ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด๋ก ์ธ์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ฏธ์ง๊ฐ Base64๋ก ์ธ์ฝ๋ฉ ๋์ด ์์ผ๋ฉด ํด๋น ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ HTML ์ฝ๋ ๋ด์ ํฌํจ๋์ด ์๋ค. ๋ฐ๋ผ์ ์๋ฒ์ ์ด๋ฏธ์ง ํ์ผ์ ๋ฐ๋ก ์์ฒญํ์ฌ ํ์ผ๋ก ์ ์ฅํ ํ์๊ฐ ์์ด์ง๊ธฐ ๋๋ฌธ์ RTT๋ฅผ ์ค์ผ ์ ์๋ค. ํ์ง๋ง base64 ๋ฌธ์์ด๋ก ๋ณํํ ๊ฒฝ์ฐ ์ฝ 33%์ ํฌ๊ธฐ๊ฐ ๋ ์ปค์ง๋ค๋ ๋จ์ ์ด ์๋ค.
๐HTTP/1.1
HTTP/1.0์์ ๋ฐ์ ๋ ํํ๋ก, ๋งค๋ฒ TCP ์ฐ๊ฒฐ์ ํ์ง ์๊ณ ํ ๋ฒ TCP ์ด๊ธฐํ ์ดํ keep-alive
์ต์
์ ํตํด ์ฌ๋ฌ ๊ฐ์ ํ์ผ์ ์ก์์ ํ ์ ์๋ค. (keep-alive ํ์คํ๋์ด ๊ธฐ๋ณธ ์ต์
์ผ๋ก ์ค์ ) ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ํ ๋ฒ์ TCP 3-way handshake
๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ๋ค์๋ถํด ๋ฐ์ํ์ง ์๋๋ค.
ํ์ง๋ง ๋ฌธ์ ์์ ํฌํจ๋ ๋ค์์ ๋ฆฌ์์ค๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด ์์ฒญ ๊ฐ์์ ๋น๋กํด ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ง๋ค๋ ๋จ์ (HOL Blocking)์ด ์๋ค. ๋ํ, ํค๋์ ์ฟ ํค ๋ฑ ๋ง์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๊ณ ์์ถ๋์ง ์์ ๋ฌด๊ฒ๋ค.

๐ก HOL Blocking(Head Of Line Blocking)
๋คํธ์ํฌ์์ ๊ฐ์ ํ์ ์ฌ๋ฌ ํจํท์ด ์์ ๋, ์ฒซ ๋ฒ์งธ ํจํท์ ์ง์ฐ์๊ฐ์ด ๊ธธ์ด์ ธ ๋ฐ์ํ๋ ์ฑ๋ฅ ์ ํ ํ์์ ๋งํ๋ค.
๐ก keep-alive ์ต์
- ํ๋์ TCP ์ฐ๊ฒฐ์ ํ์ฉํด ์ฌ๋ฌ ๊ฐ์ HTTP ์์ฒญ ๋ฐ ์๋ต์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํด์ฃผ๋ ๊ธฐ๋ฒ
- ๊ธฐ๋ณธ์ ์ผ๋ก HTTP/1.0 ์ฐ๊ฒฐ์ ํ๋์ ์์ฒญ์ ์๋ตํ ๋๋ง๋ค close
- HTTP/1.1 ์ฐ๊ฒฐ์ keep-alive๋ก persistent connection ์ง์
close: ์์ ์ด ์๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ด ์ข ๋ฃ๋์ด์ผ ํจ์ ์๋ฏธ
keep-alive: ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋๊ณ ์ ํ๊ธฐ ์ ๊น์ง ์ฐ๊ฒฐ ์ง์
keep-alive๋?
๐HTTP/2
HTTP/2
๋ HTTP/1.x
๋ณด๋ค ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ ์๋ต ์๊ฐ์ ๋ ๋น ๋ฅด๊ฒ ํ ์ ์์ผ๋ฉฐ, ๋ฉํฐํ๋ ์ฑ
, ํค๋์์ถ
, ์๋ฒํธ์
, ์์ฒญ์ ์ฐ์ ์์ ์ฒ๋ฆฌ
๋ฑ์ ์ง์ํ๋ค. ๋ํ, HTTP/2
๋ HTTPS
์์์ ๋์ํ๋ค.
๋ฉํฐํ๋ ์ฑ
์ฌ๋ฌ ๊ฐ์ ์คํธ๋ฆผ์ ์ฌ์ฉํ์ฌ ์ก์์ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด๋ฅผ ํตํด ํน์ ์คํธ๋ฆผ์ ํจํท์ด ์์ค๋๋๋ผ๋ ํด๋น ์คํธ๋ฆผ์๋ง ์ํฅ์ ๋ฏธ์น๊ณ ๋๋จธ์ง ์คํธ๋ฆผ์ ์ ์์ ์ผ๋ก ๋์ํ ์ ์๋ค. ์ฝ๊ฒ ๋งํด ํด๋ผ์ด์ธํธ๊ฐ ํ๋์ Connection ์์์ ๋์์ ์ฌ๋ฌ request๋ฅผ ๋ณด๋ด๋ ๊ธฐ์ ์ ๋งํ๋ค.
HTTP/1.1
์์๋ parallel connection(๋ณ๋ ฌ ์ปค๋ฅ์
)์ ํตํด ๋์์ ์ฌ๋ฌ HTTP ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค.
ํ์ง๋ง ํ๋์ ์ฐ๊ฒฐ์ ํ๋์ ์์ฒญ๋ง ๋ณด๋ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋์์ ์ฌ๋ฌ ์์ฒญ์ ๋ณด๋ด๋๋ผ๋ ์์ฒญ๋ง๋ค TCP ์ฐ๊ฒฐ ๋ฐ ํด์ ์์
์ด ํ์ํ๋ค. ์ด์ ๋ฐํด ๋ฉํฐํ๋ ์ฑ์ persistence cennection(์ง์ ์ปค๋ฅ์
) ๋ฐฉ์์ ์ฌ์ฉํด ์ฐ๊ฒฐ๋ ์ํ์์ ์ฐ๊ฒฐ ํด์ ์์ด ๋์ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค. ์ด๋ฅผ ํตํด HTTP/1.x
์์ ๋ฐ์ํ๋ HOL Blocking ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.


ํค๋ ์์ถ (HPACK)
HTTP/1.x
์์ ํฌ๊ธฐ๊ฐ ํฐ ๋ฌด๊ฑฐ์ด ํค๋๋ฅผ HTTP/2
์์๋ ํค๋ ์์ถ์ ํตํด ํด๊ฒฐํ๋ค. ํํ๋ง ์ฝ๋ฉ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ HPACK
์์ถ ํ์์ ์ฌ์ฉํ๋ค.
๐ก ํํ๋ง ์ฝ๋ฉ
๋ฌธ์์ด์ ๋ฌธ์ ๋จ์๋ก ์ชผ๊ฐ ๋น๋์๋ฅผ ์ธ์ด ๋น๋๊ฐ ๋์ ์ ๋ณด๋ ์ ์ ๋นํธ ์๋กค ์ฌ์ฉํ์ฌ ํํํ๊ณ , ๋น๋๊ฐ ๋ฎ์ ์ ๋ณด๋ ๋นํธ ์๋ฅผ ๋ง์ด ์ฌ์ฉํ์ฌ ํํํ๋ค. ์ ์ฒด ๋ฐ์ดํฐ์ ํํ์ ํ์ํ ๋นํธ์์ด ์ค์ด๋ ๋ค.
ํํ๋ง ์ฝ๋ฉ
์๋ฒ ํธ์
์ด์ ๋ฒ์ ์ HTTP์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํด์ผ๋ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์์๋ค. ํ์ง๋ง HTTP/2
์์๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์์ด ์๋ฒ๊ฐ ๋ฐ๋ก ๋ฆฌ์์ค๋ฅผ ํธ์ํ ์ ์๋ค.
๋ณดํต html ํ์ผ ์์ css๋ js ํ์ผ์ด ํฌํจ๋๋๋ฐ, html์ ์ฝ์ผ๋ฉด์ ์์ ๋ค์ด์๋ ํ์ํ ํ์ผ์ ์๋ฒ์์ ํธ์ํด ํด๋ผ์ด์ธํธ์๊ฒ ๋จผ์ ์ค ์ ์๋ค.

๐HTTP/3
TCP ์์์ ๋์ํ๋ ์ด์ ๋ฒ์ ๋ค๊ณผ ๋ฌ๋ฆฌ QUIC ๊ณ์ธต ์์์ UDP ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค. ๋ํ HTTP/2์ ์ฅ์ ์ธ ๋ฉํฐํ๋ ์ฑ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๊ธฐ ์ฐ๊ฒฐ ์ค์ ์ ์ง์ฐ ์๊ฐ ๊ฐ์๋ผ๋ ์ฅ์ ์ด ์๋ค.

์ด๊ธฐ ์ฐ๊ฒฐ ์ค์ ์ ์ง์ฐ ๊ฐ์
QUIC๋ TCP๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ TCP ์ฐ๊ฒฐ ๊ณผ์ ์ธ 3-way handshake ๊ณผ์ ์ ๊ฑฐ์น์ง ์์๋ ๋๋ค. ์ฒซ ์ฐ๊ฒฐ ์ค์ ์์ 1-RTT๋ง ์์๋๋ฉฐ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ํธ๋ฅผ ํ ๋ฒ ์ฃผ๊ณ , ์๋ฒ๋ ๊ทธ์ ๋ํ ์๋ต๋ง ํ๋ฉด ๋ฐ๋ก ๋ณธ ํต์ ์ ์์ํ ์ ์๋ค.
์๋ฐฉํฅ ์ค๋ฅ ์์ ๋ฉ์ปค๋์ฆ
QUIC๋ ์๋ฐฉํฅ ์ค๋ฅ ์์ ๋ฉ์ปค๋์ฆ(FEC:Forword Error Correction)์ด ์ ์ฉ๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ ์ ์กํ ํจํท์ด ์์ค๋์๋ค๋ฉด, ์์ ์ธก์์ ์๋ฌ๋ฅผ ๊ฒ์ถํ๊ณ ์์ ํ๋ ๋ฐฉ์์ด๋ค. ์ด๋ฅผ ํตํด UDP๋ฅผ ์ฌ์ฉํ์ฌ๋ ์ด์ ํ ๋คํธ์ํฌ ํ๊ฒฝ์์๋ ๋ฎ์ ํจํท ์์ค๋ฅ ์ ๋ณด์ธ๋ค.
๐
'๐ CS > ๐ Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] ๋คํธ์ํฌ ๊ธฐ๊ธฐ (0) | 2023.07.11 |
---|---|
[Network] TCP ์ฐ๊ฒฐ ๋ฐ ์ฐ๊ฒฐํด์ ๊ณผ์ (3-way handshake / 4-way handshake) (0) | 2023.07.11 |
[Network] TCP vs UDP (0) | 2023.07.10 |
[Network] ๋คํธ์ํฌ ๊ณ์ธต ๊ตฌ์กฐ (OSI 7๊ณ์ธต, TCP/IP 4๊ณ์ธต) (0) | 2023.07.10 |
[Network] ๋คํธ์ํฌ ๊ธฐ์ด (์ฉ์ด, ๋ถ๋ฅ, ํ ํด๋ก์ง) (0) | 2023.07.06 |
HTTP
HTTP
(Hyper Text Transfer Protocol)๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํต์ ๊ท์ฝ์ด๋ค. ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต
์์ ๋์ํ๊ณ ์น ์๋น์ค ํต์ ์ ์ฌ์ฉ๋๋ค. HTTP/1.0
๋ถํฐ HTTP/3
๊น์ง ๋ฐ์ ํด ์๋ค.
- ๋ฌด์ํ์ฑ(stateless)
- HTTP๋ ์์ฒญ์ ๋ํ ์ํ๋ฅผ ๊ฐ์ง์ง ์์
- ๊ฐ ์์ฒญ์ ๋ ๋ฆฝ์ โ ์์ฒญ ๊ฐ์ ์๋ก ์ํฅ ์ฃผ๊ณ ๋ฐ์ง ์์
- ์ํ(๋ก๊ทธ์ธ ์ ๋ณด ๋ฑ)๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ธ์ ์ด๋ ์ฟ ํค ์ฌ์ฉ - ๋น์ฐ๊ฒฐ์ฑ(Connectionless)
- ์์ฒญ์ ์ฃผ๊ณ ๋ฐ์ ๋๋ง ์ฐ๊ฒฐ์ ์ ์งํ๊ณ ์ ์ก์ด ๋๋๋ฉด ์ฐ๊ฒฐ ๋๊น - ์๋ฒ-ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ
- ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๋ ์น๋ธ๋ผ์ฐ์
- ์๋ฒ๋ ์์ฒญ ๋์์ธ ์๋ฒ ์ปดํจํฐ ์๋ฏธ
๐HTTP/1.0
ํ ์ฐ๊ฒฐ๋น ํ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค. ์๋ฒ๋ก๋ถํฐ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ง๋ค TCP ์ฐ๊ฒฐ(3-way handshake)๊ณผ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ RTT๊ฐ ์ฆ๊ฐํ๋ค๋ ๋จ์ ์ด ์๋ค.
๐ก RTT (Round Trip Time)
- ์ง์ญํ๋ฉด โ์๋ณต ์๊ฐโ์ด๋ผ๋ ์๋ฏธ
- ์ธํฐ๋ท์์์ ํจํท์ด ์ก์ ์ง์ ๋ชฉ์ ์ง ์ฌ์ด ์๋ณตํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋งํ๋ค.
(ํจํท ์๋ณต ์๊ฐ)

RTT ์ฆ๊ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
๋งค๋ฒ ์ฐ๊ฒฐํ ๋๋ง๊ฐ RTT๊ฐ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ถ๋ด์ด ๋ง์ด ๊ฐ๊ณ ์ฌ์ฉ์ ์๋ต ์๊ฐ์ด ๊ธธ์ด์ง๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ฏธ์ง ์คํ๋ฆฌํ
, ์ฝ๋ ์์ถ
, ์ด๋ฏธ์ง Base64 ์ธ์ฝ๋ฉ
์ ์ฌ์ฉํ๋ค.
์ด๋ฏธ์ง ์คํ๋ฆฌํ (์ด๋ฏธ์ง ์คํ๋ผ์ดํธ)
์ด๋ฏธ์ง ์คํ๋ผ์ดํธ๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ์ด ๊ธฐ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ํ๋์ ์ด๋ฏธ์ง๋ก ํฉ์ณ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ค. ํฉ์ณ ์๋ ํ๋์ ์ด๋ฏธ์ง๋ง ๋ค์ด๋ฐ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ํ ์ด๋ฏธ์ง๋ง ํ๋ฉด์ ํ์ํ๋ค. ์คํ๋ผ์ดํธ ์ด๋ฏธ์ง์์ ์ฌ์ฉํ ์ด๋ฏธ์ง์ ์ ํํ width
์ height
, position
๊ฐ์ ์ด์ฉํด ํ๋ฉด์ ํ์ํ๋ค.

์ฝ๋ ์์ถ
์ฝ๋์์ ๊ฐํ ๋ฌธ์, ๋น์นธ์ ์์ ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ์ต์ํํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค.
console.log('log1:'+txt);
if (true) {
var txt = 'text';
console.log('log2:'+txt);
}
console.log('log3:'+txt);
console.log('log1:'+txt);if(true){var txt='text';console.log('log2:'+txt)}console.log('log3:'+txt);
์ด๋ฏธ์ง Base64 ์ธ์ฝ๋ฉ
์ด๋ฏธ์ง ํ์ผ์ 64์ง๋ฒ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด๋ก ์ธ์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ฏธ์ง๊ฐ Base64๋ก ์ธ์ฝ๋ฉ ๋์ด ์์ผ๋ฉด ํด๋น ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ HTML ์ฝ๋ ๋ด์ ํฌํจ๋์ด ์๋ค. ๋ฐ๋ผ์ ์๋ฒ์ ์ด๋ฏธ์ง ํ์ผ์ ๋ฐ๋ก ์์ฒญํ์ฌ ํ์ผ๋ก ์ ์ฅํ ํ์๊ฐ ์์ด์ง๊ธฐ ๋๋ฌธ์ RTT๋ฅผ ์ค์ผ ์ ์๋ค. ํ์ง๋ง base64 ๋ฌธ์์ด๋ก ๋ณํํ ๊ฒฝ์ฐ ์ฝ 33%์ ํฌ๊ธฐ๊ฐ ๋ ์ปค์ง๋ค๋ ๋จ์ ์ด ์๋ค.
๐HTTP/1.1
HTTP/1.0์์ ๋ฐ์ ๋ ํํ๋ก, ๋งค๋ฒ TCP ์ฐ๊ฒฐ์ ํ์ง ์๊ณ ํ ๋ฒ TCP ์ด๊ธฐํ ์ดํ keep-alive
์ต์
์ ํตํด ์ฌ๋ฌ ๊ฐ์ ํ์ผ์ ์ก์์ ํ ์ ์๋ค. (keep-alive ํ์คํ๋์ด ๊ธฐ๋ณธ ์ต์
์ผ๋ก ์ค์ ) ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ํ ๋ฒ์ TCP 3-way handshake
๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ๋ค์๋ถํด ๋ฐ์ํ์ง ์๋๋ค.
ํ์ง๋ง ๋ฌธ์ ์์ ํฌํจ๋ ๋ค์์ ๋ฆฌ์์ค๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด ์์ฒญ ๊ฐ์์ ๋น๋กํด ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ง๋ค๋ ๋จ์ (HOL Blocking)์ด ์๋ค. ๋ํ, ํค๋์ ์ฟ ํค ๋ฑ ๋ง์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๊ณ ์์ถ๋์ง ์์ ๋ฌด๊ฒ๋ค.

๐ก HOL Blocking(Head Of Line Blocking)
๋คํธ์ํฌ์์ ๊ฐ์ ํ์ ์ฌ๋ฌ ํจํท์ด ์์ ๋, ์ฒซ ๋ฒ์งธ ํจํท์ ์ง์ฐ์๊ฐ์ด ๊ธธ์ด์ ธ ๋ฐ์ํ๋ ์ฑ๋ฅ ์ ํ ํ์์ ๋งํ๋ค.
๐ก keep-alive ์ต์
- ํ๋์ TCP ์ฐ๊ฒฐ์ ํ์ฉํด ์ฌ๋ฌ ๊ฐ์ HTTP ์์ฒญ ๋ฐ ์๋ต์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํด์ฃผ๋ ๊ธฐ๋ฒ
- ๊ธฐ๋ณธ์ ์ผ๋ก HTTP/1.0 ์ฐ๊ฒฐ์ ํ๋์ ์์ฒญ์ ์๋ตํ ๋๋ง๋ค close
- HTTP/1.1 ์ฐ๊ฒฐ์ keep-alive๋ก persistent connection ์ง์
close: ์์ ์ด ์๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ด ์ข ๋ฃ๋์ด์ผ ํจ์ ์๋ฏธ
keep-alive: ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋๊ณ ์ ํ๊ธฐ ์ ๊น์ง ์ฐ๊ฒฐ ์ง์
keep-alive๋?
๐HTTP/2
HTTP/2
๋ HTTP/1.x
๋ณด๋ค ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ ์๋ต ์๊ฐ์ ๋ ๋น ๋ฅด๊ฒ ํ ์ ์์ผ๋ฉฐ, ๋ฉํฐํ๋ ์ฑ
, ํค๋์์ถ
, ์๋ฒํธ์
, ์์ฒญ์ ์ฐ์ ์์ ์ฒ๋ฆฌ
๋ฑ์ ์ง์ํ๋ค. ๋ํ, HTTP/2
๋ HTTPS
์์์ ๋์ํ๋ค.
๋ฉํฐํ๋ ์ฑ
์ฌ๋ฌ ๊ฐ์ ์คํธ๋ฆผ์ ์ฌ์ฉํ์ฌ ์ก์์ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด๋ฅผ ํตํด ํน์ ์คํธ๋ฆผ์ ํจํท์ด ์์ค๋๋๋ผ๋ ํด๋น ์คํธ๋ฆผ์๋ง ์ํฅ์ ๋ฏธ์น๊ณ ๋๋จธ์ง ์คํธ๋ฆผ์ ์ ์์ ์ผ๋ก ๋์ํ ์ ์๋ค. ์ฝ๊ฒ ๋งํด ํด๋ผ์ด์ธํธ๊ฐ ํ๋์ Connection ์์์ ๋์์ ์ฌ๋ฌ request๋ฅผ ๋ณด๋ด๋ ๊ธฐ์ ์ ๋งํ๋ค.
HTTP/1.1
์์๋ parallel connection(๋ณ๋ ฌ ์ปค๋ฅ์
)์ ํตํด ๋์์ ์ฌ๋ฌ HTTP ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค.
ํ์ง๋ง ํ๋์ ์ฐ๊ฒฐ์ ํ๋์ ์์ฒญ๋ง ๋ณด๋ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋์์ ์ฌ๋ฌ ์์ฒญ์ ๋ณด๋ด๋๋ผ๋ ์์ฒญ๋ง๋ค TCP ์ฐ๊ฒฐ ๋ฐ ํด์ ์์
์ด ํ์ํ๋ค. ์ด์ ๋ฐํด ๋ฉํฐํ๋ ์ฑ์ persistence cennection(์ง์ ์ปค๋ฅ์
) ๋ฐฉ์์ ์ฌ์ฉํด ์ฐ๊ฒฐ๋ ์ํ์์ ์ฐ๊ฒฐ ํด์ ์์ด ๋์ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค. ์ด๋ฅผ ํตํด HTTP/1.x
์์ ๋ฐ์ํ๋ HOL Blocking ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.


ํค๋ ์์ถ (HPACK)
HTTP/1.x
์์ ํฌ๊ธฐ๊ฐ ํฐ ๋ฌด๊ฑฐ์ด ํค๋๋ฅผ HTTP/2
์์๋ ํค๋ ์์ถ์ ํตํด ํด๊ฒฐํ๋ค. ํํ๋ง ์ฝ๋ฉ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ HPACK
์์ถ ํ์์ ์ฌ์ฉํ๋ค.
๐ก ํํ๋ง ์ฝ๋ฉ
๋ฌธ์์ด์ ๋ฌธ์ ๋จ์๋ก ์ชผ๊ฐ ๋น๋์๋ฅผ ์ธ์ด ๋น๋๊ฐ ๋์ ์ ๋ณด๋ ์ ์ ๋นํธ ์๋กค ์ฌ์ฉํ์ฌ ํํํ๊ณ , ๋น๋๊ฐ ๋ฎ์ ์ ๋ณด๋ ๋นํธ ์๋ฅผ ๋ง์ด ์ฌ์ฉํ์ฌ ํํํ๋ค. ์ ์ฒด ๋ฐ์ดํฐ์ ํํ์ ํ์ํ ๋นํธ์์ด ์ค์ด๋ ๋ค.
ํํ๋ง ์ฝ๋ฉ
์๋ฒ ํธ์
์ด์ ๋ฒ์ ์ HTTP์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํด์ผ๋ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์์๋ค. ํ์ง๋ง HTTP/2
์์๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์์ด ์๋ฒ๊ฐ ๋ฐ๋ก ๋ฆฌ์์ค๋ฅผ ํธ์ํ ์ ์๋ค.
๋ณดํต html ํ์ผ ์์ css๋ js ํ์ผ์ด ํฌํจ๋๋๋ฐ, html์ ์ฝ์ผ๋ฉด์ ์์ ๋ค์ด์๋ ํ์ํ ํ์ผ์ ์๋ฒ์์ ํธ์ํด ํด๋ผ์ด์ธํธ์๊ฒ ๋จผ์ ์ค ์ ์๋ค.

๐HTTP/3
TCP ์์์ ๋์ํ๋ ์ด์ ๋ฒ์ ๋ค๊ณผ ๋ฌ๋ฆฌ QUIC ๊ณ์ธต ์์์ UDP ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค. ๋ํ HTTP/2์ ์ฅ์ ์ธ ๋ฉํฐํ๋ ์ฑ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๊ธฐ ์ฐ๊ฒฐ ์ค์ ์ ์ง์ฐ ์๊ฐ ๊ฐ์๋ผ๋ ์ฅ์ ์ด ์๋ค.

์ด๊ธฐ ์ฐ๊ฒฐ ์ค์ ์ ์ง์ฐ ๊ฐ์
QUIC๋ TCP๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ TCP ์ฐ๊ฒฐ ๊ณผ์ ์ธ 3-way handshake ๊ณผ์ ์ ๊ฑฐ์น์ง ์์๋ ๋๋ค. ์ฒซ ์ฐ๊ฒฐ ์ค์ ์์ 1-RTT๋ง ์์๋๋ฉฐ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ํธ๋ฅผ ํ ๋ฒ ์ฃผ๊ณ , ์๋ฒ๋ ๊ทธ์ ๋ํ ์๋ต๋ง ํ๋ฉด ๋ฐ๋ก ๋ณธ ํต์ ์ ์์ํ ์ ์๋ค.
์๋ฐฉํฅ ์ค๋ฅ ์์ ๋ฉ์ปค๋์ฆ
QUIC๋ ์๋ฐฉํฅ ์ค๋ฅ ์์ ๋ฉ์ปค๋์ฆ(FEC:Forword Error Correction)์ด ์ ์ฉ๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ ์ ์กํ ํจํท์ด ์์ค๋์๋ค๋ฉด, ์์ ์ธก์์ ์๋ฌ๋ฅผ ๊ฒ์ถํ๊ณ ์์ ํ๋ ๋ฐฉ์์ด๋ค. ์ด๋ฅผ ํตํด UDP๋ฅผ ์ฌ์ฉํ์ฌ๋ ์ด์ ํ ๋คํธ์ํฌ ํ๊ฒฝ์์๋ ๋ฎ์ ํจํท ์์ค๋ฅ ์ ๋ณด์ธ๋ค.
๐
'๐ CS > ๐ Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] ๋คํธ์ํฌ ๊ธฐ๊ธฐ (0) | 2023.07.11 |
---|---|
[Network] TCP ์ฐ๊ฒฐ ๋ฐ ์ฐ๊ฒฐํด์ ๊ณผ์ (3-way handshake / 4-way handshake) (0) | 2023.07.11 |
[Network] TCP vs UDP (0) | 2023.07.10 |
[Network] ๋คํธ์ํฌ ๊ณ์ธต ๊ตฌ์กฐ (OSI 7๊ณ์ธต, TCP/IP 4๊ณ์ธต) (0) | 2023.07.10 |
[Network] ๋คํธ์ํฌ ๊ธฐ์ด (์ฉ์ด, ๋ถ๋ฅ, ํ ํด๋ก์ง) (0) | 2023.07.06 |