Entity(엔티티)
메시지와 엔티티
HTTP 메시지 - 컨테이너, HTTP 엔티티 - 실질적인 화물 비유로 설명할 수 있으며 실제 HTTP 메시지를 예시로 들면 아래와 같다.
엔티티 헤더
HTTP/1.1 기준 위의 두 가지 정보 포함하여 10가지 주요 헤더 필드 존재
엔티티 본문의 메타데이터를 담고 있으며, 본문의 내용 / 인코딩 / 언어 등 관련된 정보 제공
Content-Type, Content-Length, Content-Language, Content-Encoding, Content-Location, Content-Range, Content-MD5, Last-Modified, Expires, Allow, ETag, Cache-Control
엔티티 본문
실제 전송하려는 가공되지 않은 데이터 존재
헤더 필드의 끝을 의미하는 빈
CRLF
바로 다음부터 본문 시작
Content-Length
본문의 크기를 바이틀 단위로 나타내는 Content-Length 헤더는 HTTP 통신에서 특히 중요한 역할을 하기 때문에 대부분 상황에서 필수 헤더 필드이다. HTTP 보안을 강화하고나 압축하기 위해 콘텐츠 인코딩을 사용할 수 있는데, 이 때 Content-Length 헤더는 원문이 아닌 인코딩 된 본문의 크기를 나타낸다. 본문을 갖는 것이 허용되지 않은 상황(HEAD 응답, 1xx/204/304 응답)에서는 Content-Length 무시된다.
Content-Length 헤더의 중요성
해당 헤더는 단순히 크기를 나타내는 것 이상으로 통신에서 아래와 같은 중요한 역할을 한다.
잘림 검출: 본문의 크기와 비교해 본문을 받는 도중 잘림이 발생했는지 확인 가능
지속 커넥션: 본문의 크기를 통해 메시지가 끝난 지점을 알 수 있어, 지속 커넥션 사용 중 HTTP 메시지 경계를 명확하게 식별 가능
엔티티 요약
HTTP는 TCP/IP와 같이 신뢰할 수 있는 전송 프로토콜 위에서 구현되지만, 아래와 같은 이유들로 전송 중 메시지 일부분이 변형되는 일이 발생할 수 있다.
불완전한 트랜스코딩 프락시
트랜스코딩 프락시는 대역폭 절약이나 클라이언트 호환을 위해 메시지 일부를 변경할 수 있는데, 이 과정에서 원본 데이터가 올바르지 않게 변형될 수 있음
버그 많은 중개자 프락시
소프트웨어 버그 / 잘못된 설정 / 부적절한 보안 정책으로 데이터 손상 가능성 존재
엔티티 본문이 의도치 않은 변경을 감지하기 위해, 최초 엔티티가 생성될 때 간단한 체크섬을 생성하여, 그 체크섬으로 기본적인 검사를하여 엔티티가 변형되었는지 확인할 수 있다.
미디어 타입과 차셋(Charset)
Content-Type 헤더 필드는 엔티티 본문의 MIME 타입을 기술하며, 표현은 type/subtype
형태로 되어있다.
type: text, image, audio, video, application, message, multipart
subtype: type에 따라 맞는 하위 타입이 존재
참고자료
Last updated
Was this helpful?