http vs https
http(Hyper Text Transfer Protocol)μ λνμ¬
μλ²μ ν΄λΌμ΄μΈνΈμ λ°μ΄ν° κ΅νμ μμ²(Request)κ³Ό μλ΅(Response) νμμΌλ‘ μ μ
HTTPμ κΈ°λ³Έ λ©μ»€λμ¦μ ν΄λΌμ΄μΈνΈκ° μλ²μκ² μμ²νλ©΄, μλ²κ° μλ΅νλ κ²μ
λλ€.
μΉ μλ²λ HTTP μλ²λ₯Ό HTTP μλΉμ€ ν¬νΈμ λκΈ°μν΅λλ€.
μ΄ ν¬νΈλ μΌλ°μ μΌλ‘ TCP/80 λλ TCP/8080μ
λλ€.
ν΄λΌμ΄μΈνΈκ° μλΉμ€ ν¬νΈμ HTTP μμ²μ μ μ‘νλ©΄, μ΄λ₯Ό ν΄μνμ¬ μ μ ν μλ΅μ λ°νν©λλ€.
리λ μ€ ν¬νΈ μ 리
리λ μ€ ν¬νΈ μ€λͺ νκΈ° μ μ μ½μ΄μΌ ν λΆλΆ ν¬νΈλ? ν¬νΈλ? λ³Έλ νꡬλΌλ μλ―Έλ‘μ¨ CSμμ OSκ°μ ν΅μ μ μ’ λ¨μ !! λ€νΈμν¬ μμμ ν΅μ μ ν λ IPλ₯Ό ν λλ‘ ν΄λΉ μλ²κ° μλ μ»΄ν¨ν°μ μ κ·Ό
dystopia050119.tistory.com
μμΈν ν¬νΈμ λ΄μ©μ μ λ§ν¬μμ μλ μ΄λ―Έμ§λ νμμ λλ€!
HTTP λ©μμ§
HTTP λ©μμ§μλ ν΄λΌμ΄μΈνΈκ° μ μ‘νλ HTTP μμ², κ·Έλ¦¬κ³ μλ²κ° λ°ννλ HTTP μλ΅ν©λλ€
κΈ°λ₯κ³Ό μΈλΆ ꡬ쑰μμλ μ°¨μ΄κ° μμ§λ§, ν¬κ² 보면 μ΄λ€μ HTTP ν€λμ λ°λλ‘ κ΅¬μ±λλ€λ 곡ν΅μ μμ£
HTTP ν€λ
HTTP ν€λμ κ° μ€μ CRLFλ‘ κ΅¬λΆλλ©°, 첫 μ€μ μμ μ€(Start-line), λλ¨Έμ§ μ€μ ν€λ(Header)λΌκ³ λΆλ¦
λλ€.
ν€λμ λμ CRLF ν μ€λ‘ λνλ
λλ€.
μμ μ€μ μν μ μμ²κ³Ό μλ΅μμ ν° μ°¨μ΄κ° μμ΅λλ€.
κ·Έλ¬λ―λ‘ μ΄μ λν΄μλ μ‘°κΈ λ€μ κ°κ°μ μμΈν κΈ°μ νλ©΄μ μ€λͺ
νκ² μ΅λλ€.
ν΄λ - νλμ κ°μΌλ‘ ꡬμ±λλ©° HTTP λ©μμ§ λλ λ°λμ μμ±
νλμ HTTP λ©μμ§μλ 0κ° μ΄μμ ν€λκ° μμ μ μμ΅λλ€.
HTTP λ°λ
HTTP λ°λλ ν€λμ λμ λνλ΄λ CRLF λ€, λͺ¨λ μ€μ λ§ν©λλ€.
ν΄λΌμ΄μΈνΈλ μλ²μκ² μ μ‘νλ €λ λ°μ΄ν°κ° λ°λμ λ΄κΉλλ€
HTTP μμ²
HTTP μμ²μ μλ²μκ² νΉμ λμμ μꡬνλ λ©μμ§μ λλ€.
μλ²λ ν΄λΉ λμμ΄ μ€ν κ°λ₯νμ§, ν΄λΌμ΄μΈνΈκ° κ·Έλ¬ν λμμ μμ²ν κΆνμ΄ μλμ§
λ±μ κ²ν νκ³ , μ μ ν λλ§ μ΄λ₯Ό μ²λ¦¬ν©λλ€.
μμ μ€
HTTP μμ²μ μμ μ€μ λ©μλ(Method), μμ² URI(Request-URI), κ·Έλ¦¬κ³ HTTP λ²μ μΌλ‘ ꡬμ±
κ°κ°μ λμ΄μ°κΈ°λ‘ ꡬλΆν©λλ€.
λ©μλλ URIκ° κ°λ¦¬ν€λ 리μμ€λ₯Ό λμμΌλ‘, μλ²κ° μννκΈΈ λ°λΌλ λμμ λνλ
λλ€.
HTTP νμ€μ μ μλ λ©μλλ 8κ°κ° μμΌλ, μ¬κΈ°μλ λΉκ΅μ μμ£Ό μ¬μ©λλ GETκ³Ό POST λ©μλλ§..
λ¨Όμ GETμ 리μμ€λ₯Ό κ°μ Έμ€λΌλ λ©μλμ
λλ€. μ΄μ©μκ° λΈλΌμ°μ μ μΉ μλ²μ μ£Όμλ₯Ό μ
λ ₯νκ±°λ
νμ΄νΌλ§ν¬λ₯Ό ν΄λ¦νλ©΄, μλ‘μ΄ νμ΄μ§λ₯Ό λ λλ§νκΈ° μν΄ λ¦¬μμ€κ° νμν©λλ€.
μ΄λ λΈλΌμ°μ λ GET μμ²μ μλ²μ μ μ‘νμ¬ λ¦¬μμ€λ₯Ό λ°μμ΅λλ€.
λ°λλ‘, POSTλ 리μμ€λ‘ λ°μ΄ν°λ₯Ό 보λ΄λΌλ λ©μλμ
λλ€. μ μ‘ν λ°μ΄ν°λ λ³΄ν΅ HTTP λ°λμ ν¬ν¨ν¨
μμλ‘ λ‘κ·ΈμΈν λ μ
λ ₯νλ IDμ λΉλ°λ²νΈ, κ²μνμ μμ±νλ κΈ λ±μ΄ POSTλ‘ μλ²μ 보λ
μ΄ μΈμ μμ² URIλ λ©μλμ λμμ, HTTP λ²μ μ ν΄λΌμ΄μΈνΈκ° μ¬μ©νλ HTTP νλ‘ν μ½μ λ²μ νμν¨
ν€λμ λ°λ
μμ μ€μ μ μΈν ν€λμ λ°λλ HTTP λ©μμ§μμ μ€λͺ ν κ²κ³Ό κ°μ΅λλ€.
πHTTP μμ²μ λ©μλ λ° URIμ λν΄ λ μμΈν μκ³ μΆλ€λ©΄, νμ€ λ¬Έμλ₯Ό λ³΄μ€ κ²μ μΆμ²ν©λλ€
HTTP/1.1: Request
part of Hypertext Transfer Protocol -- HTTP/1.1 RFC 2616 Fielding, et al. 5 Request A request message from a client to a server includes, within the first line of that message, the method to be applied to the resource, the identifier of the resource, and t
www.w3.org
HTTP μλ΅
HTTP μλ΅μ HTTP μμ²μ λν κ²°κ³Όλ₯Ό λ°ννλ λ©μμ§μ
λλ€.
μμ²μ μν μ¬λΆ κ·Έλ¦¬κ³ μ΄μ μ κ°μ μν μ 보(Status), ν΄λΌμ΄μΈνΈμ μ μ‘ν 리μμ€κ° μλ΅μ ν¬ν¨.
μμ μ€
HTTP μλ΅μ μμ μ€μ HTTP λ²μ , μν μ½λ(Status Code), κ·Έλ¦¬κ³ μ²λ¦¬ μ¬μ (Reason Phrase)λ‘ κ΅¬μ±!
κ°κ°μ λμ΄μ°κΈ°λ‘ ꡬλΆλ©λλ€.
HTTP λ²μ μ μλ²μμ μ¬μ©νλ HTTP νλ‘ν μ½μ λ²μ μ λνλ
λλ€.
κ·Έλ¦¬κ³ μν μ½λλ μμ²μ λν μ²λ¦¬ κ²°κ³Όλ₯Ό μΈ μλ¦Ώμλ‘ λνλ
λλ€.
HTTP νμ€μΈ RFC 2616μ λλ΅ 40μ¬κ°μ μν μ½λλ₯Ό μ μνκ³ μλλ°,
κ°κ°μ 첫 λ²μ§Έ μλ¦Ώμμ λ°λΌ 5κ°μ ν΄λμ€λ‘ λΆλ₯λ©λλ€.
μ²λ¦¬ μ¬μ λ μν μ½λκ° λ°μν μ΄μ λ₯Ό μ§§κ² κΈ°μ ν κ²μ λλ€.
μν | μ½λ μ€λͺ | λν μμ |
1xx | μμ²μ μ λλ‘ λ°μκ³ , μ²λ¦¬κ° μ§ν μ€μ | |
2xx | μμ²μ΄ μ λλ‘ μ²λ¦¬λ¨ | 200: μ±κ³΅ |
3xx | μμ²μ μ²λ¦¬νλ €λ©΄, ν΄λΌμ΄μΈνΈκ° μΆκ° λμμ μ·¨ν΄μΌ ν¨. | 302: λ€λ₯Έ URLλ‘ κ° κ² |
4xx | ν΄λΌμ΄μΈνΈκ° μλͺ»λ μμ²μ 보λ΄μ΄ μ²λ¦¬μ μ€ν¨νμ΅λλ€. | 400: μμ²μ΄ λ¬Έλ²μ λ§μ§ μμ 403: ν΄λΌμ΄μΈνΈκ° 리μμ€μ μμ²ν κΆν X 404: 리μμ€κ° μμ |
5xx | ν΄λΌμ΄μΈνΈμ μμ²μ μ ν¨νμ§λ§, μλ²μ μλ¬κ° λ°μνμ¬ μ²λ¦¬μ μ€ν¨νμ΅λλ€. |
500: μμ²μ μ²λ¦¬νλ€κ° μλ¬κ° λ°μν¨ 503: μλ²κ° κ³ΌλΆνλ‘ μΈν΄ μμ²μ μ²λ¦¬ X |
ν€λμ λ°λ
μμ μ€μ μ μΈν ν€λμ λ°λλ HTTP λ©μμ§μμ μ€λͺ ν κ²κ³Ό κ°μ΅λλ€.

