Skip to content

Latest commit

 

History

History
237 lines (190 loc) · 13 KB

17_Content_Negotiation_and_Transcoding.md

File metadata and controls

237 lines (190 loc) · 13 KB

17장 🐙 내용 협상과 트랜스코딩

17.1   내용 협상 기법  kukim

  1. 내용 협상(content-negotiation)이란 무엇인가? 주관식

  2. 보기를 참고해 다음 괄호를 채우시오.

    <보기>
    1. 서버 입장에서 가장 구현하기 쉽다. 클라리언트는 최선의 선택을 할 수 있다.
    2. 서버가 클라이언트의 요청 헤더를 검증해서 어떤 버전을 제공할지 결정한다.
    3. 클라이언트 주도
    4. 클라이언트 핸드 쉐이크
    5. 투명
    6. 투명한 정도
    7. 웹 서버가 협상을 할 필요가 없다. 클라리언트 주도 협상보다 빠르다.
    8. 만약 결정이 뻔하지 않으면 (헤더에 맞는 거싱 없으면), 서버는 추측을 해야만 한다.

📄 답지
  1. 내용 협상(content-negotiation)이란 무엇인가? 주관식
  • 하나의 URL이 여러 가지 리소스 중 적합한 것에 대응되도록 할 수 있는 것 ( ex) 같은 웹페이지의 한국어, 영어, 터키어 버전을 제공)
  • 서버에 있는 페이지들 중 어떤 것이(어떤 버전이, 어떤 언어가 . . .) 클라이언트에게 맞는지 판단하는 방법
  1. 보기를 참고해 다음 괄호를 채우시오.

    <보기>
    1. 서버 입장에서 가장 구현하기 쉽다. 클라리언트는 최선의 선택을 할 수 있다.
    2. 서버가 클라이언트의 요청 헤더를 검증해서 어떤 버전을 제공할지 결정한다.
    3. 클라이언트 주도
    4. 클라이언트 핸드 쉐이크
    5. 투명
    6. 투명한 정도
    7. 웹 서버가 협상을 할 필요가 없다. 클라리언트 주도 협상보다 빠르다.
    8. 만약 결정이 뻔하지 않으면 (헤더에 맞는 거싱 없으면), 서버는 추측을 해야만 한다.

  • 정답 : (a - 3), (b - 1), (c - 2), (d - 8), (e - 5), (f - 7)

17.2   클라이언트 주도 협상  kukim

  1. 다음 괄호를 채우시오.
  • 서버가 클라이언트에게 데이터를 제공해줄 때 두 가지 방법이 있다. 1)여러 가지 버전에 대한 링크와 각각에 대한 설명이 담긴 HTML 페이지를 돌려주거나, 2) ( ) 응답 코드로 HTTP/1.1 응답을 돌려주는 것이다.
  1. 클라이언트 주도 협상을 할 때 클라이언트는 각 페이지에 몇 번 요청이 필요한가?
📄 답지
  1. 다음 괄호를 채우시오.
  • 서버가 클라이언트에게 데이터를 제공해줄 때 두 가지 방법이 있다. 1)여러 가지 버전에 대한 링크와 각각에 대한 설명이 담긴 HTML 페이지를 돌려주거나, 2) ( ) 응답 코드로 HTTP/1.1 응답을 돌려주는 것이다.
    • 300 Multiple Choices
  1. 클라이언트 주도 협상을 할 때 클라이언트는 각 페이지에 몇 번 요청이 필요한가?
    • 두 번의 요청이 필요하다.
    • 한 번은 목록을 얻을 때 (내가 요청한 페이지가 어떤 언어로 이루어져 있는지 전체 확인)
    • 한 번은 내가 요청한 사본을 얻을 때 필요하다. (어떤 언어로 되어있는지 확인한 후 내가 확인할 수 있는 언어로 다시 요청)

