: HTTP λ©μμ§λ‘ κ±°μ λͺ¨λ ννμ λ°μ΄ν°κ° μ μ‘λ μ μλ€.
(ex. HTML, ν
μ€νΈ, μ΄λ―Έμ§, μμ±, μμ, νμΌ, JSON, XML(API)..)
μλ² κ° λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ λλ λλΆλΆ HTTPλ₯Ό μ¬μ©νλ€.
βοΈ HTTP μμ¬
HTTP/1.1
(1997λ
) β κ°μ₯ λ§μ΄ μ¬μ©λλ©° μ°λ¦¬μκ² κ°μ₯ μ€μν λ²μ μΌλ‘ κΌ½νλ€.
βοΈ κΈ°λ° νλ‘ν μ½
TCP
: HTTP/1.1(νμ¬ μ£Όλ‘ μ¬μ©), HTTP/2 β tcp νλ‘ν μ½ μ λμ
UDP
: HTTP/3 β udp κΈ°λ°
(HTTP/2, HTTP/3 λν μ μ μ¦κ°)
: Request Response ꡬ쑰
: (μ μ§ν₯). μλ²κ° ν΄λΌμ΄μΈνΈμ μνλ₯Ό 보쑴νμ§ λͺ»ν¨
- μ₯μ : μλ² νμ₯μ± λμ (μ€μΌμΌ μμ)
- λ¨μ : ν΄λΌμ΄μΈνΈκ° μΆκ° λ°μ΄ν° μ μ‘
π μνμ μ§ (Stateful)μ μμλ₯Ό λ€μ΄λ³΄μ.
ππ»ββοΈ: μ μλ, μ μμ΄μ€ν¬λ¦Ό λ¨Ήκ³ μΆμ΄μ.
π©π»βπ«: λΈκΈ°? μ΄μ½? μ΄λ€κ² λ¨Ήκ³ μΆλ?ππ»ββοΈ: μ λ μ΄μ½κ° λ¨Ήκ³ μΆμ΄μ.
π©π»βπ«: κ·Έλ, μ΄μ½ μμ΄μ€ν¬λ¦Όμ λλμ€ μ²«λ²μ§Έ μΉΈμ μμΌλ κ°μ Έλ€ λ¨Ήμ΄λ λΌ.ππ»ββοΈ: λ κ° λ¨Ήμ΄λ λΌμ ??
π©π»βπ«: κ·Έλ !!
μ΄ λνλ₯Ό 보μμ λ μλ¬΄λ° λ¬Έμ κ° μλ€. λ¨, μ μλμ΄ λ°λΉ μ΄μΌκΈ°λ₯Ό λλλ€ μ¬λΌμ‘λ€ ..! μλ° μ μλμ΄ μ€μ ¨λ€λ©΄ ..?
ππ»ββοΈ: μ μλ, μ μμ΄μ€ν¬λ¦Ό λ¨Ήκ³ μΆμ΄μ.
π©π»βπ« (ν λΌλ° μ μλ): λΈκΈ°? μ΄μ½? μ΄λ€κ² λ¨Ήκ³ μΆλ?
ππ»ββοΈπ¨
ππ»ββοΈ: μ λ μ΄μ½κ° λ¨Ήκ³ μΆμ΄μ.
π©π»βπ« (κΈ°λ¦°λ° μ μλ): ?? κ°μκΈ° λ¬΄μ¨ μ΄μ½? μ΄μ½λ μ΄ λ¨Ήκ³ μΆλ?
ππ»ββοΈπ¨
ππ»ββοΈ: λ κ° λ¨Ήμ΄λ λΌμ ??
π©π»βπ« (νκ·λ° μ μλ): ?? λ λ κ°λ λ¨Ήκ² λ€λ κ±°μΌ?
ππ»ββοΈ μμ΄μ λνλ λκ°λ€. κ·Έλ¬λ μ μλμ΄ μκΎΈ λ°λλ©΄μ λνμ νλ¦μ νμ νμ§ λͺ»νκ³ μλ€.
Statefulμ΄λΌλ©΄ μνλ₯Ό μ μ§ν΄μ€μΌ νλ€.
ππ»ββοΈ: μ μλ, μ μμ΄μ€ν¬λ¦Ό λ¨Ήκ³ μΆμ΄μ.
π©π»βπ«: λΈκΈ°? μ΄μ½? μ΄λ€κ² λ¨Ήκ³ μΆλ? (μμ΄μ€ν¬λ¦Ό μν μ μ§)ππ»ββοΈ: μ λ μ΄μ½κ° λ¨Ήκ³ μΆμ΄μ.
π©π»βπ«: κ·Έλ, μ΄μ½ μμ΄μ€ν¬λ¦Όμ λλμ€ μ²«λ²μ§Έ μΉΈμ μμΌλ κ°μ Έλ€ λ¨Ήμ΄λ λΌ. (μμ΄μ€ν¬λ¦Ό, μ΄μ½λ§ μν μ μ§)ππ»ββοΈ: λ κ° λ¨Ήμ΄λ λΌμ ??
π©π»βπ«: κ·Έλ !! (λ ΈνΈλΆ, μ΄μ½λ§, λ κ° μν μ μ§)
π 무μν (Stateless)μ μμλ₯Ό λ€μ΄λ³΄μ.
ππ»ββοΈ: μ μλ, μ μμ΄μ€ν¬λ¦Ό λ¨Ήκ³ μΆμ΄μ.
π©π»βπ«: λΈκΈ°? μ΄μ½? μ΄λ€κ² λ¨Ήκ³ μΆλ?ππ»ββοΈ: μ λ μ΄μ½ μμ΄μ€ν¬λ¦Όμ΄ λ¨Ήκ³ μΆμ΄μ.
π©π»βπ«: κ·Έλ, μ΄μ½ μμ΄μ€ν¬λ¦Όμ λλμ€ μ²«λ²μ§Έ μΉΈμ μμΌλ κ°μ Έλ€ λ¨Ήμ΄λ λΌ.ππ»ββοΈ: μ΄μ½ μμ΄μ€ν¬λ¦Ό λ κ° λ¨Ήμ΄λ λΌμ ??
π©π»βπ«: κ·Έλ !! μ΄μ½ μμ΄μ€ν¬λ¦Ό λκ° λ¨Ήμ΄.
μ΄κ±΄ 무μνμΌ λ λν λ΄μ©μ΄λ€.
μ΄μ μ μλμ΄ λ°λμμ λλ₯Ό λ€μ μ΄ν΄λ³΄μ.
ππ»ββοΈ: μ μλ, μ μμ΄μ€ν¬λ¦Ό λ¨Ήκ³ μΆμ΄μ.
π©π»βπ« (ν λΌλ° μ μλ): λΈκΈ°? μ΄μ½? μ΄λ€κ² λ¨Ήκ³ μΆλ?
ππ»ββοΈπ¨
ππ»ββοΈ: μ λ μ΄μ½ μμ΄μ€ν¬λ¦Όκ° λ¨Ήκ³ μΆμ΄μ.
π©π»βπ« (κΈ°λ¦°λ° μ μλ): κ·Έλ, μ΄μ½ μμ΄μ€ν¬λ¦Όμ λλμ€ μ²«λ²μ§Έ μΉΈμ μμΌλ κ°μ Έλ€ λ¨Ήμ΄λ λΌ.
ππ»ββοΈπ¨
ππ»ββοΈ: μ΄μ½ μμ΄μ€ν¬λ¦Ό λ κ° λ¨Ήμ΄λ λΌμ ??
π©π»βπ« (νκ·λ° μ μλ): κ·Έλ !! μ΄μ½ μμ΄μ€ν¬λ¦Ό λκ° λ¨Ήμ΄.
μ΄λ κ² ν λΌλ° μ μλμ΄λ , κΈ°λ¦°, νκ·λ° μ μλμ΄λ μ ν μκ΄μ΄ μμ΄μ§λ€.
Stateful
: μ€κ°μ μ μλμ΄ λ°λλ©΄ μ λ λ€.
(λ°λλ€λ©΄ μν μ 보λ₯Ό μ μλλ§λ€ 미리 μλ €μ€μΌνλ€.)
Stateless
: μ€μΌμΌ μμ - μν νμ₯ μ 리
μ μλμ΄ 100λ² λ°λμ΄λ μκ΄ μλ€.
- κ°μκΈ° μμ΄λ€μ΄ νκΊΌλ²μ λͺ°λ €μ μμ΄μ€ν¬λ¦Όμ λ¬λΌκ³ μ‘ΈλΌλ μ μλμ κ·Έλ§νΌ λͺ¨μ
μ¬ μ μλ€.
- κ°μκΈ° ν΄λΌμ΄μΈνΈ μμ²μ΄ μ¦κ°ν΄λ μλ²λ₯Ό λκ±° ν¬μ
ν μ μλ€.
무μνλ μλ΅ μλ²λ₯Ό μ½κ² λ°κΏ μ μλ€. β‘οΈ λ¬΄νλλ‘ μλ² μ¦μ€ κ°λ₯
(μνμ μ§λ κ°μκΈ° ν΅μ νλ μλ²κ° κ³ μ₯λλ€λ©΄ μ²μλΆν° κ·Έ κ³Όμ μ λ€μ ν΄μΌνλ€.)
βοΈ Stateless μ€λ¬΄ νκ³
λͺ¨λ κ²μ 무μνλ‘ μ€κ³ν μ μλ κ²½μ°λ μμ§λ§ κ·Έλ κ² ν μ μλ κ²½μ°λ μλ€.
무μνμ μ: λ‘κ·ΈμΈμ΄ νμμλ λ¨μ μλΉμ€ μκ° νλ©΄
μνμ μ§μ μ: λ‘κ·ΈμΈ (λ‘κ·ΈμΈ μνλ₯Ό μλ²μ μ μ§)
μΌλ°μ μΌλ‘ λΈλΌμ°μ μΏ ν€μ μλ² μΈμ λ±μ μ¬μ©ν΄ μν μ μ§(μν μ μ§λ μ΅μνλ§ μ¬μ©)
β‘οΈ μ°κ²°μ μ μ§νμ§ μλ λͺ¨λΈ: μλ² μμ μλͺ¨λ₯Ό λ§μ μ μλ€.
λΉ μ°κ²°μ±μ΄ λ¨μ μ΄ μλ κ²μ μλλ€. μ΄λ κ² μ΅μνμ μ°κ²°μ μ μ§νλ©΄ TCP/IP μ°κ²°μ μλ‘ λ§Ίμ΄μΌ νλ κ²½μ°κ° μμ£Ό μκΈ°κ³ μ΄λ 3 way handshakeλ₯Ό μννλ μκ°μ΄ μΆκ°λλ€.
μΉ λΈλΌμ°μ λ‘ μ¬μ΄νΈλ₯Ό μμ²νλ©΄ HTML λΏλ§ μλλΌ μλ° μ€ν¬λ¦½νΈ, css, μΆκ° μ΄λ―Έμ§ λ± μ λ§μ μμμ΄ ν¨κ» λ€μ΄λ‘λ λλ€.
μ§κΈμ HTTP μ§μ μ°κ²°(Persistent Connections)λ‘ ν΄κ²°
HTTP/2, HTTP/3μμ λ λ§μ μ΅μ ν
βοΈ μ΄κΈ° HTTP (μ°κ²°, μ’
λ£ λλΉ)
βοΈ HTTP μ§μ μ°κ²° (Persistent Connections)
본격μ μΌλ‘ HTTP λ©μμ§λ₯Ό μμ보μ.
start-line = request-line / status-line
request-line = method SP(곡백) request-target SP HTTP-version CRLF(μν°)
method: GET
(리μμ€ μ‘°ν), POST
(μμ² λ΄μ μ²λ¦¬), PUT
, DELETE
...
request-target: path β absolute-path[?query]
(μ λκ²½λ‘λ /λ‘ μμνλ κ²½λ‘λ₯Ό λ§ν¨)
μνμ½λ: 200(μ±κ³΅), 400(ν΄λΌμ΄μΈνΈ μμ² μ€λ₯), 500(μλ² λ΄λΆ μ€λ₯)
header-field = field-name":"(λμ΄μ°κΈ° λΆκ°) OWS(:λμ΄μ°κΈ° νμ©) field-value OWS
(field-nameμ λμλ¬Έμ κ΅¬λΆ μμ)
βοΈ HTTP ν€λλ HTTP μ μ‘μ νμν λͺ¨λ λΆκ° μ 보(λ©μμ§ λ°λ λ΄μ©/ν¬κΈ°, μΈμ¦, ν΄λΌμ΄μΈνΈ μ 보..)λ€μ λ΄κ³ μλ€.
νμ€ ν€λκ° μμ² λ§κ³ νμμ μμμ ν€λλ₯Ό μΆκ°ν μ μλ€.
βοΈ HTTP λ°λλ μ€μ μ μ‘ν λ°μ΄ν°λ₯Ό λ΄κ³ μμΌλ©° HTML λ¬Έμ, μ΄λ―Έμ§, μμ, JSON.. byteλ‘ νν κ°λ₯ν λͺ¨λ λ°μ΄ν°λ₯Ό μ μ‘ν μ μλ€.
π μ 리νμλ©΄
- HTTP λ©μμ§μ λͺ¨λ κ²μ μ μ‘ν μ μμΌλ©°
- HTTP μμ¬ HTTP/1.1μ κΈ°μ€μΌλ‘ νμ΅
- HTTPλ ν΄λΌμ΄μΈνΈ-μλ² κ΅¬μ‘°μ΄λ€.
- λν, 무μν νλ‘ν μ½(Stateless)μ΄λ©°
- HTTP λ©μμ§λ ν€λ, λ°λλ‘ μ΄λ£¨μ΄μ Έμλ€.
- λ¨μνκ³ νμ₯ κ°λ₯νλ€.