์ ๊ฐ ๋ณด๋ ค๊ณ ๋ง๋ค์์ต๋๋ค. ๊ณ์ ๋ด์ฉ์ด ์ถ๊ฐ๋ ์์ ์ ๋๋ค
# TCP, UDP
TCP๋ ์ ๋ขฐ์ฑ์๋ ์ฐ๊ฒฐ์งํฅ ํ๋กํ ์ฝ๋ก ๋ฐ์ดํฐ ํจํท์ ์์๋ฅผ ๋ณด์ฅํ๋ฉฐ ์๋ฌ ์ ์ด, ํผ์ก ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ๋ฐ๋ฉด UDP๋ ๋น์ฐ๊ฒฐ์ฑ ํ๋กํ ์ฝ๋ก ๋ฐ์ดํฐ๊ฐ ์ ๋์ฐฉํ๋์ง(ํจํท๋๋ฝ์ ๊ณ ๋ คํ์ง์๋๋ค)์ ๋ํ ์ฒดํฌ์ฌ๋ง ์์ ๋ฟ ํจํท์์๋ฅผ ๋ณด์ฅํ์ง์๊ณ , ์๋ฌ์ ์ด, ํผ์ก ์ ์ด๊ฐ์ ์ถ๊ฐ๊ธฐ๋ฅ์ด ์๋ค.
๊ทธ ๋์ ์ด๋ฐ ํ์ธ๊ณผ์ ์ด ์์ผ๋ฏ๋ก TCP๋ณด๋ค UDP๋ ๋น ๋ฅธ ์๋๊ฐ ์ฅ์ ์ด๋ค. TCP๋ ์ฐ๊ฒฐ์์ ์ฑ์ด ์ค์ํ ์๋น์ค, ์๋ฅผ ๋ค์ด ์น๊ตฌ์ ์ฑํ ์ ํ๊ฑฐ๋, ์ด๋ฉ์ผ์ ๋ณด๋ด๊ฑฐ๋, ์จ๋ผ์ธ ๋์์์ ๋ณด๊ฑฐ๋, ์น์ ๊ฒ์ํ ๋ ์ ์ฌ์ฉํ๊ณ , UDP๋ ์คํธ๋ฆฌ๋ฐ์ด๋ ๊ฒ์๊ณผ ๊ฐ์ด ๋น ๋ฅธ ์ ์ก์๋๊ฐ ํ์ํ ์๋น์ค์ ์ฌ์ฉํ๋ค.
์ฟ ํค์ ์ธ์ ์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
# ์ฟ ํค, ์ธ์
์ํ๋ฅผ ์ ์ฅ ์ฉ๋๋ก ์ฟ ํค, ์ธ์ ์ ์ฌ์ฉํ๋ค๋ ๊ณตํต์ ์ด ์๋ค.
์ฟ ํค๋ ํด๋ผ์ด์ธํธ ๋ก์ปฌ(๋ธ๋ผ์ฐ์ )์ ์ ์ฅ๋๋ ํ์ผ๋ก ํด๋ผ์ด์ธํธ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ค. ์ด๊ฑฐ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ request header์ ๋ฃ์ด์ ์๋ฒ์ ์ ์กํ๋ค. ์ด๋ ์ฟ ํค ๋ง๋ฃ ์๊ฐ์ ์ด์ฉํด์ ์๋ฒ์ ์ฟ ํค ์ ํจ์ฑ์ ์ ๊ฐํ๊ณ , ์ํ์ ๋ณด๋ฅผ ๊ฐฑ์ ํ ํ์๊ฐ ์๋ค๋ฉด ์๋ฒ์์ ๊ฐฑ์ ํด์ค๋ค.
์ธ์ ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๋ฒ์ ๋๋ค. ์๋ฒ์์ ํด๋ผ์ด์ธํธ์๊ฒ ์ธ์ ID๋ฅผ ๋ถ์ฌํด, ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ฑํ ๋์ด์์ ๋ ์ธ์ฆ์ํ๋ฅผ ์ ์ง์ํจ๋ค. ์ฌ์ฉ์๊ฐ ๋ง์์ง์๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ๋ง์์ง๋ค๋ ํน์ง์ด ์๋ค.
๋ณด์ ์ ์ฅ์ ์ด ์ธ์ ์ ์๋ค. ๊ทธ๋ผ ์ ์ฟ ํค๋ฅผ ์ธ๊น?
1. ์ฟ ํค์ ์ ๋ณด๊ฐ ์์ด์ ์๋ฒ ์์ฒญ์์ ๋ฐ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณ๋ค๋ฅธ ์ธ์ฆ์ ์ฐจ ์์ด ๊ฐ๋ฅํ๋ค. -> ๋น ๋ฅด๋ค.
2. ๋ง๋ฃ๊ธฐ๊ฐ์ด ์ฟ ํค์ ์กด์ฌํด์, ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ฟ ํค๋ฅผ ๊ณต์ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์๊ธฐ๋ ํ๋ค.
๋ฒ ์คํ ๊ธ๋ก๋ฒ ๊ธฐ์ ๋ธ๋ก๊ทธ
HTTP์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋คํธ์ํฌ ์ฅ์น ๊ฐ ํต์ ์ ์ํด ์ค๊ณ๋ ์์ฉ ๊ณ์ธต ํ๋กํ ์ฝ์ด๋ค. HTTP๋ฒ์ , hostname, method, ์์ฒญํค๋, content ๋ณธ๋ฌธ์ผ๋ก ๋ฉ์์ง๊ฐ ๊ตฌ์ฑ๋์ด์๊ณ ์ด๊ฑธ ์ฃผ๊ณ ๋ฐ๋๋ค. ๋ ์ํ ๋น์ ์ฅ ํ๋กํ ์ฝ์ด๋ผ ๊ฐ ๋ช ๋ น์ ๋ค๋ฅธ ๋ช ๋ น๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ค. TCP ์ปค๋ฅ์ ์ ์ด์ด์ ๊ทธ ์ปค๋ฅ์ ์ ์ฌ๋ฌ HTTP ์์ฒญ/์๋ต์ ์ฃผ๊ณ ๋ฐ๋๋ค.
OSI 7๊ณ์ธต์ ๋ํด ๊ฐ๋จํ๊ฒ ์ด์ผ๊ธฐ ํด์ฃผ์ธ์ & ๊ฐ ๊ณ์ธต์ด ํ๋ ์ผ์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํด์ฃผ์ธ์
์์ดํ ์ปดํจํฐ ์์คํ ์ด ์๋ก ํต์ ํ ์ ์๊ฒ ํด์ฃผ๋ ํ์ค ํ๋กํ ์ฝ ๋ชจ๋ธ์ด๊ณ ๊ณ์ธต๊ฐ encapsulation, decapsulation์ด ์ด๋ค์ง๋ค.
- 7๊ณ์ธต์ ์ฌ์ฉ์์ ์ง์ ์ํธ์์ฉํ๋ ์ ์ผํ ๊ณ์ธต์ด๋ค. ์๋น์ค ์ํํธ์จ์ด๋ ๋ชจ๋ 7๊ณ์ธต์ ์์กดํ๋ค.
- 6๊ณ์ธต์ 7๊ณ์ธต์์ ๋ฐ์ดํฐ๋ฅผ ์ธ ์ ์๊ฒ ์ค๋นํด์ฃผ๋ ๊ณ์ธต์ผ๋ก, ์ํธํ, ์์ถ, ๋ฐ์ดํฐ ๋ณํ์ด ์ผ์ด๋๋ ๊ณ์ธต์ด๋ค. ์์ ์์๊ฒ ์ค ๋ decodingํด์ ์ฃผ๊ฑฐ๋, ์ก์ ์์๊ฒ ๋ฐ์ encodingํ๋ ์ญํ ์ ๋ด๋นํ๋ค.
- 5๊ณ์ธต์ ํต์ ์ ์์, ์ข ๋ฃ๋ฅผ ๋ด๋นํ๋ค. ๋ณดํต ํต์ ์ด ์์๋๊ณ ์ข ๋ฃ๋๊ธฐ๊น์ง์ ์๊ฐ์ ์ธ์ ์ด๋ผ๊ณ ํ๋ค.
- 4๊ณ์ธต์ ๋ ๊ธฐ๊ธฐ ๊ฐ End to End ํต์ ์ ๋ด๋นํ๋ค. ์ธ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ธ๊ทธ๋จผํธ๋ก ๋๋๋ค. TCP, UDP๊ฐ ์ฌ๊ธฐ ์ํ๋ค.
- 3๊ณ์ธต์ ๋คํธ์ํฌ ๊ณ์ธต์ผ๋ก ๋์ผ ๋คํธ์ํฌ์ผ ๋๋ ํ์์๊ณ , ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์ ํจํท์ผ๋ก ๋๋ ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฌ๋ค. ๋ผ์ฐํ ์ด ์ฌ๊ธฐ์ ์ด๋ค์ง๋ค.
- 2๊ณ์ธต์ ๋ฐ์ดํฐ ์ฐ๊ฒฐ ๊ณ์ธต์ผ๋ก ๋์ผ ๋คํธ์ํฌ์ ์๋ ๋ ์ฅ์น๊ฐ ํต์ ์ ์ฉ์ดํ๊ฒ ํ๋ค. ๋จ์๋ ํ๋ ์์ด๊ณ ์ธํธ๋ผ ๋คํธ์ํฌ ํต์ ์์ ํ๋ฆ์ ์ด, ์ค๋ฅ์ ์ด๋ฅผ ๋ด๋นํ๋ค. 4๊ณ์ธต์์๋ ํ๋ฆ์ ์ด, ์ค๋ฅ์ ์ด๊ฐ ์๋๋ฐ, ์ด๊ฑด ๋คํธ์ํฌ ๊ฐ ํต์ ์์ ๋ณด์ฅ๋๋ค.
- 1๊ณ์ธต์ ๋ฌผ๋ฆฌ ์ฅ๋น๋ฅผ ์ฌ์ฉํ๋ค. ๋จ์๋ ๋นํธ ์คํธ๋ฆผ์ด๋ค.
DNS๊ฐ ๋ฌด์์ด๋ฉฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ค๋ช ํด์ฃผ์ธ์
HTTP ํต์ ์์๋ IP์ฃผ์๋ฅผ ์ฐพ์์ ํต์ ํด์ผ๋๋๋ฐ, IP์ฃผ์๋ฅผ ๋ชจ๋ ๊ธฐ์ตํ ํ์์์ด ์น ์ฃผ์(domain name)๋ง ๊ฐ์ง๊ณ ์ด๊ฑธ ํ ์ ์๊ฒ ๋ง๋ค์ด ์ฃผ๋๊ฒ DNS ์์คํ ์ด๋ค. ๋๋ฉ์ธ ๋ค์์ IP์ฃผ์์ ๋งคํ์์ผ ๋๋ฉ์ธ ๋ค์์ ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญ๋ฐ์ผ๋ฉด ์๋ตํ ๋ ๋ณํ๋ IP์ฃผ์์ ์์ฒญํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
3-Way Handshake ์ 4-Way Handshake์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์
# 3-Way Handshake ์ 4-Way Handshake
TCP connection์ ์ด๊ณ ๋ซ์๋์ ํต์ ๋์ ๋ฐฉ์์ด๋ค.
์ผ์ชฝ์ด 3-way, ์ค๋ฅธ์ชฝ์ด 4-way๋ค. 3-way๋ ์ธ์ ์ปค๋ฅ์ ์ ์ํ ๊ฒ์ด๊ณ , 4-way๋ ์ธ์ ์ข ๋ฃ๋ฅผ ์ํ handshake๋ค.
ํ๋๊ทธ ์ ๋ณด๋ฅผ ๋จผ์ ๋ณด์
- SYN(Synchronize ์์๋ฒํธ)
- ์์๋ฒํธ๋ฅผ ์ค์ ํด์ ์ธ์ ์ ์ฐ๊ฒฐํ๋๋ฐ ์ฌ์ฉํ๋ค. ์ปค๋ฅ์ ์ ์์ฑํ ๋ ์ฌ์ฉํ๋ flag
- ACK
- ์๋ตํ์ธ์ผ๋ก, ์๋ฒ๊ฐ ์์ฒญ์ ๋ฐ๊ณ , ์ ๋ฐ์๋ค๊ณ ๋ถ์ฌ ๋ณด๋ด๋ flag๋ค. 3-way ๊ธฐ์ค ์ก์ ์๋ ์๋ฒ์ SYN+ACK๋ฅผ ๋ฐ์์ผ ์ปค๋ฅ์ ์ด ์ ํจํ ๊ฒ์ด๋ค. ์๋ฒ๋ SYN+ACK๋ฅผ ๋ณด๋ด๊ณ , ACK๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
- SYN+ACK๋ฅผ ๋ฐ์ ์ก์ ์๋ ์๋ฒํํ ACK๋ฅผ ๋ณด๋ด๊ณ , ์ด๋ฌ๋ฉด ์ปค๋ฅ์ ์ด ์ฐ๊ฒฐ๋๋ค.
- FIN
- ์ฐ๊ฒฐํด์ ํ๋ flag๋ก ์ธ์ ์ฐ๊ฒฐ์ ๋์ ๋ ์ฌ์ฉํ๋ค. 3-way์์๋ ์ฌ์ฉํ์ง์๋๋ค.
์ธ์ ์ ์ข ๋ฃํ ๋๋ FIN์ ๋จผ์ ๋ณด๋ธ๋ค.
- ์ก์ ์๋ ์ฐ๊ฒฐ์ ๋๊ฒ ๋ค๋ ์๋ฏธ๋ก FIN์ ๋ณด๋ด๊ณ , FIN-WAIT-1์ํ๋ก ๋จธ๋ฌด๋ฅธ๋ค.
- ์๋ฒ๋ FIN์ ๋ฐ์ผ๋ฉด ACK๋ฅผ ๋ณด๋ธ๋ค์ CLOSE-WAIT์ํ๋ก ๋ค์ด๊ฐ๊ณ ,
- CLOSE ์ค๋น๊ฐ ๋ ๋ค ์๋ฒ๊ฐ ๋ณด๋ธ ACK๋ฅผ ์ก์ ์๊ฐ ๋ฐ์ผ๋ฉด ์๋ฒ๊ฐ ๋๋๊ฑธ ๊ฐ์งํ๊ธฐ ์ํด FIN-WAIT-2์ํ๋ก ๋ค์ด๊ฐ๋ค. ์๋ฒ๋ FIN์ ๋ณด๋ด๊ณ LAST-ACK์ํ๋ก ๋์ด๊ฐ๋ค.
- ์ก์ ์๊ฐ FIN์ ๋ฐ๊ณ ์๋ฒ๊ฐ ๋๋๋ ๊ฑธ ํ์ธํ๋ค๊ณ ACK๋ฅผ ๋ณด๋ธ๋ค. ACK๋ฅผ ๋ณด๋ธ ๋ค์ ์ก์ ์๋ Time-wait๋ก ๋ค์ด๊ฐ๋ค๊ฐ ์ฐ๊ฒฐ์ ๋๋๋ค.(๋ฐ๋๋ฝ ๋ง๊ธฐ์ํ ์ง์ฐ) ACK๋ฅผ ๋ฐ์ ์๋ฒ๋ ์ด์ ์๋ฒ๋ฅผ ์์ ํ ๋ซ๋๋ค.
์ฐ๊ฒฐ ์ค์ ๊ณผ์ ๊ณผ ์ข ๋ฃ๊ณผ์ ์ด ์ฐจ์ด๋๋ ์ด์ ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ผ์ ๋ค ๋ง์ณ๋ ์๋ฒ์์ ๋จ์ ์ผ์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ์ผ์ด ๋๋ ์ง ํ์ธํ๊ธฐ ์ํด FIN์ด ํฌํจ๋ 4๋จ๊ณ๋ก ์ด๋ค์ ธ์๋ค.
XSS์ ๋ํด์ ์ค๋ช ํด ์ฃผ์ธ์
Cross Site Scription์ผ๋ก ์คํฌ๋ฆฝํธ ์ฝ์ ๊ณต๊ฒฉ์ด๋ค.
์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ๋ฉด ์ด๊ฑธ ์ด๊ฒ๋ ์ฌ์ฉ์์ ์ฟ ํค๋ฅผ ํ์ทจ(์ฟ ํค-ํ์ด์ฌํน) ํ ์ ์๊ณ ์ธ์ ์ผ๋ก ํ๋๋ผ๋ ์ธ์ ID๋ฅผ ํ์ทจ ํ ์ ์๊ธฐ๋๋ฌธ์ ์ด๊ฑธ ํตํด ์ฌ์ฉ์์ธ์ฒ ๋ก๊ทธ์ธํ ์ ์๊ฒ๋๋ค.
Injection ๊ณต๊ฒฉ์ค์ ํ๋์ด๊ธฐ ๋๋ฌธ์ ์น ๋ฐฉํ๋ฒฝ์ ์ด์ฉํ๋ฉด ๋ฐฉ์ด๊ฐ๋ฅํ๋ค.
Get๊ณผ Post์ ์ฐจ์ด๊ฐ ๋ญ๊ฐ์?
# GET, POST
GET์ ์๋ต์ผ๋ก ์ ๋ณด๋ฅผ ๊ธฐ๋ํ๊ณ , POST๋ ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ๋ณด๋ฅผ ๋ณธ๋ฌธ์ ๋ด์ ์ ์ถํ๊ณ ์๋ ๊ฒ์ ๋ํ๋ธ๋ค. ์ ๋ณด๋ฅผ ๋ด์์ ๋ณด๋ด์ผ๋ ๊ฒฝ์ฐ, GET์ ๊ฒฝ์ฐ์๋ querystring์ผ๋ก ๋ถ์ด์ url์ ์ ๋ณด๊ฐ ๋ ธ์ถ๋๋๋ฐ, post๋ ๋ณธ๋ฌธ์ ๋ด๊ธฐ๊ธฐ ๋๋ฌธ์ url์ ์์ฒญ์ ๋ณด๊ฐ ๋ ธ์ถ๋์ง ์๋๋ค๋ ๋ณด์ ์ ์ด์ ์ด ์๋ค.
์ฃผ์์ฐฝ์ [naver.com]์ ์น๋ฉด ์ผ์ด๋๋ ๊ณผ์ ์ ์ค๋ช ํด์ฃผ์ธ์
- ์ฌ์ฉ์์ ์์ฒญ์ด ISP์ ์ฐ๊ฒฐ๋ DNSํด์๊ธฐ๋ก ๋ผ์ฐํ ๋๊ณ , DNS ํด์๊ธฐ์์ DNS ๋ฃจํธ ๋ค์์๋ฒ๋ก ์ ๋ฌํ๋ค.
- ๋ฃจํธ ๋ค์์๋ฒ๋ TLD ๋ค์์๋ฒ๋ฅผ ๋ฐํํ๊ณ , DNS ํด์๊ธฐ๊ฐ ๋ค์ TLD ๋ค์์๋ฒ์ ์์ฒญ์ ์ ๋ฌํ๋ค.
- TLD๋ค์์๋ฒ๊ฐ ์ด์ IP์ฃผ์๋ฅผ ๋ฐํํด์ฃผ๋ ๋ค์์๋ฒ์ ์ ๊ทผํด์ DNS ํด์๊ธฐํํ ๋๊ฒจ์ฃผ๊ณ
- IP์ฃผ์๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์์ ์ค์ ์น์๋ฒ์ ์์ฒญํด ์๋ต์ ๋ฐ๋๋ค.
๊ฐ๋จํ๊ฒ๋ ์ด๋ ๊ฒ ์์ฝํ ์ ์์ ๊ฒ ๊ฐ๋ค. ์ข ๋ ์์ธํ๊ฒ ์ ๊ทผํ๋ฉด ์๋์ ๊ฐ๋ค.
- ์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์คํํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์ด์์ฒด์ ์ ๋คํธ์ํฌ ์คํ์ ํตํด ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋๊ณ ์ฌ์ฉ์๋ ๋ก์ปฌ IP ์ฃผ์์ ํฌํธ๋ฅผ ํ ๋น๋ฐ๋๋ค.
- ์ฃผ์์ฐฝ์ "naver.com"์ ์ ๋ ฅํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ๋ค์ด๋ฒ ์๋ฒ๋ก ํน์ ๋ฆฌ์์ค HTTP GET ์์ฒญ์ ์์ฑํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋จผ์ ์์ ์ DNS ์บ์๋ฅผ ํ์ธํ์ฌ ๋ค์ด๋ฒ IP ์ฃผ์๋ฅผ ์ฐพ๋๋ค. ์บ์์ ํด๋น ์ ๋ณด๊ฐ ์๋ ๊ฒฝ์ฐ, ์ด์์ฒด์ ์ DNS resolver์๊ฒ DNS ์กฐํ๋ฅผ ์์ฒญํฉ๋๋ค.(Socket ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ Resolver)
- DNS resolver๋ ๋ฃจํธ DNS ์๋ฒ, TLD ๋ค์์๋ฒ, ๊ทธ๋ฆฌ๊ณ ๋ค์ด๋ฒ์ ๋๋ฉ์ธ ์๋ฒ ์์ผ๋ก DNS ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ค. ๋ค์ด๋ฒ ๋๋ฉ์ธ ์๋ฒ๊ฐ ๋ค์ด๋ฒ ์๋ฒ์ IP์ฃผ์๋ฅผ ๋ฐํํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋ฐ์ ๋ค์ด๋ฒ ์๋ฒ์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ TCP ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ , HTTP GET ์์ฒญ ๋ฉ์์ง๋ฅผ ํด๋น ์๋ฒ๋ก ๋ณด๋ธ๋ค.
- ๋ค์ด๋ฒ ์๋ฒ๋ ์์ฒญ์ ๋ฐ๊ณ , ์์ฒญ๋ฐ์ ๋ฆฌ์์ค๋ฅผ ์ฐพ์์ HTTP ์๋ต ๋ฉ์์ง๋ก ์๋ตํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋ฐ์ ์๋ต์ ์ฒ๋ฆฌํ์ฌ ํ๋ฉด์ ํ์ํ๊ธฐ ์ํด HTML ๋ฌธ์๋ฅผ ํ์ฑํ๊ณ ๋ ๋๋งํ๋ค. ํ์ํ ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ, ์ถ๊ฐ์ ์ธ HTTP ์์ฒญ์ ๋ณด๋ธ๋ค.
# ๋ฃจํธ ๋ค์์๋ฒ?
๋ฃจํธ ์๋ฒ๋ ๋๋ฉ์ธ ์ด๋ฆ์ ํฌํจํ ์ฌ๊ท ํ์ธ์์ ์ฟผ๋ฆฌ๋ฅผ ์์ฉํ๋ฉฐ ๋ฃจํธ ๋ค์์๋ฒ๋ ํด๋น ๋๋ฉ์ธ์ ํ์ฅ์(.com,. net, .org, etc.)์ ๋ฐ๋ผ ์ฌ๊ท ํ์ธ์๋ฅผ TLD ๋ค์์๋ฒ์ ๋ณด๋ด ์๋ตํ๋ค.
Stateful Service๊ณผ Stateless Service๊ฐ ๋ฌด์์ธ์ง?
Stateful
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ก์์ ์ ํ๋ฉฐ ๋จ๊ณ๋ณ ๊ณผ์ ์ ์งํํ๋๋ฐ ์์ด, ์๋ฒ์์ ํด๋ผ์ด์ธํธ๊ฐ ์ด์ ๋จ๊ณ์์ ์ ๊ณตํ ๊ฐ์ ์ ์ฅํ๊ณ ๋ค์ ๋จ๊ณ์์๋ ์ ์ฅํ ์ํ๋ฅผ ์๋ฏธํ๋ค.
- ๋ํ์ ์ธ ํ๋กํ ์ฝ
- TCP์ 3-way handshaking
- ๋ฌธ์ ์
- ์๋ก์ด ์๋ฒ์ ์ ์ํ๋ฉด ์ด์ ์๋ฒ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ํ๊ฐ์ ๊ฐ์ง๊ณ ์์ง ์์ ๋ฌธ์ ๊ฐ ์กด์ฌํ๋ค.
Stateless
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ํด๋น ๊ตฌ์กฐ์์ ์๋ฒ๋ ์์ฒญ์ด ์ค๋ฉด ์๋ต์ ๋ณด๋ด๋ ์ญํ ๋ง ์ํํ๊ณ ์ํ ๊ด๋ฆฌ๋ ํด๋ผ์ด์ธํธ๊ฐ ํ๋ค.
- ๋ํ์ ์ธ ํ๋กํ ์ฝ
- UDP
- HTTP
- ๋ฌธ์ ์
- ์๋ฒ์ ์์ฒญ์ ์ํ์ ๋ณด๋ฅผ ๊ฐ์ด ์ค์ผํ๊ธฐ ๋๋ฌธ์ Stateful ๋ณด๋ค ๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ์๋ชจ๋๋ค
Web Server์ Web Application Server์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์
# Web Server
์น ์๋ฒ๋ ๋จ์ํ HTTP ์์ฒญ์ ๋ฐ์ ์ ์ ์ฝํ ์ธ ๋ก ์๋ตํ๋ ์ญํ ์ ํ๋ค. ๋์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์น ์๋ฒ ์์ฒด์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ์ ๋ฌด๋ฆฌ๊ฐ ์๋ค. ex) Apache, Nginx
# WAS(Web Application Server)
HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ ๊ฒ์ ๋์ผํ๋ค. ์น์๋ฒ๊ฐ ํ๋ ์ผ์ ํฌํจํด์ ๋ ๋ง์ ์ผ์ ํ ์ ์๋ค. Server-Side code๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด์ ๋์ ์ธ ์ฝํ ์ธ ๋ ์ ๊ณตํ ์ ์๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์๋ค. ex) Tomcat
๊ทธ๋ผ ๋ ๋ง์ ์ผ์ ํ ์ ์๋ WAS๋ง ์ฐ๋ฉด ๋์ง์๋ ์ถ์ง๋ง ํจ์จ์ ์๊ฐํด๋ณด๋ฉด ์ ์ ์ฝํ ์ธ ๋ง ํ์ํ ๋ Web Server๋ง ์ฐ๋๊ฒ ๋ ์์ ์ ์ด๊ณ ๋น ๋ฅด๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๋ WAS๊ฐ ์ ์ ์ฝํ ์ธ ๋ ์ ๊ณตํ๋๋ก ์ผ์ ๋ ๋๊ฒจ์ฃผ๋ฉด ๋ถํ๊ฐ ๋ฐ์ํ ์๋ ์๊ธฐ ๋๋ฌธ์, ๋์ ์ฝํ ์ธ ์์ญ๋ง WAS๊ฐ ์ํํ๊ณ , ์ ์ ์ฝํ ์ธ ๋ WebServer์์ ์ ๊ณตํ๋๋ก ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ๋ ๊ฒ ์ข๋ค๊ณ ํ๋ค.
graph LR
A[Client] --> B[Web Server]
B --> C{WAS}
C --> D(DB)
๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๋ํด ๊ฐ๋จํ๊ฒ ์ค๋ช ํด์ฃผ์ธ์
๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๋ฆฌ์์ค ํ ์ ์ฒด์ ๋คํธ์ํฌ ํธ๋ํฝ์ ๊ท ๋ฑํ๊ฒ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ก๋๋ฐธ๋ฌ์ ์ฅ์น๋ฅผ ์ด์ฉํ๋ฉด ์ฌ์ฉ์ - ์๋ฒ๊ทธ๋ฃน ์ฌ์ด์ ์์นํด์ ๋ชจ๋ ๋ฆฌ์์ค ์๋ฒ๊ฐ ๋์ผํ๊ฒ ์ฌ์ฉ๋๋๋ก ํ ์ ์๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ฉ์ฑ, ํ์ฅ์ฑ, ๋ณด์, ์ฑ๋ฅ ๋ฉด์์ ํฅ์๋๋ค.
- ๋ก๋๋ฐธ๋ฐ์ฑ์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋์ค์ง ์ด์๋ฅผ ์ ์ดํ ์ ์๊ฒ๋๋ค(๋ณต๊ตฌ๊น์ง).
- ์ฌ๋ฌ ์๋ฒ ๊ฐ ๋คํธ์ํฌ ํธ๋ํฝ์ ๋๋ ์ ์์ด์ ํ ์๋ฒ์ ๋ณ๋ชฉํ์์ด ์ผ์ด๋์ง ์๋๋ก ์ ์ดํ ์ ์๋ค.
- ๋ก๋ ๋ฐธ๋ฐ์์ ๋ด์ฅ๋ ๋ณด์๊ธฐ๋ฅ์ ์ฌ์ฉํด์ DDoS๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.(ํธ๋ํฝ ๋ชจ๋ํฐ๋ง, ๊ณต๊ฒฉ ํธ๋ํฝ๋ ๋ก๋๋ฐธ๋ฐ์ฑํด์ ๊ณต๊ฒฉ์ ๋ํ ์ํฅ๋ ์ค์ฌ์ค๋ค.)
- ์๋ฒ ๊ฐ ๋ก๋๋ฅผ ๊ท ๋ฑํ๊ฒ ๋ฐฐํฌํ๊ธฐ ๋๋ฌธ์ ์ง๋ ฌ๋ก ์ ๋ฌํ๋ ๋ฐฉ์๋ณด๋ค ์์ฒญ์๊ฐ์ด ๋น ๋ฅด๋ค. (์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ํฅ์)
์ ์ ๋ก๋๋ฐธ๋ฐ์ฑ, ๋์ ๋ก๋๋ฐธ๋ฐ์ฑ์ผ๋ก ๋๋ ์ ์๊ณ ๊ฐ๊ฐ ์ฌ์ฉ๋๋ ๋ํ ์๊ณ ๋ฆฌ์ฆ์ ๋ผ์ด๋๋ก๋น, ์ต์์ฐ๊ฒฐ๋ฐฉ๋ฒ(ํ์ฑ ์ฐ๊ฒฐ์ด ๊ฐ์ฅ ์ ์ ์๋ฒ๋ก ํธ๋ํฝ์ ์ ์กํ๋ ๋ฐฉ์)์ด ์๋ค.
์์ ๊ทธ๋ฆผ์ ์๋ ๋ก๋๋ฐธ๋ฐ์๋ ์ํํธ์จ์ด ๋ก๋๋ฐธ๋ฐ์๋ก, ์ ์ด๊ฐ ์์ฃผ ์ ์ฐํ๋ค.
์๋ง์กด ๋ฌธ์ - ๋ก๋๋ฐธ๋ฐ์ฑ
CDN(Content Distribution Network)์ ๋ํด ์ค๋ช ํ๊ณ , CDN์๋น์ค ์์๋ฅผ ๋งํด๋ณด์ธ์.
CDN์ ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(์ฝํ ์ธ ๋ฐฐํฌ ๋คํธ์ํฌ)๋ก, ์น ํ์ด์ง ๋ก๋ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ํธ์ฐ๊ฒฐ๋ ์๋ฒ ๋คํธ์ํฌ๋ค.
# CDN์ ์ ํ์ํ ๊น?
์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ๋ฐฉ๋ฌธํด์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ฉด, ์๋ฒ ๋ฐ์ดํฐ๊ฐ ์ธํฐ๋ท์ ํตํด ์ด๋ํ๋๋ฐ ์ด ๋ ๋ฐ์ํ๋ ์ง์ฐ์๊ฐ์๋ ๋ฌผ๋ฆฌ์ ์ธ ๊ฑฐ๋ฆฌ๋ ํฌํจ๋๋ค. ์ผ๋ฐ ์น์ฌ์ดํธ ๋ฐ์ดํฐ๋ ๋น๊ต์ ๋น ๋ฅด๊ฒ ๋์ฐฉํ์ง๋ง, ์ด๋ฏธ์ง๋ ๋์์ ๊ฐ์ ๋์ฉ๋ ํ์ผ์ ์ด๋ฐ ์ง๋ฆฌ์ ์ธ ์์์ ์ํฅ์ ๋ง์ด ๋ฐ๊ธฐ๋๋ฌธ์ ์ฌ์ฉ์์ ๊ฐ๊น์ด CDN์ ํตํด ์ ๊ณต๋ฐ๋ ๊ฒ ํจ์ฌ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
ํด๋ผ์ด์ธํธ์ ์น์ฌ์ดํธ ์๋ฒ ์ฌ์ด์ ์ค๊ฐ ์๋ฒ๋ฅผ ๋๊ณ , ํด๋ผ์ด์ธํธ-์๋ฒ ํต์ ์ผ๋ถ๋ฅผ ๊ด๋ฆฌํ๋ฉด์ ์น ์๋ฒ์ ๊ด๋ จ๋ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ๋๋ ๊ฒ์ด๋ค.
์๋๋ฐฉ์์ ๋ํด ์ข ๋ ์์ธํ๊ฒ ์์๋ณด์.
์ฌ๋ฌ ์ง๋ฆฌ์ ์์น์ ์ ์์ง์ (POP(์บ์์๋ฒ - push - pull), CDN ์ฃ์ง ์๋ฒ ๊ทธ๋ฃน)์ ์ค์ ํด์ ๋ถ์ฐ์ํจ ๋คํธ์ํฌ๋ฅผ ํ๋ณดํ๊ณ , ์บ์ฑ, ๋์ ๊ฐ์ ๋ฐ ์ฃ์ง ๋ก์ง ๊ณ์ฐ์ ํตํด ์๋ํ๋ค. CDN์์ ์บ์ฑ์ ๋ถ์ฐ์ํจ ๋คํธ์ํฌ์ ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ฉฐ ์๋ ์์ฒด๋ ๊ธฐ์กด์ ์๋ ์บ์ฑ๊ณผ ๋์ผํ๋ค.
CDN์ ์ฌ์ฉํ๋ฉด ํฌ๊ฒ 4๊ฐ์ง ์ด์ ์ด ์๋ค.
- ํ์ด์ง ๋ก๋ ์๊ฐ ๋จ์ถ
ํ์ด์ง ๋ก๋ ์๊ฐ์ด ๋๋ฌด ๋๋ฆฌ๋ฉด ์ฌ์ฉ์๊ฐ ์ดํํ ์ ์๋ค(ํธ๋ํฝ ๊ฐ์๋ก ์ด์ด์ง๋ค.). CDN์ ๋ฐ์ก๋ฅ ์ ์ค์ฌ ์ดํ์จ์ ๋ฎ์ถฐ์ค๋ค. - ๋์ญํญ ๋น์ฉ ์ ๊ฐ
์บ์ฑ ๋ฐ ๊ธฐํ ์ต์ ํ๋ฅผ ํตํด CDN์ ๋ณธ ์๋ฒ๊ฐ ์ ๊ณตํด์ผ ํ๋ ๋ฐ์ดํฐ์ ์์ ์ค์ฌ ์น ์ฌ์ดํธ ์์ ์์ ํธ์คํ ๋น์ฉ์ ์ ๊ฐํด์ค๋ค. - ์ฝํ
์ธ ๊ฐ์ฉ์ฑ ์ ๊ณ
ํ ๋ฒ์ ๋๋ฌด ๋ง์ ๋ฐฉ๋ฌธ์๊ฐ ๋ฐฉ๋ฌธํ๊ฑฐ๋ ๋คํธ์ํฌ ํ๋์จ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ฆฌ์์ค ๊ณ ๊ฐ๋ก์ธํด ์น ์ฌ์ดํธ๊ฐ ์ค๋จ๋ ์ ์๋ค. CDN ์๋น์ค๋ ์ด๋ฐ ํธ๋ํฝ๋ ์ ์ดํ ์ ์์ด์ ์น ์๋ฒ์ ๋ก๋๋ฅผ ์ค์ผ ์ ์๋ค. ๋ํ ํ๋ ์ด์์ CDN ์๋ฒ๊ฐ ์ด๋ค ์ฌ๊ณ ๋ก ์ธํด ์คํ๋ผ์ธ์ผ๋ก ์ ํ๋๋ฉด ๋ค๋ฅธ ์ด์ ์๋ฒ๊ฐ ํด๋น ์๋ฒ๋ฅผ ๋์ฒดํ์ฌ ์๋น์ค๊ฐ ์ค๋จ๋์ง ์๋๋ก ํ ์ ์๋ค.(์ด์คํ) ๋น์์ฉ ๋ฐ์ ๊ธฐ ๊ฐ์ ์ญํ ์ ํ ์ ์๋ค. - ์น ์ฌ์ดํธ ๋ณด์ ๊ฐํ
3๋ฒ์์ ์ธ๊ธํ๋ฏ์ด CDN์ ์ฌ๋ฌ ์ค๊ฐ ์๋ฒ ๊ฐ์ ๋ก๋๋ฅผ ๋ถ์ฐํ์ฌ ๋ณธ ์๋ฒ์ ๋ฏธ์น๋ ์ํฅ์ ์ค์ด๋๋ฐ DDoS์ ๊ฐ์ ํธ๋ํฝ ๊ณต๊ฒฉ์ ์ฒ๋ฆฌํ ์๋ ์๋ค.
# CDN ์๋น์ค ์์?
์ฐ๋ฆฌ๊ฐ ์น์ฌ์ดํธ์ ์์ฒญํ๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ค์ ๋ชจ๋ CDN ๊ธฐ๋ฐ์ด๋ผ๊ณ ๋ด์ผ๋๋ค.
๊ทธ ๋ํ์ ์ธ ์์๊ฐ Netflix๋ค. 2011๋ ์ ์์ฒด CDN์ ๊ตฌ์ถํด์ ๊ฐ๊ณ ์๋ ๋น๋์ค ์ฝํ ์ธ ๋ฅผ ๋ ์ดํด์๋ฅผ ์ต์ํํด์ ์ ๊ณตํ๋ค.
HTTP 1.1์ ์ด๋ค ๋ฌธ์ ์ ์ด ์์๋๊ฐ? 2.0์ ์ด๋ป๊ฒ ๋ณด์ํ๋์ง ์ค๋ช ํด์ฃผ์ธ์
# HTTP 1.1์ด ๊ฐ๋ ๋ฌธ์ ์
- HOL(Head of Line) Blocking
- ์ปค๋ฅ์ ์์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ํ ์์ฒญ์ด ์ง์ฐ๋๋ฉด ๋ค์์๋ ์์ฒญ๋ค๋ ๋๊ธฐํด์ผํ๋ค.
- Header Overhead
- ๊ฐ ์์ฒญ-์๋ต ์ ์ด๋ฏธ ์๊ณ ์๋ ๋ถํ์ํ ํค๋๋ฅผ ๋ฐ๋ณตํด์ ์ ์กํด์ผ๋๋ค. ๋ฉ์์ง ํฌ๊ธฐ๊ฐ ์์๊ฒฝ์ฐ ์ฆ์ ํต์ ์ผ๋ก์ธํด ์ค๋ฒํค๋๊ฐ ๋์ฑ ์ปค์ง๋ ๋ฌธ์ ๊ฐ ์กด์ฌํ๋ค.
- ๋จ์ผ ์ฐ๊ฒฐ์ ํ๊ณ
- ๊ธฐ๋ณธ์ ์ผ๋ก ํ ๋ฒ์ ํ๋์ ์์ฒญ๋ง์ ์ฒ๋ฆฌํ ์ ์์ด์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๋ค.
- ๊ธฐ์กด ์ปค๋ฅ์ ์ ์ฌ์ฌ์ฉํด์ ํจ์จ์ฑ์ ๋์๋๋ฐ ์ฌ๋ฌ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ํ๋ฒ์ ์์ฒญํ๋ฉด ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋ผ์ ์ฑ๋ฅ์ ํ๊ฐ ๋ฐ์ํ๋ค
์์ฐจ์ ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ํ๋ฒ์ ํ๋์ฉ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ฒ HTTP/1.1์ ๋ฌธ์ ์ ์ด์๋ค.
# HTTP 2.0์์ ๊ฐ์ ๋ ์
- Multiplexing
- ๋จ์ผ TCP connection์ผ๋ก๋ ์ฌ๋ฌ๊ฐ์ ์์ฒญ๊ณผ ์๋ต์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋๋กํด์ HOL Blocking๋ฌธ์ ๋ ๋ฌผ๋ก ์ด๊ณ ์ ์ฒด์ ์ธ ์ฑ๋ฅํฅ์์ ์ด๋ค๋๋ค.
- Frame์ด๋ผ๋ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ๋๋ฐ ๊ฐ ํ๋ ์์ ์๋ณ์๋ฅผ ์ฌ์ฉํด์ ๊ตฌ๋ถ์ด ๊ฐ๋ฅํ๋ค.
- ์ด ํ๋ ์์ ์ฌ๋ฌ๊ฐ์ ์คํธ๋ฆผ์ผ๋ก ๋๋์ด ๊ด๋ฆฌํ๊ณ ์คํธ๋ฆผ ์ญ์ ์๋ณ์๋ฅผ ๊ฐ๋๋ค.
- Header Compression
- ์ ์ ํค๋ ํ ์ด๋ธ๊ณผ ๋์ ํค๋ ํ ์ด๋ธ์ ์ฌ์ฉํด์ ํค๋๋ฅผ ์ธ์ฝ๋ฉํด์ ์ ์กํ๊ธฐ ๋๋ฌธ์ ์ค๋ฒํค๋๊ฐ ์ค์ด๋ ๋ค.
- Server Push
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก์ ์์ง ์์ฒญํ์ง์์ ๋ฆฌ์์ค๋ ๋ฏธ๋ฆฌ ์ ์กํ๋ ๊ธฐ๋ฅ์ด๋ค. ์ถ๊ฐ์์ฒญ์์ด ์๋ต์ ํด์ฃผ๊ธฐ๋๋ฌธ์ ๋ก๋ฉ ์๋๋ฅผ ๋๋ฆด ์ ์๋ค.
์์ผ ํต์ ์ ๋ํด์ ์ค๋ช ํ์ธ์.
์์ผ์ IP์ฃผ์์ ํฌํธ๋ฒํธ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๋ ์ฅ์น๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ์ํด ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค์ด์ ๋คํธ์ํฌ ํต์ ์ End point์ด๋ค.
# ์คํธ๋ฆผ ์์ผ
TCP(Transmission Control Protocol)๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ์งํฅ์ ํต์ ์ ์ํํ๋ค. ์ฆ ๋ฐ์ดํฐ ์ ์ก์ ์์์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ค.
# ๋ฐ์ดํฐ๊ทธ๋จ ์์ผ
UDP(User Datagram Protocol)๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ฐ๊ฒฐ ์งํฅ์ ํต์ ์ ์ํํ. ๋ฐ์ดํฐ ์ ์ก์ ์์๋ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ์ง ์์ผ๋ฉฐ ๋น ๋ฅธ ์ ์ก์ด ์๊ตฌ๋์ง๋ง ์ ๋ขฐ์ฑ์ด ๋ ์ค์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค.
# ์์ผ ํต์ ์ ๋จ๊ณ
- ์๋ฒ ์์ผ:
- ์์ผ ์์ฑ: ์๋ฒ๋ ํต์ ์ ์ํด ์์ผ ์์ฑ
- ๋ฐ์ธ๋ฉ: ์์ฑ๋ ์์ผ์ IP ์ฃผ์์ ํฌํธ ๋ฒํธ ํ ๋น
- ์ฒญ์ทจ: ์๋ฒ๋ ์ฐ๊ฒฐ ์์ฒญ ๋๊ธฐ (listen())
- ์ฐ๊ฒฐ ์๋ฝ: ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ ์์ฒญ์ ์๋ฝ (accept())
- ํด๋ผ์ด์ธํธ ์์ผ:
- ์์ผ ์์ฑ: ํด๋ผ์ด์ธํธ๋ ํต์ ์ ์ํด ์์ผ ์์ฑ
- ์๋ฒ์ ์ฐ๊ฒฐ ์์ฒญ: ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ฐ๊ฒฐ ์์ฒญ (connect())
- ๋ฐ์ดํฐ ์ ์ก:
- ์ฐ๊ฒฐ์ด ์ค์ ๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค.
- ์ฐ๊ฒฐ ์ข
๋ฃ:
- ํต์ ์ด ๋๋๋ฉด ์์ชฝ ์์ผ์ ๋ซ์ ์ฐ๊ฒฐ ์ข ๋ฃ
# ์์ผ ํ๋ก๊ทธ๋๋ฐ์ ์ฃผ์ ๊ณ ๋ ค ์ฌํญ
- ๋์์ฑ ์ฒ๋ฆฌ:
- ๋ค์์ ํด๋ผ์ด์ธํธ์ ๋์์ ํต์ ํ๊ธฐ ์ํด ๋ฉํฐ์ค๋ ๋ฉ ๋๋ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ์ฌ์ฉ
- ์ค๋ฅ ์ฒ๋ฆฌ:
- ๋คํธ์ํฌ ์ฅ์ , ํ์์์ ๋ฑ ๋ค์ํ ์ค๋ฅ ์ํฉ์ ๊ณ ๋ คํ์ฌ ์์ธ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํ
- ๋ณด์:
- ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ ์กํ๊ฑฐ๋, SSL/TLS๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ์ ๊ธฐ๋ฐ์ฑ์ ๋ณด์ฅ
- ๋ฆฌ์์ค ๊ด๋ฆฌ:
- ์ฌ์ฉ ํ ์์ผ์ ๋ซ์ ๋ฆฌ์์ค๋ฅผ ํด์ ํ๊ณ , ์์ผ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌ
TCP์ ํผ์ก ์ ์ด ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
TCP ํผ์ก ์ ์ด๋ ๋คํธ์ํฌ์ ํผ์ก์ ๊ฐ์งํ๊ณ ์ด์ ๋์ํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.
1. Slow Start (๋๋ฆฐ ์์)
- ๋ชฉ์ : ๋คํธ์ํฌ์ ์ฉ๋์ ํ์ธํ๋ฉด์ ์ ์ก ์๋๋ฅผ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ์์ผ ํผ์ก์ ๋ฐฉ์ง.
- ๋ฐฉ๋ฒ:
- ์ฐ๊ฒฐ์ด ์ฒ์ ์์๋ ๋, ํน์ ํ์์์์ด ๋ฐ์ํ ํ์ ์์.
- ์ฒ์์ ํผ์ก ์๋์ฐ(congestion window, cwnd)๋ 1 MSS(Maximum Segment Size)๋ก ์ค์ .
- ๊ฐ ์์ ํ์ธ(ACK)์ ๋ฐ์ ๋๋ง๋ค ํผ์ก ์๋์ฐ๋ฅผ 1 MSS์ฉ ์ฆ๊ฐ.
- ์ง์์ (n์น)์ผ๋ก ์ฆ๊ฐํ์ฌ ํผ์ก ์๋์ฐ ํฌ๊ธฐ๊ฐ ๋น ๋ฅด๊ฒ ์ปค์ง.
2. Congestion Avoidance (ํผ์ก ํํผ)
- ๋ชฉ์ : ๋คํธ์ํฌ๊ฐ ํผ์ก ์ํ์ ๋๋ฌํ์ง ์๋๋ก ํ๋ ๊ฒ.
- ๋ฐฉ๋ฒ:
- ํผ์ก ์๋์ฐ๊ฐ ์๊ณ๊ฐ(ssthresh)์ ๋๋ฌํ๋ฉด, ํผ์ก ํํผ ๋จ๊ณ๋ก ์ ํ.
- ์ด ๋จ๊ณ์์๋ ํผ์ก ์๋์ฐ๊ฐ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ์ง ์๊ณ ์ ํ์ ์ผ๋ก ์ฆ๊ฐ.
- ๊ฐ RTT(Round Trip Time)๋ง๋ค ํผ์ก ์๋์ฐ๊ฐ 1 MSS์ฉ ์ฆ๊ฐ.
3. Fast Retransmit (๋น ๋ฅธ ์ฌ์ ์ก)
- ๋ชฉ์ : ์์ค๋ ํจํท์ ์ ์ํ ์ฌ์ ์กํ์ฌ ๋คํธ์ํฌ ์ฑ๋ฅ์ ํฅ์.
- ๋ฐฉ๋ฒ:
- ๋์ผํ ํจํท์ ๋ํด 3๊ฐ์ ์ค๋ณต๋ ACK์ ๋ฐ์ผ๋ฉด ํจํท ์์ค๋ก ๊ฐ์ฃผํ๊ณ , ํ์์์์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฆ์ ์์ค๋ ํจํท์ ์ฌ์ ์ก.
4. Fast Recovery (๋น ๋ฅธ ํ๋ณต)
- ๋ชฉ์ : ๋คํธ์ํฌ ํผ์ก์ ๊ฐ์งํ ํ ๋น ๋ฅด๊ฒ ํ๋ณตํ์ฌ ๋คํธ์ํฌ ํจ์จ์ ์ ์ง.
- ๋ฐฉ๋ฒ:
- Fast Retransmit ํ์, ssthresh๋ฅผ ํ์ฌ ํผ์ก ์๋์ฐ์ ์ ๋ฐ์ผ๋ก ์ค์ .
- ํผ์ก ์๋์ฐ๋ฅผ ssthresh + 3 MSS๋ก ์ค์ ํ์ฌ ๋น ๋ฅธ ํ๋ณต์ ์๋.
- ์ค๋ณต๋ ACK์ ๋ฐ๋ ๋์ ํผ์ก ์๋์ฐ๋ฅผ 1 MSS์ฉ ์ฆ๊ฐ์ํด.
- ์๋ก์ด ACK์ ๋ฐ์ผ๋ฉด ํผ์ก ํํผ ๋จ๊ณ๋ก ์ ํ.
# ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ํตํฉ ๋์
- ์ด๊ธฐ ์ํ: Slow Start๋ก ์์ํ์ฌ ํผ์ก ์๋์ฐ๋ฅผ ์ง์์ (^N)์ผ๋ก ์ฆ๊ฐ์ํจ๋ค.
- ์๊ณ๊ฐ ๋๋ฌ: ํผ์ก ์๋์ฐ๊ฐ ssthresh์ ๋๋ฌํ๋ฉด Congestion Avoidance๋ก ์ ํํ์ฌ ํผ์ก ์๋์ฐ๋ฅผ ์ ํ์ ์ผ๋ก ์ฆ๊ฐ์ํจ๋ค.
- ํจํท ์์ค ๊ฐ์ง: ํ์์์์ด ๋ฐ์ํ๊ฑฐ๋ ์ค๋ณต ACK์ ํตํด ํจํท ์์ค์ด ๊ฐ์ง๋๋ฉด, ssthresh๋ฅผ ํ์ฌ ํผ์ก ์๋์ฐ์ ์ ๋ฐ์ผ๋ก ์ค์ ํ๊ณ ํผ์ก ์๋์ฐ๋ฅผ 1 MSS๋ก ์ค์ธ๋ค.
- ๋น ๋ฅธ ์ฌ์ ์ก ๋ฐ ํ๋ณต: Fast Retransmit(๋น ๋ฅธ ์ฌ์ ์ก)์ Fast Recovery(๋น ๋ฅธ ํ๋ณต)๋ฅผ ํตํด ์์ค๋ ํจํท์ ์ ์ํ ์ฌ์ ์กํ๊ณ ํผ์ก ์๋์ฐ๋ฅผ ์กฐ์ ํ๋ค.
HTTP์ HTTPS์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
๋คํธ์ํฌ ์์ ์ฅ์น์ ๊ณ ์ ํ ์ฃผ์๋ก, IPv4๋ 32๋นํธ ์ซ์ (์: 192.168.1.1), IPv6๋ 128๋นํธ ์ซ์๋ก ๊ตฌ์ฑ๋๋ค.
๋ณด์์์ค๊ณผ ๋ฐ์ดํฐ ์ ์ก๋ฐฉ์์์ ์ฐจ์ด๋ฅผ ๊ฐ๋๋ค.
- ๋ฐ์ดํฐ ์ํธํ: HTTP๋ ํ๋ฌธ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ง๋ง, HTTPS๋ SSL/TLS๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ํธํํด์ ์ ์ก
- ํฌํธ ๋ฒํธ: HTTP๋ 80๋ฒ, HTTPS๋ 443๋ฒ
- ๋ณด์ ์ธ์ฆ์: HTTPS๋ SSL/TLS ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์ ์ ์์ ํ์ธํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ํธํํจ
- ๋ณด์ ์์ค: HTTPS๋ ์ค๊ฐ์ ๊ณต๊ฒฉ, ๋์ฒญ, ๋ฐ์ดํฐ ๋ณ์กฐ ๋ฑ์ ๋ฐฉ์งํ์ฌ ๋์ ๋ณด์์ ์ ๊ณตํ๋ค.
IPv4์ IPv6์ ์ฃผ์ ์ฐจ์ด์ ๊ณผ IPv6๊ฐ ํ์ํ ์ด์ ๋?
- IPv4์ IPv6์ ์ฐจ์ด์ :
- ์ฃผ์ ๊ธธ์ด์ ํ์, ์ฃผ์ ํํ ๋ฐฉ์, ํค๋ ๊ตฌ์กฐ, ์ฃผ์ ํ ๋น ๋ฐฉ์, NAT ์ฌ์ฉ, ๋ณด์ ์์ค ๋ฑ์์ ์ฐจ์ด๊ฐ ์๋ค.
- IPv6๊ฐ ํ์ํ ์ด์ :
- ์ฃผ์ ๊ณ ๊ฐ ๋ฌธ์ ํด๊ฒฐ, ๋คํธ์ํฌ ํจ์จ์ฑ ํฅ์(ํค๋๋จ์ํ๋ก ๋ผ์ฐํฐ ๋ถ๋ด ์ค์ด๊ณ ์ฒ๋ฆฌ์๋ ํฅ์), ๋ณด์ ๊ฐํ(IPsec ๊ธฐ๋ณธ์ง์), ์ด๋์ฑ ๋ฐ ๋ฉํฐ์บ์คํธ ์ง์, ๋ฏธ๋ ๊ธฐ์ ์ง์(IoT์ฅ์น๋ค์ด IP์ฃผ์ ์๊ตฌํ๋๋ฐ ์ด๊ฑฐ IPv4๋ก ๊ฐ๋น ๋ชปํจ) ๋ฑ์ ์ด์ ๋ก IPv6๋ก์ ์ ํ์ด ํ์ํ๋ค.
::์ถ์ฒ::
https://github.com/VSFe/Tech-Interview?tab=readme-ov-file
https://github.com/WooVictory/Ready-For-Tech-Interview
https://github.com/gyoogle/tech-interview-for-developer
https://github.com/JaeYeopHan/Interview_Question_for_Beginner
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^
'CS๐ฅ๏ธ > ์คํฐ๋๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS ์คํฐ๋] 4์ฃผ์ฐจ ver 1.0 (0) | 2024.04.12 |
---|---|
[CS ์คํฐ๋] 3์ฃผ์ฐจ ver 1.1 (0) | 2024.04.05 |
[CS ์คํฐ๋] 1~2์ฃผ์ฐจ ver 1.3 (0) | 2024.03.29 |