통신을 중계하는 프로그램

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

프록시

서버와 클라이언트 양쪽 역할을 하는 중계프로그램
클라이언트로 부터 받은 리퀘스트를 서버에 전송합니다.
반대로 서버로부터 받은 리스폰스도 클라이언트에 전송 합니다.
중간 경유자입니다.

게이트웨이

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

클라이언트와 게이트웨이 사이를 암호화 하는 등으로 안전성을 높이는 역할 등을 합니다.
예를들면 데이터베이스에 접속해 SQL쿼리를 사용하여 데이터를 얻는다던지, 쇼핑 사이트등에서 신용카드 결제 시스템 등과 연계할 때 사용하기도 합니다.

터널

서로 떨어진 두대의 클라이언트와 서버사이를 중계하며 접속을 주선하는 중계프로그램입니다.
터널을 사용하여 서버와 안전하게 통신할 수 있습니다.
터널 자체는 HTTP리퀘스트를 해석하려고 하지 않으며 그대로 다음 서버에 중계합니다.
클라이언트-서버간 통신이 끊어지면 종료됩니다.

마치며

프록시/ 게이트웨이/ 터널에 관하여 간단하게 알아보았습니다.
다음 포스트에서는 캐시에 관하여 알아보겠습니다.