터널
터널
: HTTP 터널은 어떻게 동작하는가? (CONNECT 메서드)
HTTP 터널링은 주로 웹 브라우저가 방화벽을 통과하여 HTTPS(SSL/TLS) 통신을 해야 할 때 사용되며, 이를 위해 HTTP CONNECT라는 특별한 메서드를 사용합니다.
동작 순서:
클라이언트(웹 브라우저)의 요청:
클라이언트는 중간에 있는 프록시 서버(HTTP 터널 애플리케이션)에게 일반적인 GET이나 POST가 아닌 CONNECT 요청을 보냅니다.
요청 메시지는 이렇습니다: "나, 최종 목적지인
mail.google.com
의443
번 포트와 TCP 연결을 하고 싶으니, 그쪽으로 가는 터널 좀 뚫어줘."CONNECT mail.google.com:443 HTTP/1.1
프록시 서버의 응답:
프록시 서버는 이 요청을 받고, 정책에 따라 허용 여부를 결정합니다.
허용된다면, 프록시는 먼저 최종 목적지(mail.google.com:443)와 TCP 연결을 맺습니다.
연결이 성공하면, 클라이언트에게 "OK, 터널 뚫렸어. 이제부터 데이터 보내면 돼." 라는 의미의 HTTP/1.1 200 Connection established 응답을 보냅니다.
터널을 통한 데이터 전송 (핵심):
이 200 응답을 받은 순간부터, 프록시 서버는 '투명한 파이프' 역할을 합니다.
클라이언트와 최종 목적지 서버 사이에 오가는 모든 데이터(raw data)를 전혀 열어보거나 해석하지 않고 그대로 양방향으로 전달만 해줍니다.
클라이언트와 mail.google.com은 이 터널을 통해 자신들만의 암호화된 통신(TLS 핸드셰이크 및 데이터 교환)을 시작합니다. 프록시 서버는 그 내용이 암호화되어 있어 어차피 들여다볼 수도 없습니다.
Last updated