3G网络中的NAT如何工作

3

1) 当我使用Android手机连接3G时,可以从Google上检查到我的公共IP地址为1.39.1.85,而我手机的本地IP地址是通过程序获取的10.145.15.50。

2) 这两个地址是如何分配的?由BTS还是NAT?

3) 两个移动设备是否可能具有相同的公共IP地址?

4) 我了解NAT和防火墙。

我尝试了UDP打洞:

A)使用移动设备A,我向一个UDP服务器Java程序发送了一个UDP数据包,该程序捕获其公共IP和端口。 b)使用移动设备B,我向一个UDP服务器Java程序发送了一个UDP数据包,该程序捕获其公共IP和端口。 c)每次我在服务器收到一个数据包时,我都会回复一个UDP数据包,并且我能够在移动设备上接收到回复。 d)但是当我尝试交换每个移动设备的IP和端口并发送数据时,在任一移动设备上都无法接收到任何数据。

这里的确切问题是什么?请尽可能详细地解释。

2个回答

4
在第四点中,你提到了你了解NAT和防火墙。那么你应该也知道IPv4的短缺问题。 所以,在你的供应商那里,移动节点会得到一个私有IP地址(来自G3供应商的DHCP服务器),而公共地址只是供应商从其互联网供应商那里获取的地址。 NAT的整个意义在于多个设备共享同一个公共IP地址,因此如果它们在相同的供应商可能在同一区域内(连接到同一台发射机/天线)上,两个移动设备可以拥有相同的公共IP地址。 NAT的整个意义在于尽可能多地将设备置于一个公共IP地址后面。您可能已经获得了此私有IP范围内的DNS服务器,并且最有可能,像HTTP这样的流量是通过透明代理运行的。您不知道,但是您的许多连接甚至从未到达过互联网,如果代理中的内容足够新(但这是另一回事)。 现在,如果两个(或更多)设备在NAT路由器(ca和cb)后面访问两个不同的网站(sa和sb)。路由器可以选择使用其公共IP地址上的相同端口将请求发送到服务器,对于该公共IP地址/端口组合的答案返回到路由器是很容易区分的:从sa的流量必须转发到ca,而来自sb的答案则转发到cb。 这样,客户端创建的端口翻译只能由客户端最初访问的服务器使用。 小型家用路由器可能有10个设备(我的小型家庭网络上次统计了30个)与之相连,它们与大电信提供商使用的大型设备是完全不同的生物。我们的家用路由器不必非常节俭地使用其65,000多个可用公共IP端口。这对于大电信提供商来说是另一回事。因此,虽然家用路由器上的端口转换可以非常可预测,但对于大型电信提供商来说却不是这种情况。 在“如何工作的团队查看器”上搜索一下。您将发现团队查看器严重依赖于路由器的端口转换的可预测性。 在10%(或更多)的连接中,直接连接是不可能的,整个会话都通过服务器运行。服务器与每个客户端进行双向通信(就像在请求后接收网站一样),并且在服务器端,一个连接的信息被转发到另一个连接并返回。 这回答了您的问题吗?

请澄清一件事情, 当NAT是以下类型之一时:
  1. 全锥形(Fullcone)。
  2. 地址限制型(Address Restricted)。
  3. 端口限制型(Port Restricted)。 内部网络到外部网络的任何数据包都使用相同的映射,或者如果没有映射,则创建一个新的映射。但是对于地址限制型和端口限制型的NAT,当来自外部主机的数据包到达时, 1)它如何知道它以前是否已经向该源主机发送过数据包,因此至少应该有一条先前的记录,对吗? 2)此条目是否以相同的外部端口进入NAT,或者防火墙是否具有某种映射条目?它如何记住?
- Raj

4

我不知道全锥形,地址限制和端口限制这些术语。所以我也在学习。

很好的解释

事情是这样的:

路由器从一张空白的废纸(读取端口转换存储器)开始。它就像内存中的一张表格。 当从本地 LAN 到公共 IP 空间发起连接时,将在此表格中创建一条记录: TCP/UDP、源IP、源端口、已转换端口、目标 IP、目标端口。

这个表格有两个用途: - 当启动新连接时,路由器需要知道已转换端口、目标 IP 和目标端口组合是否仍然空闲(否则无法区分传入流量) - 当来自互联网的流量返回时,“来源”和“目标”当然会被反转,因此传入的数据包目标 IP、源 IP、源端口应与当前转换表中的已转换端口、目标 IP、目标端口记录相匹配。路由器可以在数据包上翻转魔法,将目标 IP (公共 IP 路由器)替换为原始的源 IP,端口也同理。

对于 TCP 连接,只要连接关闭,就可以删除此转换记录。TCP 使用 sys/sys-ack/ack 来启动连接,并且还有一种清晰的方法来说再见。

对于 UDP,情况会有些棘手。UDP 是无连接的。因此,路由器将不得不保持转换记录一段时间。

它可能会在每次使用规则(传入或传出)时更新时间戳。

最好也为 TCP 连接这样做。如果 TCP 连接长时间不使用,应该删除转换记录。

所以,这只是路由器的老样子。 (让你对这些事情产生一些尊重。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接