네트워크 cs 스터디 3주차 - 그림h&n

맹수연·2021년 10월 1일
0

CS 스터디

목록 보기
6/8

[그림으로 배우는 H&N CH.3]

3. HTTP 메세지

  • HTTP 메세지 : HTTP에서 교환하는 정보
    • 리퀘스트 메세지 : 리퀘스트 측 HTTP 메세지
    • 리스폰스 메세지 : 리스폰스 측 HTTP 메세지

3.1 HTTP 메세지 구조

  • 리퀘스트 메세지
    • 메세지 헤더
      • 리퀘스트 라인 : 리퀘스트에 사용하는 메소드, 리퀘스트 URI, HTTP 버전
      • 리퀘스트 헤더 필드
      • 일반 헤더 필드
      • 엔티티 헤더 필드
    • 개행 문자
    • 메세지 바디
  • 리스폰스 메세지
    • 메세지 헤더
      • 상태 라인 : 리스폰스 결과 상태 코드, 설명, HTTP 버전
      • 리스폰스 헤더 필드
      • 일반 헤더 필드
      • 엔티티 헤더 필드
    • 개행 문자
    • 메세지 바디

**헤더 필드 : 리퀘스트 & 리스폰스의 여러 조건, 속성 (일반 헤더 필드, 리퀘스트 & 리스폰스 헤더 필드, 엔티티 헤더 필드)

3.2 인코딩

HTTP로 데이터 전송 시, 인코딩 → 전송 효율 높일 수 있음

**메세지 바디 & 엔티티 바디 차이

  • 메세지 : HTTP 통신의 기본 단위, 통신을 통해 전송됨

  • 엔티티 : 리퀘스트 & 리스폰스의 페이로드로 전송되는 정보 (엔티티 헤더 필드 + 엔티티 바디)

  • 메세지 바디 : 리퀘스트와 리스폰스에 대한 엔티티 바디 운반

  • 메세지 바디 = 엔티티 바디, but 전송 코딩이 적용 → 엔티티 바디의 내용 변화 → 메세지 바디 ≠ 엔티티 바디

  • 인코딩 방법

    • 콘텐츠 코딩 : 용량을 줄이기 위해 엔티티 정보를 유지한 채로 압축

    • 청크 전송 코딩 : 사이즈가 큰 데이터를 전송하는 경우 데이터를 분할 (원래 HTTP 통신에서는 리소스 전부에서 엔티티 바디의 전송이 완료 x → 브라우저에 표시 x)

      ** 인코딩된 엔티티들은 수신한 클라이언트 측에서 디코딩 함

3.3 멀티파트

  • 멀티파트 : 여러 다른 종류의 데이터를 수용
    • multipart/form-data : Web 폼으로부터 파일 업로드에 사용됨 ?????
    • multipart/byteranges : 상태코드 206 - 복수 범위의 내용을 포함하는 때에 사용
    • 파트마다 헤더 필드 포함
    • 파트를 내부에 포함 가능
  • MIME (Multipurpose Internet Mail Extensions) : 메일로 여러 다른 데이터를 다루는 기능
    • 바이너리 데이터를 아스키 문자열에 인코딩하는 방법 규정
    • 데이터 종류를 나타내는 방법 규정
  • HTTP : 멀티파트에 대응 → 하나의 메세지 바디 내부에 여러개의 엔티티 포함 가능
    • HTTP 메세지로 멀티파트 사용할 때 쓰는 헤더 필드 : Content-type
    • 멀티파트 각각의 엔티티 구분 : boundary 문자열 사용, boundary 문자열 앞에 "- - " 삽입, 멀티파트 마지막에도 "- -" 삽입

3.4 레인지 리퀘스트

  • 리줌 : 이전에 다운로드 한 곳부터 다운로드 재개 가능한 기능
  • 레인지 리퀘스트 : 리줌 실현을 위해 엔티티 범위를 지정해서 리퀘스트 하는 것
  • 레인지 리퀘스트 시 사용하는 헤더 필드 : Range 헤더 필드
Range : bytes = 5001-10000
Range : bytes = -3000, 5000-7000
  • 리스폰스
    • 상태코드 : 206 Partial Content
    • 복수 범위의 레인지 리퀘스트의 경우(하단) multilpart/byteranges
    • 레인지 리퀘스트를 지원하지 않는 서버의 경우 상태코드 : 200 OK (완전한 엔티티)

3.5 콘텐츠 네고시에이션

  • 콘텐츠 네고시에이션 : 클라이언트와 서버가 리소스의 내용에 대해 교섭하는 것
  • ex. 같은 웹 페이지에서 영어판과 한국어판이 있을 경우 같은 URI에 액세스 해도 주로 사용하는 언어를 기준으로 다른 언어 웹 페이지를 표시함
  • 판단 기준
    • 언어
    • 문자 세트
    • 인코딩 방식
  • 콘텐츠 네고시에이션의 종류
    • 서버 구동형 네고시에이션 : 서버 측에서 콘텐츠 네고시에이션을 하는 방식
      • 서버 측에서 리퀘스트 헤더 필드의 정보 참고 → 자동으로 처리
      • 브라우저가 보낸 정보 기반 → 유저에게 적절한 선택인지는 미지수
    • 에이전트 구동형 네고시에이션 : 클라이언트 측에서 콘텐츠 네고시에이션 하는 방식
      • 브라우저에 표시된 선택지 중 유저가 수동 선택
      • JS 사용하여 웹 페이지에서 자동으로 정하게 하는 방법도 있음 (ex. OS 종류에 따라 pc 혹은 스마트폰 용의 웹 페이지로 자동 전환)
    • 트랜스페어런트 네고시에이션 : 서버 구동형 & 에이전트 구동형 혼합, 각각 콘텐츠 네고시에이션을 함

0개의 댓글