Network
๐ก Protocol(TCP, HTTP), IP, DNS, L/B
Created: 2020, 03 16 >Updated: 2025, 07 22Internet
1990 World Wide Web
WWW
- data networks
- hypertext = text displayed on a electronic devices (with hyperlinks)
- X windows system? = X11
- https://home.cern/science/computing/birth-web/short-history-web
TCP, UDP
- TCP - 4๊ณ์ธต, IP - 3๊ณ์ธต
- TCP: get Data, send serialize and check destination
- IP: Make Data(packet)
์ 1byte๋ 8bit ์ผ๊น
์ฒ์์๋ 1byte๋ฅผ 6,7,8 ์ ํด์ง ๊ฒ ์์ด ๊ฐ ์ ์ฒด๋ง๋ค ๋ค๋ฅด๊ฒ ์ฌ์ฉํ๋ค ASCII๊ฐ 128๊ฐ์ ๋ฌธ์๋ฅผ ํํํ ์ ์์ด์ ์ด๊ฒ ๊ธฐ์ค์ด ๋ ๊ฒ์ด๋ผ๋ ์ค์ด ์ ๋ ฅํ๋ค (2^7=128)
TCP network
๋์ญํญ์ BDP(Bandwidth Delay Product)๋ผ๋ ๊ฒ๊ณผ ๊ด๊ณ์๋๋ฐ BDP = ๋์ญํญ _ RTT(round-trip time) RTT๋ ์ด๋ ์๊ฐ ์ ๋๋ก ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค 100Mbps ๋์ญํญ์ ์ง์ฐ์๊ฐ 2์ด์ธ ๊ณณ์์ BDP๋ 25MB((100bit / 8)byte _ 2)์ด๊ณ , ์ด๊ฒ์ด ๋คํธ์ํฌ ๊ฒฝ๋ก์ ์ ๋ฌ์ค์ธ ๋ฐ์ดํฐ์ ์์ด๋ค.
์ฆ ๋์ญํญ = BDP / RTT ๊ฐ ๋๋ค
๊ทผ๋ฐ ์ธํฐ๋ท ๋ง์์ BDP๋ ์ถฉ๋ถํ ํฌ๋ค๊ณ ํ๋ค BDP๊ฐ ํฌ๋ค๋๊ฒ ๋ฌด์จ ๋ป์ธ์ง ์ ์ดํด๊ฐ ์๋๋ค
tcp ํผ์ก์ ์ด
์ก์์ ์ฉ ์๋์ฐ ํฌ๊ธฐ(๋ฐ์ดํฐ ์ ๋ฌ ํฌ๊ธฐ) ์ ๋ณด๋ tcp ํค๋์ ์ค๋ ค๊ฐ๋ค. ํ์ง๋ง ๋คํธ์ํฌ ํฌ๊ธฐ๊ฐ ์๋์ฐ ํฌ๊ธฐ๋ณด๋ค ์ ์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด์ ์์ค์ ์ต์ํ ํ๊ณ ์ ํผ์ก์ ์ด๋ฅผ ํ๊ฒ ๋๋ค
๋๋ฆฐ ์์๊ณผ ํผ์ก ํํผ๋ผ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค. ๋๋ฆฐ ์์์ ์๊ณ์ ์ด ์ค์ ๋์๊ณ , ์ด ์ง์ ๊น์ง ํผ์ก ์๋์ฐ์ ํฌ๊ธฐ๋ฅผ 2๋ฐฐ์ฉ ๋๋ฆฌ๋ฉด์ ๋คํธ์ํฌ ๋์ญ์ ํ์ธํ๋ ๋์์ด๊ณ , ํผ์ก ํํผ๋ ๋๋ฆฐ ์์์์ ๋์ญ์ ํ์ธ ๋ชปํ ๊ฒฝ์ฐ๋ ์๊ธฐ์ ์๋์ฐ ํฌ๊ธฐ๋ฅผ 1์ฉ ๋๋ ค๊ฐ๋ฉฐ ์งํํ๋ ๋์์ด๋ค.
Browser - Server
- URI - DNS - IP - TCP - HTTP - RESPONSE
client - server in web
- ์ฃผ์ ์ ๋ ฅ
- ์ฃผ์๊ฐ DNS ๊ฒ์
- DNS์์ IP ํ์ธ
- IP ์ฃผ์๋ก TCP ์ฐ๊ฒฐ (HTTP/2๊น์ง)
- HTTPS ์ํธํ (TLS/SSL)
- HTTPS ํจํท ์ ์ก
- ์๋ฒ ํจํท ํ๋
- HTTPS ์ํธํ ํด๋
- ์๋ฒ ์๋ต
- HTTPS ์ํธํ
- ํด๋ผ์ด์ธํธ์ ์ ์ก
- ๋ธ๋ผ์ฐ์ ์์ ์ํธํ ํด์
- ํ์ด์ง ๋ก๋ฉ
- TCP ์ฐ๊ฒฐ ํด์
WWW
- Tim Berners-Lee, his team wanted to share document to other physicist in internet
- include URIs, HTTP, HTML
HTTP
- HTTP/0.9 Only has GET, only accept hypertext content
- HTTP/1
- HTTP 1.0 GET, HEAD, POST,
- Header ideas from MIME(email)
- session handled only one client request. So other requests wait.
- HTTP/1.1
- HTTP 1.1 OPTIONS, GET, HEAD, POST, PUT, DELETE
- first version 1997. revised 1999.
- Add Authentication
- allows client send a single TCP session.
- can ask part of resource.
- HTTP/2
- create encrypt key
- Multiplexed Streams
- Stream Prioritization
- Server Push
- Header Compression
- HTTP/3
keep alive
http/1 ์ ๊ธฐ๋ณธ์ผ๋ก ์ง์ ์ปค๋ฅ์ ์ด ์ค์ ๋์ด ์๋ค Connection: close ๋ฅผ ๋ช ์ํด์ค์ ๋นจ๋ฆฌ ์์ผ์ด ๋ซํ๋์ง ํ์ธํด๋ณด์
keep-alive๋ 1.1์์ ๋น ์ก๋ค๊ณ ํ๋ค. ๋์ ์ง์ ์ปค๋ฅ์ ์ด ๊ณ ์๋์๋ค๊ณ ํ๋ค
์ปค๋ฅ์ ์ ์ ์งํ๊ธฐ ์ํด์๋ content length๊ฐ ์ค์ ๋์๊ฑฐ๋ ์ฒญํฌ ์ ์ก ์ธ์ฝ๋ฉ์ผ๋ก ๋์์ด์ผ ํ๋ค
HTTP/1.1 REQUEST
- Request Line
- GET /index.html HTTP/1.1
- Header
- General : Date, Connection(open/close/keep-alive), Upgrade-Insecure-Request
- Request : Host, From, Accept(text/html), User-Agent(Mozilla/4.0)
- Entity : Content-Type(application/json), Content-Length
- Message Body
HTTP/1.1 RESPONSE
- Status
- HTTP/1.1 200 OK
- Header
- General : Date, Connection(open/close), Keep-Alive
- Response : Server(Apache/1.3), Accept_ranges(bytes)
- Entity : Content-Type, Content-Length, Last-Modified
- Message Body
- generally HTML document
HTTP/2 Frames
- Header divide and composed to frame
- Frame has header, body.
- header type divide by request. etc) Type=HEADERS, Type=DATA
๋ฐ์ดํฐ ํ๋ ์์ด๋ผ๋ ํ ์์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ํ๊ณ ์ด๋ฅผ ์คํธ๋ฆผ์ผ๋ก ํต์ ํ๋๋ก ๋์ด์๊ณ ๊ธฐ์กด์๋ ์๋๋ ์๋ฒ์์ ํธ์ํ๋ ๊ฒ๋ ๊ฐ๋ฅํด์ก๋ค ๋ฐ์ด๋๋ฆฌ๋ก ์ ์ก๋๋ค๊ณ ํ๋ค
HTTP/2 != HTTPS. but HTTP/2 include HTTPS
REST API
- Use HTTP GET, POST, PUT, DELETE
- Use Response code to indicate status(200, 400, etc)
HTTP์์ GET ๋ฟ๋ง ์๋๋ผ PUT, DELETE๋ ๋ฉฑ๋ฑํ๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ค
๊ทธ๋ฐ๋ฐ ์๋ฒ์์ DELETE ์ฒ๋ฆฌ๋ฅผ ํ ๋ ๋ด๋ถ์์ ๋ญ๊ฐ ๊ณ์ฐ ์์ ์ ํ๊ฒ ๋๋ฉด ๊ฐ์ ๊ฐ์ ๋ฐ์๋ ๊ณ์ฐ์ฒ๋ฆฌ๊ฐ ๋ ํ์ ๋์ํด๋ฒ๋ฆด ์ ์๋ค ๋ฉฑ๋ฑํ๊ฒ ๋์ํ๋๋ก ์ ๊ฒฝ์จ์ผ๊ฒ ๋ค
x ๋ฅผ ๋๋ฅด๋ฉด DELETE /comment/1 ๋ก ๋์ด์ผ์ง DELETE /comment/(ํ์ฌ ๋ฌธ์์ ์ฒซ๋ฒ์งธ) ๊ฐ ๋๋ฉด ์๋๋ค
ํ๋ก์ ์๋ฒ
์ฌ์ฉ์ ํํฐ๋ง
HTTP์ TRACE ๋ฉ์๋๋ ํ๋ก์์์ ์น์๋ฒ๋ก ์ ์ก ์ ์ผ์ด๋๋ ๋ณํ๋ฅผ ์ถ์ ํ๋๋ฐ ์ฌ์ฉํ๊ธฐ ์ข๋ค
์น์๋ฒ์์ ์ฒ๋ฆฌํ ๊ฒ
๋ด๋ถ ๋ก์ง
๋ก๋๋ฐธ๋ฐ์์์ ์ฒ๋ฆฌํ ๊ฒ
SSL ์ ์ฉ ๋ฐฐํฌ ํ ์ ์๋ ์กฐ์ ํ๋ก ์ ์์ ๋ฆฌ์คํธ ๊ด๋ฆฌ ์ ์ ํธ์คํ ์บ์ฑ ์ ์ ๋ฐ์ดํฐ, ์๋ต ์์ถ ์ ์์ ๋ก๊ทธ ํธ๋ํฝ ์ ์ด
์ ์ ๋๊ธฐ์ ๊ด๋ฆฌ
์ธํ๋ผ์์ ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๊ฒ
๋ฐฉํ๋ฒฝ CDN
๋คํธ์ํฌ ๊ณผ๋ถํ
nic ์ด์คํ
๋ผ์ฐํฐ์ ํ๊ณ 30๋ง ํจํท/์ด ํจํท์ด 300๋ฐ์ดํธ๋ผ๋ฉด 1Gbps
500ํธ์คํธ 1์๋ธ๋ท arpํ ์ด๋ธ ๋ธ๋ก๋์บ์คํ ํจํท ํธ๋ํฝ์ด ์ฆ๊ฐ. cpu ์๋น. ํจํท ์์ค
API
- WebSocket
- HTTP
- JSON?
gRPC
- unary
- server side stream
- client side stream
- bidirectional stream
graphql
- server-side cache?
Network Machine
- L1: ์ฅ๋น๊ฐ ๊ทผ๊ฑฐ๋ฆฌ ๋ฌถ์ด์ฃผ๋ ์ ์ก๋ก
- Ethernet Cable
- ์ด๋๋ท ๋ฐฉ์ ๊ตฌ์กฐ์ค CSMA/CD ๊ฐ ์ข๋๋ผ
- MAC - 48bit 8:8:8 8:8:8
- L2: 1-3๊ณ์ธต์ ์ฐ๊ฒฐํด์ฃผ๋ (Repeater, Switch)
- L3: ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ์ ํํ๋ค (Router)
- L4: ์ธ๋ถํํด์ ํธ๋ํฝ ๊ด๋ฆฌ L3์ ๋น์ทํ์ง๋ง ๋ฐ์ดํฐ ์ ์ก์ ๋ณด์ฅํ๋ค. (L/B)
- L5 - ๋ ผ๋ฆฌ์ ์ธ ์ฐ๊ฒฐ ์๋น์ค
Load Balance
L4 L7
L4๋ ํฌํธ ๊ธฐ๋ฐ (aws์์๋ NLB) L7์ ํฌํธ + ํ์ด๋ก๋ ๊ธฐ๋ฐ, ์ฆ ๊ธฐ๋ฅ์ด ๋ ๋ง์ ๊ธฐ๊ธฐ (aws์์ ALB)
LB
๋ด๋ถ ์๋น์ค๋ ๋ก๋๋ฐธ๋ฐ์ค ํฌํธ๋ง ์ด์ด๋๊ณ ๋ก๋๋ฐธ๋ฐ์์์ ํํฐ๋ง? ๊ทธ๋๋ ๋๊ฐ๋; ๋ก๋๋ฐธ๋ฐ์์์ ์ปคํธํ๋ ์ต์ ์ ๋ฃ์ด์ผ ํ๋ค;
๋ก๋๋ฐธ๋ฐ์์๋ ๋ฆฌ์ค๋, ํ๊ฒ ๊ทธ๋ฃน์ด๋ผ๋๊ฒ ํญ์ ๋ฐ๋ผ์จ๋ค
๋ถ๋ช ELB๊ฐ ์๊ณ , NLB, ALB๋ ๋์ค์ ๋์จ ๊ฒ ๊ฐ์๋ฐ, ๊ทธ๋ฐ ์๊ธฐ๊ฐ ์๋์จ๋ค
ELB๋ผ ๋ถ๋ฆฌ์ฐ๋ Classic Load Balancer๋ l4/L7์ ๊ฐ์ด ์ง์ํ๋๋ฐ ํ์ฌ ALB๋ณด๋ค๋ ๊ธฐ๋ฅ์ด ์ ์ ๋์ฐํ ํผ์ข ์ด๊ณ , NLB๊ฐ 17/09/07์ ๋์๋ค.
CDN (Content Delivery Network)
๋คํธ์ํฌ๋ฅผ ์ฌ๋ฌ ๊ตฐ๋ฐ ๋ฌ์ ์ ๊ทผ์ ๋นจ๋ฆฌํ๋๊ฒ ํต์ฌ์ธ ๊ฒ ๊ฐ๋ค.
- ํด์ธ ์ ๊ทผ ์ ๋น ๋ฅด๊ฒ ํ๋ ์ญํ
- ์ด๋ฏธ์ง์ฒ๋ผ ํฐ ํ์ผ์ ์๋ฒ์ ๋ถ๋ฆฌํด์ ํธ์ถํ์ฌ ํธ๋ํฝ ๋ฐ ์คํ ๋ฆฌ์ง ์ ์ฝ
- ๊ทผ๋ฐ ์บ์ ๋ ์ด๋ฏธ์ง๊ฐ ๋ณธ ์๋ฒ์ ์ด๋ฏธ์ง๋ณด๋ค ๋น ๋ฅด๋? ๋๊ฐ์ ์๋ ์๋๊ฐ?
- CPU ์บ์๋ฅผ ์๊ฐํ๋ฉด ์บ์๊ฐ ๋น ๋ฅธ๊ฒ ๋น์ฐํ๋ฐ, ๊ทธ๊ฑด CPU ์บ์ ์์ฒด๊ฐ
๋์คํฌ๋ณด๋ค ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ธ๋ฐ, ๋คํธ์ํฌ๊ฐ ๊ฐ๊น์ด ์๋ฒ์์ ๊ฐ์ ธ์์ ๊ทธ๋ฐ๊ฐ?
- ๋ง๋ค. ๋คํธ์ํฌ ํธ๋ํฝ์ ์ ์ฝํด์ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๊ฒ ๋ค๋ ๊ฒ์ด๋ค.
- ๋๋ฐ์ด์ค๋ฅผ ์ธ์ํด์ ์บ์๋ ์ด๋ฏธ์ง ์ค ํ๋๋ง ์ ํํด์ ๋ณด๋ธ๋ค?
- ์จ๋๋งจ๋ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง
- CDN์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด๋ผ๊ธฐ๋ณด๋ค๋ ๋ด๋ถ ๋ก์ง์ผ๋ก ๊ณ์ฐํด์ ์ ๊ณตํ๋ ๋ฐฉ์
- S3์ ์๋ ์ด๋ฏธ์ง๋ฅผ Lambda๋ก ๊ณ์ฐํด์ ์ ํํด์ฃผ๋ ๋ฐฉ์
- ๊ฐ๋ฐ ์ฌ๋ก
- ๊ฐ๋ฐ ์ฌ๋ก2
- ์๋ฆฌ ๋ฐ ์์
- nginx๋ฅผ ์ด์ฉํด CDN์ ๊ตฌํํ ์ ์๋๋ณด๋ค.
- DNS๋ฅผ CDN์ ๋จผ์ ๋์ฐฉํ๋๋ก ์ค์ ํด์, CDN์์ ๋ณธ ์๋ฒ๋ก ํธ๋ํฝ์ ์ ๋ฌํ ์ง, ์์ ์ด ์ฒ๋ฆฌํ ์ง ์ ํํ ์ ์๋ค.
- CDN์ ๊ฑฐ์ณ์ ๋ณธ ์๋ฒ์ ๋ค์ด์ค๊ฒ ํจ์ผ๋ก์จ ํํฐ๋ง๋ ํ ์ ์๋ค
- ๋ฉ์ธ ์๋ฒ์ ์ ๊ทผ ๋ชปํ๊ฒ ํ๊ฑฐ๋, DDoS ๋ฅผ ํก์ํ๊ฑฐ๋
- https://blogs.akamai.com/kr/2018/12/qa-cdn-cdn.html
- ์ด๊ฑด ๊ทผ๋ฐ ๋ก๋๋ฐธ๋ฐ์์ ๋น์ทํ ์ญํ ์ด ๋ ์ ์๋ค. ๋ก๋๋ฐธ๋ฐ์์ ์ญํ ์ ๋์ ํจ
- ๋ณธ ์๋ฒ๋ฅผ ํ์ฑํด ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆ์ผ๋ก์จ ๋ณธ ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ด๋ ค๋ ๊ฒ ๊ฐ๋ค
- ๋ถํ๋ ์ค๊ณ , ํธ๋ํฝ๋ ์ค๊ณ
- ๊ฒฐ๊ตญ ์๋ฒ๋ฅผ ์ฌ๋ฌ ๋ ๋ฌ์ ๋ถ์ฐํ๋๋ฐ ์ญํ ์ ๋ถ์ฌํ ์๋ฒ๋ก, ์ค์ผ์ผ์์๊ณผ ์กฐ๊ธ ๋ค๋ฅธ, ํ์ง๋ง ์๋ฒ์ ์ฆ์ค์ด ํ์ํ ๊ฒ์ธ ๊ฒ ๊ฐ๋ค.
ETC
CSMA/CD ์ธ์ ๊ณ์ธต์ด ๋ญํ๋ ๊ณ์ธต์ด์ง ์บก์๋ ์ด์ ๋์บก์๋ ์ด์ ํ๋กํ ์ฝ์ ์๋๋ฐฉ์ ์ฃผ์๋ฅผ ์์์ผํ๋ค DNS - 53ํฌํธ 1024 ์ด์์ด๋ฉด TCP , ์ดํ๋ฉด UDP ๋ก ๋๊ฐ๋ค ? ์ด๋๋ท ํ๋ ์ ๊ตฌ์กฐ (์ ์ก๋๋ ๋ด์ฉ๋ฌผ์ ๊ตฌ์กฐ) ๋ธ๋ก๋์บ์คํธ ๋๋ฉ์ธ ์ฝ๋ฆฌ์ ๋๋ฉ์ธ ICMP VLAN ์๋ธ๋ทํ : ๋คํธ์ํฌ์์ญ์ ๋๋ ์ค๋ค VLSM : ํธ์คํธ ์์ญ์ ๊ฐฏ์๋ฅผ ๋๋๋ ๊ธฐ์ --- ์๋ธ๋ท ํ๊ณ ๋ ๋๋๋ ๊ธฐ์ ์ํผ๋ทํ ํ์ฌ์ ๋งจ ๋ฐ๊นฅ ๋ผ์ฐํฐ์๋ ISP ์ ๋ํดํธ ์ฐ๊ฒฐ์ด ๋๋๋ก ํด์ค์ผ ๋๋ค. ์ธํฐ๋ท ์ฐ๊ฒฐ์ชฝ์ ํด์ค์ผ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๊ธฐ ๋๋ฌธ์ ๋ฃจํ - ์คํจ๋ํธ๋ฆฌํ๋กํ ์ฝ Vlan Vlan ์ด ์ ํ์ํ์ง? ๋ผ์ฐํฐ๋ก ์๋๋? Vlan์ ์ฐ์ ์์ ์ค์ ์ ์ฌ๋ฌ๋๋ฉด?
์๋ฆฌ์ผ์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก, ์๋์์ ์์ ์์๋ก ๋ฒํธ๋ฅผ ๋งค๊ธด๋ค. ๋ฃจํ๋ฐฑ ํ์ ๋ ์ ํธ ์์ค๋ฉด ๋ด ๋์นด๋ ๋ถ๋์ด๋ค
nat ๊ฐ ๋ญ์ผ
์ ํ๋ ipv4 ๊ฐ์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์๋ค ํ๋์ ipv4๋ฅผ ๋ด๋ถ์์ ์ฌ๋ฌ ๊ฐ๋ก ๋ ผ๋ฆฌ์ ์ธ ๋ถ์ฐ์ ํด์ฃผ๋ ์ฅ์น private๋ก ๋ง๋ instance๊ฐ ์ธ๋ถ ๋คํธ์ํฌ์ ์ ์ํ ์ ์๋๋ก ํด์ค๋ค
1TB ์ ํธ๋ํฝ์ด ์ด๋ ์ ๋์ธ๊ฐ?
ํ ํ์ด์ง์ ๋ก๋ฉ์ 1MB๊ฐ ํ์ํ๋ค๋ฉด 1TB / 1MB = 1M ๋ฐฑ๋ง๋ทฐ
ํ๋ฃจ์ ํธ๋ํฝ์ ์ด๋ป๊ฒ ๊ณ์ฐํ ์ ์์๊น ๋ถ๋น ์ธ์ ์ x ํ์ด์ง ์ฌ์ด์ฆ ?
Information Theory
๋คํธ์ํฌ ๋์ญํญ ํ์ธ
- ๋ด๊ฐ ๊ฐ์ ํ ์ธํฐ๋ท ์๋
- ๋์นด๋ ์คํ