[3장]

hamonjamon·2022년 7월 28일
0
  • HTTP에서 교환하는 정보는 HTTP 메시지라고 불린다.
    1. 리퀘스트 측 HTTP 메시지 : 리퀘스트 메시지
    2. 리스폰스 측 HTTP 메시지 : 리스폰스 메시지

리퀘스트 메시지 구조

1. 메시지 헤더 : 서버와 클라이언트가 꼭 처리해야 하는 리퀘스트 내용
- 리퀘스트 라인
- 리퀘스트 헤더 필드
- 일반 헤더 필드
- 엔티티 헤더 필드
- 그 외

2. 개행 문자 : 메시지의 헤더와 바디를 구분

3. 메시지 바디 : 꼭 전송되는 데이터 그 자체
리스폰스 메시지 구조
1. 메시지 헤더 : 서버와 클라이언트가 꼭 처리해야 하는 리스폰스 내용
- 상태 라인
- 리스폰스 헤더 필드
- 일반 헤더 필드
- 엔티티 헤더 필드
- 그 외

2. 개행 문자 : 메시지의 헤더와 바디를 구분

3. 메시지 바디 : 꼭 전송되는 데이터 그 자체
  • HTTP로 데이터를 전송할 경우 데이터를 전송할 경우 그대로 전송할 수도 있으나,
    전송할 때 인코딩을 실시함으로써 전송 효율을 높일 수 있습니다.
    (컴퓨터에서 인코딩을 처리할 때 CPU 등의 리소스는 보다 많이 소비됨)


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

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

- HTTP 메시지 바디의 역할은 REQUEST, RESPONSE에 관한 엔티티 바디를 운반하는 일이다. - 기본적으로 메시지 바디와 엔티티 바디는 같지만, 전송 코딩이 적용된 경우에는 엔티티 바디의 내용이 변하기에 메시지 바디와 달라진다.

압축해서 보내는 컨텐츠 코딩

- 컨텐츠 코딩은 엔티티에 적용하는 인코딩을 가리키는데, 엔티티 정보를 유지한 채로 압축한다.
- 컨텐츠 코딩된 엔티티는 수신한 클라이언트 측에서 디코딩을 진행한다.
- 메일에 파일을 첨부하여 보낼 때 파일을 zip으로 압축한 뒤 첨부하여 보내는 경우가 그 예이다.

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

- 사이즈가 큰 데이터를 전송하는 경우 데이터(엔티티 바디)를 분할하는 기능을 청크 전송 코딩이라고 한다.

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

- MIME : 이미지 등의 바이너리 데이터를 아스키 문자열에 인코딩하는 방법과 데이터 종류를 나타내는 방법 등을 규정한다.

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

- 다운로드 중에 커넥션이 끊어지게 되면 처음부터 다시 다운로드를 해야하는 문제를 해결하기 위해 이전에 다운로드를 한 곳에서부터 다운로드를 재개하는 "리줌(resume)"이란 기능이 필요해졌다.
- 레인지 리퀘스트 : 엔티티 범위를 지정하여 리퀘스트하는 것을 의미한다.

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

- 클라이언트와 서버가 제공하는 리소스(언어, 인코딩 방식 등)의 내용에 대해 클라이언트에 더욱 적합한 리소스를 제공하기 위한 구조를 의미한다.

1. 서버 구동형 네고시에이션 : 서버 측에서 콘텐츠 네고시에이션을 하는 방식으로 브라우저가 보내는 정보를 참고하여 자동으로 처리하기 때문에 유저에게 무조건 적절한 선택인지는 알 수 없다.

2. 에이전트 구동형 네고시에이션 : 클라이언트 측에서 콘텐츠 네고시에이션을 하는 방식으로 브라우저에 표시된 선택지 중에서 유저가 수동으로 선택하는 방식이다.

3. 트랜스페어런트 네고시에이션 : 서버 구동형과 에이전트 구동형을 혼합한 것으로 서버와 클라이언트가 각 컨텐츠 네고시에이션을 하는 방식

0개의 댓글