터널은 HTTP를 통해 다른 프로토콜을 통신하는 방법이다
즉, 웹 터널을 사용하면 HTTP를 통해 HTTP가 아닌 트래픽을 전송할 수 있다.

요청 URI는 호스트명이 대신 사용된다
CONNECT example.com:443 HTTP/1.0
User-Agent: Mozilla/4.0
보통 '200 Connection Established' 상태코드를 사용하며, 일반적인 HTTP 응답과는 달리 Content-Type 헤더를 포함할 필요가 없다. (왜냐하면 메시지 전달이 아니라 터널링에 의해 바이트를 전달할 것이기 때문에 컨텐츠 타입은 의미없다)
HTTP/1.0 200 Connection Established
Server: My-Tunnel/1.0
이후 통신은 HTTP 프로토콜이 아닌 서로 협의된 프로토콜에 의해 통신이 이루어진다
웹 터널은 원래 방화벽을 통해서 암호화된 SSL 트래픽을 전달하려고 개발되었다.
443 포트를 지원하지 않는 환경에서 HTTP(80포트)를 통해 HTTPS의 raw 데이터를 실어나르고자 고안된 방법이다. (물론 최근에는 이런 환경은 없겠지만.. 과거에는 있었음)