2026/5/18 15:34:49
网站建设
项目流程
龙口市建设局网站,怎么建设视频网站,北京网站设计价格,施工企业新聘用的项目经理因变更注册申报不及时文章目录为什么需要STUN什么是STUN服务器STUN如何工作STUN如何在SD-WAN网络中应用P2P网络要求通信双方都能主动发起访问#xff0c;但是NAT设备的存在#xff0c;却阻断了这种主动访问#xff0c;导致P2P应用无法正常运行。STUN是一种解决P2P应用NAT穿越问题的常用技术。它允…文章目录为什么需要STUN什么是STUN服务器STUN如何工作STUN如何在SD-WAN网络中应用P2P网络要求通信双方都能主动发起访问但是NAT设备的存在却阻断了这种主动访问导致P2P应用无法正常运行。STUN是一种解决P2P应用NAT穿越问题的常用技术。它允许网络设备找出通信端点经NAT设备后的IP地址和端口号并利用这些信息在通信双方之间建立一条可以穿越NAT设备的数据通道实现P2P通信。为什么需要STUN随着IPv4地址的枯竭NAT功能部署越来越广泛。为了避免来自外部网络的攻击保护网络内部的主机NAT会过滤掉一些外网主动发送到内网的报文。因此NAT技术虽然在一定程度上解决了IPv4地址短缺的问题却破坏了点到点P2PPoint to Point网络的通信。因为在P2P网络中要求通信双方都能主动发起访问而NAT设备的存在却阻断了这种主动访问。为了解决NAT设备给P2P网络带来的问题出现了一些适用于P2P网络的NAT穿越技术。例如反向链接技术、应用层网关ALGApplication Level Gateway技术、打洞技术(Hole Punching)、中间件技术等。NAT会话穿越应用程序STUNSession Traversal Utilities for NAT是一种由RFC定义的网络协议用于检测网络中是否存在NAT设备并获取两个通信端点经NAT设备分配的IP地址和端口号。然后在两个通信端点之间建立一条可穿越NAT的P2P链接实现P2P通信这一过程也被形象的称为“打洞”。STUN无需现有NAT设备做任何改动只需在组网中部署一台STUN服务器操作起来比较简单因此得到广泛应用。什么是STUN服务器STUN采用客户端/服务器通信模式由STUN服务器STUN Server组成和STUN客户端STUN Client组成其中STUN服务器是一个发送STUN绑定响应和接受STUN绑定请求的实体例如路由器STUN服务器通常部署在公网上。STUN客户端是一个发送STUN绑定请求和接受STUN绑定响应的实体例如路由器。STUN典型组网在STUN标准中根据私网IP地址和端口到NAT出口的公网IP地址和端口的映射方式把NAT分为完全锥型NAT、限制锥型NAT、端口限制锥型NAT及对称NAT四种类型。为了方便用户理解这4种NAT类型我们把这4种NAT类型的介绍放在了NAT里详细信息请参见相关词条NAT。STUN如何工作通过STUN客户端与STUN服务器之间的报文交互STUN服务器可以发现NAT设备的存在并获取NAT设备分配给STUN客户端的IP地址和端口号在STUN客户端之间建立一条数据通道。STUN客户端之间建立好数据通道之后客户端之间可以相互访问。STUN的报文交互流程包含NAT探测和打洞两个阶段详细的交互过程如下图所示。STUN报文交互过程NAT探测阶段STUN客户端向STUN服务器发送STUN绑定请求报文Binding Request。STUN服务器收到绑定请求报文后获取请求报文中的源IP地址和源端口并构建STUN绑定响应报文Binding Response发送给客户端。报文中携带MAPPED-ADDRESS、XOR-MAPPED-ADDRESS、RESPONSE-ORIGIN属性。STUN客户端收到STUN绑定响应报文后根据该报文中的MAPPED-ADDRESS或XOR-MAPPED-ADDRESS属性获取IP地址和端口与之前发送的STUN绑定请求报文中的源IP地址和源端口比较如果不一致则STUN客户端前面存在NAT设备。确定探测结果后STUN客户端将结果返回给有需要的业务模块。打洞阶段打洞是指通过中间设备如路由反射器的协助在各自的NAT网关上建立相关表项使P2P连接双方发送的报文能够直接穿透NAT网关的过程。NAT STUN的打洞流程如下STUN客户端通过BGP从路由反射器处获得其他STUN客户端的接口信息包括NAT前后的IP地址和端口信息。当Client1需要与Client2进行通信时Client1会通过BGP通知Client2它们之间需要通过打洞建立数据通道。Client1与Client2互相发送STUN绑定请求进行打洞。Client1使用本端NAT前的IP地址和端口分别与Client2 NAT前和NAT后的IP地址和端口构建STUN绑定请求报文A和B发送给Client2。同时Client2也同样进行相应的操作。Client2收到报文A和B后处理流程如下Client1也类似对于报文A若Client1与Client2在同一个私网中也就是同一个NAT设备后侧则报文A可以成功发送至Client2否则报文A被丢弃。对于Client1发出的报文B经Client1前面的NAT设备1时会生成表项记录Client1到Client2的会话但是由于Client2前的NAT设备2上没有相关表项报文B将会被丢弃。同样的对于Client2发出的报文B经Client2前面的NAT设备2上将会生成表项记录Client2到Client1的会话但是由于Client1前的NAT设备1上没有相关表项报文B也会被丢弃。Client1和Client2持续向对方发送绑定请求报文当NAT设备1与NAT设备2上的会话表项都生成后绑定请求报文就可以成功发送至对端Client。Client2收到STUN绑定请求报文后向Client1发送STUN绑定响应报文Client1也同样进行相应的操作。完成以上报文交互后STUN客户端之间成功建立可穿越NAT的数据通道。STUN如何在SD-WAN网络中应用在SD-WAN解决方案中为了节省IP地址资源分支站点的用户经常会使用私网IP地址通过NAT转换后访问总部。因此分支的网关CPE经常会和NAT设备一起部署。网关CPE发出的报文在经过NAT设备后IP地址会发生变化如果无法获取报文转换后的IP地址则CPE之间的数据通道会建立失败。因此为了实现分支之间业务流量穿越NAT需要在SD-WAN场景中部署NAT STUN功能。SD-WAN的NAT穿越场景在SD-WAN 的NAT穿越组网中路由反射器RRRoute Reflector及分支CPE通过管理通道向网络控制器iMaster NCE发起注册信息。注册成功后RR和CPE被iMaster NCE纳管。CPE通过管理通道向RR发布站点、路由、隧道、NAT转换前后的IP地址和端口号等信息统称为TNPTransport Network Port。分支CPE1与分支CPE2之间通过数据通道传输它们之间的业务流量。由于CPE1和CPE2前面都部署了NAT设备为了实现CPE1和CPE2之间的业务互通需要在RR和CPE上部署NAT STUN功能探测CPE之间是否有NAT设备。并获取CPE1、CPE2设备经NAT转换后的IP地址和端口号建立数据通道转发它们之间的业务流量。分支CPE作为STUN客户端RR作为STUN服务器它们之间的交互过程如下分支CPE向RR发起STUN探测请求发送STUN绑定请求报文。RR给分支CPE回应STUN探测请求发送STUN绑定响应报文。CPE收到RR的STUN绑定响应报文后判断CPE设备前是否有NAT设备。探测成功后CPE将自己的TNP信息通过BGP协议发送给RR并通过RR获取其他CPE的TNP信息。TNP信息里包含了CPE设备经NAT转换前和转换后的IP地址及端口号。获取到TNP信息后CPE之间使用各自NAT转换后的IP地址和端口号建立数据通道传输分支之间的业务流量。