HTTP

λ¬΄μƒνƒœμ„±μ„ μœ μ§€ν•˜λŠ” 이유: λ¦¬μ†ŒμŠ€μ˜ 뢀담을 쀄이기 μœ„ν•΄μ„œ,
λ¬΄μƒνƒœμ„±μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ 뢀뢄은, μƒνƒœκ°€ μ—†λ‹€λŠ” κ·Έ μžμ²΄λ³΄λ‹€λŠ” μƒνƒœλ₯Ό κΈ°μ–΅ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— β€œλͺ¨λ“  HTTP μš”μ²­μ—λŠ” μ„œλ²„μ—μ„œ κ·Έ μš”μ²­μ„ μˆ˜ν–‰ν•  λ•Œ ν•„μš”ν•œ 정보가 λͺ¨λ‘ λ“€μ–΄μžˆλ‹€λŠ” μ˜λ―Έβ€κ°€ 되기 λ•Œλ¬Έμ— 이 뢀뢄이 μ€‘μš”ν•©λ‹ˆλ‹€.
http1의 κ°€μž₯ 큰 문제 쀑 ν•˜λ‚˜κ°€ β€œλΉ„λŒ€ν•œ λ©”μ„Έμ§€ ν—€λ”β€μž…λ‹ˆλ‹€. μ›ΉνŽ˜μ΄μ§€λ‹Ή 평균 μš”μ²­μˆ˜λŠ” μ•½ 140개 μš”μ²­λ‹Ή 평균 ν¬κΈ°λŠ” 460 bytes둜 μ›ΉνŽ˜μ΄μ§€λ‹Ή 전체 μš”μ²­ ν¬κΈ°λŠ” 총 63kb에 λ‹¬ν•©λ‹ˆλ‹€. 이 λ•Œλ¬Έμ— 졜적의 ν™˜κ²½μ—μ„œλ„ 지연이 μΌμ–΄λ‚˜κ³ , μ—¬κΈ°μ„œ μ§„μ§œ λ¬Έμ œλŠ” μ‹€μ œλ‘œ μ—¬λŸ¬ μš”μ²­ μ‚¬μ΄μ—λŠ” μƒˆλ‘œμš΄ 데이터가 거의 μ—†λ‹€λŠ” μ μž…λ‹ˆλ‹€.
λ”°λΌμ„œ h2μ—μ„œλŠ” 헀더압좕 및 헀더이λ ₯ μ €μž₯ λ“± μ—¬λŸ¬κ°€μ§€ λ°©μ‹μœΌλ‘œ ν•΄κ²°ν•˜μ˜€μŠ΅λ‹ˆλ‹€,

HTTP PATCH PUT 차이

λͺ¨λ‘ UPDATEμ΄μ§€λ§Œ,
PUT은 전체 μˆ˜μ •,
PATCHλŠ” λΆ€λΆ„ μˆ˜μ •μ˜ 차이λ₯Ό 보인닀.
Β 
Β 
WEB의 μ—­μ‚¬λŠ” 1991λ…„λΆ€ν„° μ‹œμž‘λ˜μ—ˆκ³ , μ²˜μŒμ—λŠ” κ°„λ‹¨νžˆ μΈν„°λ„·μ—μ„œ μ‚¬λžŒλ“€κ³Ό μ •λ³΄κ³΅μœ λ₯Ό μœ„ν•΄ νƒ„μƒλ˜μ—ˆλ‹€. (ν‘œν˜„ ν˜•μ‹μ€ HTML)

HTTP / 1.0 λ‘œμ΄ν•„λ”© (1994~1998)

λ©ˆμΆ€μ—†μ΄ μ–΄λ–»κ²Œ HTTPλ₯Ό κ°œμ„ ν• μ§€? κ³ λ―Όν•˜λ©΄μ„œ νƒ„μƒν•œκ²Œ REST API이닀. (1998년에 1μ°¨ 2000년에 2μ°¨)
XML-RPC(1998) -> REST API의 첫 λ„μž…κ³Ό 같은해 μžˆμ—ˆλ˜ "SOAP"λΌλŠ” μ΄λ¦„μ˜ 또 λ‹€λ₯Έ APIκ°€ μžˆλ‹€.
Salesforce의 APIκ°€ 졜초의 μƒμš©ν™”λœ API이닀. (2000.2μ›”) κ·ΈλŸ¬λ‚˜, λ³΅μž‘ν•˜λ‹€. κ·Έ 이후 flickr APIκ°€ λ˜μ—ˆλ‹€.
SOAP API의 νŠΉμ§•μ€ λ³΅μž‘ν•˜λ‹€
REST API의 νŠΉμ§•μ€ μ§§κ³  λ‹¨μˆœν•˜μ—¬ 인기가 λ†’μ•˜λ‹€.

