5.2 통신을 중계하는 프로그램 : 프록시, 게이트웨이, 터널

HTTP는 클라이언트와 서버 이외에 프록시, 게이트웨이, 터널 같은 통신을 중계하는 프로그램과 서버를 연계하는 것도 가능하다. 이런 프로그램과 서버는 그 다음에 있는 다른 서버에 리퀘스트를 중계하고, 그 서버로부터 받은 리스폰스를 클라이언트에 반환하는 역할을 담당한다.

  • 프록시

서버와 클라이언트의 양쪽 역할을 하는 중계 프로그램으로, 클라이언트로부터의 리퀘스트를 서버에 전송하고, 서버로부터의 리스폰스를 클라이언트에 전송한다.

  • 게이트웨이

다른 서버를 중계하는 서버로, 클라이언트로부터 수신한 리퀘스트를 리소스를 보유한 서버인 것처럼 수신한다. 경우에 따라서는 클라이언트는 상대가 게이트웨이라는 것을 알지 못할 수 있다.

  • 터널

서로 떨어진 두 대의 클라이언트와 서버 사이를 중계하며 접속을 주선하는 중계 프로그램이다.

5.2.1 프록시

프록시 서버의 기본동작은 클라이언트로부터 받은 리퀘스트를 다른 서버에 전송하는 것이다. 받은 리퀘스트 URI를 변경하지 않고 그 다음의 리소스를 가지고 있는 서버에 보낸다.

리소스 본체를 가진 서버를 오리진 서버라고 한다. 오리진 서버로부터 되돌아온 리스폰스는 프록시 서버를 경유해서 클라이언트에 돌아온다.

HTTP통신을 할 때, 프록시 서버를 여러 대 경유하는 것도 가능하다. 체인과 같이 여러 대 경유해서 리퀘스트랑 리스폰스를 중계해 간다. 중계할 때에는 Via 헤더 필드에 경유한 호스트 정보를 추가해야한다.

프록시 서버를 사용하는 이유는 캐시를 사용해서 네트워크 대역 등을 효율적으로 사용하는 것과 조직 내에 특정 웹사이트에 대한 액세스를 제한, 액세스 로그를 획득하는 정책을 철저하게 지키려는 목적으로 사용하는 경우도 있다.

프록시 사용방법은 2개의 기준으로 분류한다.

  1. 캐시하는지 안하는지 여부

  2. 메시지를 변경하는지 여부

  • 캐싱 프록시

프록시로 리스폰스를 중계하는 때에는 프록시 서버 상에 리소스 캐시를 보존해 두는 타입의 프록시이다. 프록시에 다시 같은 리소스에 리퀘스트가 온 경우, 오리진 서버로부터 리소스를 획득하지 않고 캐시를 리스폰스로 되돌려 주는것이 있다.

  • 투명 프록시

프록시로 리퀘스트와 리스폰스를 중계를 할 때 메시지 변경을 하지 않는 타입의 프록시이다. 반대는 비투과 프록시라고 한다.

Last updated