본문 바로가기
개인 공부/Network (그림으로 배우는 Http&Network Basic)

Http&Network Basic : HTTP 정보는 HTTP 메시지에 있다 (3장)

by 희조당 2023. 6. 6.
728x90

😇 HTTP 정보는 HTTP 메시지에 있다

3.1 HTTP 메시지

  • HTTP에서 교환하는 정보를 HTTP 메시지라고 한다.
  • 크게 구분하면 헤더와 바디로 구분된다. 개행 문자(/n)로 둘을 구분한다.
  • 바디는 항상 존재하는 것은 아니다.

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

  • 보내는 쪽(Request)에서는 요청 URIHTTP 버전을 헤더에 담아 보낸다.
  • 받는 쪽(Response)에서는 상태 코드HTTP 버전을 헤더에 담아 보낸다.
  • 헤더에는 송수신 정보 외에도 여러 조건과 속성을 포함한다.

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

  • 있는 그대로 보내는 것보단 인코딩을 한다면 아무래도 효율이 좋을 것이다.
  • HTTP 통신에서 엔티티는 하나의 payload이다.
  • 일반적으로 메시지 바디와 엔티티 바디는 같지만 어떻게 보내는지(인코딩)에 따라 달라질 수 있다.

3.3.2 콘텐츠 코딩

  • 콘텐츠 코딩이란 엔티티에 적용하는 인코딩을 의미한다. 정보를 그대로 유지하는 것이 중요하다.
    • 콘텐츠 코딩의 종류
      • gzip (GNU zip)
      • compress (UNIX 표준압축)
      • deflate (zlib)
      • identity (No Encoding)

3.3.3 청크 전송 코딩

  • 이미지와 같이 큰 데이터는 모두 로드되지 않으므로 조금씩 분할해서 전송해 일부분씩 보이도록 한다.
  • 이렇게 엔티티 바디를 분할하는 방식을 청크 전송 코딩이라고 부른다.

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

  • 멀티파트는 이메일에서 사용하던 MIME을 확장한 방식을 사용한다.
  • 멀티파트를 사용하기 때문에 메시지 바디 내부에 여러 엔티티를 사용할 수 있는 것이다.
  • 멀티파트는 파트마다 헤더를 포함한다.

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

  • 오늘날은 인터넷과 통신의 발달로 대용량의 데이터를 받기 쉬웠지만 과거에는 그렇지 않았다.
  • 중간에 전송이 끊어질 경우를 대비한 기술이 바로 레인지 리퀘스트이다.
  • 요청할 때 Range 헤더 필드를 이용해서 요청할 엔티티의 범위를 지정하는 방식이다.
  • 상태 코드는 206으로 응답하고 복수 범위는 multilpart/byteranges로 응답한다.

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

  • 같은 콘텐츠이지만 여러 개의 페이지를 가진 웹 페이지가 존재한다.
  • 클라이언트에 더욱 적절한 리소스를 제공하는 것이 Content Negotiation이다.
  • 언어와 문자, 인코딩 등을 기준으로 제공한다. 서버가 알아서 하기도, 클라이언트 요청에 따라 동작하기도 한다.

😋 지극히 개인적인 블로그지만 훈수와 조언은 제 성장에 도움이 됩니다 😋 

댓글