1 - 0 - 1. μΈμ½λ©(Encoding) νμ€ + ν΅μ νλ‘ν μ½ & μμ²κ³Ό μλ΅ + νμ€ ν΅μ νλ‘ν μ½ + HTTP Request & Response + λ€νΈμν¬ ν¬νΈμ μλΉμ€ ν¬νΈ
# μΈμ½λ©(Encoding) νμ€
: μ΄μ§μ(0,1)λ‘ μΈκ°μ΄ μ¬μ©νλ λ¬Έμλ₯Ό νννλ μ½μμ μ§ν©
+ μΈμ½λ©μ ν΅ν΄ μμ±ν λ¬Έμ₯μ μ»΄ν¨ν°μ μ μ₯νκ±°λ ννν μ μμ
+ μΈμ½λ© μ 보λ₯Ό λ€νΈμν¬λ₯Ό μ΄μ©ν΄ νμΈκ³Ό κ΅ν κ°λ₯
ex) Ascii(μμ€ν€), μ λμ½λ(Unicode)
- Ascii(μμ€ν€)
: 7λΉνΈ λ°μ΄ν°μ λν μΈμ½λ© νμ€μΌλ‘, νΉμ λ¬Έμ λ° μνλ²³μ νννλ λ° μ¬μ©
- μ λμ½λ(Unicode)
: λ¬ΈμκΆλ§λ€ μ¬μ©νλ μΈμ½λ© νμ€μ΄ λ¬λΌ λ°μνλ νΈνμ± λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ§λ€μ΄μ§ μλ‘μ΄ νμ€
+ μ λμ½λμμ νκ°μ λ¬Έμλ μ΅λ 32κ°μ λΉνΈλ‘ ννλ¨
+ νκΈ, μνλ²³ λ±μ λ¬ΈμλΏ μλλΌ μ΄λͺ¨μ§(Emoji)λ€λ ν¬ν¨
# ν΅μ νλ‘ν μ½ & μμ²κ³Ό μλ΅
- μμ²(Request)
: ν΄λΌμ΄μΈνΈκ° μΉμκ² νΉμ 리μμ€λ₯Ό μ§μ νμ¬ μ 곡ν κ²μ μꡬνλ νμ
- μλ΅(Response)
: μλ²κ° ν΄λΌμ΄μΈνΈμ μμ²μ μ΄ν΄ν ν λμλλ λμμ μ·¨νμ¬ ν΄λΌμ΄μΈνΈμκ² λ¦¬μμ€λ₯Ό λ°ννλ μμ
- νλ‘ν μ½(Protocol)
: μλ²μ ν΄λΌμ΄μΈνΈμ μλ΅κ³Ό μμ²κ°μ΄ κ·κ²©νλ μνΈμμ©μ μ μ©λλ μ½μμΌλ‘, λκ° ν΅μ μ€λ₯λ₯Ό μλ°©νκΈ° μν΄ λ¬Έλ²(syntax)λ₯Ό ν¬ν¨νλ€.
# νμ€ ν΅μ νλ‘ν μ½
λ€νΈμν¬ | μΉ μ ν리μΌμ΄μ | νμΌ κ΅ν |
IP/TCP | HTTP | FTP |
# HTTP(Hyper Text Transfer Protocol)
: μλ²μ ν΄λΌμ΄μΈνΈ μ¬μ΄μ λ°μ΄ν° κ΅νμ μμ²κ³Ό μλ΅μ νμμΌλ‘ μ μν νλ‘ν μ½λ‘, ν΄λΌμ΄μΈνΈκ° μλ²μκ² μμ²νλ©΄ μλ²κ° μλ΅νλ κΈ°λ³Έ λ©μ»€λμ¦μ λ°λ₯Έλ€.
ex) HTTP λ©μ»€λμ¦ μμ
1. μΉ μλ²κ° HTTP μλ²λ₯Ό HTTP μλΉμ€ ν¬νΈ(μΌλ°μ μΈ κ²½μ° TCP/80 or TCP/8080)μ λκΈ°μν΄
2. ν΄λΌμ΄μΈνΈκ° μλΉμ€ ν¬νΈμ HTTP μμ² μ μ‘
3. μλ²κ° ν΄λΌμ΄μΈνΈμ μμ²μ ν΄μ
4. ν΄μν λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ μ μ ν μλ΅μ ν΄λΌμ΄μΈνΈμκ² λ°ν
# λ€νΈμν¬ ν¬νΈμ μλΉμ€ ν¬νΈ
- λ€νΈμν¬ ν¬νΈ(Network Port)
: λ€νΈμν¬μμ μλ²μ ν΄λΌμ΄μΈνΈκ° μ 보λ₯Ό κ΅ννλ μΆμνλ μ₯μ
- μλΉμ€ ν¬νΈ(Service Port)
: λ€νΈμν¬ ν¬νΈ μ€ νΉμ μλΉμ€μ μν΄ μ μ λ μνμ ν¬νΈ
- νΉκΆ ν¬νΈ( Privileged port )( = μ μλ €μ§ ν¬νΈ( Well-known port ) )
: 0 ~ 1023 λ² ν¬νΈλ₯Ό μΌμ»«λ λ¨μ΄λ‘, νΉκΆ ν¬νΈμ μλΉμ€λ₯Ό μ€ννκΈ° μν΄μλ κ΄λ¦¬μμ κΆνμ΄ νμνλ€.
+ ν¬νΈλ₯Ό μ΄μ©νμ¬ λ°μ΄ν°λ₯Ό κ΅ννλ λ°©μμ μ μ‘ κ³μΈ΅(Transport Layer)μ νλ‘ν μ½μ λ°λ¦
ex) TCP, UDP <-- μλ‘ λ€λ₯Έ νλ‘ν μ½λΌλ¦¬λ νΈν X
+ TCP/80
--> HTTP μλΉμ€λ₯Ό 80λ² ν¬νΈμμ TCPλ‘ μ 곡νλ€λ μλ―Έ
+ μ΄μ체μ μμ ν¬νΈ κ°μλ₯Ό μ μν μ μμ
# HTTP λ©μμ§
: HTTP λ°λμ ν€λλ‘ κ΅¬μ±λλ©°, κ° λ©μΈμ§λ ν΄λΌμ΄μΈνΈκ° μ μ‘νλ HTTP μμ²κ³Ό μλ²κ° λ°ννλ HTTP μλ΅μ ν¬ν¨νλ€.
- HTTP ν€λ
+ CRLF(μ€λ°κΏ)λ ν€λμ κ° μ€μ ꡬλ³νκ±°λ ν€λμ λμ λνλΌ λ μ¬μ©
+ 첫 μ€ --> μμ μ€(Start-line)
+ λλ¨Έμ§ μ€ --> ν€λ(Header)
+ ν€λ (Header)
: HTTP λ©μμ§, λ°λμ μμ±μ λνλ΄λ μ€λ‘, νλμ κ°μΌλ‘ ꡬμ±
- HTTP λ°λ
+ ν€λμ λμ λνλ΄λ CRLF λ€, λͺ¨λ μ€λ‘ μλ²λ ν΄λΌμ΄μΈνΈμκ² μ μ‘λ λ°μ΄ν°λ₯Ό μ μ₯ν¨
# HTTP μμ²
: μλ²μκ² νΉμ λμμ μꡬνλ λ©μΈμ§
- HTTP μμ² μμ μ€μ ꡬμ±
λ©μλ(Method) | μμ² URI(Request-URI) | HTTP λ²μ |
- λ©μλ
: URI μ΄ κ°λ¦¬ν€λ 리μμ€λ₯Ό λμμΌλ‘ μλ²κ° μνν΄μΌ ν λμμ λνλ
+ HTTP νμ€μμλ μ΄ 8κ°μ λ©μλκ° μ μλμ΄ μμ
ex) GET λ©μλμ POST λ©μλ
GET | POST |
리μμ€λ₯Ό κ°μ Έμ€λΌλ λ©μλ | λ°μ΄ν°λ₯Ό 리μμ€λ‘ 보λ΄λΌλ λ©μλ |
ex) 1. μ΄μ©μκ° λΈλΌμ°μ μ μΉ μλ² μ£Όμ μ
λ ₯ OR νμ΄νΌλ§ν¬ ν΄λ¦ 2. λΈλΌμ°μ κ° GET μμ²μ μλ²μ μ μ‘νμ¬ μ νμ΄μ§λ₯Ό λ λλ§νκΈ° μν 리μμ€λ₯Ό λ°μμ΄ |
ex) λ‘κ·ΈμΈ μ μ
λ ₯νλ λΉλ°λ²νΈ, κ²μνμ μμ±νλ κΈ λ±μ΄ POST λ°©μμ ν΅ν΄ μλ²λ‘ μ μ‘λ¨ |
+ λ λλ§μ΄λ?
κ°λ°μκ° μμ±ν λ¬Έμκ° λΈλΌμ°μ μμ μΆλ ₯λλ κ³Όμ
- μμ² URLκ³Ό HTTP λ²μ
: μ μλ λ©μλμ λμμ, νμλ ν΄λΌμ΄μΈνΈκ° μ¬μ©νκ³ μλ HTTP νλ‘ν μ½μ λ²μ μ λνλ
- URLκ³Ό URI
URI | URL |
νΉμ 리μμ€λ₯Ό μλ³νλ ν΅ν© μμ μλ³μ (Uniform Resource Identifier)λ₯Ό μλ―Ένλ©°, μΉ κΈ°μ μμ μ¬μ©νλ λ Όλ¦¬μ λλ 물리μ 리μμ€λ₯Ό μλ³νλ κ³ μ ν λ¬Έμμ΄ μνμ€μ |
μΉ μ£Όμ. μ»΄ν¨ν° λ€νΈμν¬ μμμ 리μμ€κ° μ΄λ μλμ§ μλ €μ£ΌκΈ° μν κ·μ½μΌλ‘, URIμ μλΈμ μ΄λ€. |
# HTTP μλ΅
: HTTP μμ²μ λν κ²°κ³Όλ₯Ό λ°ννλ λ©μΈμ§
- HTTP μλ΅μ μμ μ€ κ΅¬λΆ
HTTP λ²μ | μν μ½λ( Status Code ) | μ²λ¦¬ μ¬μ ( Reason Phrase ) |
+ κ°κ°μ μμλ λμ΄μ°κΈ°λ‘ ꡬλΆ
- HTTP λ²μ
: μλ²μμ μ¬μ©νλ HTTP νλ‘ν μ½μ λ²μ
- μν μ½λ
: μμ²μ λν μ²λ¦¬ κ²°κ³Όλ₯Ό μΈ μ리μλ‘ λνλΈ κ²
- μ²λ¦¬ μ¬μ
: μν μ½λκ° λ°μν μ΄μ λ₯Ό μμ½νμ¬ κΈ°μ ν κ²
1XX | μμ² μμ©κ³Ό μ²λ¦¬κ° μ μμ μΌλ‘ μνλ¨ | X |
2XX | μμ²μ΄ μ λλ‘ μ²λ¦¬λ¨ | ex) 200 : μ±κ³΅ |
3XX | μμ²μ μ²λ¦¬νκΈ° μν΄μλ ν΄λΌμ΄μΈνΈκ° μΆκ°μ μΈ λμμ μ·¨ν΄μΌ ν¨ | ex) 302 : ν΄λΌμ΄μΈνΈκ° λ€λ₯Έ URL λ‘ μ΄λν΄μΌ ν¨ |
4XX | ν΄λΌμ΄μΈνΈ μ μ‘ν μμ²μ΄ μλͺ»λμ΄ μ²λ¦¬μ μ€ν¨ | ex) 400 : ν΄λΌμ΄μΈνΈμ μμ²μ΄ λ¬Έλ²μ λ§μ§ μμ 403 : ν΄λΌμ΄μΈνΈκ° 리μμ€μ μμ²ν κΆνμ΄ μλ μν 404 : 리μμ€λ₯Ό μ°Ύμ μ μμ |
5XX | μλ²μ μλ¬κ° λ°μνμ¬ μ²λ¦¬ μ€ν¨ (λ¨, ν΄λΌμ΄μΈνΈμ μμ²μ μ ν¨ν μνμ) | ex) 500 : μμ² μ²λ¦¬ κ³Όμ μμ μλ¬ λ°μ 503 : μλ² κ³ΌλΆνλ‘ μμ² μ²λ¦¬ λΆκ° μν |
ex) 200μ μν μ½λλ₯Ό κ°μ§λ κ²½μ°
# HTTP μμ² λ° μλ΅ μ€μ΅
1. GET λ©μλλ₯Ό μ΄μ©νμ¬ μ€μ΅ν κ²½μ°
2. POST λ©μλλ₯Ό μ΄μ©νμ¬ μ€μ΅ν κ²½μ°