-
내용 협상(content-negotiation)이란 무엇인가?
주관식
-
보기를 참고해 다음 괄호를 채우시오.
<보기> 1. 서버 입장에서 가장 구현하기 쉽다. 클라리언트는 최선의 선택을 할 수 있다. 2. 서버가 클라이언트의 요청 헤더를 검증해서 어떤 버전을 제공할지 결정한다. 3. 클라이언트 주도 4. 클라이언트 핸드 쉐이크 5. 투명 6. 투명한 정도 7. 웹 서버가 협상을 할 필요가 없다. 클라리언트 주도 협상보다 빠르다. 8. 만약 결정이 뻔하지 않으면 (헤더에 맞는 거싱 없으면), 서버는 추측을 해야만 한다.
📄 답지
- 내용 협상(content-negotiation)이란 무엇인가?
주관식
- 하나의 URL이 여러 가지 리소스 중 적합한 것에 대응되도록 할 수 있는 것 ( ex) 같은 웹페이지의 한국어, 영어, 터키어 버전을 제공)
- 서버에 있는 페이지들 중 어떤 것이(어떤 버전이, 어떤 언어가 . . .) 클라이언트에게 맞는지 판단하는 방법
-
보기를 참고해 다음 괄호를 채우시오.
<보기> 1. 서버 입장에서 가장 구현하기 쉽다. 클라리언트는 최선의 선택을 할 수 있다. 2. 서버가 클라이언트의 요청 헤더를 검증해서 어떤 버전을 제공할지 결정한다. 3. 클라이언트 주도 4. 클라이언트 핸드 쉐이크 5. 투명 6. 투명한 정도 7. 웹 서버가 협상을 할 필요가 없다. 클라리언트 주도 협상보다 빠르다. 8. 만약 결정이 뻔하지 않으면 (헤더에 맞는 거싱 없으면), 서버는 추측을 해야만 한다.
- 정답 : (a - 3), (b - 1), (c - 2), (d - 8), (e - 5), (f - 7)
- 다음 괄호를 채우시오.
- 서버가 클라이언트에게 데이터를 제공해줄 때 두 가지 방법이 있다. 1)여러 가지 버전에 대한 링크와 각각에 대한 설명이 담긴 HTML 페이지를 돌려주거나, 2)
( )
응답 코드로 HTTP/1.1 응답을 돌려주는 것이다.
- 클라이언트 주도 협상을 할 때 클라이언트는 각 페이지에 몇 번 요청이 필요한가?
📄 답지
- 다음 괄호를 채우시오.
- 서버가 클라이언트에게 데이터를 제공해줄 때 두 가지 방법이 있다. 1)여러 가지 버전에 대한 링크와 각각에 대한 설명이 담긴 HTML 페이지를 돌려주거나, 2)
( )
응답 코드로 HTTP/1.1 응답을 돌려주는 것이다.- 300 Multiple Choices
- 클라이언트 주도 협상을 할 때 클라이언트는 각 페이지에 몇 번 요청이 필요한가?
- 두 번의 요청이 필요하다.
- 한 번은 목록을 얻을 때 (내가 요청한 페이지가 어떤 언어로 이루어져 있는지 전체 확인)
- 한 번은 내가 요청한 사본을 얻을 때 필요하다. (어떤 언어로 되어있는지 확인한 후 내가 확인할 수 있는 언어로 다시 요청)
-
보기를 참고하여 다음 괄호를 채우세요.
<보기> - 서버 - 프락시 - 캐시서버 - 내용 협상 헤더 - 이것이 네고여 - 내용 협박 헤더 외의 다른 헤더 - 내용 협상 헤더 외의 다른 헤더
- 서버 주도 협상에는
( )
가 클라이언트에게 보내줄 적절한 응답을 계산하는 메커니즘은 두 가지가 있다.- 하나는
( )
를 살펴본다. 서버는 클라이언트의 Accept 관련 헤더들을 들여다보고 그에 알맞은 응답 헤더를 준비한다. - 다른 하나는
( )
를 살펴본다. 예를 들어, 서버는 클라이언트의 User-Agent 헤더에 기반하여 응답을 보내줄 수도 있다.
- 하나는
- 서버 주도 협상에는
-
클라이언트가 서버에게 아래와 같은 헤더를 통해 요청했다. 서버는 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
-
서버는 User-Agent와 같은 클라이언트의 다른 요청 헤더들을 이용해 알맞은 요청을 만들 수 있다. 예를 들어 User-Agent를 통해 클라이언트가 자바스크립트를 지원하지 않는 다는 것을 알고 있다면 응답 메세지에는 자바스크립트를 포함하지 않은 페이지를 돌려줄 수 있다. (O / X)
📄 답지
-
보기를 참고하여 다음 괄호를 채우세요.
<보기> - 서버 - 프락시 - 캐시서버 - 내용 협상 헤더 - 이것이 네고여 - 내용 협박 헤더 외의 다른 헤더 - 내용 협상 헤더 외의 다른 헤더
- 서버 주도 협상에는
( )
가 클라이언트에게 보내줄 적절한 응답을 계산하는 메커니즘은 두 가지가 있다.- 하나는
( )
를 살펴본다. 서버는 클라이언트의 Accept 관련 헤더들을 들여다보고 그에 알맞은 응답 헤더를 준비한다. - 다른 하나는
( )
를 살펴본다. 예를 들어, 서버는 클라이언트의 User-Agent 헤더에 기반하여 응답을 보내줄 수도 있다.
- 하나는
- 정답 :
서버
,내용 협상 헤더,
내용 협상 헤더 외의 다른 헤더`
- 서버 주도 협상에는
-
클라이언트가 서버에게 아래와 같은 헤더를 통해 요청했다. 서버는 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 버전을 보내준다.
-
서버는 User-Agent와 같은 클라이언트의 다른 요청 헤더들을 이용해 알맞은 요청을 만들 수 있다. 예를 들어 User-Agent를 통해 클라이언트가 자바스크립트를 지원하지 않는 다는 것을 알고 있다면 응답 메세지에는 자바스크립트를 포함하지 않은 페이지를 돌려줄 수 있다. (O / X)
- 정답 : O
-
프랑스어 사용자인 '도비'가 서버에 아래와 같은 요청을 보냈을 때, 도비가 보고있는 문서의 언어는 무엇이며, 캐시된 콘텐츠 파일의 언어는 무엇일까요.
GET / HTTP/1.1 Host: www.yebalja.com User-agent: Mozila/4.73 Accept-language: fr;q=1.0
-
잠시 후... 영어 문서도 보고 싶어진 '도비'로부터 캐시가 아래와 같은 요청을 받았을 때, 이때 캐시의 올바른 행동을 서술하시오.
주관식
GET / HTTP/1.1 Host: www.yebalja.com User-agent: Mozila/4.73 Accept-language: en;q=1.0
-
위 과정을 거치고 나서 캐시는 같은 URL에 대해 두개의 다른 문서(프랑스어, 영어)를 갖게 되었는데, 이 다른 버전들은 variant(배리언트)라고 불린다. (O / X)
-
내용 협상은 배리언트 중에서 클라이언트의 요청에 가장 잘 맞는 것을 선택하는 과정이라고 할 수 있다. (O / X)
-
서버는(데스크탑 버전과 모바일버전 모두 지원한다.) 클라이언트로부터 아래와 같은 요청들을 받았다고 한다.. 옳은 내용을 모두 고르세요.
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
라고 정의된 응답 헤더를 포함시켰고, 모바일 유저에게 데스크탑 유저를 위한 캐시 컨텐츠가 제공 되는것을 피할 수 있었다.
📄 답지
-
Accept-language 헤더부분을 보면 알 수있듯이 도비는
프랑스어
로 된 문서를 보고있을 것이다. 캐시된 콘텐츠 파일 또한프랑스어
이다. -
캐시는 반드시 두번째 요청도 서버에게 그대로 전달해야 한다. 그 URL에대한 이번의 응답과 지난번의 모든 응답을 저장해야 한다.
-
위 과정을 거치고 나서 캐시는 같은 URL에 대해 두개의 다른 문서를 갖게 되었는데, 이 다른 버전들은 variant(배리언트)라고 불린다. (O)
-
내용 협상은 배리언트 중에서 클라이언트의 요청에 가장 잘 맞는 것을 선택하는 과정이라고 할 수 있다. (O)
-
정답은 a, b 모두 옳은 내용이다!
- 각 문제의 설명을 읽고, 보기에서 가장 연관이 깊은 항목을 골라주세요! (택1)
보기 - 트랜스코딩(Transcoding)
- 전송 인코딩(Chunked Transfer Encoding)
- 콘텐츠 인코딩(Content-Encoding)- [문제1]
서버 😎태혁이는 효과적인 전송을 위해 메세지 본문(만)을 압축하였다.- 발신 메세지의 헤더
Content-Encoding:gzip
- 발신 메세지의 헤더
- [문제2]
마스터 😎도비는 1년 전 과거의 자신으로부터 온 HTTP 메세지를 받았다.- 인코딩된 메세지의 끝
길이가 0인 종료청크
- 디코딩된 메세지 본문
HTTP 스터디 다음 시간이 마지막인데, 그런 의미에서 협곡 가실 분?
- 인코딩된 메세지의 끝
- [문제3]
아기 🐥대현이는 20년 전, 아버지의 흑백 폰을 빌려, 데스크톱 클라이언트를 위해 만들어진 주니버 꾸러기에 접속하였다.- 모바일 단말기에 띄워진 화면
WML 문서, 저해상도 이미지, 흑백 이미지, 단순한 텍스트 페이지
- 모바일 단말기에 띄워진 화면
- [문제1]
- 각 문제의 설명을 읽고, 보기에서 가장 연관이 깊은 항목을 골라주세요! (택1)
보기 - 포맷변환(format conversion)
- 정보합성(information synthesis)
- 콘텐츠주입(content injection)- [문제4]
잘나가는 😎현준이는 친구와 함께 홍대맛집을 검색하던 중, 몰래 들어갔던 웹사이트와 관련된 광고가 자동으로 생성되어 브라우저에 표시되어 몹시 당황하였다. - [문제5]
영어신 😎정아는 미리 녹음해둔 42야우리두 스터디자료가 사용하는 음악플레이어에서 열리지 않자, 파일을 mp4로 변환해서 문제를 해결하였다. - [문제6]
웹개발 중 궁금한 점이 생긴 😎준서는 리액트 공식홈페이지에 들어갔는데, 각 절의 제목에 기반해 문서의 개요가 생성되어 있어 찾으려한 내용을 금방 찾을 수 있었다.
- [문제4]
- XHTML(Extensible Hypertext Markup Language)
- XHTML은 HTML의 후속으로 많은 사람들이 XHTML을 HTML의 "최신 버전"으로 보고 있다. 하지만 HTML과 XHTML은 별개의 분리된 표준이다. (더보기, 위키)
- XHTML은 HTML의 후속으로 많은 사람들이 XHTML을 HTML의 "최신 버전"으로 보고 있다. 하지만 HTML과 XHTML은 별개의 분리된 표준이다. (더보기, 위키)