proxy server
- proxy server란?
프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용프로그램을 말한다.

- 캐시

- 서버와 클라이언트 사이에 대리로 통신을 수행하는 것 :
프록시
- 대리로 통신을 수행하는 기능을 하는 것 :
프록시 서버
- 빠른 기억장치에 느린 기억장치의 내용 중 최근에 사용한 일부를 넣어두는 것 :
캐시
💡 프록시 서버의 주요 특징
- pc와 외부 인터넷 사이의 징검다리 역할
- 중계를 해주므로 외부 인터넷에서는 client의 정보를 알 수 있음
- 시스템에 방화벽을 가지고 있는 경우 외부와의 통신을 위해 만들어 놓은 서버
- 프록시 서버는 보안 상의 목적으로 설치되는 경우가 많으나, 단순히 보안상의 이유만으로 설치 되는 것은 아니다.
- 프록시 서버의 목적
- 보안 : 익병의 사용자가 서버에 접근하는 것을 막음
- 속도 : Proxy 서버는 사용자의 요청을 Cache해서 동일 요청이 들어오면 Cache 자원을 반환, 서비스의 속도를 높여줌
- ACL(access control list) : 사이트 접근에 대한 접근 정책을 정의함
🤔 프록시 서버가 필요한 이유
- 보안
- 프록시 서버를 거치게 되면 다른 익명의 사용자는 서버의 위치를 알아내기 쉽지 않다. 즉 서버 IP를 숨기는 것이 가능하고, 외부로부터 위험을 막아주는 역할을 한다.
- 캐시
- 바로 이전에 했던 요청들을 저장(캐시)해두어 재요청을 보낼 때 서버를 거치지 않고 데이터를 주고 받을 수 있어 속도가 더 빨라진다.
- 우회
- IP주소를 감출 수가 있기 때문에 어느 곳에서 접속한지 숨길 수 있다. 따라서 IP를 통해 접속을 감지하는 사이트를 프록시 서버를 통해 우회할 수 있다.
🖥 프록시 서버의 종류
1. Forward Proxy
보안을 위해 사용되는 방식으로, 클라이언트에서 요청할 때 직접 요청하는 것이 아닌 프록시 서버를 거치는 방식이 포워드 프록시 이다.

2. Reverse Proxy
서버에서 클라이언트 직접 데이터를 전달하지 않고 프록시 서버를 거치는 방식이 리버스 프록시 이다.

Part I: Implementing a sequential web proxy
- 프록시를 구성하여 들어오는 연결을 수락하고, 요청을 읽고 구문을 분석한다.
- 웹 서버에 요청을 전달하고 서버의 응답을 읽고 해당 클라이언트에 응답을 전달한다.
✨목적 : HTTP 동작 및 소켓을 사용하여 네트워크 연결을 통신하는 프로그램을 작성하는 방법을 배운다.
Part II: Dealing with multiple concurrent requests
- 순차적 프록시가 작동 중이면 여러 요청을 동시에 처리하도록 프록시를 변경
✨목적 : 동시성 처리에 대한 이해를 높이며, 시스템에서 중요한 개념 중 하나인 동시성을 다루는 방법을 배운다.
Part III: Caching web objects
- 최근 액세스한 웹 콘텐츠의 간단한 메모리 캐시를 사용하여 프록시에 캐싱을 추가
ref) proxy 서버란?