HTTP
Hypertext Transfer Protocol(HTTP) μ μΉνμ΄μ§λ₯Ό λ‘λνκΈ° μν΄ νμ΄νΌλ§ν¬λ₯Ό μ¬μ©νλ μλ μμ΄λ μΉ(WWW)μ κΈ°μ΄ νλ‘ν μ½μ΄λ€. λ€νΈμν¬μ μ°κ²°λ κΈ°κΈ°λ€ κ° μ 보λ₯Ό μ£Όκ³ λ°κΈ° μν΄ μ€κ³λ μ ν리μΌμ΄μ
κ³μΈ΅(application layer) νλ‘ν μ½μ΄λ©°, μΌλ°μ μΌλ‘ ν΄λΌμ΄μΈνΈ μ₯μΉ(μ: μΉ λΈλΌμ°μ )κ° μλ²μ μμ²(request)μ 보λ΄λ©΄, μλ²κ° μλ΅(response) λ©μμ§λ₯Ό λλ €μ£Όλ νλ¦μ΄ HTTPμ κΈ°λ³Έμ μΈ μλ λ°©μμ΄λ€.
λ§λ€μ΄μ§ κ³κΈ° β WWW
1989λ
, ν λ²λμ€ λ¦¬κ° CERNμμ μ°κ΅¬μλ€μ΄ μ 보λ₯Ό μ½κ² 곡μ ν μ μλλ‘ νκΈ° μν΄ λ€λ₯Έ λ¬Έμλ 리μμ€λ‘ μ¦μ μ΄λν μ μλ λ§ν¬(μ°κ²°) λ₯Ό ν¬ν¨ν ν
μ€νΈμΈ νμ΄νΌν
μ€νΈλ₯Ό κΈ°λ°μΌλ‘ νλ μμ€ν
μ μ μνλ€. (νμ΄νΌν
μ€νΈλ 1965λ
μ ν
λ λ¬μ¨μ μν΄ μ²μ μ μ)
μ΄ μμ€ν
μ λ§λ€κΈ° μν΄ νμ΄νΌν
μ€νΈ λ¬Έμλ₯Ό μμ±νκΈ° μν λ§ν¬μ
μΈμ΄μΈ Hypertext Markup Language, HTMLκ³Ό μμ±λ νμ΄νΌν
μ€νΈ λ¬Έμλ₯Ό μ£Όκ³ λ°κΈ° μν νλ‘ν μ½λ‘ HTTPλ₯Ό λ§λ€κ² λλ€. κ·Έλ¦¬κ³ HTML λ¬Έμλ₯Ό ν΄μνμ¬ μ¬μ©μκ° μ΄ν΄νκΈ° μ¬μ΄ ννλ‘ λ³ννμ¬ λ³΄μ¬μ£Όλ νλ‘κ·Έλ¨μΈ μΉ λΈλΌμ°μ κ° λν΄μ Έ μλ μμ΄λ μΉ(World Wide Web, WWW)μ΄ νμνκ² λλ€.
μλ μμ΄λ μΉκ³Ό μΈν°λ·μ΄ κ°μ κ²μΌλ‘ νΌλλκΈ°λ νμ§λ§ μ νν μΈν°λ·μ μ μΈκ³ μ»΄ν¨ν°μ μ₯μΉλ₯Ό μ°κ²°νλ λ€νΈμν¬ μΈνλΌμ΄κ³ μ΄ μμμ μλΉμ€λ‘μ λμνλ μ 보 곡μ μμ€ν
μ΄ μλ μμ΄λ μΉμ΄λ€.
HTTP μμ²(Request)μ κ΅¬μ± μμ
ν΄λΌμ΄μΈνΈκ° μΉ μ¬μ΄νΈλ₯Ό λ‘λν λ 보λ΄λ HTTP μμ²μλ μΌλ°μ μΌλ‘ λ€μκ³Ό κ°μ μμλ€μ΄ ν¬ν¨λλ€:
- HTTP λ²μ : HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3 λ±. κ° λ²μ λ§λ€ κΈ°λ₯ λ° νΌν¬λ¨Όμ€, μ°κ²° μ μ§(persistent connection) λ±μ κ΄λ¦¬ λ°©μμ μ°¨μ΄κ° μ‘΄μ¬νλ€.
- URL: μ΄λ€ 리μμ€λ₯Ό μμ²νλμ§ λνλΈλ€.
- HTTP λ©μλ(Method): μμ²μ΄ μλ²μ μ΄λ€ λμμ κΈ°λνλμ§λ₯Ό λͺ μνλ€. μ£Όμ λ©μλλ‘ μ 보λ₯Ό κ°μ Έμ€κΈ° μν GET, μ 보 μ μΆμ μν POST, μ 보 κ΅μ²΄λ₯Ό μν PUT, μ 보 μΌλΆμ μμ μ μν PATCH, μ 보 μμ λ₯Ό μν DELETE κ° μμΌλ©°, κ·Έ λ°μλ HEAD, OPTIONS, TRACE, CONNECT λ±μ΄ μλ€.
- μμ² ν€λ(Request Headers): ν΄λΌμ΄μΈνΈκ° 보λ΄λ λΆκ° μ 보λ€λ‘, μλ₯Ό λ€λ©΄ μ΄λ€ λΈλΌμ°μ λ₯Ό μ°λμ§, μ΄λ€ νμ μ μ½ν μΈ λ₯Ό κΈ°λνλμ§, μΈμ¦ μ 보 λ±μ΄ ν¬ν¨λλ€.
- μμ² λ³Έλ¬Έ(Request Body): μ νμ μΌλ‘ μ¬μ©νλ μμλ‘ νΌ λ°μ΄ν°, λ‘κ·ΈμΈ μ 보, JSON λλ κΈ°ν ν¬λ§·μ λ°μ΄ν° λ±μ΄ ν¬ν¨λλ€.
HTTP μλ΅(Response)μ κ΅¬μ± μμ
μλ²λ ν΄λΌμ΄μΈνΈ μμ²μ λν΄ μλ΅μ λλ €μ£Όκ² λλλ°, μλ΅μλ λ³΄ν΅ λ€μ μμλ€μ΄ ν¬ν¨λλ€:
- HTTP μν μ½λ(Status Code): μμ²μ΄ μ±κ³΅νλμ§, 리λ€μ΄λ μ μΈμ§, ν΄λΌμ΄μΈνΈ νΉμ μλ² μͺ½ μ€λ₯μΈμ§ λ±μ λνλ΄λ μΈ μ리 μ«μ μ½λ.
- 2xx : μ±κ³΅
- 3xx : 리λ€μ΄λ μ
- 4xx : ν΄λΌμ΄μΈνΈ μ€λ₯
- 5xx : μλ² μ€λ₯
- μλ΅ ν€λ(Response Headers): μλ΅μ λ©ν λ°μ΄ν°λ‘ 컨ν μΈ νμ , μΈμ½λ©, μΊμ μ μ΄, μΏ ν€ λ±μ μ λ³΄κ° ν¬ν¨λ μ μλ€.
- μλ΅ λ³Έλ¬Έ(Response Body): μμ²κ³Ό λ§μ°¬κ°μ§λ‘ HTML, JSON, μ΄λ―Έμ§, νμΌ λ± ν΄λΌμ΄μΈνΈκ° μμ²μ λ°λΌ μ½ν μΈ κ° μ νμ μΌλ‘ ν¬ν¨λλ€.
HTTP λ²μ λ³ μ 리
1. HTTP/0.9 (1991)
β λ¨μνλ μ΅μ΄ λ²μ
- ν μ€νΈλ§ μ μ‘ κ°λ₯
- λ©μλλ GETλ§ μ§μ
- μν μ½λλ μκ³ , ν€λλ μμ΄ κ·Έλ₯ HTML λ¬Έμλ§ μ λ¬
2. HTTP/1.0 (1996)
β 첫 νμ€μ΄ λ λ²μ
- ν€λμ μν μ½λ λμ
- λ©μλ μΆκ°: POST, HEAD
- μ°κ²°μ μμ²λ§λ€ λμ΄μ§ (λΉμ°κ²°μ±)
- λ¨μ : λ§€ μμ²λ§λ€ TCP μ°κ²°μ μλ‘ λ§λ€κΈ° λλ¬Έμ μ±λ₯μ΄ λ¨μ΄μ§
3. HTTP/1.1 (1997)
β νμ¬κΉμ§λ μ¬μ©μ€μΈ κ°μ₯ μ€λ μ°μ΄κ³ μλ λ²μ
- Persistent Connection(Keep-Alive)μ ν΅ν΄ TCP μ°κ²° μ μ§ λ° μ¬μ¬μ©μ΄ κ°λ₯ν΄μ Έ μ±λ₯μ΄ ν₯μλ¨
- Host ν€λ νμν β νλμ μλ²μμ μ¬λ¬ λλ©μΈ νΈμ€ν κ°λ₯ (κ°μ νΈμ€ν )
- λ©μλ μΆκ°: PUT, PATCH, OPTIONS, DELETE
- Chunked Transfer Encoding β μ€νΈλ¦¬λ° μ§μ
4. HTTP/2 (2015)
β μ±λ₯ κ°μ μ μ΄μ μ λκ³ κ°λ°νμ¬ νμ΄μ§ λ‘λ© μλκ° λΉ¨λΌμ§
- λ°μ΄λ리 νλ‘ν μ½ β λ ν¨μ¨μ μΈ νμ±
- λ©ν°νλ μ±(Multiplexing) β νλμ TCP μ°κ²°μμ μ¬λ¬ μμ²/μλ΅ λμ μ μ‘
- ν€λ μμΆ(HPACK) β λμν μ μ½
- μλ² νΈμ(Server Push) μ§μ β ν΄λΌμ΄μΈνΈκ° μμ²νκΈ° μ μ νμν 리μμ€λ₯Ό 보λ΄μ€
- λνμ μΌλ‘ κ³ μ±λ₯ λ§μ΄ν¬λ‘μλΉμ€ ν΅μ μ μν΄ κ°λ°λ gRPCκ° HTTP/2λ₯Ό κΈ°λ°μΌλ‘ ν¨
5. HTTP/3 (2022)
β TCP λμ QUIC(Quick UDP Internet Connections)λΌλ UDP κΈ°λ° μ μ‘ κ³μΈ΅μ μ¬μ©νμ¬ λ λΉ λ₯΄κ³ μμ μ±μ μΆκ΅¬
- TCP νΈλμ °μ΄ν¬ λ¬Έμ ν΄κ²° β μ°κ²° μ€μ μ΄ λ λΉ λ¦
- ν¨ν· μμ€ μ λ³λͺ© κ°μ β λΉλμ€ μ€νΈλ¦¬λ°, κ²μ λ± μ€μκ° μλΉμ€μ μ 리
- κΈ°λ³Έμ μΌλ‘ μνΈν(TLS 1.3) λ΄μ₯
HTTPS
HyperText Transfer Protocol Secureμ μ½μλ‘ κΈ°μ‘΄ HTTPμ SSL/TLS νλ‘ν μ½μ κ²°ν©νμ¬ λ³΄μμ κ°νν νλ‘ν μ½.
κΈ°μ‘΄ HTTPλ λͺ¨λ μμ²κ³Ό μλ΅μ΄ νλ¬Έ(Plain Text) μΌλ‘ μ μ‘λκΈ° λλ¬Έμ λ°μ΄ν° μ μ‘ κ³Όμ μμ λΉλ°λ²νΈ κ°μ μ€μ μ λ³΄κ° κ·Έλλ‘ λ
ΈμΆλ μνλ‘ λ€νΈμν¬μ νλ¬κ°λ©° ν¨ν· μ€λν(Packet Sniffing), μ€κ°μ 곡격(MITM) κ°μ 곡격μ ν΅ν΄ μ€κ°μ μμ²μ κ°λ‘μ±μ νμΈμ΄ κ°λ₯νλ€. λ°λΌμ HTTPμ 보μ λ μ΄μ΄λ₯Ό μΆκ°ν HTTPSκ° μκ²ΌμΌλ©° μ΄μ λ μ νμ§κ° μλ κΈ°λ³Έμ΄ λ μμ€μ΄λ€.
HTTPSκ° ν΄κ²°νλ λ¬Έμ
- λ°μ΄ν° μνΈν (Encryption): λͺ¨λ μμ²/μλ΅μ΄ μνΈνλμ΄ μ€κ°μμ λκ° ν¨ν·μ κ°λ‘μ±λ ν΄λ ν μ μλ€.
- μΈμ¦ (Authentication): μΈμ¦μ(Certificate)λ₯Ό ν΅ν΄ μλ²κ° λ―Ώμ μ μλ μλ²μΈμ§ νμΈν μ μλ€.
- λ¬΄κ²°μ± (Integrity): λ°μ΄ν°κ° μ μ‘ μ€μ λ³μ‘°λμ§ μμλμ§λ₯Ό 보μ₯νμ¬ μ½λλ₯Ό λͺ°λ λΌμ λ£κ±°λ, νμΌμ λ³μ‘°ν΄μ μ μ±μ½λλ₯Ό μ¬λ κ²μ λ°©μ§ν¨.
μ΄ μΈμλ HTTPS μ¬μ©μ SEO μ°λλ₯Ό ν΅ν μ΄μ μ΄ μκ³ HTTP/2, HTTP/3μ μ¬μ©νκΈ° μν νμ μ건μΌλ‘ μ μ λλ€.