摘要:穿透的协议穿透协议系列介绍了协议协议版本变化属于的协议通过与之间发送数据包通信以获取一些信息。同样和交互其作用是穿透失败使用中继,确保通信成功的低优先级策略。
UDP NAT穿透俗称p2p打洞。
讲到NAT, 追溯一下NAT产生原因:使用ipv4的时候,地址数量有限,NAT设备可以让接上它的其他设备在其上共享ip,缓解地址不够用。当然ipv6的概念早就来临了,国内推广的程度和推广慢原因这里就先忽略,下面介绍一下NAT穿透以及实现。
NAT的类型(NAPT)
完全锥型(Full Cone)
内部地址[internal_ip:internal_port]通过NAT映射外部地址[external_ip:external_port], NAT分配端口后,所有外部设备可以通过这个[external_ip:external_port]和[internal_ip:internal_port]通信
受限锥型(Restricted Cone), 或者说是IP受限锥型
内部必须主动链接外部, 被访问的目标设备[tag_exrenal_ip:*]可以与之任意端口通信, 而其他外部IP则不能
端口受限锥型(Port Restricted Cone), 或者说是IP + PORT受限锥型
在受限锥型的基础之上,对端口进一步约束;目标设备[tag_exrenal_ip:tag_port1]可以与之通信,而[tag_exrenal_ip:tag_port2]不行
对称型(Symmetric)
每次对外访问, NAT映射外部地址[external_ip:external_port]的端口均不一样。如: 当主机A访问主机B, A的IP被映射为[ip:port1]后; 当主机A访问主机C, A的IP被映射为[ip:port2]后。
穿透NAT的协议
Google穿透协议[RFC3489][RFC5766]系列介绍了[STUN][TURN]协议(协议版本变化),属于 client-server的协议,通过client与server之间发送数据包,通信以获取一些信息。
STUN
STUN-client位于NAT后面,它通过与STUN-server交互,发送接收[协议的]数据报,可以通过抓包 简略查看(比如tcpdump)交互过程,最终将NAT类型和内外二元组返回给STUN-client。当然详细的 通信过程,查看goole定义RFCxxxx的协议,最好结合开源的client实现结合。
TURN
TURN-client同样和server交互,其作用是穿透失败,使用中继,确保通信成功的低优先级策略。 就是实际数据中转的传输中心,当然如果TURN存在NAT,需要支持hairpin。协议简要概括:client Allocate请求、创建Permission、建立Channel等等,通过在TURN-server上分配一个Port,作为 己方的一个候选通信 [ip:port]。
ICE
穿越协议[RFC5245],可以理解为对STUN和TURN的扩展,利用STUNTURN client收集、检查、优 先级本地候选地址,用于其他peer使用并用于连接。
NAT穿透实现
试验几个组件
1.STUN服务器使用google开放stun.l.google.com:19302 2.TURN使用开源coturn,主机阿里云即可,支持hairpin 3.客户端实现,使用开源ice4j(实现了STUNTURN的client,协议版本可能有异)
架构
流程
step1:通过ice4j获取候选[ip:port] step2:通过login-server权限校验以及SDP交换 step3:检测彼方SDP,进而通信,ice完成
结语
UDP穿透成功,两端位于对称NAT后,这里没有使用生日攻击等端口预测,通过realy可以通信
测试源码
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70972.html
摘要:为了使连接起作用,对等方必须获取元数据的本地媒体条件例如,分辨率和编解码器功能,并收集应用程序主机的可能网络地址,用于来回传递这些关键信息的信令机制并未内置到中。所有特定于多媒体的元数据都使用协议传递。 这是专门探索 JavaScript 及其所构建的组件的系列文章的第 18 篇。 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! 如果你错过了前面的章节,可以在这里...
摘要:网络地址转换,其基本工作原理是当私有网主机与公共网逐渐通信的经过网关时,将包中的源或目的在私有和的公共之间进行转换。由于包的源已经被转换成的公共,响应的包将被发送到。对于通信双方而言,这种地址的转换过程是完全透明的。 一:为什么需要NAT 由于IP地址随着互联网的发展而逐渐稀缺,难以使得每台主机都拥有一个公网上的IP地址,且并不是所有主机都需要一个公网上的地址,于是就有了NAT技术。 ...
阅读 2686·2021-11-25 09:43
阅读 2040·2021-11-18 13:25
阅读 4464·2021-09-22 15:52
阅读 1708·2021-09-22 15:49
阅读 2132·2019-08-30 15:54
阅读 2881·2019-08-29 17:13
阅读 2259·2019-08-29 16:54
阅读 2136·2019-08-29 12:58