πHTTP μλ΅μ λν΄ λ μμΈν μκ³ μΆλ€λ©΄, νμ€ λ¬Έμλ₯Ό λ³΄μ€ κ²μ μΆμ²!
HTTP/1.1: Response
part of Hypertext Transfer Protocol -- HTTP/1.1 RFC 2616 Fielding, et al. 6 Response After receiving and interpreting a request message, a server responds with an HTTP response message. Response = Status-Line ; Section 6.1 *(( general-header ; Section 4.5
www.w3.org
https
HTTPμ μλ΅κ³Ό μμ²μ νλ¬ΈμΌλ‘ μ λ¬λ©λλ€. μ΄λ μ¬κ°ν 보μ λ¬Έμ λ‘ μ΄μ΄μ§μ£
μλ₯Ό λ€μ΄, λ‘κ·ΈμΈν λ μ μ‘ν POST μμ²μλ λκ° μ΄μ©μμ IDμ λΉλ°λ²νΈκ° ν¬ν¨λ©λλ€.
곡격μκ° μ€κ°μ μ΄λ₯Ό κ°λ‘μ±λ©΄ μ΄μ©μμ κ³μ μ΄ νμ·¨λΉν μ μμ΅λλ€.
HTTPS(HTTP over Secure socket layer)λ TLS(Transport Layer Security) νλ‘ν μ½μ λμ
TLSλ μλ²μ ν΄λΌμ΄μΈνΈ μ¬μ΄μ μ€κ°λ λͺ¨λ HTTP λ©μμ§λ₯Ό μνΈνν©λλ€.
곡격μκ° μ€κ°μ λ©μμ§λ₯Ό νμ·¨νλλΌλ μ΄λ₯Ό ν΄μνλ κ²μ λΆκ°λ₯νλ©°,
κ²°κ³Όμ μΌλ‘ HTTP ν΅μ μ΄ λμ²κ³Ό λ³μ‘°λ‘λΆν° 보νΈλ©λλ€.
μμ μ¬μ§μ HTTP λ° HTTPSμ μΉ μλ²μ μ€κ°λ λ©μμ§λ₯Ό Wiresharkλ‘ νμΈν κ²μ
λλ€.
λΉ¨κ° κΈμλ μμ², νλ κΈμλ μλ΅μ΄κ³ HTTP λ©μμ§λ μ½κ² μ½μ μ μμ§λ§, HTTPSμ κ²μ ν΄μλΆκ°
μΉ μλ²μ URLμ΄ http://λ‘ μμλλ©΄ HTTP, https://λ‘ μμλλ©΄ HTTPS νλ‘ν μ½μ μ¬μ©ν©λλ€.
κ·Έλ¦¬κ³ μμ¦μ λ€ HTTPSλ₯Ό μ§ν₯νλ νΈμ΄μ£
TLS νμ€
TLSμ κΈ°λ°μ΄ λλ κ³΅κ° ν€ μνΈ μμ€ν (Public Key Crypto Standard, PKCS) λ° λμΉ ν€ μνΈ(Symmetric Key Cryptography)μ μμμΌνλ©°, μλ‘ λ¬Έμλ₯Ό μ½μΌλ©΄ μ΄ν΄μ λμλ κ²λλ€ μνΈν κΈ°μ΄λ λ°°μ°μκ³ ..
RFC 5246 - The Transport Layer Security (TLS) Protocol Version 1.2
datatracker.ietf.org
μ 리
- HTTP(HyperText Transfer Protocol): μΉ μλ²μ clientκ° λ¦¬μμ€λ₯Ό κ΅νμ μ¬μ©νλ νλ‘ν μ½.
ν΄λΌμ΄μΈνΈκ° μμ²νλ©΄, μλ²κ° μλ΅νλ λ°©μ. - HTTP λ©μμ§: HTTP μλ²μ clientκ° κ΅ννλ λ°μ΄ν°. ν€λμ λ°λλ‘ κ΅¬μ±λλ©°, κ° μ€μ CRLFλ‘ κ΅¬λΆλ¨.
- ν€λ: λ©μμ§μ λν μ 보. ν€λμ λμλ CRLF*κ° ν μ€ μμ.
- λ°λ: ν΄λΌμ΄μΈνΈκ° μλ²μκ², λλ μλ²κ° ν΄λΌμ΄μΈνΈμκ² μ λ¬ν λ°μ΄ν°
- *CRLF(μ€λ°κΏ), EOL(end-of-line) λ±μΌλ‘ μ§μΉνλ©° ν΅μ©λ¨
- HTTP μμ²(Request): ν΄λΌμ΄μΈνΈκ° μλ²μκ² νΉμ λμμ μμ²νλ λ©μμ§
- λ©μλ(Method): μμ² URIκ° κ°λ¦¬ν€λ 리μμ€μ λν΄, μλ²κ° μννμΌλ©΄ νλ λμμ μ§μ
- μμ² URI(Request-URI): λ©μλμ λμμ΄ λλ 리μμ€λ₯Ό μ§μ
- HTTP μλ΅(Response): μμ²μ μ²λ¦¬ν κ²°κ³Ό λ° μ΄μ , ν΄λΌμ΄μΈνΈμ μ μ‘ μΉ λ¦¬μμ€λ₯Ό ν¬ν¨ν λ©μμ§
- μν μ½λ(Status Code): μμ²μ μ²λ¦¬ν κ²°κ³Ό
- μ²λ¦¬ μ¬μ (Reason Phrase): μν μ½λκ° λ°μν μ΄μ
- HTTPS(HTTP on Secure socket layer): TLSλ₯Ό μ΄μ©νμ¬ HTTPμ μ½μ μ 보μν νλ‘ν μ½
μ°Έκ³ μλ£
Background: HTTP/HTTPS
μ΄ μ½μ€μμλ μΉ ν΅μ μ μ°μ΄λ νλ‘ν μ½μΈ HTTPμ HTTPSμ λν΄ μ€λͺ ν©λλ€.
dreamhack.io
μ°Έκ³ μ΄λ―Έμ§