HTTP Message

HTTP λ©”μ‹œμ§€λŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ 간에 데이터 κ΅ν™˜μ„ μœ„ν•΄ μ‚¬μš©ν•˜λŠ” κ·œκ²©ν™”λœ 데이터 블둝이닀.

λ©”μ‹œμ§€μ˜ 흐름과 λ°©ν–₯μ„±

λ©”μ‹œμ§€κ°€ μ–΄λ””μ„œ μ™€μ„œ μ–΄λ””λ‘œ κ°€λŠ”μ§€μ— 따라 μš©μ–΄κ°€ κ΅¬λΆ„λœλ‹€.

  • μΈλ°”μš΄λ“œ(Inbound): λ©”μ‹œμ§€κ°€ μ„œλ²„λ₯Ό ν–₯ν•΄ λ“€μ–΄μ˜€λŠ” λ°©ν–₯

  • μ•„μ›ƒλ°”μš΄λ“œ(Outbound): λ©”μ‹œμ§€κ°€ 처리λ₯Ό 마치고 ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ‚˜κ°€λŠ” λ°©ν–₯

  • μ—…μŠ€νŠΈλ¦Ό(Upstream): μš”μ²­ 데이터가 ν˜λŸ¬κ°€λŠ” λ°©ν–₯ (ν΄λΌμ΄μ–ΈνŠΈ -> μ„œλ²„)

  • λ‹€μš΄μŠ€νŠΈλ¦Ό(Downstream): 응닡 데이터가 ν˜λŸ¬κ°€λŠ” λ°©ν–₯ (μ„œλ²„ -> ν΄λΌμ΄μ–ΈνŠΈ)

HTTP ꡬ쑰

μš”μ²­(Request)κ³Ό 응닡(Response) λͺ¨λ‘ 크게 μ„Έ λΆ€λΆ„μœΌλ‘œ λ‚˜λ‰œλ‹€.

  • Start Line: λ©”μ‹œμ§€μ˜ μš”μ•½ 정보 (무엇을 μš”μ²­ν–ˆλŠ”μ§€, μ„±κ³΅ν–ˆλŠ”μ§€ λ“±)

  • Headers: 전솑에 ν•„μš”ν•œ 메타 데이터 (길이, νƒ€μž…, 인증 정보 λ“±)

  • Empty Line: ν—€λ”μ˜ 끝을 μ•Œλ¦¬λŠ” 곡백 (CRLF)

  • Message Body: μ‹€μ œ 전솑할 데이터 (HTML, JSON, 이미지 λ“±)

HTTP Request Message

  • Method: μ„œλ²„κ°€ μˆ˜ν–‰ν•΄μ•Ό ν•  λ™μž‘ (GET, POST, PUT, DELETE λ“±)

  • Request-URI: μš”μ²­ν•˜λŠ” λ¦¬μ†ŒμŠ€μ˜ 경둜 (Path + Query String)

  • HTTP-Version: μ‚¬μš©ν•˜λŠ” ν”„λ‘œν† μ½œ 버전 (HTTP/1.1 λ“±)

μ˜ˆμ‹œ

HTTP Response Message

HTTP Response Message의 ν˜•νƒœμ™€ μ˜ˆμ‹œλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • HTTP-Version: ν”„λ‘œν† μ½œ 버전

  • Status-Code: 처리 κ²°κ³Όλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 3자리 숫자 (200, 404, 500 λ“±)

  • Reason-Phrase: 숫자둜 된 μƒνƒœ μ½”λ“œλ₯Ό μ‚¬λžŒμ΄ 이해할 수 있게 μ„€λͺ…ν•˜λŠ” 짧은 κΈ€ (OK, Not Found λ“±)

μ˜ˆμ‹œ

HTTP Header

HTTP 전솑에 ν•„μš”ν•œ λͺ¨λ“  뢀가정보λ₯Ό λ‹΄κ³  있으며, λ©”μ‹œμ§€ λ‚΄μš©/크기/μ••μΆ•/인증 등을 ν¬ν•¨ν•œλ‹€.

HTTP ν—€λ”λŠ” 크게 μ•„λž˜μ™€ 같이 ꡬ뢄할 수 있으며, 각 λΆ„λ₯˜ μ•ˆμ— λ§Žμ€ 헀더 ν•„λ“œκ°€ μ‘΄μž¬ν•œλ‹€.

λΆ„λ₯˜
μ„€λͺ…
μ£Όμš” μ˜ˆμ‹œ

General Header

μš”μ²­κ³Ό 응닡 λ©”μ‹œμ§€ μ–‘μͺ½ λͺ¨λ‘μ— μ μš©λ˜λŠ” 일반적인 정보

Date (생성 μΌμ‹œ), Connection (μ—°κ²° 관리), Cache-Control (μΊμ‹œ μ œμ–΄)

Request Header

μš”μ²­ λ©”μ‹œμ§€μ—μ„œλ§Œ μ‚¬μš©ν•˜λ©°, μš”μ²­μ˜ λ‚΄μš©μ΄λ‚˜ ν΄λΌμ΄μ–ΈνŠΈμ˜ 정보λ₯Ό λ‹΄μŒ

Host, User-Agent, Referer, Accept, Authorization

Response Header

응닡 λ©”μ‹œμ§€μ—μ„œλ§Œ μ‚¬μš©ν•˜λ©°, μ„œλ²„μ˜ μ •λ³΄λ‚˜ 응닡 λΆ€κ°€ 정보λ₯Ό λ‹΄μŒ

Server, Set-Cookie, Allow, Location, Vary

Entity Header

μ‹€μ œ μ „μ†‘λ˜λŠ” λ³Έλ¬Έ(Body) 데이터에 λŒ€ν•œ 상세 정보

Content-Type, Content-Length, Content-Encoding, Last-Modified

이 외에도 λͺ…세에 μ •μ˜λ˜μ§€ μ•Šμ€ μ‚¬μš©μžκ°€ 직접 λ§Œλ“€μ–΄ μ‚¬μš©ν•œ 헀더인 Extension Header도 μ‘΄μž¬ν•œλ‹€.

Message Body(Entity Body)

μ‹€μ œ μ „μ†‘ν•˜λ €λŠ” 데이터가 λ‹΄κΈ°λŠ” 곳이닀.

  • λͺ¨λ“  λ©”μ‹œμ§€κ°€ λ°”λ””λ₯Ό κ°€μ§€λŠ” 것은 μ•„λ‹˜

    • GET, HEAD, DELETE μš”μ²­μ€ 보톡 λ°”λ””κ°€ μ—†μŒ

    • 204 No Content, 304 Not Modified 응닡은 λ°”λ””κ°€ μ—†μŒ

  • 데이터 νƒ€μž…μ€ ν…μŠ€νŠΈλΏλ§Œ μ•„λ‹ˆλΌ 이미지, μ˜μƒ, 파일 λ“± λ°”μ΄λ„ˆλ¦¬ 데이터도 포함 κ°€λŠ₯ (Content-Type ν—€λ”λ‘œ λͺ…μ‹œ)

참고자료

Last updated

Was this helpful?