π κΉμν λμ "λͺ¨λ κ°λ°μλ₯Ό μν HTTP μΉ κΈ°λ³Έ μ§μ" κ°μ λ£κ³ μ 리
πHTTP (Hyper Text Transfer Protocol)
'HTTP'λ λ€μν νκ²½μμ μ¬λ¬ κΈ°κΈ°κ° μλ‘ ν΅μ μ μ£Όκ³ λ°μ μ μκ² λ§λ μΌμ’ μ κ·μΉμ΄λ€.
μλ₯Ό λ€μ΄ λ΄(κ° μ΄λ° λ°μ΄ν°λ₯Ό μμ²νλ©΄ λλ μ΄λ° λ°μ΄ν°λ₯Ό λ°ννλΌλ μμ ν΅μ κ·μΉμΈ κ²μ΄λ€.
* λ¬Έμκ°μ λ§ν¬λ₯Ό ν΅ν΄ μ°κ²°ν μ μλ htmlμ μ μ‘νλ νλ‘ν μ½λ‘ μμνλ€. κ·Έλ¬λ νμ¬λ!
- HTML, TEXT
- μ΄λ―Έμ§, μμ±, μμ, νμΌ
- JSON, XML (API)
κ±°μ λͺ¨λ ννμ λ°μ΄ν°λ₯Ό μ μ‘ κ°λ₯ν΄μ‘κ³ , μλ²κ°μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ λλ λλΆλΆ HTTP μ¬μ©νκ³ μλ€.
* HTTP μμ¬
- HTTP/0.9 : 1991λ / GET λ©μλλ§ μ§μ, HTTP ν€λ μμ
- HTTP/1.0 : 1996λ / λ©μλμ ν€λ μΆκ°
- HTTP/1.1 : 1997λ / νμ¬μ κ°μ₯ λ§μ΄ μ¬μ©νλ λ²μ (RFCλ¬Έμ : 2068 > 2616 > 7230~7235)
- HTTP/2 : 2015λ / μ±λ₯ κ°μ
- HTTP/3 : μ§νμ€ / TCPλμ UDP μ¬μ©, μ±λ₯κ°μ
* κΈ°λ° νλ‘ν μ½
- TCP : HTTP/1.1 , HTTP/2
- UDP : HTTP/3
HTTP/2 , HTTP/3 λ μ¬μ©μ΄ μ μ μ¦κ°νκ³ μλ€.

πν΄λΌμ΄μΈνΈ μλ² κ΅¬μ‘°
- HTTPλ Request μ Responseμ ꡬ쑰
- ν΄λΌμ΄μΈνΈλ μμ²μ 보λ΄κ³ μλ²μ μλ΅ λκΈ°
- μλ²λ μμ²μ λν κ²°κ³Όλ₯Ό μλ΅
* μ μ΄λ κ² λΆλ¦¬ν κΉ?
κ°λ μ μΌλ‘ λΆλ¦¬ν¨μΌλ‘μ¨ λΉμ§λμ€ λ‘μ§κ³Ό λ°μ΄ν°λ μλ²μκ² UI, μ¬μ©μ± λ±μ ν΄λΌμ΄μΈνΈμκ² μ§μ€μμΌ λ 립μ μΌλ‘ μ§νκ° κ°λ₯ν΄μ§λ€.
πStateful, Stateless
HTTPμ μ€μν νΉμ§ μ€ νλλ 무μν νλ‘ν μ½μ μ§ν₯νλ€.
* 무μνμ±(Stateless)μ΄λ?
ν΄λΌμ΄μΈνΈκ° νλ μμ²μ λν΄ μλ²λ μλ΅λ§ ν λΏ μ΄μ μνμ λν μ 보λ₯Ό 보쑴νμ§ μλλ€.
μ΄μ μ 무μμ μμ²νλ μ§μ λ°λΌ κ²°κ³Ό κ°μ΄ λ¬λΌμ§λ λ±μ λ³νλ μλ€. μ² μ νκ² λ§€λ² μμ² κ°μ λν κ²λ§μ μλ΅νλ€.
μν μ μ§λ μλ΅ μλ²κ° λ°λκ² λλ©΄ λ€λ₯Έ μλ²μλ μλ €μΌ νλ©°, μ€κ°μ μλ²κ° μ₯μ κ° λλ©΄ μ²μλΆν° ν΄μΌνλ€.
무μνλ μλ΅ μλ²λ₯Ό λ°κΏλ μλ΅μ΄ κ°λ₯νλ©° μ΄λ μ€κ°μ μλ²κ° μ₯μ κ° λλ λ€λ₯Έ μλ΅ μλ²κ° κ³μν μ μλ€. μ΄λ 무νν μλ² μ¦μ€μ΄ κ°λ₯μΌ νλ€. (μλ²μ μν νμ₯(Scale Out)μ΄ λλ€ )
νμ§λ§ μ΄κ²λ νκ³κ° μλ€. λͺ¨λ κ²μ 무μνλ‘ μ€κ³νλ κ²μ νλ€κΈ° λλ¬Έμ΄λ€.
κ·Έλμ μν μ μ§λ μ΅μν λ§μΌλ‘ μ¬μ©νλ©° μ΅λν 무μν μ±μ μ μ§νκΈ° μν΄ λ Έλ ₯νλ€.
λ³΄ν΅ μν μ μ§ κ°μ₯ λνμ μΈ μλ λ‘κ·ΈμΈν μ¬μ©μμ κ²½μ° λ‘κ·ΈμΈ μνλ₯Ό μλ²μ μ μ§νλ κ²μ΄λ€. μΌλ°μ μΌλ‘ μ΄λ λΈλΌμ°μ μΏ ν€μ μλ² μΈμ λ±μ μ¬μ©νλ€.
κ·Έλ¦¬κ³ νκ°μ§ λ¨μ μ΄ μνλ₯Ό μ μ§νμ§ μκΈ° λλ¬Έμ λ§€λ² λ³΄λ΄μΌ νλ μ 보λμ΄ λ λ§λ€λ λ¨μ μ΄ μλ€.
πλΉ μ°κ²°μ± (Connectionless)
μ°κ²°μ μ μ§νλ λμ μλ²λ μ΄λ₯Ό μ μ§νκΈ° μν΄ μλ² μμμ μλͺ¨νκ² λλ€.
μ°κ²°μ μ μ§νμ§ μμΌλ©΄ νμν κ²λ§μ μμ²νκ³ μλ΅λ°κ³ λλ©΄ μ°κ²°μ λμ΄ μ΅μνμ μμμ μ¬μ©ν μ μλ€.
* HTTPλ?
- HTTPλ κΈ°λ³Έμ΄ μ°κ²°μ μ μ§νμ§ μλ λͺ¨λΈ
- μΌλ°μ μΌλ‘ μ΄ λ¨μμ μ΄νμ λΉ λ₯Έ μλλ‘ μλ΅
- μλ² μμμ λ§€μ° ν¨μ¨μ μΌλ‘ μ¬μ©
* λΉ μ°κ²°μ±μ νκ³λ?
- TCP/IP μ°κ²°μ κ³μ μλ‘ λ§Ίμ΄μΌνλ€. μ°κ²°μ 3 way handshake λ¨κ³κ° λ°λ³΅λλ―λ‘ κ·Έλ§νΌ μκ°μ΄ μΆκ°λλ€
- μΉ λΈλΌμ°μ λ‘ μ¬μ΄νΈ μμ²νλ©΄ μ λ§μ μμλ€μ΄ νκΊΌλ²μ λ€μ΄λ°μμ§λ λ°, μ€κ°μ λκΈ°λ©΄ μ²μλΆν° λ€μ λ€ λ€μ΄λ°μμΌνλ€.
- μ§κΈμ HTTP μ§μ μ°κ²°(Persistent Connections)λ‘ λ¬Έμ ν΄κ²° (μ°κ²° μ μ§ λ λ
- HTTP/2μ HTTP/3μμ μ΅μ ν
**** HTTP μ§μ μ°κ²°
μμ νλλ₯Ό μμ²νμ λ μ΄μ λ¬Άμ¬μλ λͺ¨λ μμμ μμ²νκΈ° μν΄ μ°κ²°μ μ μ§ν μν
ν΄λΌμ΄μΈνΈμ μμ² λλ TimeOut μ κΉμ§λ μ°κ²°μ΄ μ΄λ €μμ΄ ν΄λΌμ΄μΈνΈκ° μμμ μ°μμ μΌλ‘ μμ²ν μ μκ³ μ΄μ μλ²λ μ°μμ μΌλ‘ μλ΅ν μ μλ€ (νμ΄ν λΌμ΄λ)
μ°κ²° μλ νμκ° μ€μ΄λ€μ΄ ν¨μ¨μ μ΄λ€.
HTTP/1.1 κΈ°μ€ λ¬λ¦¬ λͺ μ λμ΄μμ§ μμΌλ©΄ λͺ¨λ μ°κ²°μ μ§μ μ°κ²°λ‘ κ°μ£Όλλ€. μλ²λ§λ€ Timoutμ΄ μ‘΄μ¬νλ€.
πHTTP λ©μμ§
* HTTP λ©μμ§ κ΅¬μ‘° μ€λͺ
- HTTP μμλΌμΈ
| μμ² |
|
| μλ΅ |
|
- HTTP ν€λ
- HTTP μ μ‘μ νμν λͺ¨λ λΆκ°μ 보λ₯Ό λ΄λλ€.
- νμ€ ν€λκ° μ‘΄μ¬νλ€.
- νμμ μμ ν€λκ° μΆκ° κ°λ₯νλ€.
- HTTP λ©μμ§ λ°λ
- μ€μ μ μ‘ν λ°μ΄ν°
- byteλ‘ ννν μ μλ λͺ¨λ λ°μ΄ν° μ μ‘ κ°λ₯
* HTTP μμ² λ©μμ§ μμ
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
* HTTP μλ΅ λ©μμ§ μμ
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
</html>
* HTTP λ©μμ§ κ΅¬μ‘°λ‘ μμ νμ
- μμ² λ©μμ§
| start-line μμ λΌμΈ | GET /search?q=hello&hl=ko HTTP/1.1 |
| header ν€λ | Host: www.google.com |
| empty line 곡백 λΌμΈ (CRLF) | |
| message body |
μμ λΌμΈ :
| method | SP(곡백) | request-target | SP(곡백) | HTTP-version | CRLF(μν°) |
| GET | /search?q=hello&hl=ko | HTTP/1.1 |
HTTP ν€λ :
| field-name: | OWS(λμ΄μ°κΈ° νμ©) | field-value | OWS(λμ΄μ°κΈ° νμ©) |
| Host: | www.google.com |
- μλ΅ λ©μμ§
| 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> |
μμ λΌμΈ :
| HTTP-version | SP(곡백) | status-code | SP(곡백) | reason-phrase | CRLF |
| HTTP/1.1 | 200 | OK |
HTTP ν€λ :
| field-name: | OWS(λμ΄μ°κΈ° νμ©) | field-value | OWS(λμ΄μ°κΈ° νμ©) |
| Content-Type: Content-Length: |
text/html;charset=UTF-8 3423 |
'Computer Science > Web' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| HTTP μΉ μ§μ - HTTP λ©μλ νμ© (0) | 2023.03.08 |
|---|---|
| HTTP μΉ μ§μ - HTTP APIλ₯Ό λ§λ€μ΄λ³΄μ (0) | 2023.03.07 |
| HTTP μΉ μ§μ - URIμ μΉ λΈλΌμ°μ μμ² νλ¦ (0) | 2023.03.06 |
| HTTP μΉ μ§μ - μΈν°λ· λ€νΈμν¬ (0) | 2023.03.06 |
| HTTPS (0) | 2023.01.14 |
