μ •μ˜

HTTP(Hypertext Transfer Protocol)λŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„ 톡신을 μœ„ν•œ 톡신 κ·œμΉ™ μ„ΈνŠΈ, ν”„λ‘œν† μ½œμ΄λ‹€. λ˜ν•œ, OSI(Open Systems Interconnection) λ„€νŠΈμ›Œν¬ 톡신 λͺ¨λΈμ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 계측 ν”„λ‘œν† μ½œμ΄λ‹€.

HTTP/0.9

μš”μ²­μ€ 단일 라인으둜 κ΅¬μ„±λ˜λ©° GET λ©”μ†Œλ“œκ°€ μœ μΌν–ˆλ‹€.

// request
GET /mypage.html

// response
<html>
  A very simple HTML page
</html>

HTML 파일만 정솑될 수 μžˆμ–΄ HTTP 헀더가 μ—†μ—ˆλ‹€. λ˜ν•œ, μƒνƒœ ν˜Ήμ€ 였λ₯˜ μ½”λ“œλ„ μ—†μ—ˆλ‹€. λ¬Έμ œκ°€ λ°œμƒν•  경우 νŠΉμ • HTML 파일이 λ§Œλ“€μ–΄μ§€κ³  μ‚¬λžŒμ΄ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν–ˆλ‹€.

HTTP/1.0

λ‹€μ–‘ν•œ ν”„λ‘œν† μ½œμ΄ μƒκΈ°λŠ” μƒν™©μ—μ„œ 이λ₯Ό ν•˜λ‚˜λ‘œ μ •λ¦¬ν•˜κΈ° μœ„ν•΄ λ‚˜μ˜¨ HTTP 버전이닀.

  • μš”μ²­ λ©”μ‹œμ§€μ™€ 응닡 λ©”μ‹œμ§€μ— 헀더가 좔가됐닀.
  • ν—€λ”μ—λŠ” λ©”μ‹œμ§€μ˜ 정보λ₯Ό λ‹΄κ³  있으며 버전 정보, μƒνƒœ μ½”λ“œ 그리고 λ¬Έμ„œνƒ€μž…μ„ 헀더λ₯Ό 톡해 확인할 수 μžˆλ‹€.
  • ν•˜μ§€λ§Œ ν•΄λ‹Ή HTTP 버전은 곡식 ν‘œμ€€μ€ μ•„λ‹ˆμ˜€λ‹€.
// request
GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

// response
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image
  <IMG SRC="/myimage.gif">
</HTML>

HTTP/1.1

HTTP의 첫 번째 ν‘œμ€€ν™” 버전이닀.

  • 1.0 λ²„μ „μ—μ„œλŠ” μš”μ²­μ„ 보낼 λ•Œ λ§ˆλ‹€ μƒˆλ‘œμš΄ 연결을 λ§Ίκ³  μš”μ²­μ΄ λλ‚˜λ©΄ 연결을 λŠμ—ˆλ‹€.
  • λ˜‘κ°™μ€ 컴퓨터와 계속 톡신을 ν•˜κΈ°μœ„ν•΄μ„œλŠ” 연결을 λ§Ίκ³  λŠλŠ” μž‘μ—…μ„ μ—¬λŸ¬λ²ˆ ν•΄μ•Όν•œλ‹€.
  • 이λ₯Ό κ°œμ„ ν•˜κΈ° μœ„ν•΄ ν•œ 번 연결을 맺으면 λŠμ§€ μ•Šκ³  계속 μœ μ§€ν•  수 μžˆλ„λ‘ κ°œμ„ λ˜μ—ˆλ‹€. (persist connection)
  • λ˜ν•œ, 1.0 λ²„μ „μ—μ„œλŠ” μš”μ²­μ— λŒ€ν•œ 응닡이 와야 λ‹€μŒ μš”μ²­μ„ 보낼 수 μžˆμ—ˆλ‹€. μ΄λ ‡κ²Œ 되면 응닡이 μ˜€μ§€ μ•ŠμœΌλ©΄ λ‹€μŒ μš”μ²­μ„ ν•  μˆ˜κ°€ μ—†λ‹€.
  • 1.1 λ²„μ „μ—μ„œλŠ” 응닡과 상관없이 μ—¬λŸ¬ 개의 μš”μ²­μ„ 보낼 수 μžˆλ„λ‘ κ°œμ„ ν–ˆλ‹€. (Pipelining)

HTTP/2

  • 1.1 λ²„μ „μ—μ„œλŠ” μš”μ²­μ΄ μˆœμ„œλŒ€λ‘œ 처리되기 λ•Œλ¬Έμ—, μ•žμ˜ μš”μ²­μ— λŒ€ν•œ 응닡이 μ˜€μ§€ μ•ŠμœΌλ©΄ κ·Έ λ‹€μŒ μš”μ²­μ— λŒ€ν•œ 응닡이 와도 μ²˜λ¦¬κ°€ λ˜μ§€ μ•Šκ³  지연됐닀.
  • 2 λ²„μ „μ—μ„œλŠ” λͺ¨λ“  μš”μ²­κ³Ό 응닡을 λ³‘λ ¬μ μœΌλ‘œ μ²˜λ¦¬ν•΄μ„œ μš”μ²­μ— λŒ€ν•œ 응닡을 λŒ€κΈ°ν•˜μ§€ μ•Šκ³  λ¨Όμ € λ„μ°©ν•œ 응닡을 받을 수 μžˆλ„λ‘ κ°œμ„ ν–ˆλ‹€.
  • λ˜ν•œ, ν•œ 번의 μš”μ²­μœΌλ‘œ μ—¬λŸ¬ 개의 응닡을 받을 수 있고, ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•˜μ§€ μ•Šμ•„λ„ ν•„μš”ν•œ λ¦¬μ†ŒμŠ€λ₯Ό ν‘Έμ‹œν•˜λŠ” λ“± μ„±λŠ₯κ³Ό 속도가 많이 κ°œμ„ λλ‹€.

λ°”μ΄λ„ˆλ¦¬ ν”„λ ˆμ΄λ°

  • HTTP/2κ°€ μœ„μ—μ„œ μ„œμˆ ν•œ κΈ°λŠ₯을 κ°€λŠ₯μΌ€ ν•œ κΈ°λŠ₯이닀.
  • HTTP λ©”μ‹œμ§€λ₯Ό λ°”μ΄λ„ˆλ¦¬ ν˜•νƒœλ‘œ μΊ‘μŠν™”ν•˜λŠ” κΈ°λŠ₯이닀.

HTTP/3

  • 2 버전은 였래된 ν”„λ‘œν† μ½œμΈ TCP μœ„μ—μ„œ λ™μž‘ν•˜κ³  μžˆλ‹€.
  • TCPλŠ” 연결을 ν™•μΈν•˜λŠ” λ“± 데이터톡신 κ³Όμ •μ—μ„œ μ—¬λŸ¬ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° λ•Œλ¬Έμ— 속도가 λŠλ¦¬λ‹€.
  • 3 λ²„μ „μ—μ„œλŠ” TCPκ°€ μ•„λ‹Œ UDP을 μ‚¬μš©ν•΄μ„œ 속도 κ°œμ„ ν–ˆλ‹€.