[꼼꼼한 개발자] 꼼코더
26. 모든 개발자를 위한 HTTP 웹 기본 지식 - [HTTP 헤더1 - 일반 헤더] - 전송 방식 본문
반응형
📩 HTTP 메시지 전송 방식
👀 단순 전송
Content-Length 설정
- 데이터 전체를 한 번에 보낼 때 사용
- 다시 말해 Content의 길이를 지정을 해서 한 번에 요청을 하고 응답을 한다.
📩 압축 전송
Content-Encoding 설정
- 전송해야하는 데이터가 커서 압축해서 보낼 때 사용(압축 방식은 다양함)
- Content를 압축할 때 무엇을 압축되어 있는지 알아야 클라이언트에서 알고 압축을 풀 수 있다.
📨 분할 전송
Transfer-Encoding:chunked 설정, Content-Length 설정X
- 대용량 데이터를 클라이언트에 보낼 때, 요청이 모두 처리되기 전까지 총 크기를 알 수 없을 때 사용
- chunked는 덩어리라는 뜻이다. 덩어리로 나눠서 전송을 한다.
- 그림을 설명 하자면 5byte로 Hello를 서버에서 클라이언트로 보낸다. 또 5byte로 World를 보내고 마지막으로 0byte로 src를 보내면 끝이라는 걸 표현한다.
- r\n\ : 분할 전송의 끝을 나타냄
- 분할 전송할 때는 Content-Length를 넣으면 안된다.
📮 범위 전송
Range 설정해서 요청 -> Content-Range 설정해서 응답
- 어떠한 이유로 중간에 끊길 경우 못 받은 범위를 지정해서 다시 요청을 한다
- 서버로부터 데이터를 절반 정도 받은 상태에서 끊겼을 때 처음부터 다시 받을 필요X, 이후부분부터 받음
- Range: bytes=클라이언트가 요청한 데이터의 범위
- Content-Range: bytes 클라이언트가 요청한 데이터의 범위 / 전체 데이터의 길이
- Content-Length: 실제 전송된 데이터의 길이
[참고] https://developer.mozilla.org/ko/docs/Web/HTTP/Range_requests
🙋🏻♂️Q&A
Q. 범위 전송에서 클라이언트가 어느 지점부터 다시 데이터를 이어받아야하는지 어떻게 알 수 있나요?
A. 예를 들어, 파일을 다운받을 때는 2가지 과정을 거친다.
- 임시저장소에 저장한 이후 다운로드가 완료되면
- 최종 디렉토리로 옮긴다(사용자가 다운받기로 지정한 경로)
만약 1)에서 문제가 생겼다면, 임시파일이 아직 남아있는 상태이므로 이 파일의 사이즈를 체크하여 이어받기를 시도한다.
[참고] https://www.inflearn.com/questions/511592
참고 : https://hseungyeon.tistory.com
위 자료는 김영한님의 ‘모든 개발자를 위한 HTTP 웹 기본 지식’ 강의를 참고하여 작성하였습니다.
https://www.inflearn.com/course/http-웹-네트워크/dashboard
'HTTP' 카테고리의 다른 글
28. 모든 개발자를 위한 HTTP 웹 기본 지식 - [HTTP 헤더1 - 일반 헤더] - 특별한 정보 (0) | 2022.12.12 |
---|---|
27. 모든 개발자를 위한 HTTP 웹 기본 지식 - [HTTP 헤더1 - 일반 헤더] - 일반 정보 (2) | 2022.12.07 |
25. 모든 개발자를 위한 HTTP 웹 기본 지식 - [HTTP 헤더1 - 일반 헤더] - 콘텐츠 협상 (0) | 2022.12.02 |
24. 모든 개발자를 위한 HTTP 웹 기본 지식 - [HTTP 헤더1 - 일반 헤더] - 표현 (0) | 2022.12.02 |
23. 모든 개발자를 위한 HTTP 웹 기본 지식 - [HTTP 헤더1 - 일반 헤더] - HTTP 헤더 개요 (0) | 2022.12.01 |
Comments