-
프락시(Proxy)란 무엇인가?CS지식/네트워크 2021. 6. 2. 22:50
프락시는 클라이언트와 서버 사이에 위치하여 HTTP메시지를 정리하는 중개자 역할을 한다.
프락시가 없다면 클라이언트는 서버와 직접 통신하게 되는 것이고 프락시가 있다면 프락시가 클라이언트의 입장에서 서버와 통신해주는 역할을 한다.
이러한 프락시는 웹 서버처럼 보이기도 하고 웹 클라이언트처럼 보이기도 한다.
그 이유는 클라이언트의 요청을 받아 프락시는 서버에게 응답을 받아 돌려주므로 웹 서버처럼 동작하는 것과 같고
프락시가 클라이언트의 요청을 서버에게 보내기도 하므로 웹 클라이언트처럼 동작하는 것과 같기도 하기 때문이다.
프락시는 하나의 클라이언트만을 위한 개인 프락시와 여러 클라이언트가 사용가능한 공용 프락시가 있다.
그러면 클라이언트와 서버가 직접 통신하면 되지 왜 프락시를 사용하는 것일까?
그 이유는 프락시를 사용하게 되면 여러 기능과 장점이 생기게 된다.
보안을 개선할 수 있고 성능을 높여줄 수 있고 트래픽을 감시하고 수정할 수 있다.
프락시를 사용하면서 가질 수 있는 기능을 예시로 알아보자.
초등학교에서 수업에서 사용하는 컴퓨터에서는 교육 사이트를 제공하면서 성인 사이트는 차단하기 위해 필터링 역할로 프락시를 사용할 수 있다. 즉, 사용자에 따라 접근을 하용하는 사이트와 접근을 강제로 거부할 수 있는 사이트를 프락시가 중간에서 할 수 있다는 것이다.
이외에도 보안을 강화하기 위해 프락시를 사용하기도 하는데 프락시가 프로토콜의 흐름을 네트워크의 한 지점에서 통제한다.
또한, 프락시가 웹 캐시의 역할을 하여 클라이언트가 자주 요청하는 리소스의 사본을 저장하여 관리하고 추후에 동일한 요청을 빠르게 응답할 수 있게 해주는 기능을 제공한다.
이제 프락시가 무엇인지 왜 존재하는지에 대해 어느정도 알았다.
클라이언트와 서버는 TCP 커넥션을 이루어 클라이언트의 IP주소, 포트번호와 서버의 IP주소, 포트번호를 통해 요청 메시지와 응답 메시지를 주고 받을 수 있다.
그러면 프락시가 존재하면 클라이언트가 보낸 HTTP 메시지는 어떻게 프락시로 가는 길을 알 수 있을까?
클라이언트 트래픽이 프락시로 가도록 하는 방법은 4가지가 존재한다.
1) 클라이언트를 수정한다.
웹 브라우저와 같은 클라이언트에서 수동 혹은 자동 프락시 설정을 지원한다. 이를 통해 프락시를 사용하도록 설정되어 있다면 클라이언트가 HTTP 메시지를 본래의 서버가 아닌 프락시로 보낼 수있게 된다.
2) 네트워크를 수정한다.
클라이언트는 프락시에 대해 알지 못하고 간섭하지 못하는 상태에서 HTTP 트래픽을 중간에 가로채어 프락시로 가도록 하는 것이다. 이렇게 중간에 가로채는 것은 HTTP 트래픽을 지켜보며 클라이언트 모르게 트래픽을 프락시로 보내는 스위칭 장치가 라우팅 장치가 필요하다.
이러한 방법을 구현하는 프락시를 인터셉트 프락시 혹은 투명 프락시(transparent proxy)라고 한다.
3) DNS 이름공간을 수정한다.
웹 서버 앞에 위치하는 프락시는 웹 서버의 이름과 IP주소를 프락시가 직접 사용한다. 이러한 이유로 클라이언트가 보낸 HTTP 메시지는 본래의 서버 대신 프락시로 간다. 이를 위해 DNS 테이블을 수동으로 편집하거나 동적 DNS 서버를 이용해서 조정할 수 있다.
4) 웹 서버를 수정한다.
웹 서버에서 클라이언트로부터 HTTP 요청 메시지를 받으면 리다이렉션을 클라이언트에게 보내어 요청을 프락시로 리다이렉트하도록 할 수 있다.
리다이렉션을 받게 되면 클라이언트는 즉시 프락시와 작업을 진행한다.
'CS지식 > 네트워크' 카테고리의 다른 글
게이트웨이(Gateway)란 무엇인가? (0) 2021.06.08 캐시(Cache)란 무엇인가? (0) 2021.06.05 웹 서버(Web server)란 무엇인가 (0) 2021.05.30 TCP 커넥션이란 무엇인가 (0) 2021.05.27 HTTP 메세지란 무엇인가 (0) 2021.05.24