서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 부른다. 말 그대로 두 PC 가 통신을 할 때 직접 하지 않고, 중간에서 '프록시 서버'가 중간에서 대리로 통신을 하는 것을 말한다.
프록시 서버란 시스템에 방화벽을 가지고 있는 경우 외부와의 통신을 위해 만들어 놓은 서버라는 의미도 있다.
프록시 서버의 위치에 따라 포워드 프록시와 리버스 프록시 두 가지로 나뉜다.
그림과 같이, 클라이언트에서 프록시 서버를 거쳐서 서버로 요청을 한다. 서버에서 받은 IP 는 클라이언트의 IP 가 아니라 프록시 서버의 IP 이기 때문에 서버는 클라이언트가 누군지 알 수 없다.
클라이언트가 감춰진다.
왜 사용하는가 ?
프록시 서버를 인터넷 리소스 또는 인트라넷 리소스 앞에 위치시키며, 보안을 위해서 사용한다.
클라이언트가 인터넷에 데이터를 요청하면, 리버스 프록시가 이 요청을 받아 내부 서버에서 데이터를 받은 후 클라이언트에 전달하는 방식이다. 클라이언트는 내부 서버에 대한 정보를 알 필요 없이, 리버스 프록시에만 요청하면 된다.
서버가 감춰진다.
내부 네트워크에서 외부 네트워크로 직접적인 통신을 막고, 그 사이에 DMZ 를 위치 시킨다.
즉, DMZ 는 내부 네트워크와 외부 네트워크 사이에 위치하는 구간을 의미한다.
이 구간에는 웹 서버, 메일 서버, FTP 서버 등 외부 서비스를 제공하는 서버가 위치한다.
리버스 프록시 서버를 DMZ 에 두고, 실제 서비스 서버는 내부망(WAS) 에 위치시킨 후 서비스를 하는 것이 일반적인 형태이다.
사용자가 브라우저 주소창에 "google.com"을 입력하고, Enter를 칩니다.
브라우저는 캐시와 로컬 파일에서 "google.com"의 IP를 찾습니다. 없을 경우, DNS에 "google.com"의 IP주소를 요청해 받습니다.
브라우저는 응용 계층에 해당합니다. 브라우저의 "google.com" 요청 데이터가 응용 계층에서 물리 계층까지 하위 계층으로 전달됩니다. 각 계층은 데이터 앞에 적절한 헤더를 붙입니다.
물리 계층에서 전기신호로 "google.com" 서버 컴퓨터에 요청 데이터를 보냅니다.
"google.com" 서버 컴퓨터는 물리 계층에서 요청 데이터를 받습니다. 요청 데이터는 물리 계층에서 응용 계층까지 상위 계층으로 전달됩니다. 각 계층은 헤더를 떼어 확인하고, 헤더 값에 따라 적절한 처리를 하며 데이터를 전달합니다.
"google.com" 서버 컴퓨터의 최상위 계층인 응용 계층에는 서버 애플리케이션이 있습니다. 이 서버 애플리케이션은 요청 데이터를 받아 적절한 처리를 하고, 응답 데이터를 반환합니다.
응답 데이터는 요청 방식과 같은 방식으로 사용자의 브라우저에 전달됩니다.
응답 데이터는 사용자의 응용 계층(브라우저)에 도착합니다.
브라우저는 응답 데이터를 화면에 출력합니다.