Entity(엔티티)
메시지와 엔티티
HTTP 메시지 - 컨테이너, HTTP 엔티티 - 실질적인 화물 비유로 설명할 수 있다.
HTTP/1.1 200 OK
Server: Apache/2.4.41
Date: Mon, 26 Jul 2021 12:00:00 GMT
Connection: keep-alive
Content-Type: text/plain; charset=utf-8 <-- 엔티티 헤더
Content-Length: 18 <-- 엔티티 헤더
Hi! I'm a message! <-- 엔티티 본문엔티티 헤더: 본문에 대한 메타데이터(데이터의 타입, 크기, 압축 방식, 언어 등)를 설명하는 필드
엔티티 본문: 가공되지 않은 실제 데이터가 들어가는 공간. 헤더와 본문은 빈 줄(CRLF)로 구분됨
주요 엔티티 헤더 필드
엔티티 본문을 올바르게 해석하기 위해 필요한 정보를 담고 있다.
Content-Type
본문의 미디어 타입(MIME)과 문자 인코딩 방식(Charset)을 명시
Content-Length
본문의 길이를 바이트 단위로 명시(인코딩 후의 본문 기준)
Content-Encoding
본문의 압축 방식(gzip, deflate 등)을 명시
Content-Language
본문의 자연어(ko, en 등)를 명시
Content-Location
반환된 데이터가 실제로 위치하는 URI (리다이렉션과는 다름)
Content-Length
엔티티 본문의 크기(Byte)를 나타내는 헤더로, HTTP 통신의 안정성을 위해 매우 중요하다.
지속 커넥션: 응답 메시지 간 구분
HTTP/1.1은 기본적으로 연결을 유지하는
Keep-Alive를 사용하나의 TCP 연결로 여러 요청/응답이 오가는데,
Content-Length가 없다면 여러 응답 간 메시지 구분이 불가능
잘림 검출: 본문이 중간에 잘렸는지 확인
본문의 크기와 비교해 본문을 받는 도중 잘림이 발생했는지 확인 가능
전송 받은 데이터가
Content-Length보다 작으면 재전송 요청
엔티티 요약과 무결성 검사
전송 중 데이터가 변조되거나 깨지는 것을 방지하기 위해 무결성 검사 메커니즘을 사용할 수 있다.
발생 원인: 불완전한 프록시 서버의 트랜스코딩(메시지가 일부 변경), 네트워크 노이즈, 버그 등
Content-MD5: 과거에는 MD5 체크섬을 헤더에 포함하여 무결성을 검증했으나, 현재는 보안상 취약하여 권장되지 않음
Digest: 최신 표준에서는
Digest헤더를 사용하여 무결성을 검증하거나, HTTPS(TLS) 계층에서의 암호화 및 무결성 보장에 의존하는 편임
엔티티 본문이 의도치 않은 변경을 감지하기 위해, 최초 엔티티가 생성될 때 간단한 체크섬을 생성하여, 그 체크섬으로 기본적인 검사를하여 엔티티가 변형되었는지 확인할 수 있다.
미디어 타입과 차셋(Charset)
Content-Type 헤더는 데이터가 어떻게 렌더링되어야 하는지를 브라우저(클라이언트)에 알려준다.
구조:
type/subtype; parameterType: 데이터의 대분류 (text, image, audio, video, application, multipart 등)
Subtype: 구체적인 포맷 (html, plain, jpeg, json 등)
텍스트 데이터의 경우, 바이너리를 어떤 문자로 해석할지 결정하는 charset 파라미터가 필수적이다.
참고자료
Last updated
Was this helpful?