[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
๋ผ์šฐํŒ… ํ…Œ์ด๋ธ” ๊ด€๋ฆฌ
  • ์—ญํ•  : ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ ์ง€์ •, ์˜ค๋ฅ˜ ๊ฒ€์ถœ
  • ํ”„๋กœํ† ์ฝœ : 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๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
    1. Uniform Interface
    • ๋ชจ๋“  API ๊ฐ€ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•˜๋„๋ก ํ•จ
    • ๋‹จ์ˆœ์„ฑ๊ณผ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค.
      1. Client-Server
    • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
      1. Stateless
    • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
      1. Cachable
    • ์‘๋‹ต์€ ์บ์‹ฑ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ช…์‹œ ๋˜์–ด์•ผ ํ•œ๋‹ค.
      1. Layered System
    • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ๋‹จ์ผ ์„œ๋ฒ„์ธ์ง€, ๋‹ค์ธต ๊ณ„์ธต์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ค‘๊ณ„์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์–ด์•ผ ํ•œ๋‹ค.
      1. Self-Descriptiveness
    • ๋ฉ”์„ธ์ง€ ์ž์ฒด๊ฐ€ ์ถฉ๋ถ„ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์–ด์„œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ง€ ์•Œ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

REST API

  • REST ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์„ ๋”ฐ๋ฅด๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ธํ„ฐํŽ˜์ด์Šค
  • ๊ฐœ๋ฐœ์ž ๊ด€์˜ ์ผ๊ด€๋œ ํ†ต์‹  ๊ทœ์น™์„ ํ†ตํ•ด ์—…๋ฌด ํšจ์œจ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋‹จ์ˆœํ•œ URL ๊ตฌ์กฐ๋ฅผ ๋ณด๊ณ ๋„ ์–ด๋–ค ์š”์ฒญ์ธ์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • ํ–‰์œ„์— ๋”ฐ๋ผ GET PUT DELETE ๋“ฑ์œผ๋กœ HTTP ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด RESTful ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

Categories:

Updated:

Leave a comment