Skip to content

Latest commit

 

History

History
183 lines (109 loc) · 10 KB

06_Proxies.md

File metadata and controls

183 lines (109 loc) · 10 KB

6장 프락시

6.1 웹 중개자

  1. 프락시는 웹 서버처럼 요청과 커넥션을 다루기도 하며, 클라이언트처럼 요청을 보내기도 한다. (O, X)
  2. 하나의 서버가 독점적으로 사용하는 프락시를 개인 프락시, 여러 서버가 공용으로 사용하는 프락시를 공용 프락시라고 한다. (O, X)
  3. 프락시와 게이트웨이의 차이점을 간단하게 설명하시오.
  • 📄 답지
    1. 프락시는 웹 서버처럼 요청과 커넥션을 다루기도 하며, 클라이언트처럼 요청을 보내기도 한다. (O, X)

      O : 맞다.

    2. 하나의 서버가 독점적으로 사용하는 프락시를 개인 프락시, 여러 서버가 공용으로 사용하는 프락시를 공용 프락시라고 한다. (O, X)

      X : 하나의 클라이언트가 독점적으로 사용하는 프락시를 개인 프락시, 여러 클라이언트가 공용으로 사용하는 프락시를 공용 프락시라고 한다,.

    3. 프락시와 게이트웨이의 차이점을 간단하게 설명하시오.

      프락시는 같은 프로토콜을 사용하는 둘 이상의 애플리케이션을 연결하고, 게이트웨이는 서로 다른 프로토콜을 사용하는 둘 이상의 애플리케이션을 연결한다.

6.2 왜 프락시를 사용하는 것인가?

다음 중 프락시를 사용하는 상황인 것을 모두 고르시오.

  1. 지원이는 불건전한 사이트에 접속하려고 했으나 실패했다.
  2. 세린이의 컴퓨터가의 방화벽이 의심스러운 트래픽을 차단해 컴퓨터를 보호했다.
  3. 정윤이가 아이캠퍼스 프리미엄을 결재하자, 요청이 서버가 아니라 가까운 캐시로 가기 시작했다.
  4. 성우가 노트북으로 구글을 들어갔다가 핸드폰으로 다시 들어가니 글자가 작아진 것을 볼 수 있었다.
  • 📄 답지
    1. 지원이는 불건전한 사이트에 접속하려고 했으나 실패했다.

      어린이 필터에 대한 설명

    2. 세린이의 컴퓨터가의 방화벽이 의심스러운 트래픽을 차단해 컴퓨터를 보호했다.

      보안 방화벽에 대한 설명

      프락시 서버는 응용 레벨 프로토콜의 흐름을 네트워크 한 지점에서 통제한다.

    3. 정윤이가 아이캠퍼스 프리미엄을 결재하자, 요청이 서버가 아니라 가까운 캐시로 가기 시작했다.

      콘텐츠 라우터에 대한 설명

      콘텐츠 라우터는 인터넷 트래픽 조건과 콘텐츠의 종류에 따라 요청을 특정 웹 서버로 유도한다.

    4. 성우가 노트북으로 구글을 들어갔다가 핸드폰으로 다시 들어가니 글자가 작아진 것을 볼 수 있었다.

      트랜스코딩 프락시에 대한 설명

      트랜스코딩은 데이터의 표현 방식을 자연스럽게 변환하는 것을 의미한다.

6.3 프락시는 어디에서 왔는가?

  1. 프락시의 위치를 추측해보자.

    출구 프락시 접근 프락시 대리 프락시 네트워크 교환 프락시

    1. 회사 밖의 악의적인 해커들을 막는 방화벽을 제공하고 싶다.
    2. 웹 서버에 보안 기능을 추가하고 싶다.
    3. 캐시를 사용해 인터넷 교차로의 혼잡을 완화하고 트래픽 흐름을 감시하고 싶다.
    4. 초등학생들이 부적절한 콘텐츠를 브라우징하는 것을 막고싶다.
  2. 다음은 HTTP 트래픽이 프락시로 가도록 하는 방법에 대한 설명이다.

            ``  는 웹 서버의 이름과 IP 주소를 자신이 사용하는 프락시이다.
    

    몇몇 웹 서버는 `` 를 클라이언트에게 돌려줌으로써 클라이언트의 요청을 프락시로 리다이렉트 하도록 설정할 수 있다.

  • 📄 답지
    1. 프락시의 위치를 추측해보자.

      1. 출구 프락시 : 회사 밖의 악의적인 해커들을 막는 방화벽을 제공하고 싶다.

        로컬 네트워크와 더 큰 인터넷 사이를 오가는 트래픽을 제어할 수 있다.

      2. 대리 프락시 : 웹 서버에 보안 기능을 추가하고 싶다.

        대리 프락시는 웹 서버들의 가장 앞에 위치해 웹 서버로 향하는 모든 요청을 처리한다.

      3. 네트워크 교환 프락시 : 캐시를 사용해 인터넷 교차로의 혼잡을 완화하고 트래픽 흐름을 감시하고 싶다.

        네트워크 교환 프락시는 네트워크 사이의 인터넷 피어링 교환 지점들에 놓여 있다.

      4. 출구 프락시 :초등학생들이 부적절한 콘텐츠를 브라우징하는 것을 막고싶다.

        로컬 네트워크와 더 큰 인터넷 사이를 오가는 트래픽을 제어할 수 있다.

      5. 다음은 HTTP 트래픽이 프락시로 가도록 하는 방법에 대한 설명이다.

      대리 프락시는 웹 서버의 이름과 IP 주소를 자신이 사용하는 프락시이다. 따라서 모든 요청이 서버 대신 대리 프락시로 간다.

      몇몇 웹 서버는 HTTP 리다이렉션 명령을 클라이언트에게 돌려줌으로써 클라이언트의 요청을 프락시로 리다이렉트 하도록 설정할 수 있다. 리다이렉트를 받는 즉시 클라이언트는 프락시와의 트랜잭션을 시작한다.

