김영한의 모든 개발자를 위한 HTTP 웹 지식 강의에서 HTTP 헤더 부분을 보면서 공부를 했습니다.
일단 표현 헤더에
HTTP 헤더중에서 표현 부분에 대해서 말하자면
표현에는
Content-Type, Content-Encoding, Content-Language, Content-Length가 있습니다.
Content-Type은 표현 데이터의 형식(미디어 타입, 문자 인코딩)을 설명하는 부분입니다. 예를 들어서 html 파일인지와 json으로 되어있는지 것 같은 것들
Content-Encoding은 표현 데이터를 압축하기 위해 사용하는 것입니다. gzip으로 압축했느냐 같은 것. 왜냐하면 어떻게 압축을했는지 알아야지 풀 수 있기 때문에.
Content-Language는 표현 데이터가 무슨 언어로 되어있는지 나타내는 것. ko로 되어있으면 메시지 바디가 한글로 되어있음
Content-Length는 표현 데이터의 길이를 바타내는 것인데 Transfer-Encoding을 사용하면 Content-Length를 사용하면 안됩니다. 왜냐하면 Transfer-Encoding안에 이미 내용들이 다 들어있기 때문입니다.
마지막으로는 콘텐츠 협상입니다.
콘텐츠 협상은 클라이언트에서 선호하는 표현을 요청해서 그럴로 표현을 나타내게 만드는 것
간단하게 예를 들자면 클라이언트는 한국 사람이니 한글을 선호하기 때문에 우선순위인 한글을 표현해주고 만약 서버에서 한글이 없으면 그 다음 우선순위인 영어로 표현해주기.
언어 말고도 압축 방식으로도 가능하다.
그 다음으로는 전송 방식입니다.
전송 방식은 크게 4가지로 나눌 수 있습니다. 단순 전송, 압축 전송, 분할 전송, 범위 전송이 있습니다.
단순 전송은 그냥 요청을 하면 응답을 주는데 메시지 바디에 대한 Content-Length를 지정하는겁니다. 한번에 요청하고 한번에 응답을 받는겁니다.
압축 전송은 서버에서 클라이언트한테서 받은 파일을 압축해주는겁니다. 그래서 이 때는 Content-Encoding을 무조건 넣어줘야합니다.
분할 전송은 쪼개서 보내주는거라고 생각하면 됩니다.
범위 전송은 Range: bytes=1001-2000 <- 이렇게 범위를 정하는겁니다.
'TIL(일일회고)' 카테고리의 다른 글
TIL_2022-06-06 (0) | 2022.06.07 |
---|---|
TIL_2022-01-26 (0) | 2022.01.27 |
TIL_2022-01-14 (0) | 2022.01.15 |