NAT穿透详解

news/2024/11/7 20:38:58/

1.引言

​ 要实现两台内网主机进行通信,常规的方案如下:

客户端A<------------>服务端<------------>客户端B

​ 服务端提供转发监听服务,需要有固定公网IP和端口。客户端A和B分别连接服务端,数据通过服务端进行转发。典型的应用包括FRP和NGINX的反向代理。

​ 但这样的问题:所有数据都需要经过服务端进行转发,当数据过大时,服务端压力会特别大。

2.NAT穿透原理

​ 所有TCP/UDP通信,都存在以下几个要素源MAC、目的MAC、源IP地址、目的

​ 想知道内网穿透实现原理,先弄清楚我们平时在网络冲浪的时候,数据是如何发到服务器的又是如何接受到数据的?我相信大家都知道,我们客户端在发送数据给服务器的时候,首先服务器的ip地址和端口我们是事先知道的,服务器接收到客户端的数据请求的同时也获取到了客户端的公网ip地址和端口,然后服务器根据客户端的公网ip地址和端口返回数据。
​ 因为IPV4的地址太少了,不可能每个设备都有一个固定的公网IP地址,所以运营商会在一个固定区域内设置NAT网关服务器(拥有公网IP地址)。

例子:

网络结构:客户端A<->Nat网关A(10.2.6.4.1)<->服务端(182.154.3.21)<->Nat网关B(10.3.5.7.8)<->客户端B结构说明:服务端的182.154.3.21为固定公网IP地址;客户端A连接服务端:客户端A内网192.168.10.2:5125,经过Nat网关A被映射为公网10.2.6.4.1:52145客户端B连接服务端:客户端B内网192.168.20.3:8547,经过Nat网关B被映射为公网10.3.5.7.8:68541
传输说明:当服务端发送数据给10.2.6.4.1:52145,就会被转发到192.168.10.2:5125,最后由客户端A接收。同样适用于客户端N。

​ 按上面例子的原理,NAT穿透的步骤如下:

  • 客户端A和客户端B分别主动和服务端建立好连接;
  • 服务端分别告诉客户端A和客户端B对端的公网IP和端口;
  • 客户端A和客户端B分别将数据送往对方的公网IP和端口,从而实现了互相通信,这也是P2P网络的经典实现方法

3.NAT

3.1.工作原理

​ NAT缓解了IPV4地址不够用的问题,同时也带了限制:那就是NAT外部的主机无法主动跟位于NAT内部的主机通信。NAT内部主机想要通信,必须主动和公网的一个IP通信,路由器负责建立一个映射关系,从而实现数据的转发, 这就是NAT的工作原理。

3.2.NAT分类

3.2.1 基础型NAT

​ 仅将内网主机的私有IP地址转换成公网的IP地址,并不将TCP/UDP端口信息进行转换,分为静态NAT和动态NAT。

3.2.2 NAPT

​ NAPT不但会改变经过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。

3.3.2.1.锥型NAT

1.Full Cone NAT(全锥型)
内网主机和外网建立socket时,NAT会给其分配一个外网地址(IP:端口)。任何主机想要发送数据给这个内网主机,只要知道这个外网地址(IP:端口)就可以了。

2.Restricted Cone NAT(地址限制圆锥型NAT)
内网主机和外网建立socket时,NAT会给其分配一个外网地址(IP:端口)。任何主机想要发送数据给这个内网主机,需要知道这个外网地址(IP:端口),且内网主机之前用这个外网地址(IP:端口)曾向这个外部主机IP发送过数据。需要同时满足这两个条件,这个外部主机就可以发送数据给内网主机。

3.Port Restricted Cone NAT(端口限制圆锥型NAT)
与地址限制圆锥型类似,与之不同的是还要指定端口号。

3.3.2.2.对称NAT

​ NATSymmetric NAT(对称型NAT),对不同的外网IP地址都会分配不同的端口号。

​ 内网主机和外网主机1建立socket时,NAT会给其分配一个外网地址1(IP:端口),如果内网主机同时用这个socket给外部主机2发送数据,NAT会给其分配一个外网地址2(IP:端口)。

​ 如果NAT有多于一个外网IP,则外网IP-1和外网IP-2可能不同;如果NAT只有一个外网IP,则端口-1和端口-2肯定不同。

​ 此外,任何外部主机想要发送数据给这个内网主机,那么它首先应该收到内网主机发给他的数据,然后才能往回发送,否则即使他知道内网主机的一个(PublicIP,Port)也不能发送数据给内网主机,这种NAT无法实现UDP-P2P通信。

3.3.2.3.锥型和对称的区别

​ 对称NAT是一个请求对应一个外网地址1(IP:端口),非对称NAT是多个请求对应一个外网地址1(IP:端口)。

3.3.2.4.安全系数

