[250212] TIL
์ค๋ ํ ๊ฒ
ํด๋ผ์ด์ธํธ - ์๋ฒ
ํด๋ผ์ด์ธํธ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ํ์ํ ์์์ ์์ฒญํ๋ ์ญํ ์ด๋ค.
- ์ฌ์ฉ์์ ์ง์ ์ํธ์์ฉ์ ํ๊ณ UI/UX๋ฅผ ์ ๊ณตํ๋ค.
- ์์: ์น ๋ธ๋ผ์ฐ์ , ๋ชจ๋ฐ์ผ ์ฑ, ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ
- ์๋ฒ๋ ์์์ ๊ด๋ฆฌํ๊ณ ๋ค์์ ํด๋ผ์ด์ธํธ์๊ฒ ํ์ํ ์์์ ์๋ตํ๋ ์ญํ ์ด๋ค.
- ์์: ์น ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ, ํ์ผ ์๋ฒ
DNS (Domain Name System)
- ๋๋ฉ์ธ ์ด๋ฆ์ IP ์ฃผ์๋ก ๋ณํํ๋ ์์คํ
- ์ธํฐ๋ท์ ์ ํ๋ฒํธ๋ถ ์ญํ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ์๋ฟ๋๋ค.
- ์์: www.google.com โ 172.217.161.36
- IP ์ฃผ์๋ณด๋ค ๋๋ฉ์ธ ์ด๋ฆ์ ์ฌ์ฉํด์ ๊ธฐ์ตํ๊ธฐ๊ฐ ์ฌ์ด ๊ฒ์ด ์ฅ์ ์ด๊ณ , ์๋ฒ IP๊ฐ ๋ฐ๋๋๋ผ๋ ๋๋ฉ์ธ์ ์ ์ง ํ ์ ์๋ค.
- ๋ก๋ ๋ฐธ๋ฐ์ฑ์ด ๊ฐ๋ฅํ๋ค. โ ํ๋์ ๋๋ฉ์ธ ์ฃผ์์ ์ฌ๋ฌ ๊ฐ์ IP ์ฃผ์๊ฐ ๊ฐ๋ฅ
- ๋ก๋ ๋ฐธ๋ฐ์ฑ์ด๋, ์๋ฒ์๊ฒ ๊ฐํด์ง๋ ๋ถํ๋ฅผ ๋ถ์ฐ ์ํค๋ ๊ธฐ์ ์ด๋ค. ๋ค์์ ์๋ฒ๋ก ํธ๋ํฝ์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ ๊ฐ๋ฅ
Forward Proxy
[Client] โ [Forward Proxy] โ [Internet] โ [Server]
- ํด๋ผ์ด์ธํธ์ ์ธํฐ๋ท ์ฌ์ด์ ์์นํ ์ค๊ณ์๋ฒ
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋์ ์ ๋ฌํ๊ณ ์๋ต์ ๋ฐ์์ด
- ์ฃผ์ ๊ธฐ๋ฅ
- ์บ์ฑ, ์ต๋ช ์ฑ ( ์ค์ Client IP ์จ๊น), ์ ๊ทผ ์ ์ด (ํ์ฉ ํ๋ ๋คํธ์ํฌ ๋ง๊ณ ๋ ์ฐจ๋จ)
- Reverse Proxy ๋ผ๊ณ ๋ ์๋๋ฐ ์๋ฒ๋ฅผ ๋ณดํธํ๊ณ ์ ์ดํจ
- [Internet] โ [Reverse Proxy] โ [Server]
OSI 7๊ณ์ธต
- ๊ฐ 7๊ณ์ธต์ด ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋ฉด์ ์ ์ฒด ๋คํธ์ํฌ๊ฐ ์๋ํจ
7. ์์ฉ ๊ณ์ธต ( Application Layer )
- ์ญํ : ์ฌ์ฉ์์ ์ง์ ์ํธ์์ฉ
- ํ๋กํ ์ฝ : HTTP, FTP, SMTP, DNS
HTTP Request/Response
GET /index.html HTTP/1.1 // GET ๋ฉ์๋, ์์ฒญํ๋ ๋ฆฌ์์ค ๊ฒฝ๋ก, HTTP ๋ฒ์
Host: www.example.com // ํธ์คํธ ํค๋
6. ํ๋ฉด ๊ณ์ธต ( Presentation Layer )
- ์ญํ : ๋ฐ์ดํฐ ํ์ ๋ณํ, ์ํธํ
- ๊ธฐ๋ฅ : ์ธ์ฝ๋ฉ, ์ํธํ, ์์ถ
JAPG, PNG ์ด๋ฏธ์ง ๋ณํ
ASCII <-> EBCDIC // (๋ณํ,7๋นํธ ์ธ์ฝ๋ฉ -> 8๋นํธ ์ธ์ฝ๋ฉ)
SSL/TLS ์ํธํ
- HTTPS ๋ ๋ณด์์ ์ํด ํํ ๊ณ์ธต์ SSL/TLS ์ฌ์ฉํ๋ HTTP ์ด๋ค.
5. ์ธ์ ๊ณ์ธต ( Session Layer )
- ์ญํ : ํต์ ์ธ์ ๊ด๋ฆฌ - ๋ ผ๋ฆฌ์ ์ธ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํจ
- ๊ธฐ๋ฅ : ์ฐ๊ฒฐ ์๋ฆฝ, ์ ์ง, ์ข ๋ฃ
NetBIOS (์ปดํจํฐ ๊ฐ ํต์ ์ธ์
๊ด๋ฆฌ)
RPC ( Remote Procedure Call, ์๊ฒฉ ํ๋ก์์ ํธ์ถ )
SQL ( ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ธ์
๊ด๋ฆฌ )
์ธ์
ํ ํฐ ๊ด๋ฆฌ
4. ์ ์ก ๊ณ์ธต ( Transport Layer )
- ์ญํ : ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก
- ํ๋กํ ์ฝ : TCP, UDP
TCP ์ฐ๊ฒฐ:
SYN โ SYN/ACK โ ACK
ํฌํธ ๋ฒํธ: 80, 443
3. ๋คํธ์ํฌ ๊ณ์ธต ( Network Layer )
- ์ญํ : ํจํท ๋ผ์ฐํ , ์ฃผ์ ์ง์
- ํ๋กํ ์ฝ : IP, ICMP, ARP
IP ์ฃผ์: 192.168.0.1
๋ผ์ฐํ
ํ
์ด๋ธ ๊ด๋ฆฌ
2. ๋ฐ์ดํฐ๋งํฌ ๊ณ์ธต ( Data Link Layer )
- ์ญํ : ๋ฌผ๋ฆฌ์ ์ฃผ์ ์ง์ , ์ค๋ฅ ๊ฒ์ถ
- ํ๋กํ ์ฝ : Ethernet, MAC
- ๋คํธ์ํฌ ์ฅ๋น์ ๊ณ ์ ๋ฌผ๋ฆฌ ์ฃผ์
- 48๋นํธ ๊ธธ์ด
- ์ ์ธ๊ณ์ ์ผ๋ก ์ ์ผํ ๊ฐ์ด๊ณ ์ ์กฐ ์ ๋ถ์ฌ ๋๋ค.
- NIC(๋คํธ์ํฌ ์นด๋)์ ๊ณ ์ ๋๋ค.
MAC ์ฃผ์: 00:00:5e:00:53:af
ํ๋ ์ ๋จ์ ์ ์ก
1. ๋ฌผ๋ฆฌ ๊ณ์ธต ( Physical Layer )
- ์ญํ : ๋นํธ ๋จ์ ๋ฐ์ดํธ ์ ์ก
- ๋งค์ฒด : ์ผ์ด๋ธ, ํ๋ธ, ๋ฆฌํผํฐ
์ ๊ธฐ ์ ํธ, ๊ด ์ ํธ
RS-232C, ์ด๋๋ท ์ผ์ด๋ธ
๋ฐ์ดํฐ ํ๋ฆ
[์์ฉ] โ [ํํ] โ [์ธ์
] โ [์ ์ก] โ [๋คํธ์ํฌ] โ [๋ฐ์ดํฐ๋งํฌ] โ [๋ฌผ๋ฆฌ]
๋ฐ์ดํฐ ์บก์ํ (Encapsulation)
[๋ฌผ๋ฆฌ] โ [๋ฐ์ดํฐ๋งํฌ] โ [๋คํธ์ํฌ] โ [์ ์ก] โ [์ธ์
] โ [ํํ] โ [์์ฉ]
๋ฐ์ดํฐ ์ญ์บก์ํ (Decapsulation)
๊ฐ ๊ณ์ธต๋ณ PDU ( Protocol Data Unit )
L7-L5: ๋ฐ์ดํฐ (Data)
L4: ์ธ๊ทธ๋จผํธ (Segment)
L3: ํจํท (Packet)
L2: ํ๋ ์ (Frame)
L1: ๋นํธ (Bit)
Mac ๊ณผ IP ๋น๊ต
MAC ์ฃผ์:
- ๋ฌผ๋ฆฌ์ ์ฃผ์
- L2 ๊ณ์ธต
- ๋ณ๊ฒฝ ์ด๋ ค์
- ์ ์ญ์ ์ผ๋ก ์ ์ผ
IP ์ฃผ์:
- ๋
ผ๋ฆฌ์ ์ฃผ์
- L3 ๊ณ์ธต
- ์ฝ๊ฒ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ๋คํธ์ํฌ๋ณ๋ก ํ ๋น
TCP ( Transmission Control Protocol )
- ์ ์ : ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ ๋ณด์ฅํ๋ ํ๋กํ ์ฝ
- ๊ณ์ธต : ์ ์ก ๊ณ์ธต ( L4 )
- ํน์ง : ์ฐ๊ฒฐ ์งํฅ์ (๋ ๊ฐ์ ํธ์คํธ๋ฅผ ์ฐ๊ฒฐ) , ์์ ๋ณด์ฅ, ์ค๋ฅ ๊ฒ์ถ
3way-handshake
- TCP/IP ๋คํธ์ํฌ ํ๋กํ ์ฝ์์ ์ฐ๊ฒฐ์ ์ด๊ธฐํ ํ๋ ๊ณผ์ ์
[ํด๋ผ์ด์ธํธ] [์๋ฒ]
| |
|---SYN(seq=x)-->| # 1๋จ๊ณ
| |
|<-SYN+ACK-------| # 2๋จ๊ณ
| (seq=y,ack=x+1)
| |
|---ACK(ack=y+1)->| # 3๋จ๊ณ
| |
1๋จ๊ณ : SYN ( Synchronzie ) ๋จ๊ณ
ํด๋ผ์ด์ธํธ โ ์๋ฒ
- SYN ํ๋๊ทธ ์ค์
- ์ด๊ธฐ ์ํ์ค ๋ฒํธ(ISN) ์ ์ก
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์์ ์์ฒญํ๋ SYN ํจํท์ ๋ณด๋
- ํจํท์๋ ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ ์ ์์ํ ์ค๋น๊ฐ ๋์๋ค๋ ์ ํธ๋, ํด๋ผ์ด์ธํธ ์ด๊ธฐ ์ํ์ค ๋ฒํธ(ISN) ์ด ํฌํจ
- ํจํท ํ๋ํ๋์ ๋ฒํธ๋ฅผ ๋ถ์ด๊ณ , ํจํท๋ค์ด ๋น ์ง๊ฒ ์๋์ง ํ์ธํ ์ ์์
์) ํด๋ผ์ด์ธํธ -> ์๋ฒ: SYN (SEQ = 1000)
- ํด๋ผ์ด์ธํธ : โ๋ด ์์ ๋ฒํธ๋ 1000์ด์ผโ
2๋จ๊ณ : SYN-ACK ( Synchronize-Acknowledgment ) ๋จ๊ณ
- ์๋ฒ๊ฐ SYN ์์ฒญ์ ๋ฐ๊ณ , ํด๋ผ์ด์ธํธ์๊ฒ SYN-ACK ํจํท์ ๋ณด๋
- ์๋ฒ์ ์ด๊ธฐ ์คํ์ค ๋ฒํธ๋ ํฌํจ๋์ด์์
์) ์๋ฒ -> ํด๋ผ์ด์ธํธ: SYN-ACK (SEQ = 2000, ACK = 1000 + 1 = 1001)
- ์๋ฒ : โ๋ด ์์ ๋ฒํธ๋ 2000์ด๊ณ , ๋์ ๋ค์ ๋ฒํธ๋ 1001์ ๊ธฐ๋ํ ๊ฒโ
3๋จ๊ณ : ACK ( Acknowledgment ) ๋จ๊ณ
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ํ์ค ๋ฒํธ๋ฅผ ๋ฐ์๊ณ , ์๋ก ๊ฐ์ ์ฐ๊ฒฐ์ด ์ ์์ ์ผ๋ก ์๋ฆฝ ๋์๋ค๋ ๊ฒ์ ํ์ธ
์) ํด๋ผ์ด์ธํธ -> ์๋ฒ: ACK (SEQ = 1001, ACK = 2000 + 1 = 2001)
- ํด๋ผ์ด์ธํธ : โ์๊ฒ ์ด, ๋์ ๋ค์ ๋ฒํธ๋ 2001์ ๊ธฐ๋ํ ๊ฒโ
SEQ ( Sequence Number )
- ์ ์ : ์ ์กํ๋ ๋ฐ์ดํฐ์ ์์ ๋ฒํธ
- ์ด๊ธฐ๊ฐ : ๋ณด์์์ ์ด์ ๋ก ๋๋คํ๊ฒ ์ ํ ๋๋ค.
- ์ ์์๋ ํด๋ผ์ด์ธํธ ์ด๊ธฐ SEQ = 1000 (๋๋ค)
ACK ( Acknowledgment Number )
- ์ ์ : ๋ค์์ ๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ SEQ ๋ฒํธ
- ๊ณ์ฐ : ๋ฐ์ SEQ + 1
- โ์ฌ๊ธฐ๊น์ง ๋ฐ์์ผ๋, ๋ค์ ๋ฒํธ๋ฅผ ๋ณด๋ด์ฃผ์ธ์.โ
ESTABLISHED
- ์ฐ๊ฒฐ์ด ์๋ฆฝ๋ ๊ฒ์ ํ์ธํ๊ณ ๋ฐ์ดํฐ ์ ์ก ์ค๋น ์๋ฃ ๋์์ ์๋ฏธ
์์ด์ด์คํฌ
- ๋คํธ์ํฌ ํจํท ๋ถ์ํ๋ ๋๊ตฌ, ํจํท์ ๋ฏ์ด๋ณผ ์ ์์
ํ๋ฆ์ ์ด ( Flow Control )
- ๋ชฉ์ : ์ก์ ์์ ์์ ์ ๊ฐ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋ ์ฐจ์ด ํด๊ฒฐ
- ๋ฐฉ์ : ์์ ์์ ๋ฒํผ ์ํ์ ๋ฐ๋ผ ์ก์ ์๋ ์กฐ์
- ์์ ์ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ ๋ฐฉ์ง
[์์ ์ ๋ฒํผ]
์ฌ์ ๊ณต๊ฐ: 1000๋ฐ์ดํธ
โ ์ก์ ์์๊ฒ ์๋์ฐ ํฌ๊ธฐ 1000 ์๋ฆผ
โ ์ก์ ์๋ ์ต๋ 1000๋ฐ์ดํธ๊น์ง๋ง ์ ์ก
ํผ์ก์ ์ด ( Congestion Control )
- ๋ชฉ์ : ๋คํธ์ํฌ ํผ์ก ์ํ ๊ด๋ฆฌ
- ๋ฐฉ์ : ๋คํธ์ํฌ ์ํฉ์ ๋ฐ๋ผ ์ ์ก ์๋ ์กฐ์
- ํจํท ์์ค ์ต์ํ
์ฌ๋ผ์ด๋ฉ ์๋์ฐ ( Sliding Window )
- ๋ชฉ์ : ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ ์ก
- ๋ฐฉ์ : ์ฌ๋ฌ ํจํท์ ์ฐ์ํด์ ์ ์กํ๊ณ ํ๋ฒ์ ํ์ธ
- ์ฐ์ ์ ์ก์ผ๋ก ํจ์จ์ฑ ํฅ์
slow start
- ๋ชฉ์ : ์ด๊ธฐ ๋คํธ์ํฌ ๋ถํ ๋ฐฉ์ง
- ๋ฐฉ์ : ์ ์ก๋์ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ
- ์์ ํ ์ด๊ธฐ ์ฐ๊ฒฐ, ์ ์ง์ ์๋ ์ฆ๊ฐ
UDP
- ๋น ๋ฅด๊ณ ๊ฐ๋จํ ํต์ ์ ์ํด ์ฐ๊ฒฐ ์ค์ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋คํธ์ํฌ ํ๋กํ ์ฝ
- TCP ๋ณด๋ค๋ ์ ๋ขฐ์ฑ ๋ฎ์ต๋๋ค.
- ๋น ๋ฅธ ์ ์ก์ด ์ต๋ ์ฅ์
CDN
- ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฒ์์ ์๋ต์ ํจ
- ๋ก๋ฉ ์๊ฐ์ ์ค์ด๊ณ , ๋์ญํญ ์ฌ์ฉ์ ์ต์ ํํ๋ฉฐ, ์ ๋ฐ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์ ์ํด
- ์ฌ์ฉ์๊ฐ ์ฌ๊ธฐ ์ ๊ธฐ ํฉ์ด์ ธ ์์ด์ ์ฌ๋ฌ ์ง์ญ์ CDN ์ด๋ผ๋ ๊ฑฐ์ ์ ๋ง๋ค์ด์ ์ฌ์ฉ์์๊ฒ ์๋ต์ ์ ๋ฌํ ๋ ์ข ๋ ๋น ๋ฅด๊ฒ ์ ๋ฌํ๋ ๊ฒ
Cloudflare, Amazon CloudFront, Microsoft Azure CDN, Google Cloud CDN
HTTP / HTTPS
HTTP
- ์ํธํ ๋์ง ์์ ํ ์คํธ๋ฅผ ๋ฐ์ดํฐ๋ฅผ ์ ์ก
- ๋ณด์์ ์ทจ์ฝํ์ง๋ง ํต์ ์๋๋ ๋น ๋ฅด๋ค.
- 80๋ฒ ํฌํธ ์ฌ์ฉ
- OSI 7๊ณ์ธต์์ 7๊ณ์ธต ์์ฉ ๊ณ์ธต์ ์ํ๋ค.
HTTPS
- ์ํธํ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ก
- ์์ ํ ์ ์ก์ ๋ณด์ฅํ๋ค. ( SSL/TLS ์ํธํ )
- ์ฒ์์ค ๋น๋์นญํค๋ฅผ ์ด์ฉํด์ ์ ์์ ๊ฒ์ฆํ๊ณ , ์ดํ์ ๋์นญํค๋ฅผ ์ด์ฉํด ์ํธํํด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- ์ด๋ ๊ฒ ํ๋ ์ด์ ๋? ๋น๋์นญํค๊ฐ ๋ ์์ ํ๊ฒ ์ ์ ํ์ธํ ์ ์๊ณ , ๋์นญํค๊ฐ ๋น ๋ฅธ ์/๋ณตํธํ๊ฐ ๊ฐ๋ฅํด์ ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- OSI 7๊ณ์ธต๊ณผ 6๊ณ์ธต์ ์ํ๋ค. ( SSL/TLS ๊ฐ ํํ ๊ณ์ธต, ์ํธํ ๋ถ๋ถ์ ๋งํจ)
HTTP Method ์์ฒญ์ ์ข ๋ฅ
- GET (์กฐํ)
- POST (์์ฑ)
- PUT (์ ์ฒด ์์ )
- DELETE (์ญ์ )
- PATCH (๋ถ๋ถ ์์ )
์ฐธ๊ณ
- HTTP Method ๋ ์์ฒญ์ ์ข ๋ฅ/๋์์ ๋ํ๋ด๋ ๋ฐฉ์
- REST API : HTTP Method๋ฅผ ํฌํจํ API ์ค๊ณ ๊ท์น
HTTP Header/Body ๊ตฌ์กฐ
[Start Line]
GET /index.html HTTP/1.1
[Headers]
Host: www.example.com
Content-Type: application/json
...
[Empty Line]
[Body]
{
"name": "John",
"age": 30
}
// Request
POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token123
{
"name": "John",
"email": "john@example.com"
}
// Response
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache
Set-Cookie: session=abc123
{
"id": 1,
"status": "success"
}
HTTP ์ํ ์ฝ๋
1xxย (์ ๋ณด) - Information
100: Continue (๊ณ์)
101: Switching Protocols (ํ๋กํ ์ฝ ์ ํ)
102: Processing (์ฒ๋ฆฌ ์ค)
2xx (์ฑ๊ณต) - Success
200: OK (์์ฒญ ์ฑ๊ณต)
201: Created (์์ฑ ์ฑ๊ณต)
202: Accepted (์์ฒญ ์ ์)
204: No Content (์ฑ๊ณต, ๋ด์ฉ ์์)
206: Partial Content (๋ถ๋ถ ์ฑ๊ณต)
3xx (๋ฆฌ๋ค์ด๋ ์ ) - Redirection
300: Multiple Choices (์ฌ๋ฌ ์ ํ)
301: Moved Permanently (์๊ตฌ ์ด๋)
302: Found (์์ ์ด๋)
304: Not Modified (๋ณ๊ฒฝ ์์)
307: Temporary Redirect (์์ ๋ฆฌ๋ค์ด๋ ์
)
308: Permanent Redirect (์๊ตฌ ๋ฆฌ๋ค์ด๋ ์
)
4xx (ํด๋ผ์ด์ธํธย ์ค๋ฅ) - Client Error
400: Bad Request (์๋ชป๋ ์์ฒญ)
401: Unauthorized (์ธ์ฆ ํ์)
403: Forbidden (๊ถํ ์์)
404: Not Found (์ฐพ์ ์ ์์)
405: Method Not Allowed (ํ์ฉ๋์ง ์์ ๋ฉ์๋)
409: Conflict (์ถฉ๋)
429: Too Many Requests (์์ฒญ ํ์ ์ด๊ณผ)
5xx (์๋ฒย ์ค๋ฅ) - Server Error
500: Internal Server Error (์๋ฒ ๋ด๋ถ ์ค๋ฅ)
501: Not Implemented (๊ตฌํ๋์ง ์์)
502: Bad Gateway (๊ฒ์ดํธ์จ์ด ์ค๋ฅ)
503: Service Unavailable (์๋น์ค ์ด์ฉ ๋ถ๊ฐ)
504: Gateway Timeout (๊ฒ์ดํธ์จ์ด ์๊ฐ ์ด๊ณผ)
์ํย ์ฝ๋ ๊ทธ๋ฃน๋ณ ์๋ฏธย
1xx: "์ ๊น๋ง์..."
2xx: "์ฑ๊ณตํ์ด์!"
3xx: "๋ค๋ฅธ ๊ณณ์ผ๋ก ๊ฐ๋ณด์ธ์"
4xx: "ํด๋ผ์ด์ธํธ๊ฐ ์๋ชปํ์ด์"
5xx: "์๋ฒ๊ฐ ์๋ชปํ์ด์"
TLS / SSL ( Transport Layer Security / Secure Sockets Layer )
- ๋ฐ์ดํฐ ์ํธํ ํ๋กํ ์ฝ (๋ณด์ ํต์ ์ ์ํด ๋ฐฉ๋ฒ๊ณผ ๊ท์น์ ๋ชจ์ ๋๋)
- HTTPS์ ๋ณด์ ๊ณ์ธต์ด๋ค.
- ํ์ฌ๋ SSL โ TLS ๋ก ๋ฐ์ ํจ
- TLS/SSL Handshake ๊ฐ ๊ต์ฌ์ ๋์ ์๋ ๋น๋์นญํค๋ก ์๋ก ์ ์ ๋จผ์ ํ์ธํ๊ณ ๋์นญํค๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์
[1๋จ๊ณ: ์๋ฒ ์ธ์ฆ & ์ํธํ ๋ฐฉ์ ๊ฒฐ์ ]
ํด๋ผ์ด์ธํธ โ ์๋ฒ: "Client Hello"
- ์ง์๊ฐ๋ฅํ ์ํธํ ๋ฐฉ์
- ํด๋ผ์ด์ธํธ ๋๋ค ๋ฐ์ดํฐ
์๋ฒ โ ํด๋ผ์ด์ธํธ: "Server Hello"
- ์๋ฒ ์ธ์ฆ์ (์๋ฒ ๊ณต๊ฐํค ํฌํจ)
- ์ ํ๋ ์ํธํ ๋ฐฉ์
- ์๋ฒ ๋๋ค ๋ฐ์ดํฐ
[2๋จ๊ณ: ๋์นญํค ๊ตํ]
ํด๋ผ์ด์ธํธ:
- CA ๊ณต๊ฐํค๋ก ์๋ฒ ์ธ์ฆ์ ๊ฒ์ฆ
- ํด๋ผ์ด์ธํธ/์๋ฒ ๋๋ค ๋ฐ์ดํฐ๋ก ๋์นญํค ์์ฑ
- ์๋ฒ ๊ณต๊ฐํค๋ก ๋์นญํค ์ํธํ
ํด๋ผ์ด์ธํธ โ ์๋ฒ: ์ํธํ๋ ๋์นญํค ์ ์ก
์๋ฒ:
- ๊ฐ์ธํค๋ก ์ํธํ๋ ๋์นญํค ๋ณตํธํ
[3๋จ๊ณ: ๋์นญํค ํต์ ์์]
์ดํ ๋ชจ๋ ํต์ : ๋์นญํค๋ก ์ํธํ/๋ณตํธํ
QUIC, HTTP ๋ฒ์ ๋ณ ํน์ง ๋น๊ต, HTTP/2 Multiplexing
- ์ ์๋ฟ์ง ์์์ ์ ๋ฆฌ๋ง ํ์
QUIC (Quick UDP Internet Connection)
ํน์ง:
- UDP ๊ธฐ๋ฐ ํ๋กํ ์ฝ
- TCP+TLS+HTTP/2 ๊ธฐ๋ฅ์ ํตํฉ
- ์ฐ๊ฒฐ ์ค์ ์๊ฐ ๊ฐ์
- ํฅ์๋ ํผ์ก ์ ์ด
์ฅ์ :
- ๋น ๋ฅธ ์ฐ๊ฒฐ ์๋ฆฝ (0-RTT)
- ํฅ์๋ ํจํท ์์ค ๋ณต๊ตฌ
- ์ฐ๊ฒฐ ๋ง์ด๊ทธ๋ ์ด์
์ง์
HTTP ๋ฒ์ ๋ณ ํน์ง
HTTP/1.0 (1996)
- ์ฐ๊ฒฐ๋น ํ๋์ ์์ฒญ
- ๋งค ์์ฒญ๋ง๋ค ์๋ก์ด ์ฐ๊ฒฐ
- Connection: keep-alive ์์
HTTP/1.1ย (1997)
- ์ง์ ์ฐ๊ฒฐ (keep-alive)
- ํ์ดํ๋ผ์ด๋ ๋์
- ํธ์คํธ ํค๋ ํ์
- HOL(Head of Line) Blocking ๋ฌธ์
HTTP/2ย (2015)
- ๋ฉํฐํ๋ ์ฑ
- ํค๋ ์์ถ (HPACK)
- ์๋ฒ ํธ์
- ์คํธ๋ฆผ ์ฐ์ ์์
- ๋ฐ์ด๋๋ฆฌ ํ๋กํ ์ฝ
HTTP/3 (2022)
- QUIC ๊ธฐ๋ฐ
- ํฅ์๋ ๋ฉํฐํ๋ ์ฑ
- ๊ฐ์ ๋ ํผ์ก ์ ์ด
- 0-RTT ์ฐ๊ฒฐ
HTTP/2ย Multiplexing ์์ธ ์ค๋ช
- HTTP/1.1 ์์๋ ์์ฒญ์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ ์์ฒญ์ด ์ง์ฐ ๋๋ ๋ฌธ์ ๊ฐ ์์๋ค.
- ๋จ์ผ ์ฐ๊ฒฐ๋ก ์ฌ๋ฌ ์์ฒญ์ ์ฒ๋ฆฌํจ
์์ฒญ1 ---->
์์ฒญ2 ---->
์์ฒญ3 ---->
์๋ต2 ---->
์๋ต1 ---->
์๋ต3 ---->
(๋์ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
๋์นญํค, ๋น๋์นญํค ์ํธํ ๋ฐฉ์
๋์นญํค ์ํธํ ๋ฐฉ์
- ํ๋์ ํค๋ก ์ํธํ/๋ณตํธํ๋ฅผ ํ๋ค.
- ์๋๊ฐ ๋น ๋ฅด๋ค.
- ํค ๊ณต์ ๊ฐ ์ด๋ ต๋ค. โ ๋๊ตฐ๊ฐ๊ฐ ํ์ทจํ์ ๋ ๊ทธ ๋๊ตฐ๊ฐ๋ ์ํธํ/๋ณตํธํ๊ฐ ๊ฐ๋ฅํด์ง๊ธฐ ๋๋ฌธ
- ํด๊ฒฐ ๋ฐฉ์์ผ๋ก๋ ๋น๋์นญํค๋ก ๋จผ์ ์์ ํ์ง ์ ์ ๊ฒ์ฌ๋ฅผ ๋จผ์ ํ๋ค.
- ์์ ์๊ณ ๋ฆฌ์ฆ : AES, DES, 3DES
[์ํธํ]
ํ๋ฌธ + ๋์นญํค โ ์ํธ๋ฌธ
[๋ณตํธํ]
์ํธ๋ฌธ + ๋์นญํค โ ํ๋ฌธ
๋น๋์นญํค ์ํธํ ๋ฐฉ์
- ๊ณต๊ฐํค/๊ฐ์ธํค ์์ผ๋ก ์ฌ์ฉ
- ์๋๊ฐ ๋๋ฆฌ์ง๋ง ์์ ํ ํค ๊ตํ์ด ๊ฐ๋ฅํ๋ค.
- ์์ ์๊ณ ๋ฆฌ์ฆ : RSA, ECC, DSA
[์ํธํ]
ํ๋ฌธ + ๊ณต๊ฐํค โ ์ํธ๋ฌธ
์ํธ๋ฌธ + ๊ฐ์ธํค โ ํ๋ฌธ
[์ ์์๋ช
]
๋ฌธ์ + ๊ฐ์ธํค โ ์๋ช
์๋ช
+ ๊ณต๊ฐํค โ ๊ฒ์ฆ
HTTP Cache
- ์น ์ฌ์ดํธ๋ ํ๋ก์ ์๋ฒ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ ์์(์ด๋ฏธ์ง, JS, CSS ๋ฑ)์ ์์ ์ ์ฅํด์ ์ฌ์ฌ์ฉ ์ฌ์ฉํ๋ ๊ฒ์ ๋งํ๋ค.
- ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์ ์ํค๋ ๊ธฐ์ ์ด๋ค.
- ํ๋ก์ ์๋ฒ๋ ? ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์ค๊ณ ์๋ฒ๋ฅผ ๋งํ๋ค. (Forward Proxy, Reverse Proxy)
API
- API๋ ๋ ๊ฐ์ฒด ์ฌ์ด์ ์๋ก ์ํต์ ์ํด ๋ง๋ค์ด์ง ์ ์
- ์๋ก ๋ค๋ฅธ ์์คํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ณ ๊ธฐ๋ฅ์ ๊ณต์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- ๊ธฐ๋ฅ์ ์ฌ์ฌ์ฉ ํ ์ ์๋ค.
- ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์์คํ ์ ๊ตฌ์ถํ ์ ์๋ค.
API Gateway
- ํด๋ผ์ด์ธํธ์ ๋ฐฑ์๋ ์๋น์ค ์ฌ์ด์ ์ค๊ฐ ๊ณ์ธต
- ๋ชจ๋ API ์์ฒญ์ ์ง์ ์ ์ด๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ์ผ๋ก๋ ๋ผ์ฐํ , ์ธ์ฆ/์ธ๊ฐ (JWT, API ํค ํ์ธ, OAuth ), ๋ก๋๋ฐธ๋ฐ์ฑ(์์ฒญ ๋ถ์ฐ ์ฒ๋ฆฌ), ์บ์ฑ์ด ์๋ค.
- ๋ณด์์ ๊ฐํ, ์ฑ๋ฅ ์ต์ ํ, ๋ชจ๋ํฐ๋ง/๋ก๊น , ์ ์ฐ์ฑ์ด ๊ฐํ๋๋ค.
[ํด๋ผ์ด์ธํธ]
โ
[API Gateway]
โ
โโโโโโผโโโโโ
โ โ โ
์ธ์ฆ ์ฃผ๋ฌธ ์ํ
์๋น์ค ์๋น์ค ์๋น์ค
REST ์ํคํ ์ฒ ์คํ์ผ
- ์์์ ์ค์ฌ์ผ๋ก API ๋ฅผ ์ค๊ณํ๋ ์คํ์ผ์ ๋งํจ
- ์์ = ํด๋ผ์ ์๋ฒ๊ฐ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ
- REST๋ ์ํํธ์จ์ด ์ํคํ
์ฒ ์คํ์ผ ์ค ํ๋์ด๋ค.
- Uniform Interface
- ๋ชจ๋ API ๊ฐ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ํต์ ํ๋๋ก ํจ
- ๋จ์์ฑ๊ณผ ์ํธ ์ด์ฉ์ฑ์ ๋ณด์ฅํด์ผ ํ๋ค.
- Client-Server
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ๊ตฌ๋ถ๋์ด ์์ด์ผ ํ๋ค.
- Stateless
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์์์ผ ํ๋ค.
- Cachable
- ์๋ต์ ์บ์ฑ์ด ๊ฐ๋ฅํ๋๋ก ๋ช
์ ๋์ด์ผ ํ๋ค.
- Layered System
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋จ์ผ ์๋ฒ์ธ์ง, ๋ค์ธต ๊ณ์ธต์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์ค๊ณ์๋ฒ๋ฅผ ๊ฑฐ์น๋์ง ์ ์ ์์ด์ผ ํ๋ค.
- Self-Descriptiveness
- ๋ฉ์ธ์ง ์์ฒด๊ฐ ์ถฉ๋ถํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ด์, ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ ์ง ์ ์ ์์ด์ผ ํ๋ค.
REST API
- REST ์ํคํ ์ฒ ์คํ์ผ์ ๋ฐ๋ฅด๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ธํฐํ์ด์ค
- ๊ฐ๋ฐ์ ๊ด์ ์ผ๊ด๋ ํต์ ๊ท์น์ ํตํด ์ ๋ฌด ํจ์จ์ ๋์ด๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- ๋จ์ํ URL ๊ตฌ์กฐ๋ฅผ ๋ณด๊ณ ๋ ์ด๋ค ์์ฒญ์ธ์ง ์ดํดํ ์ ์๋๋ก ํ๋ค.
- ํ์์ ๋ฐ๋ผ GET PUT DELETE ๋ฑ์ผ๋ก HTTP ๋ฉ์๋๋ฅผ ํ์ฉํ๋ฉด RESTful ํ๋ค๊ณ ํ๋ค.
Leave a comment