[널널한 개발자 TV] 네트워크 기초 이론: 20 - Proxy의 구조와 작동원리
이 글은 널널한 개발자 TV 님의 강의영상을 보고 작성한 글입니다.
Proxy 구조
일반적인 연결

일반적으로 우리가 어떤 서버(구글, 네이버 등)에 연결을 할 때,
TCP/IP 연결을 하고, 그리고, 이제 보통 웹 사이트에 접속을 하게 되니
HTTP 혹은 HTTPS 프로토콜로 연결이 되어, 접속을 하게 된다.

이렇게 연결이 되면, Socket 통신을 하게 된다.
Proxy

그런데 PC #1번이 PC #2번을 Proxy로 설정을 해버리면,
1번 -> 2번 -> 서버
이렇게 지나가면서 접속을 하게 된다.
이런 구조가 Proxy 구조이다.
자세히

위 그림은, PC #2번에서 Proxy역할을 하는 Process를 그림으로 나타낸것이다.
Proxy Process는 Socket이 두 개가 있다.
하나는 "Listen', 즉 들어오는 것만을 기다리는 역할의 Socket(S1)이 있고,
다른 하나는, 내보내는 역할의 Socket(S2)이 있다.
Proxy Process는 소켓 통신을 한다.
이 말은 무슨말이냐면, User Application 에서의 통신이다.
그렇다면, 데이터 단위는 "Stream"으로 데이터를 주고 받는다.
정리하면,
PC #1(1.1.1.1) -> PC #2(3.3.3.3) (Proxy 프로세스) -> 서버(8.8.8.8)
그리고 Proxy는 socket 통신을 하기에
데이터 단위는 "Stream"으로 주고 받음
또, Socket이 두 개가 있음
S1: Listen, 들어오는 것을 기다리는 소켓
S2: 들어온 데이터를 보내는 소켓
Proxy vs Inline+Out of path
Proxy는 소켓 통신이기에 "Stream"으로 데이터를 주고 받는다.
Inline과 Out of path는 TCP/IP 로 통신을 하기 때문에,
"Packet"으로 데이터를 주고 받는다.
Reference