본문으로 바로가기

II. HTTP 아키텍처 | 6. 프록시

category 🌐 Network/🔗 HTTP 2020. 4. 4. 03:51

II. HTTP 아키텍처

 

06 프록시

 

  웹 프록시 서버는 클라이언트와 서버 사이의 트랜잭션을 수행하는 중개인이다. 당연히 클라이언트에게는 서버의 역할을 하고 서버에게는 클라이언트의 역할을 한다. 프록시가 없으면 클라이언트와 서버는 직접 1: 1로 소통한다. 그러나 이런 경우보다 사이에 프록시가 껴 있는 경우가 대부분이다.

  

  - 프록시 vs 게이트웨이

 

  프록시는 같은 프로토콜을 사용하는 어플리케이션을 연결하고, 게이트웨이는 다른 프로토콜을 사용하는 어플리케이션을 연결한다. 게이트웨이를 일종의 프로토콜 변환기로 생각하면 편하다. 그러나 실질적으로 프록시와 게이트웨이의 차이점은 모호하다고 한다. 특히 상용 프락시 서버는 게이트 웨이 기능을 구현하므로 더더욱 그 차이점은 모호하다.

 

  

  - 프록시를 사용하는 이유

 

  성인 콘텐츠 차단, 접근 제어, 보안 방화벽, 익명화(User-Agent 헤더 제거, Cookie 헤더 제거 등 우리가 아는 그 프록시가 이 프록시이다.), 웹 캐시, 서버 가속기(대리 프록시), 콘텐츠 라우터, 트랜스코더(클라이언트에게 전달하는 본문의 포맷을 수정 ex - gif를 jpg로 변환하여 클라이언트에게 전달) 등 다양한 목적이 있다.

 

 

  - 프록시는 어디에 있는가

  어디에든 배치될 수 있으나 대개 4개로 구분할 수 있다.

 

  내 컴퓨터 가까이 있다.

  출구 프록시 : 개인 컴퓨터(클라이언트, 사용자)에서 더 큰 인터넷으로 나가기 위한 출구로서의 프록시이다. 클라이언트 쪽에 가까운 프록시라고 할 수 있다. 성인물 차단이나 회사 바깥의 해커들 차단 등에 사용된다.

 

  ISP 가까이에 있다.

  입구 프록시 : Internet service provider(ISP, 인터넷 제공자, 인터넷 회사)와 가까이 있는 프록시 입니다. 우리나라의 경우 KT․LG유플러스․SK브로드밴드 등이 있습니다. 이들 가까이 프록시가 존재하는 이유는 사용자들의 다운로드 속도 개선, 캐시입니다.

 

  자신의 ISP가 궁금하면 해당 사이트로 접속해서 알아봅시다.

 

Speedtest by Ookla - The Global Broadband Speed Test

Test your Internet connection bandwidth to locations around the world with this interactive broadband speed test from Ookla

www.speedtest.net

 

  서버 가까이에 있다.

  대리 프록시 (리버스 프록시) : 네트워크의 가장 끝에 있는 웹 서버의 바로 앞에 위치한다. 웹 서버로 향하는 요청을 처리하고 웹 서버의 보안 기능을 추가하기도 하며 웹 서버 캐시를 두기도 한다. 일반적으로 대리 프록시는 웹 서버의 IP 주소로 가장하기 때문에 요청이 대리 프록시를 거쳐서 웹 서버로 전달된다.

 

  중간에 있다.

  네트워크 교환 프록시 : 클라이언트쪽에도, 서버 쪽에도 가깝지 않고 그냥 트래픽 흐름 감시를 위한 프록시 입니다.

 

  

  - 프록시 계층

 

  쉽게 말해 프록시 계층은 프록시 순서를 말한다. 이 계층(순서)에 따라 프록시 서버들은 부모, 자식 관계를 가진다. 서버에 가까운 인바운드 프록시는 부모클라이언트에 가까운 아웃바운드 프록시는 자식이다.

  또한, 자식 프록시는 부모 프록시를 선택해서 라우팅할 수 있다. 요청에 특화된 부모 프록시로 라우팅할 수 있다. 그게 네트워크니깐. 이걸 '동적 부모 선택'이라고 한다. 부모 프록시의 부하 정도에 따라 다른 부모 프록시로 라우팅하기도 하고 특정 파일을 받으면 그 파일을 잘 처리하는 프록시로 라우팅하는 등의 방법이 존재한다.

 

 

  - 클라이언트에서 프록시로 가는 법

 

  클라이언트는 서버쪽으로 HTTP 메세지를 보낸다. 프록시는 이를 어떻게 잡아서 메세지를 통과시키는 것일까? 크롬와 같은 브라우저에는 프록시 설정을 지원하기도 하지만 네트워크에서 인터셉트(가로챔)해서 가져오기도 하고 DNS 이름공간을 수정하는 방법도 있다. 혹은 웹서버쪽에서 프록시로 리다이렉트하는 경우도 있다.

  요새는 프록시 설정이 이미 다 있다. 크롬의 설정-고급-시스템에서 확인할 수도 있고, 그냥 Win10에서 제공하는 설정창에서 설정할 수도 있다.

 

  

 

  프록시의 기본값은 대개 자동이다. 프록시 자동 설정(PAC)은 수동 프록시보다 더 유연하고 장애 시 대처할 수 있다. PAC 파일은 그때 그때 상황에 맞게 프록시 설정을 계산해주는 자바스크립트 프로그램이다. PAC 파일의 URI를 브라우저에 제공해주면 브라우저는 PAC 파일을 가져와서 매 접근마다 적절한 프록시 서버를 계산한다.

  PAC 파일은 일반적으로 .pac 확장자를 가지며 MIME 타입은 application/x-ns-proxy-autoconfig이다.

 

  PAC 외에도 웹 프록시 자동발견 프로토콜(WPAD)라 하여 브라우저에게 알맞은 PAC 파일을 자동으로 찾아주는 알고리즘이다. 결국, 프록시는 PAC와 WPAD를 통해 클라이언트로부터 요청을 받고 서버를 향해 통과시킨다.

 

  

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체