隧道协议

SSH

SSH 隧道可以通过加密频道将明文流量导入隧道中。为了创建SSH 隧道， SSH 客户端要设置并转交一个特定本地端口号到远程机器上。一旦 SSH 隧道建立，用户可以连到指定的本地端口号以访问网络服务。本地端口号不用与远地端口号一样。
SSH 隧道提供一个绕过防火墙，从而连到某些被禁止的互联网服务的的方法。例如，一个组织可能会禁止用户不通过组织的代理服务器过滤器，而直接访问网页（端口号80 ），用于监视或控视用户浏览网页。用户可能不希望让他们的网页流量被组织的代理服务器过滤器所监控或阻挡。如果用户能连到一个外部的SSH 服务器，就有可能创建SSH 通道，将某个本地端端口号连到远程网页服务器的端口号：80 。要连到远程网页服务器，用户可以将他们的网页浏览器指到http://localhost/。
有些 SSH 客户端支持动态端口发送，允许用户创建SOCKS代理服务器。用户可以设置他的应用程序去使用他们的区域SOCKS 代理服务器。这比创建一个连到单一端口号的SSH 隧道更有弹性。使用 SOCKS ，用户可以不被限制只能连到事先定义的端口号和服务器。

规避防火墙

一个被防火墙阻挡的协议可被包在另一个没被防火墙阻挡的协议里，如HTTP。如果防火墙并没有排除此种包装，这技巧可用来逃避防火墙政策。隧道可按要求创建起一条与其他服务器的通信线路，届时使用SSL 等加密手段进行通信。
另一种基于HTTP 的穿隧方法使用超文本传输协议的 CONNECT 方法：
客户端提交HTTP 的 CONNECT 命令给代理服务器，代理服务器会建一个TCP 连线到特定的 服务器端口，并转送服务器端口和客户端连线之间的数据。因为这会制造安全漏洞，HTTP 代理服务器通常会限制CONNECT 命令。通常只允许基于TLS/SSL 的 HTTPS 服务。隧道本身不会去解析HTTP 请求。也就是说，请求保持原样中转给之后的服务器。隧道本身是透明的，客户端不用在意隧道的存在。