​ 对称型 > 端口受限锥型 > 受限锥型 > 全锥型

3.3.NAT组合的穿透属性

​ 分别定义Full Cone NAT(完全圆锥型NAT)、Restricted Cone NAT(地址限制圆锥型NAT)、 ort Restricted Cone NAT(端口限制圆锥型NAT)、Symmetric NAT(对称型NAT)的值为1、2、3、4,如下:

1	Full Cone NAT(完全圆锥型NAT)
2	Restricted Cone NAT(地址限制圆锥型NAT)
3	Port Restricted Cone NAT(端口限制圆锥型NAT)
4	Symmetric NAT(对称型NAT)

穿透关系:

​ N为序列号相加,则N<=6可穿透。也就是只有3 和 4 ,以及4和4不可穿透。

3.4.例子:UDP打洞

​ 该例子根据端口限制圆锥型Nat设计一个穿透过程:

网络结构:客户端A<->Nat网关A<->服务端<->Nat网关B<->客户端B
  • 客户端A 和 客户端B分别通过Nat与服务器进行通信,服务端只存储两个客户端的公网IP地址信息;
  • 服务端接收到数据时,分别将户端A 和 客户端B的IP地址信息发送给对方;
  • 客户端A先发送一个探测数据给客户端B的公网IP,客户端B此时接收不到数据。因为根据协议,NatB中的映射没有这条规则,也就是说NatB并没有发送过数据给NatA,那就接收不到来自NatA的数据,但此时NatA添加了一条NatB信息的映射规则。
  • NatB发送一条探测数据给NatA, NatA收到了。因为NatA在上一步骤中发送数据给NatB了,有了这条映射规则;
  • NatA 再发送一条探测数据给NatB,NatB此时也能收到了;
  • 现在,UDP隧道建立成功,可以进行数据传输了。这个过程也叫做UDP打洞;

http://www.ppmy.cn/news/547920.html

相关文章

lm283_飞利浦LED泛光灯具 BVP283 LED户外照明灯具350W 超高功率泛光灯

飞利浦LED泛光灯具 LED户外照明灯具 BVP283 350W 超高功率泛光灯飞利浦LED泛光灯具 LED户外照明灯具 BVP283 350W 超高功率泛光灯飞利浦LED泛光灯具 LED户外照明灯具 BVP283 350W 超高功率泛光灯 飞利浦超值经济型LED泛光照明方案 Tango G2 LED Extension BVP282:16000lm/20000…

lm283_数电_芯片手册_74LS283

June 1989 54LS283󰁋DM54LS283󰁋DM74LS283 4-Bit Binary Adders with Fast Carry General Description These full adders perform the addition of two 4-bit binary numbers󰀟 The sum ( R ) outputs are provided for each bit and the resultant carry (C4) is obtai…

283

论文阅读备份

Spring Security系列之基础概念

文章目录 基本原理Authentication接口UserDetailsService 接口PasswordEncoder 接口 基本原理 SpringSecurity 本质是一个过滤器链&#xff0c;采用的是责任链设计模式。 启动的时候&#xff0c;控制台打印出来的 DefaultSecurityFilterChain 过滤器&#xff1a; org.springfr…

举例说明小批量随机梯度下降的原理

小批量随机梯度下降&#xff08;Mini-batch Stochastic Gradient Descent&#xff0c;简称 Mini-batch SGD 或 MB-SGD&#xff09;是一种在深度学习中常用的优化算法。它结合了批量梯度下降&#xff08;Batch Gradient Descent&#xff0c;BGD&#xff09;和随机梯度下降&#…

Android 9.0 SecureElementService 初始化流程分析

1. 相关名词解释 NFC Near Field Communication&#xff0c;近场通信&#xff0c;一种基于13.56 MHz 的短距离通信技术。 NFCC NFC Controller&#xff0c;NFC 控制器&#xff0c;负责 NFC 无线信号的调制解调 SE Secure Element&#xff0c;安全芯片&#xff0c;拥有独立…

AndroidQ(十)Android Q功能和API

Android Q 功能和 API Android Q 为用户和开发者引入了强大的新功能。本文重点介绍面向开发者的新功能。 要了解新版 API&#xff0c;请阅读 API 差异报告或访问 Android API 参考。为醒目起见&#xff0c;将突出显示新版 API。此外&#xff0c;请务必查阅 Android Q 行为变更…

带4g无线的高性能服务器,全网通还是4G?做一个智能4G的全网通简直完美!

原标题&#xff1a;全网通还是4G&#xff1f;做一个智能4G的全网通简直完美&#xff01; 在2G/3G时代&#xff0c;语音和数据业务分别承载在两张不同的核心网上&#xff0c;控制语音相关的叫电路域(CS域&#xff1a;Circuit Switch)&#xff0c;控制数据业务相关的叫分组域(PS域…