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

HTTP로 데이터를 전송할 때에 인코딩을 하면 전송 효율을 높일 수 있다. 전송할 때 인코딩을 하면 다량의 액세스를 효율 좋게 처리 할 수 있다. 단지 컴퓨터에서 인코딩 처리를 해야 하기 때문에 CPU 등의 리소스는 보다 많이 소비한다.

3.3.1 메시지 바디와 엔티티 바디의 차이

  • 메시지

HTTP 통신의 기본 단위로 옥텟 시퀀스로 구성되고 통신을 통해서 전송된다.(octet : 8비트)

  • 엔티티

리퀘스트랑 리스폰스의 페이로드(부가)로 전송되는 정보로 엔티티 헤더 필드와 엔티티 바디로 구성된다.

HTTP 메시지 바디의 역할은 리퀘스트랑 리스폰스에 관한 엔티티 바디를 운반하는 일이다. 기본적으로 메시지 바디와 엔티티 바디는 같지만 전송 코딩이 적용된 경우에는 엔티티 바디의 내용이 변화하기 때문에 메시지 바디와 달라진다.

3.3.2 압축해서 보내는 콘텐츠 코딩

파일 용량을 zip으로 압축할때가 있다. HTTP에는 이와같이 가능한 콘텐츠 코딩이라고 불리는 기능이 있다. 콘텐츠 코딩은 엔티티에 적용하는 인코딩을 가리키는데 엔티티 정보를 유지한채로 압축한다. 콘텐츠 코딩된 엔티티는 수신한 클라이언트 측에서 디코딩한다.

주요 콘텐츠 압축

  • gzip(GNU zip)

  • compress(UNIX의 표준압축)

  • deflate(zlib)

  • identity(인코딩없음)

3.3.3 분해해서 보내는 청크 전송코

HTTP 통신에서 리퀘스트했었던 리소스 전부에서 엔티티 바디 전송이 완료되지 않으면 브라우저에 표시되지 않는다.사이즈가 큰 데이터를 전송하는 경우에 데이터를 분할해서 조금씩 표시할 수 있습니다. 이렇게 엔티티 바디를 분할하는 기능을 청크 전송 코딩이라고 부른다.

청크 전송 코딩은 엔티티 바디를 청크(덩어리)로 분해한다. 다음 청크사이즈를 16진수로 사용해서 단락을 표시하고 엔티티 바디 끝에는 0(CR+LF)를 기록해 둔다.

청크 전송 코딩된 엔티티 바디는 수신한 클라이언트 측에서 원래의 엔티티 바디로 디코딩한다. HTTP/1.1에는 전송코딩이라는 ,어떤 인코딩 방식에 따라서 전송하는 구조가 마련되어 있지만 전송 코딩에는 청크 전송 코딩만 정의되어 있다.

Last updated