개발/Proxy

CSAPP : 웹서버 만들기(Week07) - Proxy 개념

coldlee 2022. 5. 26. 22:41

 

프록시(Proxy)

 

1. 프록시(proxy)란 무엇인가?

프록시 : 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것

프록시 서버 : 그 중계 기능을 하는 것

  • 클라이언트와 서버 사이에 위치해 중계기로서 통신을 수행하는 역할
  • 클라이언트가 직접적으로 end server와 연결하여 리소스를 얻는 게 아니라 프록시라는 중간 경로를 통해 통신 수행
  • 프록시는 클라이언트로부터 받은 요청을 end server에게 보내 응답을 받은 뒤, 해당 응답을 클라이언트에게 보낸다.
  • 프록시 종류
    • Forward proxy
    • Reverse proxy

2. Forward proxy

  • 보통 우리가 부르는 proxy : forward proxy.
  • 클라이언트가 서버로 요청할 때, 직접 요청하지 않고 먼저 프록시 서버를 통해 요청하는 방식
  • Foward proxy 특징
    • 클라이언트가 요청한 내용을 캐싱(caching)해준다.
      • 캐싱(caching) : 이전에 요청해서 얻은 리소스를 저장해놓고서 추후 다시 서버로 요청하지 않고도 해당 리소스를 얻는 방식
      • 이렇게 하면 전송 시간을 절약할 수 있고 불필요한 외부 전송을 하지 않아도 되며 서버 입장에서는 외부 요청이 줄어들어 네트워크 병목 현상을 방지할 수 있다.
    • 클라이언트가 누구인지 end server에게 감추는 익명성을 보장할 수 있다.
      • 실제로는 클라이언트가 요청을 보냈으나 end server 입장에서는 마치 proxy가 요청한 것처럼 요청을 한 대상에 대한 정보를 proxy 정보라고 인식하게 할 수 있다.

3. Reverse Proxy

  • Reverse proxy는 클라이언트가 서버를 호출할 때 reverse proxy를 호출하게 되고 proxy server가 end server를 요청하고 받은 응답을 클라이언트에게 전달하는 방식
  • Reverse proxy 특징:
    • 클라이언트 요청 내용 캐싱(Forward와 동일)
    • 서버 정보를 클라이언트로부터 숨겨 보안성 제공
      • 클라이언트는 reverse proxy를 실제 서버라고 생각해 요청을 보내기 때문에 실제 서버의 IP가 클라이언트에게 노출되지 않는다
    • Load Balancing 기능 제공
      • Load Balancing : 클라이언트 요청으로부터 서버 측에 쌓이는 부하를 분산시켜주는 기능
      • 하나의 인터넷 서비스에 발생하는 트래픽이 많을 때, 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 여러 대의 서버들이 적절히 분산처리해 해결해주는 것
    •  

참고 사이트:

[Week 07] web-proxy lab

정글사관학교 51일차 TIL: 프록시, mmap()과 malloc() 차이 정리

https://sunset-asparagus-5c5.notion.site/Webproxy-1f91d8247c604bce9262bc0209053d16