3. HTTP
λ³Έ ν¬μ€ν μ μ°μν νμ λ€, κΉμν λμ 'λͺ¨λ κ°λ°μλ₯Ό μν HTTP μΉ κΈ°λ³Έ μ§μ' κ°μλ₯Ό μκ° ν μ 리ν κΈμ λλ€.
1. HTTP: Hyper Text Transfer Protocol. μ¦ ν΅μ κ·μ½μ΄λ€.
2. μ΄λ€ ν΅μ κ·μ½μ΄λ? HTTP λ©μμ§μ λͺ¨λ κ²μ μ μ‘ν μ μλ€.
3. λ§ κ·Έλλ‘ κ±°μ λͺ¨λ ννμ λ°μ΄ν°λ₯Ό μ μ‘ν μ μλ€.
- HTML, TEXT
- IMAGE, μμ±, μμ, νμΌ
- JSON, XML (API)
4. μλ²κ°μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ λλ λλΆλΆ HTTPλ₯Ό μ¬μ©νλ€. (ν΄λΌμ΄μΈνΈμ μλ² κ°μλ λΉμ°ν HTTP μ¬μ©)
5. HTTP μμ¬
6. TCP νλ‘ν μ½ μμμ λμ: HTTP/1.1, HTTP/2
7. UDP νλ‘ν μ½ μμμ λμ: HTTP/3
-> TCPλ 3way handshakeλ± μλκ° λΉ λ₯Έ λ©μ»€λμ¦μ΄ μλκΈ°μ, μ±λ₯ κ°μ ν μ κ·Έλ μ΄λ λ²μ μ UDPμμμ ꡬλ.
8. μλ μ¬μ§μμ 보λ―, googleμ h2, h3 λ²μ μ λ νλ‘ν μ½μ μ£Όλ‘ μ¬μ©νλ€. (naverλ h1, h2 λͺ¨λ μ¬μ©)
9. βοΈHTTP νΉμ§βοΈ
- ν΄λΌμ΄μΈνΈ - μλ² λΆλ¦¬ ꡬ쑰
- stateless(무μν) νλ‘ν μ½, λΉμ°κ²°μ±
- HTTP λ©μμ§
- λ¨μν¨, νμ₯ κ°λ₯
10. ν΄λΌμ΄μΈνΈ - μλ² λΆλ¦¬ ꡬ쑰
-> ν΄λΌμ΄μΈνΈλ μμ²μ 보λ΄κ³ , μλ²λ μλ΅μ 보λΈλ€ (request - response)
11. μ΄λ κ² λΆλ¦¬λ κ΅¬μ‘°κ° μ€μν μ΄μ λ, κ°κ°(ν΄λΌμ΄μΈνΈ, μλ²) λ 립μ μΌλ‘ μ§νν μ μκΈ° λλ¬Έμ΄λ€.
-> ν΄λΌμ΄μΈνΈλ UIμ μ¬μ©μ±μ μ§μ€νμ¬ μ§ν, μλ²λ λΉμ¦λμ€ λ‘μ§κ³Ό λ°μ΄ν°, λμ©λ μ²λ¦¬ μ±λ₯ κ°μ μ μ§μ€νλ©° μ§ν
-> ν΄λΌμ΄μΈνΈμ μλ²λ μλ‘μκ² λ 립μ μ΄λ―λ‘ μλ‘μκ² μν₯μ μ£Όμ§μμΌλ©΄μ μ§λ³΄ν μ μκ² λλ€.
12. stateless vs stateful
->stateless: 무μν / stateful: μνμ μ§
13. stateful(μνμ μ§) μμ
- ν΄λΌμ΄μΈνΈκ° 100λ§μμ§λ¦¬ λ ΈνΈλΆ 2κ°λ₯Ό μ¬κ² λ€κ³ Aμλ²μ μ 보λ₯Ό λκ²Όλ€.
- stateful νλ‘ν μ½μ 100λ§μμ§λ¦¬ λ ΈνΈλΆ 2κ°λΌλ μ 보λ₯Ό μ μ§νκ³ μλ€(μνμ μ§)
- κ·Έλ°λ° Aμλ²κ° κ°μκΈ° ν°μ Έλ²λ Έκ³ , μ€κ³μλ²λ ν΄λΌμ΄μΈνΈλ₯Ό Bμλ²λ‘ λκΈ΄λ€.
- μνμ μ§ νλ‘ν μ½μμλ μλ²κ° μ 보λ₯Ό μ μ§νκΈ° λλ¬Έμ, Bμλ²λ ν΄λΌμ΄μΈνΈμ μμ²μ΄ 무μμΈμ§ μ μ μλ€. -> λ¬Έμ
14. stateless(무μν) μμ
- μμ μμμ λ¬λ¦¬ μλ²κ° ν΄λΌμ΄μΈνΈμ μ 보λ₯Ό μ ν μ μ₯νμ§ μλλ€(무μν:stateless)
- λμ ν΄λΌμ΄μΈνΈκ° μλ²μ ν΅μ ν λλ§λ€ μ 보λ₯Ό λκΈ΄λ€(100λ§μμ§λ¦¬ λ ΈνΈλΆ 2κ° μ΄κ±°μΌ)
- μ²μ μ 보λ₯Ό λ겨λ°μ μλ²κ° ν°μ Έμ λ€λ₯Έ μλ²μ ν΅μ μ νλλΌλ λ¬Έμ κ° μλ€ -> μ 보λ μ΄μ°¨νΌ ν΄λΌμ΄μΈνΈκ° λ€μ 보λ΄μ£ΌκΈ°μ
15. μ¦, HTTPλ stateless protocolμ μ¬μ©ν¨μΌλ‘, ν΄λΌμ΄μΈνΈκ° κΈκ²©ν λͺ°λ € μλ² μ₯μ κ° μΌμ΄λλ μν©μλ λ€λ₯Έ μλ²λ₯Ό μ¦μ€νμ¬ λμ²ν μ μλ λ₯λ ₯μ μ§λλ€. (μ무 μλ²λ νΈμΆν΄λ λκΈ°μ)
16. μ΄λ 곧 stateless νλ‘ν μ½μμλ 무νν μλ² μ¦μ€μ΄ κ°λ₯ν¨μ λ»νλ€. μ΄λ₯Ό μ€μΌμΌ μμμ΄λΌ μΉνλ€
17. statelessμ κ°μ₯ ν° λ¨μ μ λ°μ΄ν°λ₯Ό λ무 λ§μ΄ 보λΈλ€λ κ².
18. statelessμ νκ³: λͺ¨λ κ²μ 무μνλ‘ μ€κ³ν μ μλ κ²½μ°κ° μκ³ , μλ κ²½μ°λ μλ€.
-> λ‘κ·ΈμΈ κ°μ κ²½μ° μν μ μ§λ₯Ό ν΄μΌλ§ νλ€.
-> μΌλ°μ μΌλ‘ λΈλΌμ°μ μΏ ν€μ μλ² μΈμ λ±μ μ¬μ©νμ¬ μν μ μ§ + μν μ μ§λ μ΅μνλ§ μ¬μ©
19. HTTP λ©μμ§: κ±°μ λͺ¨λ ννμ λ°μ΄ν°λ₯Ό μ μ‘ν μ μλ νλ‘ν μ½μ΄λ€.
-> HTTP λ©μμ§μ ꡬ쑰λ λ€ λΆλΆμΌλ‘ λλμ΄ μλ€.
- μμλΌμΈ, start-line
- ν€λ, header
- 곡백 λΌμΈ, empty line(CRLF)
- λ©μμ§ λ°λ, message body
20. μμ λΌμΈ
-> μμλΌμΈ (start-line) = request-line / status-line μΌλ‘ ꡬμ±
1) μμ² λ©μμ§μ μμλΌμΈ : request-line
- HTTP λ©μλ: μλ²κ° μνν΄μΌν λμμ μ§μ ν΄μ μμ²νλ€(ex, GET, POST, PUT, DELETE ... )
- μμ² λμ: absolute-path[?query] (μ λκ²½λ‘[?쿼리(쑰건문)])
- HTTP version: μ μμμ κ²½μ° HTTP 1.1 version
2) μλ΅ λ©μμ§μ μμλΌμΈ : status-line
21. ν€λ
-> HTTP μ μ‘μ νμν λͺ¨λ λΆκ°μ 보
-> λ©μμ§ λ°λ κ΄λ ¨ λ΄μ©(ν¬κΈ°, μμΆ©, μΈμ¦, μμ²), ν΄λΌμ΄μΈνΈ μ 보, μλ² μ΄ν리μΌμ΄μ μ 보, μΊμ κ΄λ¦¬ μ 보 λ±
22. λ©μμ§ λ°λ (HTTP message body)
-> HTTPκ° μ€μ λ‘ μ μ‘ν λ°μ΄ν°
-> HTML, image, video, JSON λ±λ± byteλ‘ ννν μ μλ λͺ¨λ λ°μ΄ν° μ μ‘μ΄ κ°λ₯
HTTP, ν¬κ² μ±κ³΅νλ νμ€ κΈ°μ μ λ¨μνμ§λ§ νμ₯ κ°λ₯ν κΈ°μ .