6.4 클라이언트 프락시 설정

웹 프락시 자동 발견 프로토콜(WPAD)은 어떤 알고리즘인가?

  • 📄 답지

    웹 프락시 자동 발견 프로토콜(WPAD)의 목적은 무엇인가?

    여러 발견 메커니즘들의 상승 전략을 이용해 브라우저에게 알맞은 PAC 파일을 자동으로 찾아주는 알고리즘이다.

    WPAD를 사용해 PAC URI를 찾고, 이를 통해 PAC 파일을 알아내고 실행해 프락시 서버를 알아낸다.

6.5 프락시 요청의 미묘한 특징들

  1. 다음은 프락시 URI와 서버 URI의 차이에 대한 설명이다.

    클라이언트가 프락시 대신 서버로 요청을 보내면, 요청줄은 , , `` 가 없는 부분 URI를 가진다. 하지만 클라이언트가 프락시로 요청을 보내면 요청줄은 완전한 URI를 가진다.

  2. 해당 요청이 어떤 URI를 사용하는지 연결하시오.

    부분 URI 완전 URI

    1. 서버
    2. 프락시
    3. 대리 프락시
    4. 인터셉트 프락시
  • 📄 답지
    1. 다음은 프락시 URI와 서버 URI의 차이에 대한 설명이다.

      클라이언트가 프락시 대신 서버로 요청을 보내면, 요청줄은 스킴, 호스트, 포트번호가 없는 부분 URI를 가진다. 하지만 클라이언트가 프락시로 요청을 보내면 요청줄은 완전한 URI를 가진다.

      기존 HTTP 설계에서 클라이언트는 단일 서버와 대화했다. 이때 단일 서버는 자신의 호스트 명과 포트번호를 알고 있으므로 클라이언트는 불필요한 정보 발송을 피하기 위해 스킴과 호스트가 없는 부분 URI만 보냈다. 하지만 프락시는 서버의 이름과 스킴 등의 정보가 필요했다.

      따라서 클라이언트가 프락시를 사용하지 않도록 설정 됐다면 부분 URI를, 사용하기로 설정 됐다면 완전한 URI를 보낸다.

    2. 해당 요청이 어떤 URI를 사용하는지 연결하시오.

      1. 부분 URI : 서버
      2. 완전 URI : 프락시
      3. 부분 URI : 대리 프락시
      4. 부분 URI :인터셉트 프락시

      대리 프락시는 원 서버의 호스트 명과 아이피 주소를 사용해 원 서버를 대신하는 프락시 서버이고,

      인터셉트 프락시는 네트워크 흐름에서 클라이언트에서 서버로 가는 트래픽을 가로채 캐시된 응답을 돌려주는 등의 일을 하는 프락시 서버이다.

      두 가지 경우 모두 클라이언트는 프락시가 명시되지 않아 자신이 웹 서버와 대화하고 있다고 생각하고 완전한 URI를 보내지 않는다.

6.6 메시지 추적

  1. Via waypoint의 구성요소 중 필수인 것을 고르시오.
    1. 프로토콜 이름
    2. 프로토콜 버전
    3. 노드 이름
    4. 코멘트
  2. **"이 메서드"**는 HTTP/1.1의 메서드로, 요청 메시지를 프락시의 연쇄를 따라가면서 어떤 프락시를 지나가고 어떻게 각 프락시가 요청 메시지를 수정하는지 관찰, 추적할 수 있게 해 프락시 흐름을 디버깅하는데 매우 유용한 메서드이다.
  • 📄 답지
    1. Via waypoint의 구성요소 중 필수인 것을 고르시오.

      1. 프로토콜 이름
      2. 프로토콜 버전
      3. 노드 이름
      4. 코멘트
    2. "TRACE 메서드"는 HTTP/1.1의 메서드로, 요청 메시지를 프락시의 연쇄를 따라가면서 어떤 프락시를 지나가고 어떻게 각 프락시가 요청 메시지를 수정하는지 관찰, 추적할 수 있게 해 프락시 흐름을 디버깅하는데 매우 유용한 메서드이다.

      TRACE 요청이 서버에 도착하면 서버는 전체 요청 메시지를 응답 메시지 본문에 포함시켜 그대로 돌려보낸다. 클라이언트는 Via 헤더 안의 프락시들의 목록을 통해 검사할 수 있다.

6.8 프락시 상호운용성

  1. 프락시 서버는 이해할 수 없는 헤더 필드는 삭제한다. (O, X)
  2. 같은 이름의 헤더 필드는 순서와 상관 없이 전달해도 된다. (O, X)
  3. OPTION 요청의 URI가 *이라면 이는 무슨 의미인가?
  • 📄 답지
    1. 프락시 서버는 이해할 수 없는 헤더 필드는 삭제한다.

      X : 무조건 전달해야 한다.

    2. 같은 이름의 헤더 필드는 순서와 상관 없이 전달해도 된다. (O, X)

      X : 순서도 무조건 유지해야 한다.

    3. OPTION 요청의 URI가 *이라면 이는 무슨 의미인가?

      서버 전체가 어떤 기능을 지원하는지 묻는 것이다.