Skip to content

Latest commit

Β 

History

History
81 lines (68 loc) Β· 2.55 KB

File metadata and controls

81 lines (68 loc) Β· 2.55 KB

HTTP

HyperText Transfer Protocol

  • ν΄λΌμ΄μ–ΈνŠΈ μ„œλ²„ ꡬ쑰둜 전달
  • Stateful, Stateless
  • connectionless
  • HTTP λ©”μ‹œμ§€

전달할 수 μžˆλŠ” νƒ€μž…

  • HTML, TEXT
  • IMAGE, μŒμ„±, μ˜μƒ, 파일
  • JSON, XML (API)
  • 거의 λͺ¨λ“  ν˜•νƒœμ˜ 데이터 전솑 κ°€λŠ₯

HTTP 역사

  • HTTP/0.9 1991λ…„: GET λ©”μ„œλ“œλ§Œ 지원, HTTP 헀더X
  • HTTP/1.0 1996λ…„: λ©”μ„œλ“œ, 헀더 μΆ”κ°€
  • HTTP/1.1 1997λ…„: κ°€μž₯ 많이 μ‚¬μš©, μš°λ¦¬μ—κ²Œ κ°€μž₯ μ€‘μš”ν•œ 버전
    • RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014)
  • HTTP/2 2015λ…„: μ„±λŠ₯ κ°œμ„ 
  • HTTP/3 진행쀑: TCP λŒ€μ‹ μ— UDP μ‚¬μš©, μ„±λŠ₯ κ°œμ„ 

Stateless Protocol

  • μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό 보쑴X
  • μž₯점: μ„œλ²„ ν™•μž₯μ„± λ†’μŒ(μŠ€μΌ€μΌ 아웃)
  • 단점: ν΄λΌμ΄μ–ΈνŠΈκ°€ μΆ”κ°€ 데이터 전솑

Stateless의 싀무 ν•œκ³„

  • λͺ¨λ“  것을 λ¬΄μƒνƒœλ‘œ 섀계 ν•  수 μžˆλŠ” κ²½μš°λ„ 있고 μ—†λŠ” κ²½μš°λ„ μžˆλ‹€.
  • λ‘œκ·ΈμΈν•œ μ‚¬μš©μžμ˜ 경우 둜그인 ν–ˆλ‹€λŠ” μƒνƒœλ₯Ό μ„œλ²„μ— μœ μ§€
  • 일반적으둜 λΈŒλΌμš°μ € 쿠킀와 μ„œλ²„ μ„Έμ…˜λ“±μ„ μ‚¬μš©ν•΄μ„œ μƒνƒœ μœ μ§€
  • μƒνƒœ μœ μ§€λŠ” μ΅œμ†Œν•œλ§Œ μ‚¬μš©

Connectionless

  • HTTPλŠ” 기본이 연결을 μœ μ§€ν•˜μ§€ μ•ŠλŠ” λͺ¨λΈ 일반적으둜 초 λ‹¨μœ„μ˜ μ΄ν•˜μ˜ λΉ λ₯Έ μ†λ„λ‘œ 응닡
  • 1μ‹œκ°„ λ™μ•ˆ 수천λͺ…이 μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•΄λ„ μ‹€μ œ μ„œλ²„μ—μ„œ λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” μš”μ²­μ€ μˆ˜μ‹­κ°œ 이 ν•˜λ‘œ 맀우 μž‘μŒ
    • 예) μ›Ή λΈŒλΌμš°μ €μ—μ„œ 계속 μ—°μ†ν•΄μ„œ 검색 λ²„νŠΌμ„ λˆ„λ₯΄μ§€λŠ” μ•ŠλŠ”λ‹€.
  • μ„œλ²„ μžμ›μ„ 맀우 효율적으둜 μ‚¬μš©ν•  수 있음

Connectionless의 ν•œκ³„

  • λ§€ μš”μ²­λ§ˆλ‹€ TCP/IP 연결을 μƒˆλ‘œ λ§Ίμ–΄μ•Ό 함 (3 way handshake μ‹œκ°„ μΆ”κ°€)
  • μ›Ή λΈŒλΌμš°μ €λ‘œ μ‚¬μ΄νŠΈλ₯Ό μš”μ²­ν•˜λ©΄ HTML 뿐만 μ•„λ‹ˆλΌ μžλ°”μŠ€ν¬λ¦½νŠΈ, css, μΆ”κ°€ 이미지 λ“± 수 λ§Žμ€ μžμ›μ΄ ν•¨κ»˜ λ‹€μš΄λ‘œλ“œ
  • μ§€κΈˆμ€ HTTP 지속 μ—°κ²°(Persistent Connections)둜 문제 ν•΄κ²°
    • HTTP/2, HTTP/3μ—μ„œ 더 λ§Žμ€ μ΅œμ ν™”

HTTP Message

HTTP Message

HTTP Request

# Request
GET /search?q=hello&hl=ko HTTP/1.1 
Host: www.google.com

HTTP Response

# Response
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8 Content-Length: 3423

<html> 
    <body>...</body>
</html>

HTTP 곡식 μŠ€νŽ™

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>