CS/Network

표현(Representation)과 협상(Negotiation)

oxdjww 2023. 10. 4. 17:28
728x90
반응형

Intro

본 포스팅에서는 표현(Representation)과 협상(Negotiation)에 대해 다룬다.


표현

즉, 표현 헤더는 다양한 http header로 이루어져 있는데 이는

header-field = field-name ":" OWS field-value OWS (OWS:띄어쓰기 허용)

위와 같은 형태를 띄고, 표현 헤더는 하단의 표현 데이터(==메시지 본문, 바디, 본문)를 해석할 수 있는 대표 정보라고 해석할 수 있다.


표현 헤더의 구조


  • Content-Type : 표현 데이터의 형식

  • Content-Encoding: 표현 데이터의 압축 방식

  • Content-Language: 표현 데이터의 자연 언어

  • Content-Length: 표현 데이터의 길이

  • 표현 헤더는 HTTP 요청, 응답 둘다 사용


Content-Type


표현 데이터의 형식을 설명한다.

  • 미디어 타입, 문자 인코딩
  • e.g.
    • text/html; charset=utf-8
    • application/json
    • image/png

Content-Encoding


표현 데이터 인코딩 방식을 말한다.

  • 표현 데이터를 압축하기 위해 사용되는 인코딩 방식이 무엇인지 설명한다.
  • 데이터를 전달하는 곳에서 압축 후, 인코딩 헤더에 정보를 명시한다.
  • 데이터를 읽는 쪽에서 인코딩 헤더의 정보를 기반으로 압축 해제
  • e.g.
    • gzip
    • deflate
    • identity

Content-Language


표현 데이터의 자연 언어가 무엇인지 설명한다.

  • e.g.
    • ko
    • en
    • en-US

Content-Length


표현 데이터의 길이를 의미한다.

  • 바이트 단위이다.
  • Transfer-Encoding(전송 코딩)을 사용하면 Content-Length 필드를 사용하지 않아야 한다.

협상 (콘텐츠 니고시에이션)


클라이언트가 선호하는 표현 방식을 의미한다.

  • Accept: 클라이언트가 선호하는 타입 전달

  • Accept-Charset: 클라이언트가 선호하는 문자 인코딩

  • Accept-Encoding: 클라이언트가 선호하는 압축 인코딩

  • Accept-Language: 클라이언트가 선호하는 자연 언어

  • 협상 헤더는 요청시에만 사용한다.


  • 예제
    요청
      GET /event
      Accept-Language: ko
    이렇게 요청이 들어오면, 영어(en)과 한국어(ko)를 지원하는 서버에서는 한국어로 응답을 보낼 수 있다.
    응답
      Content-Language:ko
      안녕하세요

하지만 한국어를 요청했는데, 영어와 독어만 지원하는 서버의 경우는 어떻게 처리할까?

협상과 우선순위 1


  • Quality Values(q)를 사용한다.
  • 0~1, 클수록 높은 우선순위를 가진다.
  • 생략하면 1
  • e.g.
    • Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
        1. ko-KR;q=1(q생략)
        1. ko;q=0.9
        1. en-US;q=0.8
        1. en;q=0.7

우선순위가 높은 것을 기반으로 서버가 선정하여 응답을 보낼 수 있다.

협상과 우선순위 2


  • Quality Values(q)를 사용한다.
  • 구체적인 것이 우선한다
  • e.g.
    • Accept: text/*, text/plain, text/plain;format=flowed, *y*
        1. text/plain;format=flowed
        1. text/plain
        1. text/*
        1. /

더 구체적인 것을 기반으로 서버가 선정하여 응답을 보낼 수 있다.

협상과 우선순위 3


  • Quality Values(q)를 사용한다.
  • 구체적인 것을 기준으로 미디어 타입을 맞춘다.
  • e.g.
    • Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,text/html;level=2;q=0.4, */*;q=0.5


감사합니다.

Ref

모든 개발자를 위한 HTTP 웹 기본 지식, 인프런 김영한 강사님

728x90
반응형

'CS > Network' 카테고리의 다른 글

일반 정보, 특별한 정보  (0) 2023.10.04
HTTP 전송 방식  (0) 2023.10.04
HTTP Header 개요  (0) 2023.10.04
HTTP Status Code  (0) 2023.10.03
HTTP 메서드와 활용  (0) 2023.10.03