2021-9-21 그림으로배우는 Http & Network (3주차)
3장 HTTP 정보는 HTTP 메시지에 있다
HTTP 메시지
HTTP 메시지는 크게 구분하면 메시지 헤더와 메시지 바디로 구성되어 있고, 개행문자로 헤더와 바디를 구분한다.
리퀘스트 메시지와 리스폰스 메시지의 구조
- 리퀘스트 라인
리퀘스트에 사용하는 메소드와 리퀘스트 URI와 사용하는 HTTP 버전이 포함
- 상태라인
리스폰스 결과를 나타내는 상태 코드와 설명, 사용하는 HTTP 버전이 포함
- 헤더필드
리퀘스트와 리스폰스의 여러 조건과 속성 등을 나타내는 각종 헤더 필드가 포함
- 리퀘스트 메시지
- 리스폰스 메시지
인코딩으로 전송 효율을 높이다
HTTP로 데이터를 전송할 때 인코딩을 실시함으로 전송 효율을 높일 수 있다.
단 컴퓨터에서 인코딩 처리를 해야하기 때문에 CPU 등의 리소스는 보다 많이 소비히게 됨
메시지 바디와 엔티티 바디의 차이
- 메시지
- HTTP 통신의 기본 단위로 옥텟 시퀸스(8비트)로 구성되고 통신을 통해서 전송된다
- 엔티티(entity)
- 리퀘스트랑 리스폰스의 페이로드(payload, 부가물)로 전송되는 정보로 엔티티 헤더필드와 엔티티 바디로 구성
압축해서 보내는 콘텐츠 코딩
콘텐츠 코딩은 엔티티에 적용하는 인코딩을 가리키는데, 엔티티 정보를 유지한채로 압축한다.
콘텐츠 코딩된 엔티티는 수신한 클라이언트 측에서 디코딩한다.
분해해서 보내는 청크 전송 코딩
- 사이즈가 큰 데이터를 전송하는 경우에 데이터를 분할해서 조금씩 표시할 수 있다
- 엔티티 바디를 분할하는 기능을 청크 전송 코딩이라 한다.
- 청크 전송 코딩은 엔티티 바디를 청크(덩어리)로 분해한다
- 다음 청크 사이즈를 16진수를 사용해서 단랃을 표시하고 엔티티 끝에는 “0(CR+LF)”를 기록해둔다
- 엔티티 바디를 수신한 클라이언트 측에서는 원래의 바디로 디코딩 한다.
여러 데이터를 보내는 멀티파드
- 하나의 메시지 바디 내부에 엔티티를 여러개 포함시켜서 보낼 수 있다.
- 주로 이미지나 텍스트 파일 등을 업로드할 때 사용되고있다
- multipart/form-data
- Web 폼으로부터 파일 업로드에 사용된다
포스트맨에서 헤더에 멀티파트/폼데이터를 이용해 파일을 업로드할 수 있음
- multipart/byteranges
- 상태 코드 206(Partial Content) 리스폰스 메시지가 복수 범위릐 내용을 포함하는 때에 사용
Written on September 21, 2021