3G 中的 NAT 是如何工作的

How does NAT in 3G works

1) 在 Android 手机中,当我连接到 3G 时,我得到一个 public 地址 1.39.1.85 我从 google 和我的本地 ip 检查移动设备是 10.145.15.50,我是通过编程方式获得的。 2)这两个地址是怎么分配的?防弹少年团?网络转换? 3) 两个移动节点是否可以有相同的 public IP 地址? 4) 我了解 NAT 和防火墙。

我试过UDP打洞: A) 使用手机 A,我向 UDP 服务器 java 程序发送了一个 UDP 数据包,该程序捕获了它的 public ip 和端口。 b) 使用手机 B,我向 UDP 服务器 java 程序发送了一个 UDP 数据包,该程序捕获了它的 public ip 和端口。 c) 每次我在服务器中收到一个数据包时,我都会用一个 UDP 数据包进行回复,并且我能够在移动设备中收到回复。 d) 但是当我尝试交换每个手机的 IP 和端口并发送数据时。我无法在任何手机上接收任何数据。

这里的确切问题是什么?

请尽可能用技术解释。

在4)中,你说你知道NAT和防火墙的。那你也应该意识到IPv4短缺。

因此,在您的供应商处,移动节点获得一个私有 IP 地址(来自 G3 供应商的 DHCP 服务器,public 地址只是供应商从其互联网供应商处获得的地址。

NAT 的全部意义在于多个设备共享相同的 public IP 地址,因此是的,2 个移动设备可以具有相同的 public IP 地址,特别是如果它们位于同一提供商处en 可能在同一区域(连接到相同的 mast/antenna)。

NAT 的重点是让尽可能多的设备使用一个 public IP 地址。您可能会在这个私有 IP 运行ge 内获得一个 DNS 服务器,并且最有可能的是,像 HTTP 这样的流量是 运行 通过 t运行spa运行t 代理。你不知道,但如果代理中的内容足够新鲜,你的很多连接甚至都无法连接到互联网(但那是另一回事)

现在,如果 NAT 路由器后面的两个(或更多)设备(ca 和 cb)访问两个不同的网站(sa 和 sb)会怎么样。路由器可以选择使用其 public IP 地址上的相同端口将请求发送到服务器,以便在此 public IP address/port 组合上返回路由器的答复很容易区分: 来自 sa 的流量必须转发给 ca,而来自 sb 的答案必须转发给 cb。

这样,客户端创建的端口-t运行slation,只能被客户端首先访问的服务器使用。

小型家用路由器,可能有 10 台设备(我的小型家庭网络最后一次统计有 30 台)与大型电信提供商使用的大型路由器截然不同。我们的家用路由器拥有 65.000 多个可用 public IP 端口,因此不必非常经济。这是大型电信提供商的另一个故事。 因此,虽然家用路由器上的端口 t运行slations 非常可预测,但大型电信提供商的情况并非如此。

Google "how teamviewer works" 一点。在那里你会发现 dat teamviewer 在很大程度上依赖于路由器对 port-t运行slations 的可预测性。

在 10%(或更多)的连接中,直接连接是不可能的,整个会话是 运行 通过服务器。服务器与每个客户端有双向通信(就像在请求后接收网站),在服务器端,来自一个连接的信息被转发到另一个连接并返回。

这是否回答了您的问题?

我不知道 full cone、address restricted 和 port restricted 这些术语。所以我也学习了。

Nice explenation

这是怎么回事:

路由器从一张空白的 sheet 废纸开始(读取端口转换存储器)。就像记忆中的table一样。 当从本地 lan 发起连接到 public IP space 时,会在这个 table 中创建一条记录: , TCP/UDP, from-IP, from-port, translated-port, dest-IP, dest-port

这个table用于两件事: - 启动新连接时,路由器需要知道转换后的端口、目标 IP、目标端口组合是否仍然可用(否则它无法区分传入流量 - 当流量从 Internet 返回时,"from" 和 "destination" 是相反的,因此传入的数据包 destination-ip、from-ip、from-port 应该与转换端口、dest-ip 匹配, 来自当前翻译的目标端口记录 table。然后路由器可以反转数据包上的魔法,用原来的 from-ip 替换 dest-ip(=public IP 路由器),并用端口替换 dito。

对于 TCP 连接,可以在连接关闭后立即删除此翻译记录。 TCP使用sys/sys-ack/ack发起连接,也有明确的say good-bey方式

对于 UDP,事情有点棘手。 UDP 是无连接的。所以路由器必须保持转换记录打开一段时间。

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

最好也为 TCP 连接执行此操作。如果一个TCP连接太久不用,也应该删除translation-record。

所以,只是路由器保留了良好的旧记录。 (给你一些尊重这些东西。)