为什么代理足够时需要nat?[关闭]


8

我的机器在本地局域网中连接。要连接到Internet,流量将通过代理服务器。我对代理服务器的理解是,它代表原始请求发送者发送请求。因此,当服务器答复时,它将答复发送给代理,以为它是客户端。然后,代理将答复转发到我的机器。
网络地址转换为例。您的请求通过nat路由器进行。然后,nat路由器为您提供一个公共IP地址,并将此映射存储在其表中。答复(来自服务器)被发送到此分配的公共地址。哪台nat路由器将从表中解析为您的本地ip地址,并将答复转发给您的计算机。
我的问题是,当代理服务器本身能够介导流量并为您提供访问互联网的权限时,为什么不需要?


1
一个澄清-NAT路由器不您提供公共IP地址。它只是重新编写您的数据包,就好像它们来自其自己的公共IP而不是来自客户端的IP。然后,将答复数据包发送回外部IP NAT,然后再使用客户端的IP重新重写数据包,并将其转发。
EEAA 2012年

Answers:


5

MadHatter为代理和NAT之间的差异写了出色的外行解释。

有关更多技术细节,建议您阅读OSI模型和TCP / IP模型。Nat在OSI模型的后3个层(在这种情况下为网络层,即IP)上运行,代理通常在7层(应用层,HTTP或您要代理的任何层)上运行。

NAT和代理也试图解决稍微不同的问题。NAT在一些公共IP后面隐藏了许多专用IP,以缓解IP地址的短缺,而代理服务器出于安全,审核或性能方面的考虑,正在创建网络“阻塞点”


一直有人告诉我NAT在第3层和第4层中
起作用-Codeaviator

@codeaviator一个公正的评论-我
敬请

15

在我看来,您已经很好地掌握了基础知识,简单的答案是,如果您使用具有公共地址的代理,则不需要NAT-对于由代理介导的协议。

但是,天地上的协议要比您的哲学所梦dream以求的多。并非所有这些代理都是可代理的,并且即使存在代理也并不存在,因此NAT对于这些代理来说是一个方便的后备。

编辑:代理是在应用程序级别上工作的计算设备。HTTP代理接收对远程站点的HTTP请求,正如您所指出的,它会转到该站点本身并发出请求,然后将答案传递回请求的客户端。但是它必须详细了解HTTP才能做到这一点。

同样,您可能编写了FTP代理,但必须正确理解MKD,DELE,LIST和类似的ftp协议命令的详细信息,才能正确代理客户端的请求。任何想要透明地工作的代理通常都必须深入了解协议的内部,才能代理该协议。

SOCKS在某种程度上是该规则的一个例外,但这是因为SOCKS协议为代理设置了更通用的接口,要求每个客户端都经过SOCKS认证,因此能够对SOCKS代理提出正确的请求以便进行设置。每种代理所需的代理,这并不完全透明。


您所说的“不可行的协议”是什么意思?
suraj 2012年

@MadHatter:不代表您的意思是什么?将代理ip作为默认网关还不够吗?
阿什温

提出另一个方面:对于非技术用户,当代理必须在客户端“安装”时,NAT应该开箱即用(透明)。
没人

@没人-不是。透明代理非常普遍,并且需要在客户端上进行零配置。
EEAA 2012年

2
@没人-您的理解是错误的。NAT和代理(无论是否透明)是完全不同的技术。
EEAA 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.