17.3   서버 주도 협상  kukim

  1. 보기를 참고하여 다음 괄호를 채우세요.

    <보기>
    - 서버
    - 프락시
    - 캐시서버
    - 내용 협상 헤더
    - 이것이 네고여
    - 내용 협박 헤더 외의 다른 헤더
    - 내용 협상 헤더 외의 다른 헤더
    • 서버 주도 협상에는 ( ) 가 클라이언트에게 보내줄 적절한 응답을 계산하는 메커니즘은 두 가지가 있다.
      1. 하나는 ( ) 를 살펴본다. 서버는 클라이언트의 Accept 관련 헤더들을 들여다보고 그에 알맞은 응답 헤더를 준비한다.
      2. 다른 하나는 ( ) 를 살펴본다. 예를 들어, 서버는 클라이언트의 User-Agent 헤더에 기반하여 응답을 보내줄 수도 있다.
  2. 클라이언트가 서버에게 아래와 같은 헤더를 통해 요청했다. 서버는 fr, kr, en 버전의 콘텐츠를 가지고 있다. 어떤 버전을 클라이언트에게 보내주겠는가?

    Accept-Language: nl;q=1.0, en;q=0.6, tr;q=0.58, kr;q=0.7, fr;q=0.9
  3. 서버는 User-Agent와 같은 클라이언트의 다른 요청 헤더들을 이용해 알맞은 요청을 만들 수 있다. 예를 들어 User-Agent를 통해 클라이언트가 자바스크립트를 지원하지 않는 다는 것을 알고 있다면 응답 메세지에는 자바스크립트를 포함하지 않은 페이지를 돌려줄 수 있다. (O / X)

