나는 그것에 대해 생각 은 "CONNECT"HTTP 방법 .
이 메커니즘에서 클라이언트는 HTTP 프록시 서버에 TCP 연결을 원하는 대상으로 전달하도록 요청합니다. 그런 다음 서버는 클라이언트 대신 연결을 진행합니다. 서버가 연결을 설정하면 프록시 서버는 클라이언트와의 TCP 스트림을 계속 프록시합니다. 초기 연결 요청 만 HTTP입니다. 그 후에 서버는 단순히 설정된 TCP 연결을 프록시합니다.
마지막 문장이 열쇠입니다. 에 proxy1
대한 프록시 연결을 요청 합니다 proxy2
. 그런 다음 모든 간다 proxy2
통해 proxy1
더 이상 해석하지 않는, 그래서 당신은에 프록시 요청 proxy3
이 요청을 잡아서으로 해석됩니다 proxy2
. 다음 CONNECT 요청 (프록시로 전송 proxy4
)은 및를 통과 proxy1
하고 – 등 proxy2
으로 해석됩니다 proxy3
. 체인의 모든 프록시는 정확히 하나의 CONNECT 요청을 해석 합니다 .
모든 프록시가 초기 패킷 체인으로 올바르게 설정되면 양방향 TCP 연결을 사용하는 모든 항목이 CONNECT 터널을 통과 할 수 있습니다.
조심해
모든 HTTP 프록시 서버가이 기능을 지원하는 것은 아니며 동작을 제한하는 서버도이 기능을 지원합니다.
최종 참고 사항 : 실험하는 동안 실행하는 프로그램이 CONNECT 대신 GET을 사용하면 프록시를 체인화하는 데 문제가있을 수 있습니다. GET은 체인을 허용하지 않습니다 . 여기에서 다룹니다 . 프록시 체인에 대한 혼동은 GET 메커니즘에 대해 더 잘 알고 있기 때문일 수 있습니다 (즉, 생각하면).