프록시, 게이트웨이


그림으로 배우는 Http network 책을 읽고, 서버와 연계할 수 있는 통신 중계 프로그램에 대해 정리

통신을 중계하는 프로그램

1. 프록시

일할 때 외부 서버에 요청해 결과를 받아오는 객체의 이름에 Proxy를 사용해서 익숙은 했으나, 정확히 이해하지 못하고 있었던 개념 중 하나다. 네트워크 상의 개념을 알게 되니 객체명으로 사용된 의미를 더 잘 알게된 것 같다.

  • 서버와 클라이언트의 양쪽 역할을 중계한다.
  • 클라이언트의 요청을 오리진 서버에 전송, 서버로부터 응답을 클라이언트에 전송
    • 리소스 본체를 가진 서버는 오리진 서버라고 부른다
  • 캐시 사용, 액세스 제한(보안), 필터링 등의 목적으로 사용한다.
  • 오픈소스인 image proxy를 예시로 들 수 있을 것 같다. 구글링 시 여러 오픈소스를 확인할 수 있다.

프록시 종류

  • Caching Proxy
    • 응답을 중계할 때 프록시 서버 상에 리소스 캐시를 보존해둠
    • 프록시에 같은 요청이 온 경우, 오리진이 아닌 캐싱 서버에서 응답을 돌려줌
  • Transparent Proxy
    • 클라이언트와 서버 사이의 요청을 중계할 때, 메시지를 변경하지 않는 타입
    • 메시지 변경하는 프록시는 비투과intransparent 프록시라고 부름

2. 게이트웨이

  • 종류가 다른 네트워크, 통신망, 프로토콜 간의 통로의 역할이다.
  • 클라이언트로부터 수신한 요청을 리소스를 보유한 서버(오리진)인 것처럼 수신한다.
  • 동작은 프록시와 유사하나, 게이트웨이 다음에 있는 서버가 HTTP 이외의 서비스를 제공하는 서버가 된다.
    • HTTP 트래픽을 다른 프로토콜로 변환하는 것으로 이해할 수 있음
  • 클라이언트와 게이트웨이 사이를 암호화해 안전하게 접속해, 통신 안전성을 높이는 역할
    • DB에 접속해 SQL 쿼리해 데이터를 얻는 곳으로 이용
    • 쇼핑 사이트 등에서 신용 카드 결제 시스템 등과 연계

3. 터널

  • 서로 떨어진 두 대의 클라이언트와 서버 사이를 중계하며 접속을 주선하는 중계 프로그램
  • HTTP 요청을 해석하지 않고, 요청 그대로 다음 서버에 중계함
  • SSL과 같은 암호화 통신으로 다른 서버와의 통신을 중계
    • 투명한 존재, 클라이언트가 의식할 필요가 없다.

리소스를 보관하는 캐시

캐시는 프록시 서버 or 클라이언트의 로컬 디스크에 보관된 리소스의 사본이다.

  • 캐시 서버는 프록시 서버의 하나로 캐싱 프록시로 분류된다.
  • 오리진 서버가 매번 같은 요청을 처리할 필요가 없어서 효율적이다.
  • 하지만 오리진 서버의 리소스가 갱신될 수 있기 때문에, 캐시가 있더라도 클라이언트의 요구나 캐시 유효 기간에 의해 오리진 서버에 유효성을 확인하거나 새로운 리소스를 획득하러 가는 경우가 있다.
  • 브라우저 캐시: 클라이언트가 로컬 디스크에 가진 캐시
  • 같은 서버, 같은 IP 주소의 웹 서버에서 다른 도메인 실행이 가능하다
  • 이 때 DNS로 이름을 해결하면 같은 수신인이 된다.