[꼼꼼한 개발자] 꼼코더

26. 모든 개발자를 위한 HTTP 웹 기본 지식 - [HTTP 헤더1 - 일반 헤더] - 전송 방식 본문

HTTP

26. 모든 개발자를 위한 HTTP 웹 기본 지식 - [HTTP 헤더1 - 일반 헤더] - 전송 방식

꼼코더 2022. 12. 6. 17:36
반응형

📩 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. 임시저장소에 저장한 이후 다운로드가 완료되면
  2. 최종 디렉토리로 옮긴다(사용자가 다운받기로 지정한 경로)

만약 1)에서 문제가 생겼다면, 임시파일이 아직 남아있는 상태이므로 이 파일의 사이즈를 체크하여 이어받기를 시도한다.

 

[참고] https://www.inflearn.com/questions/511592

 

참고 : https://hseungyeon.tistory.com

 

위 자료는 김영한님의 ‘모든 개발자를 위한 HTTP 웹 기본 지식’ 강의를 참고하여 작성하였습니다.
https://www.inflearn.com/course/http-웹-네트워크/dashboard
Comments