为什么在代理服务器足够的时候需要NAT呢?

我的机器连接在本地局域网中。 连接到互联网的stream量通过代理服务器。 我对代理服务器的理解是它代表原请求发送者发送请求。 所以当服务器回复时,它会把这个回复发送给代理,认为它是客户端。 代理然后将答复转发给我的机器。
networking地址转换为例。 你的请求通过NAT路由器。 NAT路由器然后为您提供一个公共IP地址,并将该映射存储在其表中。 答复(从服务器)被发送到这个分配的公共地址。 nat路由器从表中parsing出本地ip地址,并将答复转发给你的机器。
我的问题为什么是NAT时,代理本身能够调解stream量,并提供您访问互联网?

MadHatter写了一个很好的外行解释代理和NAT之间的区别。

对于更多的技术细节,我build议你阅读OSI模型和TCP / IP模型。 Nat在OSI模型(networking层,在这种情况下是IP)的后面3个操作,代理通常在7层(应用层,HTTP或任何代理)操作。

NAT和代理也试图解决稍有不同的问题。 NAT为了缓解IP地址短缺而隐藏了许多私有IP,而代理正在为安全,审计或性能原因而创buildnetworking“阻塞点”

在我看来,你已经掌握了这里的基本原理,简单的答案是,如果你使用的是一个公有地址的代理,那么你不需要NAT–对于代理调解的协议。

然而, 在你的哲学中,天地里有更多的协议, 并不是所有的代理都是可代理的,即使对于所有的代理也不存在代理,所以NAT对于这些代理来说是一个方便的回退。

编辑 :代理是一个在应用程序级别上运行的计算设备。 一个HTTP代理接收到一个远程站点的HTTP请求,正如你所指出的那样,这个HTTP请求会自动发送到这个站点并发出请求,然后把答案传递给请求客户端。 但是为了做到这一点,它必须详细了解HTTP。

同样,你也可以写一个FTP代理,但是为了正确代理客户的请求,它必须了解MKD,DELE,LIST和类似ftp协议命令的细节。 任何希望透明地工作的代理通常都必须深入了解协议的内部,以便代理该协议。

SOCKS在某种程度上是这个规则的一个例外,但是这是因为SOCKS协议为代理提供了一个更一般的接口,要求每个客户端都被SOCKS化,因此能够做出正确的SOCKS代理请求来设置每个代理需要的代理types都不完全透明。