단순 전송 Content-Length
Content-Length은 HTTP 요청 본문 또는 응답 본문의 크기를 나타내는 헤더로, 본문의 크기를 알려줌으로써 수신측이 전송할 데이터의 양을 미리 예측하여 처리할 수 있도록 돕는다.
압축전송 Content-Encoding
Content-Encoding은 HTTP 응답의 콘텐츠를 압축하여 전송하는 방법을 지정한다. 이 헤더는 클라이언트가 응답을 받기 전에 서버가 응답 데이터를 압축한 것인지 여부를 알리는 데 사용된
서버와 클라이언트 간의 네트워크 대역폭을 줄이는 데 유용하다. 또한 브라우저에서 캐시될 때 콘텐츠의 크기를 줄이므로 웹 페이지의 로딩 속도를 높일 수 있다. 그러나 압축 된 데이터를 전송하는 것은 CPU와 메모리를 많이 사용하므로 서버 측에서 압축에 대한 비용을 고려해야한다.
분할전송 Transfer-Encoding
Transfer-Encoding은 전체 바디를 여러 개의 조각으로 분할하여 전송하는 청크 전송(chunked transfer)을 가능하게 한다.
chunked 전송은 Content-Length를 사용하지 않고 데이터를 전송하는 동안 여러 개의 chunk로 나누어 전송한다.
대용량 데이터를 전송할 때 유용하다. chunked 전송 방식을 사용하면 전체 데이터를 한 번에 전송하는 대신, 데이터를 여러 조각으로 나누어 전송하여 더 빠르게 전송할 수 있다. 또한, 데이터를 전송하는 동안 서버에서 추가적인 작업을 수행할 수 있으며, 데이터 전송이 완료되는 시점에서 클라이언트에게 응답을 보내기 때문에 전송 시간을 줄일 수 있다
범위전송 Range, Content-Range
Range와 Content-Range은 특정 범위의 데이터를 요청하거나 전송할 때 사용한다.
- Range : 클라이언트가 서버에 요청할 때, 특정 범위의 데이터를 요청하기 위해 사용한다. 이 헤더는 다운로드가 중단되었을 때 이전 상태를 유지하기 위해 사용될 수 있다. 예를 들어 "Range: bytes=0-999"는 서버에게 첫 1000 바이트만 보내달라는 요청한다.
- Content-Range : 서버가 클라이언트에게 전송하는 데이터의 범위를 지정하기 위해 사용된다. 이 헤더는 서버가 요청받은 범위 내에서 어디서부터 어디까지의 데이터를 전송했는지 알려준다. 예를 들어 "Content-Range: bytes 0-999/4903"는 서버가 전체 크기가 4903바이트이며, 요청받은 범위 내에서 0-999바이트를 전송했다는 것을 알려준다.
이러한 헤더들은 대용량 파일 다운로드 등에서 중요한 역할을 하고, 클라이언트가 특정 범위의 데이터만 요청하면 서버는 불필요한 데이터를 전송하지 않고 필요한 범위의 데이터만 전송하여 효율적인 통신이 가능해진다.
출처 : 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식 by 우아한형제 김영한이사님
'WEB HTTP > HTTP 기본' 카테고리의 다른 글
HTTP헤더 - 쿠키 Cookie,Set-Cookie (0) | 2023.03.21 |
---|---|
HTTP헤더 - 일반정보, 특별한 정보, 인증 (0) | 2023.03.21 |
HTTP 헤더 - 콘텐츠 협상 (0) | 2023.03.21 |
HTTP 상태코드 - 4xx(Client Error), 5xx(Server Error) (0) | 2023.03.20 |
HTTP 상태코드 - 리다이렉션(Redirection)이해 (0) | 2023.03.20 |