(인프런) 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 공부하고 리뷰한 글입니다.
4. 전송 방식
1. HTTP 메시지 전송 방식
1) 단순 전송
Content-Length 설정
- 데이터 전체를 한 번에 보낼 때 사용
2) 압축 전송
Content-Encoding 설정
- 전송해야하는 데이터가 커서 압축해서 보낼 때 사용(압축 방식은 다양함)
3) 분할 전송
Transfer-Encoding:chunked 설정, Content-Length 설정X
- 대용량 데이터를 클라이언트에 보낼 때, 요청이 모두 처리되기 전까지 총 크기를 알 수 없을 때 사용
- r\n\ : 분할 전송의 끝을 나타냄
4) 범위 전송
Range 설정해서 요청 -> Content-Range 설정해서 응답
- 어떠한 이유로 중간에 재요청해야할 때, 범위를 지정하여 사용
(e.g. 서버로부터 데이터를 절반 정도 받은 상태에서 끊겼을 때 처음부터 다시 받을 필요X, 이후부분부터 받음)
- Range: bytes=클라이언트가 요청한 데이터의 범위
- Content-Range: bytes 클라이언트가 요청한 데이터의 범위 / 전체 데이터의 길이
- Content-Length: 실제 전송된 데이터의 길이
[참고] https://developer.mozilla.org/ko/docs/Web/HTTP/Range_requests
7-4질문 정리
Q. 범위 전송에서 클라이언트가 어느 지점부터 다시 데이터를 이어받아야하는지 어떻게 알 수 있나요?
예를 들어, 파일을 다운받을 때는 2가지 과정을 거친다.
1) 임시저장소에 저장한 이후 다운로드가 완료되면
2) 최종 디렉토리로 옮긴다(사용자가 다운받기로 지정한 경로)
만약 1)에서 문제가 생겼다면, 임시파일이 아직 남아있는 상태이므로 이 파일의 사이즈를 체크하여 이어받기를 시도한다.
[참고] https://www.inflearn.com/questions/511592
'Spring > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글
[모든 개발자를 위한 HTTP 웹 기본 지식] 07. HTTP 헤더1(일반헤더) - 인증, 쿠키 (0) | 2022.06.08 |
---|---|
[모든 개발자를 위한 HTTP 웹 기본 지식] 07. HTTP 헤더1(일반헤더) - 일반 정보, 특별한 정보 (0) | 2022.06.07 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 07. HTTP 헤더1(일반헤더) - 콘텐츠 협상 (0) | 2022.06.07 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 07. HTTP 헤더1(일반헤더) - HTTP 헤더 개요, 표현 (0) | 2022.06.07 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 06. HTTP 상태코드 - 4xx(클라이언트 오류), 5xx(서버 오류) (0) | 2022.06.02 |