MicroSoft 의 REST Guideline

  1. URI -> HTTPS {service Root} / {collection} / {id}
  1. GET , PUT, DELETE, POST , HEAD, PATCH, OPTIONS 지원해야 ν•œλ‹€.
  1. API 버저닝은 Major, Minor둜 ν•˜κ³  URI에 버전 정보λ₯Ό ν¬ν•¨ν•œλ‹€.

REST의 νŠΉμ§•

  • Client-Server
  • Stateless
  • cache
  • uniform - interface **uniform-interface μ œμ•½μ‘°κ±΄
  1. identification of resources
  1. manipulation of resources through representation
  1. self-descriptive messages : λ©”μ‹œμ§€ 슀슀둜 μ„€λͺ…
  1. hypermedia as the engine of application state(HATEOAS) {3,4λ²ˆμ€ 잘 μ§€μΌœμ§€μ§€ μ•ŠλŠ”λ‹€.} μ™œ uniform - interface ? -> 독립적 μ§„ν™” === μ„œλ²„μ˜ κΈ°λŠ₯이 λ³€κ²½λ˜μ–΄λ„ ν΄λΌμ΄μ–ΈνŠΈ μ—…λ°μ΄νŠΈλ₯Ό ν•  ν•„μš”κ°€ μ—†λ‹€.
  • layered system
  • code-on-demand

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μƒνƒœμ˜ 전이

notion image

HTTP 1.1

  1. Persistant connection
  1. pipelining
  1. Head of line blocking
  1. header 쀑볡

HTTP 2.0

  1. HTTP λ©”μ‹œμ§€ 전솑 λ°©μ‹μ˜ λ³€ν™”
  1. λ°”μ΄λ„ˆλ¦¬ ν”„λ ˆμ΄λ° 계측 μ‚¬μš©
  1. νŒŒμ‹± 전솑속도 빨라쑌고, 였λ₯˜ λ°œμƒ κ°€λŠ₯성이 λ–¨μ–΄μ‘Œλ‹€.

Multiplexing -> Head of line blocking ν•΄κ²°

  1. Stream Prioritization -> λ¦¬μ†ŒμŠ€κ°„ μš°μ„  μˆœμœ„λ₯Ό μ„€μ • κ°€λŠ₯
  1. Server push -> λΌμ›ŒμžˆλŠ” νŒŒμΌμ„ 미리 μ„œλ²„μΈ‘μ—μ„œ 보낸닀.
  1. Header Compression -> 헀더 크기λ₯Ό 쀄여 νŽ˜μ΄μ§€ λ‘œλ“œ μ‹œκ°„ κ°μ†Œ. (Static dynamic table)

QUIC -> UDP기반, ꡬ글

  1. 전솑속도 ν–₯상 -> 첫 μ—°κ²° μ„€μ •μ—μ„œ ν•„μš”ν•œ 정보와 ν•¨κ»˜ 데이터 전솑 μ—°κ²° 성곡 μ‹œ 섀정을 μΊμ‹±ν•˜μ—¬, λ‹€μŒ μ—°κ²° λ•Œ λ°”λ‘œ 성립 κ°€λŠ₯.
  1. 컀λ„₯μ…˜ UUID λΌλŠ” κ³ μœ ν•œ μ‹λ³„μžλ‘œ μ„œλ²„μ— μ—°κ²° -> 컀λ„₯μ…˜ 재수립 ν•„μš” μ—†μŒ.
  1. λ³΄μ•ˆ : TLS κΈ°λ³Έ 적용, IP spoofing / replay attack λ°©μ§€ -> λ³΄μ•ˆμ„± ν–₯상
  1. 독립 슀트림 -> ν–₯μƒλœ λ©€ν‹°ν”Œλ ‰μ‹± κ°€λŠ₯
  1. 퀡을 μ¨μ„œ ꡬ글은 λ‘œλ”© 평균 3%κ°œμ„  / 유튜브 버퍼링 30% κ°œμ„ 

HTTP 3.0 μΆœμ‹œ 됨

μ›Ή μš”μ²­ / 응닡.

웹은 인터넷이 μ•„λ‹ˆλ‹€.
LAN(Local Area Network) : 근거리 톡신망 -> κ°€κΉŒμš΄ 지역을 ν•œλ° 묢은 컴퓨터 λ„€νŠΈμ›Œν¬ (MAN, WAN... λ“±)
인터넷: 컴퓨터 λ„€νŠΈμ›Œν¬λ₯Ό μ„œλ‘œ μ—°κ²° μ§€μ–΄μ£ΌλŠ” 범지ꡬ적 λ„€νŠΈμ›Œν¬.
notion image
μ›Ήμ˜ λͺ©μ  : hypertext
μ›Ήμ˜ μ°½μ‹œμž : νŒ€ λ²„λ„ˆμŠ€λ¦¬.
μ›Ήμ˜ 쑴재 이유 : 정보(μžμ›)의 곡유 -> 웹은 μˆ˜λ§Žμ€ μš”μ²­κ³Ό 응닡 μ‚¬μ΄ν΄μ˜ μ—°μ†μœΌλ‘œ 이루어 μ Έμžˆλ‹€.

μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ

μ„œλ²„: 정보, μžμ›, μ„œλΉ„μŠ€ 제곡. ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μš”μ²­λ°›μ•„ μ‘λ‹΅ν•˜λŠ” μΈ‘
ν΄λΌμ΄μ–ΈνŠΈ : 정보, μžμ›, μ„œλΉ„μŠ€ μ‚¬μš©. μ„œλ²„μ—κ²Œ μš”μ²­ ν•˜λŠ” μΈ‘.

HTTP: μ›Ή μš”μ²­κ³Ό 응닡에 κ΄€ν•œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ μ‚¬μ΄μ˜ κ·œμ•½(약속) (Hyper Text Transfer Protocol)

  • λΉ„μ—°κ²°μ„± : μ„œλ²„ 응닡을 마치면 연결을 λŠμ–΄λ²„λ¦°λ‹€. λ‹€μŒ μš”μ²­μ€ μƒˆλ‘œμš΄ 연결을 톡해 이루어진닀.
단점: λ„€νŠΈμ›Œν¬ λΉ„μš© μΈ‘λ©΄μ—μ„œ λΉ„νš¨μœ¨μ  보완: HTTP 1.1 / Keep - alive

HTTP νŠΉμ„±

  • λ¬΄μƒνƒœ : ν•˜λ‚˜μ˜ μš”μ²­μ΄ μ§„ν–‰λ˜λŠ” λ™μ•ˆλ§Œ μ„œλ‘œλ₯Ό 인지 단점: ν΄λΌμ΄μ–ΈνŠΈ 인증(둜그인)이 ν•„μš”ν•œ μ„œλΉ„μŠ€μ—μ„œ λΆˆνŽΈν•¨. 보완: 1. μΏ ν‚€, μ„Έμ…˜, 토큰(Oauth, JWT) - μƒνƒœλ₯Ό κΈ°μ–΅ν•˜κΈ° μœ„ν•œ κΈ°λŠ₯λ“€.

HTTP Status Code(응닡 μ½”λ“œ, μƒνƒœ μ½”λ“œ)

1xx(정보) 2xx(성곡) 3xx(λ¦¬λ‹€μ΄λ ‰μ…˜) 4xx(ν΄λΌμ΄μ–ΈνŠΈμ—λŸ¬) 5xx(μ„œλ²„μ—λŸ¬)

HTTP Methods

GET : READ (μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€ μ‘°νšŒν• λ•Œ) POST : CREATE (μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€ 생성 ν• λ•Œ) PUT : UPDATE (μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€ μˆ˜μ • ν• λ•Œ) DELETE : DELETE (μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€ μ‚­μ œ ν• λ•Œ)
HEAD: BODYλΉΌκ³  HEAD둜 응닡 -> (λ¦¬μ†ŒμŠ€ ν™•μΈμš©λ„) PATCH : λ¦¬μ†ŒμŠ€ λΆ€λΆ„λ§Œ μˆ˜μ • ν•  λ•Œ OPTIONS : 지원 κ°€λŠ₯ λ©”μ†Œλ“œ μ’…λ₯˜ μ•Œμ•„λ³Όλ•Œ (CORS) TRACE : λ¦¬μ†ŒμŠ€ 경둜λ₯Ό 따라 λ©”μ‹œμ§€ pop-back ν…ŒμŠ€νŠΈ μ‹€ν–‰ CONNECT : λ¦¬μ†ŒμŠ€λ‘œ μ‹λ³„λ˜λŠ” μ„œλ²„λ‘œμ˜ 터널을 맺을 λ•Œ,

DNS

Domain Name System

Same Origin-Policy: λΈŒλΌμš°μ € κΈ°λ³Έ 섀정은 ν•˜λ‚˜μ˜ μ„œλ²„λ§Œμ„ μ—°κ²°ν•œλ‹€.

  1. μš”μ²­λ©”μ†Œλ“œ 정리
  1. λΌμš°ν„° μ •μ˜
  1. μš”μ²­λ°μ΄ν„° λ°›κΈ°
  1. λ™μž‘κ΅¬ν˜„
  1. 데이터 μƒνƒœ 응닡.