HyperText Transfer Protocol
- ν΄λΌμ΄μΈνΈ μλ² κ΅¬μ‘°λ‘ μ λ¬
- Stateful, Stateless
- connectionless
- HTTP λ©μμ§
- HTML, TEXT
- IMAGE, μμ±, μμ, νμΌ
- JSON, XML (API)
- κ±°μ λͺ¨λ ννμ λ°μ΄ν° μ μ‘ κ°λ₯
HTTP/0.91991λ : GET λ©μλλ§ μ§μ, HTTP ν€λXHTTP/1.01996λ : λ©μλ, ν€λ μΆκ°HTTP/1.11997λ : κ°μ₯ λ§μ΄ μ¬μ©, μ°λ¦¬μκ² κ°μ₯ μ€μν λ²μ - RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014)
HTTP/22015λ : μ±λ₯ κ°μHTTP/3μ§νμ€: TCP λμ μ UDP μ¬μ©, μ±λ₯ κ°μ
- μλ²κ° ν΄λΌμ΄μΈνΈμ μνλ₯Ό 보쑴X
- μ₯μ : μλ² νμ₯μ± λμ(μ€μΌμΌ μμ)
- λ¨μ : ν΄λΌμ΄μΈνΈκ° μΆκ° λ°μ΄ν° μ μ‘
- λͺ¨λ κ²μ 무μνλ‘ μ€κ³ ν μ μλ κ²½μ°λ μκ³ μλ κ²½μ°λ μλ€.
- λ‘κ·ΈμΈν μ¬μ©μμ κ²½μ° λ‘κ·ΈμΈ νλ€λ μνλ₯Ό μλ²μ μ μ§
- μΌλ°μ μΌλ‘ λΈλΌμ°μ μΏ ν€μ μλ² μΈμ λ±μ μ¬μ©ν΄μ μν μ μ§
- μν μ μ§λ μ΅μνλ§ μ¬μ©
- HTTPλ κΈ°λ³Έμ΄ μ°κ²°μ μ μ§νμ§ μλ λͺ¨λΈ μΌλ°μ μΌλ‘ μ΄ λ¨μμ μ΄νμ λΉ λ₯Έ μλλ‘ μλ΅
- 1μκ° λμ μμ²λͺ
μ΄ μλΉμ€λ₯Ό μ¬μ©ν΄λ μ€μ μλ²μμ λμμ μ²λ¦¬νλ μμ²μ μμκ° μ΄ νλ‘ λ§€μ° μμ
- μ) μΉ λΈλΌμ°μ μμ κ³μ μ°μν΄μ κ²μ λ²νΌμ λλ₯΄μ§λ μλλ€.
- μλ² μμμ λ§€μ° ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μμ
- λ§€ μμ²λ§λ€ TCP/IP μ°κ²°μ μλ‘ λ§Ίμ΄μΌ ν¨ (3 way handshake μκ° μΆκ°)
- μΉ λΈλΌμ°μ λ‘ μ¬μ΄νΈλ₯Ό μμ²νλ©΄ HTML λΏλ§ μλλΌ μλ°μ€ν¬λ¦½νΈ, css, μΆκ° μ΄λ―Έμ§ λ± μ λ§μ μμμ΄ ν¨κ» λ€μ΄λ‘λ
- μ§κΈμ HTTP μ§μ μ°κ²°(Persistent Connections)λ‘ λ¬Έμ ν΄κ²°
- HTTP/2, HTTP/3μμ λ λ§μ μ΅μ ν
# Request
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
# Response
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8 Content-Length: 3423
<html>
<body>...</body>
</html>https://tools.ietf.org/html/rfc7230#section-3
start-line
*( header-field CRLF )
CRLF
[ message-body ]
[start-line] HTTP/1.1 200 OK
[header]Content-Type: text/html;charset=UTF-8 Content-Length: 3423
[empty line (CRLF)]
[message body] <html> <body>...</body></html>