Home 3장 HTTP 정보는 HTTP 메시지에 있다
Post
Cancel

3장 HTTP 정보는 HTTP 메시지에 있다

3.1 HTTP 메시지

HTTP에서 교환하는 정보를 HTTP 메시지라 한다. HTTP 메시지는 크게 메시지 헤더와 메시지 바디로 구성되고 최초에 나타나는 개행 문자로 헤더와 바디를 구분한다.

3.2 리퀘스트 메시지와 리스폰스 메시지의 구조

  • 리퀘스트 라인 : 메소드, 리퀘스트 URI와 HTTP 버전이 포함됨
  • 상태 라인 : 리스폰스 결과를 나타내는 상태 코드와 설명, 사용하는 HTTP 버전이 포함됨
  • 헤더 필드 : 리퀘스트와 리스폰스의 여러 조건과 속성 등을 나타내는 각종 헤더 필드가 포함됨

3.3 인코딩으로 전송 효율을 높이다

HTTP로 데이터 전송시 인코딩을 실시함으로써 전송 효율을 높일 수 있다.

1.메시지 바디와 엔티티의 차이 : 메시지 바디는 HTTP통신의 기본 단위로 옥텟 시퀀스로 구성되고 통신을 통해 전송된다. 엔티티는 리퀘스트와 리스폰스의 페이로드로 전송되는 정보이다. 헤더 필드와 바디로 구성된다.

HTTP 메시지 바디의 역할은 엔티티 바디를 운반하는 일이다.

2.압축해서 보내는 콘텐츠 코딩 : 메일에 파일을 첨부해서 전송시 용량을 줄이기 위하여 압축해서 보내는 일이 있다. HTTP에는 이와 같은 일을 해주는 ‘콘텐츠 코딩’이라 불리는 기능이 구현되어 있다. 콘텐츠 코딩은 엔티티에 적용하는 인코딩을 가리키는 것으로 엔티티 정보를 유지한채 압축한다.

종류)gzip, compress, deflate, identity

3.분해해서 보내는 청크 전송 코딩 : 통신시 리퀘스트 리소스 전부에서 엔티티 바디의 전송이 완료되지 않으면 브라우저에 표시되지 않는데 사이즈가 큰 데이터를 전송하는 경우 데이터를 분해해서 조금씩 표시할 수 있다. 이를 ‘청크 전송 코딩’이라고 부른다.

청크 전송 코딩은 엔티티 바디를 청크로 분해하고 수신한 클라이언트 쪽에서 원래의 엔티티 바디로 디코딩한다.

3.4 여러 데이터를 보내는 멀티파트

메일은 본문이나 복수의 첨부파일을 붙여서 함께 보낼 수 있다. 이것은 MIME로 불리는 메일로 텍스트나 영상, 이미지와 같은 여러 다른 데이터를 다루기 위한 기능을 사용하고 있다.

HTTP도 멀티파트에 대응하고 있어 하나의 메시지 바디 내부에 엔티티를 여러 개 포함시켜 보낼 수 있어 주로 이미지나 텍스트 파일 등을 업로드할 때 사용된다.

⇒ multipart/form-data, multipart/byteranges

멀티파트 각각의 엔티티를 구분하기 위해 boundary 문자열을 사용하고 이 문자열 앞에 ‘—’를 삽입한다. 멀티파트는 파트마다 헤더 필드가 포함된다.

3.5 일부분만 받는 레인지 리퀘스트

이전에는 대용량의 이미지와 데이터를 다운로드할 때 중간에 커넥션이 끊어지는 경우 처음부터 다시 다운로드를 해야 해서 힘들었다. 이러한 문제를 해결하기 위해 리줌이라는 기능이 필요하게 되었고 이를 통해 이전에 다운로드한 곳에서 부터 다운로드를 재개할 수 있었다.

이와 같이 범위를 지정하여 리퀘스트 하는 것을 레인지 리퀘스트라고 부른다. Range 헤더 필드를 사용하여 리소스의 바이트 레인지를 지정한다.

3.6 최적의 콘텐츠를 돌려주는 콘텐츠 네고시에이션

같은 콘텐츠이지만 여러 개의 페이지를 지닌 웹페이지의 경우(예 언어 형식이 한국어, 영어 등으로 나뉜경우) 브라우저가 같은 URI에 액세스할 때에 각각의 웹페이지를 표시하는데 이와 같은 구조를 ‘콘텐츠 네고시에이션’이라고 부른다.

콘텐츠 네고시에이션은 클라이언트와 서버가 제공하는 리소스의 내용에 대해서 교섭하는 것이고 클라이언트에 더욱 적합한 리소스를 제공하기 위한 구조이다. 이 콘텐츠 네고시에이션은 제공하는 리소스를 언어와 문자 세트, 인코딩 방식등을 기준으로 판단한다.

  • 서버 구동형 네고시에이션 : 서버측에서 콘텐츠 네고시에이션을 하는 방식, 서버 측에서 리퀘스트 헤더 필드의 정보를 참고해서 자동적으로 처리한다.
  • 에이전트 구동형 네고시에이션 : 클라이언트 측에서 콘텐츠 네고시에이션을 하는 방식, 브라우저에 표시된 선택지 중 유저가 수동으로 선택한다.
  • 트랜스페어런트 네고시에이션 : 서버 구동형과 에이전트 구동형을 혼합한 것 각각 콘텐츠 네고시에이션을 하는 방식이다.
This post is licensed under CC BY 4.0 by the author.

2장 간단한 프로토콜 HTTP

4장 결과를 전달하는 HTTP 상태코드