问题标题描述得很清楚
答案1
最简单的答案是端口转发(如 NAT)通常对客户端是透明的,而 SOCKS(或 HTTP)代理要求客户端明确使用代理协议。
答案2
我同意上述定义,但我想补充一点,NAT 和代理的目的完全不同。NAT 只是路由:没有缓存,也没有真正的“监督”(因为找不到更好的词来形容)。代理用于缓存、监控、流量整形。它们主要是控制。
因此,NAT 的开销很小,但没有提供很多选项,而代理的开销要高得多(有时高得多),但允许很多控制。
答案3
NAT 设备执行“地址转换”(元组 [TCP/UDP 端口:IP 地址] 转换为另一个元组),而代理终止(用网络术语来说)协议层,执行适配(再次用网络术语来说)并重建到目的地的另一个连接。
换句话说,NAT 试图尽可能地对客户端协议“透明”,而 PROXY 实际上是“两个背靠背的连接”(两边的协议相同或不同)。