[λ„€νŠΈμ›Œν¬] HTTP

πŸ“„ HTTPλž€?

HyperText Transfer Protocol의 μ•½μžλ‘œ HTMLλ¬Έμ„œμ™€ 같은 λ¦¬μ†ŒμŠ€λ₯Ό μ„œλ²„λ‘œλΆ€ν„° κ°€μ Έμ˜¬ 수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„μ˜ μ „μ†‘λΏλ§Œ μ•„λ‹ˆλΌ μ„œλ²„κ°„μ˜ 전솑에도 HTTPλ₯Ό μ‚¬μš©ν•΄ 데이터λ₯Ό μ „μ†‘ν•˜λ©° 거의 λͺ¨λ“  ν˜•νƒœμ˜ 데이터λ₯Ό 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.

β–ͺ 기반 ν”„λ‘œν† μ½œ

  • TCP: HTTP.1.1, HTTP/2: HTTP/1.1, HTTP/2
  • UDP: HTTP/3
  • ν˜„μž¬ HTTP/1.1 주둜 μ‚¬μš©, HTTP/2, HTTP/3도 점점 증가

πŸ“„ HTTP νŠΉμ§•

1. ν΄λΌμ΄μ–ΈνŠΈ μ„œλ²„ ꡬ쑰

  • Request Response ꡬ쑰
  • ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— μš”μ²­μ„ 보내고, 응닡을 λŒ€κΈ°ν•œλ‹€.
  • μ„œλ²„κ°€ μš”μ²­μ— λŒ€ν•œ κ²°κ³Όλ₯Ό λ§Œλ“€μ–΄μ„œ μ‘λ‹΅ν•œλ‹€.

2. λ¬΄μƒνƒœ ν”„λ‘œν† μ½œ(μŠ€ν…Œμ΄νŠΈλ¦¬μŠ€ Stateless: μƒνƒœλ₯Ό λ³΄μ‘΄ν•˜μ§€ μ•ŠμŒ), λΉ„μ—°κ²°μ„±

stateless

  • Stateless

    • μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό λ³΄μ‘΄ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•„μš”ν•œ 데이터λ₯Ό 계속 λ„˜κΈ΄λ‹€.
    • ν•„μš”ν•œ 데이터λ₯Ό ν΄λΌμ΄μ–ΈνŠΈκ°€ 보내기 λ•Œλ¬Έμ— κ°‘μžκΈ° ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ΄ 증가해도 μ„œλ²„λ₯Ό λŒ€κ±° νˆ¬μž…ν•  수 μžˆλ‹€.
    • λ”°λΌμ„œ λ¬΄μƒνƒœλŠ” 응닡 μ„œλ²„λ₯Ό μ‰½κ²Œ λ°”κΏ€ 수 μžˆμ–΄ λ¬΄ν•œν•œ μ„œλ²„ 증섀이 κ°€λŠ₯ν•˜κ³  μŠ€μΌ€μΌ 아웃(μˆ˜ν‰ ν™•μž₯)에 μœ λ¦¬ν•˜λ‹€.
  • Stateless ν•œκ³„

    • 둜그인이 ν•„μš”ν•œ νŽ˜μ΄μ§€μ˜ 경우 λ“±μ—λŠ” μ„œλ²„κ°€ μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Όν•œλ‹€.
    • μ΄λŸ¬ν•œ κ²½μš°μ—λŠ” 일반적으둜 λΈŒλΌμš°μ € 쿠킀와 μ„œλ²„ μ„Έμ…˜λ“±μ„ μ‚¬μš©ν•΄μ„œ μƒνƒœλ₯Ό μœ μ§€ν•œλ‹€.
    • μƒνƒœ μœ μ§€λŠ” μ΅œμ†Œν•œλ§Œ μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€. λ˜ν•œ 데이터λ₯Ό λ„ˆλ¬΄ 많이 λ³΄λ‚Έλ‹€λŠ” 단점이 μžˆλ‹€.
  • λΉ„μ—°κ²°μ„±
    • μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— 응닡을 ν•˜κ³  연결을 μœ μ§€ν•˜μ§€ μ•ŠμŒ.
    • HTTPλŠ” 기본적으둜 연결을 μœ μ§€ν•˜μ§€ μ•ŠλŠ” λͺ¨λΈ
    • 일반적으둜 초 λ‹¨μœ„ μ΄ν•˜μ˜ λΉ λ₯Έ μ†λ„λ‘œ 응닡
    • 1μ‹œκ°„ λ™μ•ˆ 수천λͺ…이 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•΄λ„ μ‹€μ œ μ„œλ²„μ—μ„œ λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” μš”μ²­μ€ μˆ˜μ‹­κ°œ μ΄ν•˜λ‘œ μž‘μŒ
    • μ„œλ²„ μžμ›μ„ 맀우 효율적으둜 μ‚¬μš©ν•  수 있음.
  • λΉ„μ—°κ²°μ„±μ˜ ν•œκ³„μ™€ 극볡
    • TCP/IP 연결을 μƒˆλ‘œ λ§Ίμ–΄μ•Ό 함 - 3 way handshake μ‹œκ°„ μΆ”κ°€
    • μ›Ή λΈŒλΌμš°μ €λ‘œ μ‚¬μ΄νŠΈλ₯Ό μš”μ²­ν•˜λ©΄ HTML 뿐만 μ•„λ‹ˆλΌ μžλ°”μŠ€ν¬λ¦½νŠΈ, css, μΆ”κ°€ 이미지 λ“±λ“± μˆ˜λ§Žμ€ μžμ›μ΄ ν•¨κ»˜ λ‹€μš΄λ‘œλ“œ
    • μ§€κΈˆμ€ HTTP 지속 μ—°κ²°(Persistent Connections)둜 문제 ν•΄κ²°
    • HTTP/2, HTTP/3μ—μ„œ 더 λ§Žμ€ μ΅œμ ν™”