📄 답지
  1. 보기를 참고하여 다음 괄호를 채우세요.

    <보기>
    - 서버
    - 프락시
    - 캐시서버
    - 내용 협상 헤더
    - 이것이 네고여
    - 내용 협박 헤더 외의 다른 헤더
    - 내용 협상 헤더 외의 다른 헤더
    • 서버 주도 협상에는 ( ) 가 클라이언트에게 보내줄 적절한 응답을 계산하는 메커니즘은 두 가지가 있다.
      1. 하나는 ( ) 를 살펴본다. 서버는 클라이언트의 Accept 관련 헤더들을 들여다보고 그에 알맞은 응답 헤더를 준비한다.
      2. 다른 하나는 ( ) 를 살펴본다. 예를 들어, 서버는 클라이언트의 User-Agent 헤더에 기반하여 응답을 보내줄 수도 있다.
    • 정답 : 서버, 내용 협상 헤더, 내용 협상 헤더 외의 다른 헤더`
  2. 클라이언트가 서버에게 아래와 같은 헤더를 통해 요청했다. 서버는 fr, kr, en 버전의 콘텐츠를 가지고 있다. 어떤 버전을 클라이언트에게 보내주겠는가?

    Accept-Language: nl;q=1.0, en;q=0.6, tr;q=0.58, kr;q=0.7, fr;q=0.9
    • 정답 : 서버가 가지고 있는 버전과 클라이언트가 요청한 헤더 중 동일한 버전의 헤더 품질값이 가장 큰 fr 버전을 보내준다.
  3. 서버는 User-Agent와 같은 클라이언트의 다른 요청 헤더들을 이용해 알맞은 요청을 만들 수 있다. 예를 들어 User-Agent를 통해 클라이언트가 자바스크립트를 지원하지 않는 다는 것을 알고 있다면 응답 메세지에는 자바스크립트를 포함하지 않은 페이지를 돌려줄 수 있다. (O / X)

    • 정답 : O

17.4   투명 협상 junslee

  1. 프랑스어 사용자인 '도비'가 서버에 아래와 같은 요청을 보냈을 때, 도비가 보고있는 문서의 언어는 무엇이며, 캐시된 콘텐츠 파일의 언어는 무엇일까요.

        GET / HTTP/1.1
        Host: www.yebalja.com
        User-agent: Mozila/4.73  
        Accept-language: fr;q=1.0 
  2. 잠시 후... 영어 문서도 보고 싶어진 '도비'로부터 캐시가 아래와 같은 요청을 받았을 때, 이때 캐시의 올바른 행동을 서술하시오. 주관식

        GET / HTTP/1.1
        Host: www.yebalja.com
        User-agent: Mozila/4.73
        Accept-language: en;q=1.0 
  3. 위 과정을 거치고 나서 캐시는 같은 URL에 대해 두개의 다른 문서(프랑스어, 영어)를 갖게 되었는데, 이 다른 버전들은 variant(배리언트)라고 불린다. (O / X)

  4. 내용 협상은 배리언트 중에서 클라이언트의 요청에 가장 잘 맞는 것을 선택하는 과정이라고 할 수 있다. (O / X)

  5. 서버는(데스크탑 버전과 모바일버전 모두 지원한다.) 클라이언트로부터 아래와 같은 요청들을 받았다고 한다.. 옳은 내용을 모두 고르세요.

        GET /tutorial/docs HTTP/1.1
        Host: www.codingEveryone.com
        User-agent: pc
        Accept-language: en;q=1.0 
    
        GET /tutorial/docs HTTP/1.1
        Host: www.codingEveryone.com
        User-agent: mobile device 
        Accept-language: en;q=1.0 

    (a) 캐시는 반드시 캐시된 배리언트(variant)와 함께 클라이언트 요청 헤더와 그에 알맞은 서버 응답 헤더 양쪽 모두를 저장해야 한다.

    (b) 서버는 응답에 Vary: User-agent 라고 정의된 응답 헤더를 포함시켰고, 모바일 유저에게 데스크탑 유저를 위한 캐시 컨텐츠가 제공 되는것을 피할 수 있었다.

📄 답지
  1. Accept-language 헤더부분을 보면 알 수있듯이 도비는 프랑스어로 된 문서를 보고있을 것이다. 캐시된 콘텐츠 파일 또한 프랑스어이다.

  2. 캐시는 반드시 두번째 요청도 서버에게 그대로 전달해야 한다. 그 URL에대한 이번의 응답과 지난번의 모든 응답을 저장해야 한다.

  3. 위 과정을 거치고 나서 캐시는 같은 URL에 대해 두개의 다른 문서를 갖게 되었는데, 이 다른 버전들은 variant(배리언트)라고 불린다. (O)

  4. 내용 협상은 배리언트 중에서 클라이언트의 요청에 가장 잘 맞는 것을 선택하는 과정이라고 할 수 있다. (O)

  5. 정답은 a, b 모두 옳은 내용이다!


17.5   트랜스코딩 mihykim

(학습목표) 트랜스코딩 vs 인코딩 구분하기

  • 각 문제의 설명을 읽고, 보기에서 가장 연관이 깊은 항목을 골라주세요! (택1)
    보기
    - 트랜스코딩(Transcoding)
    - 전송 인코딩(Chunked Transfer Encoding)
    - 콘텐츠 인코딩(Content-Encoding)
    • [문제1]
      서버 😎태혁이는 효과적인 전송을 위해 메세지 본문(만)을 압축하였다.
      • 발신 메세지의 헤더 Content-Encoding:gzip
    • [문제2]
      마스터 😎도비는 1년 전 과거의 자신으로부터 온 HTTP 메세지를 받았다.
      • 인코딩된 메세지의 끝 길이가 0인 종료청크
      • 디코딩된 메세지 본문 HTTP 스터디 다음 시간이 마지막인데, 그런 의미에서 협곡 가실 분?
    • [문제3]
      아기 🐥대현이는 20년 전, 아버지의 흑백 폰을 빌려, 데스크톱 클라이언트를 위해 만들어진 주니버 꾸러기에 접속하였다.
      • 모바일 단말기에 띄워진 화면 WML 문서, 저해상도 이미지, 흑백 이미지, 단순한 텍스트 페이지

(학습목표) 트랜스코딩 3종류 구분하기

  • 각 문제의 설명을 읽고, 보기에서 가장 연관이 깊은 항목을 골라주세요! (택1)
    보기
    - 포맷변환(format conversion)
    - 정보합성(information synthesis)
    - 콘텐츠주입(content injection)
    • [문제4]
      잘나가는 😎현준이는 친구와 함께 홍대맛집을 검색하던 중, 몰래 들어갔던 웹사이트와 관련된 광고가 자동으로 생성되어 브라우저에 표시되어 몹시 당황하였다.
    • [문제5]
      영어신 😎정아는 미리 녹음해둔 42야우리두 스터디자료가 사용하는 음악플레이어에서 열리지 않자, 파일을 mp4로 변환해서 문제를 해결하였다.
    • [문제6]
      웹개발 중 궁금한 점이 생긴 😎준서는 리액트 공식홈페이지에 들어갔는데, 각 절의 제목에 기반해 문서의 개요가 생성되어 있어 찾으려한 내용을 금방 찾을 수 있었다.

🍪 책에 나오는 WML이 뭔가요?

  • WML(Wireless Markup Language)
    • XML에 기반을 둔 무선인터넷용 언어로써, 기존의 HTML을 개선한 무선 소형 단말을 위해 설계된 마크업 언어 image

  • XHTML(Extensible Hypertext Markup Language)
    • XHTML은 HTML의 후속으로 많은 사람들이 XHTML을 HTML의 "최신 버전"으로 보고 있다. 하지만 HTML과 XHTML은 별개의 분리된 표준이다. (더보기, 위키)

      image

📄 답지

(학습목표) 트랜스코딩 vs 인코딩 구분하기

  • 문제1 : 콘텐츠 인코딩(Content-Encoding)
  • 문제2 : 전송 인코딩(Chunked Transfer Encoding)
  • 문제3 : 트랜스코딩(Transcoding)
  • 문제4 : 콘텐츠주입(content injection)
  • 문제5 : 포맷변환(format conversion)
  • 문제6 : 정보합성(information synthesis)