3. HTTP λ©”μ‹œμ§€λ₯Ό ν†΅ν•΄μ„œ 톡신

httpλ©”μ‹œμ§€

πŸ”΄ μ‹œμž‘ 라인

  • μš”μ²­ λ©”μ‹œμ§€

    • HTTP λ©”μ„œλ“œ (ex. GET: 쑰회): μ„œλ²„κ°€ μˆ˜ν–‰ν•΄μ•Ό ν•  λ™μž‘ μ§€μ •
    • μš”μ²­ λŒ€μƒ (/search?q=hello&hl=ko): μ ˆλŒ€κ²½λ‘œ=”/β€λ‘œ μ‹œμž‘ν•˜λŠ” 경둜
    • HTTP Version
  • 응닡 λ©”μ‹œμ§€

    • HTTP 버전
    • HTTP μƒνƒœ μ½”λ“œ: μš”μ²­ 성곡 λ˜λŠ” μ‹€νŒ¨(200: 성곡, 400: ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 였λ₯˜. 500: μ„œλ²„ λ‚΄λΆ€ 였λ₯˜)
    • 이유 문ꡬ: μ‚¬λžŒμ΄ 이해할 수 μžˆλŠ” 짧은 μƒνƒœ μ½”λ“œ μ„€λͺ… κΈ€

🟑 HTTP 헀더

  • header-filed = field-name β€œ:” OWS field-value OWS (OWS: 띄어쓰기 ν—ˆμš©)
  • field-name 은 λŒ€μ†Œλ¬Έμž ꡬ뢄 μ—†μŒ
  • μš©λ„
    1. HTTP 전솑에 ν•„μš”ν•œ λͺ¨λ“  뢀가정보
    2. 예) λ©”μ‹œμ§€ λ°”λ””μ˜ λ‚΄μš©, λ©”μ‹œμ§€ λ°”λ””μ˜ 크기, μ••μΆ•, 인증..
    3. ν‘œμ€€ν—€λ”κ°€ 많음. . ν•„μš”μ‹œ μž„μ˜μ˜ 헀더 μΆ”κ°€ κ°€λŠ₯

πŸ”΅ HTTP λ©”μ‹œμ§€ λ°”λ””

  • μ‹€μ œ 전솑할 데이터
  • HTMLλ¬Έμ„œ, 이미지, μ˜μƒ, JSON λ“±λ“± byte둜 ν‘œν˜„ν•  수 μžˆλŠ” λͺ¨λ“  데이터 전솑 κ°€λŠ₯

좜처

Tags:

Categories:

Updated:

Leave a comment