首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >视频聊天功能如何穿透NAT

视频聊天功能如何穿透NAT

作者头像
普通程序员
发布2019-10-23 11:43:31
1.5K0
发布2019-10-23 11:43:31
举报
文章被收录于专栏:普通程序员普通程序员

视频类的功能,基于性能、流畅度等方面的原因,协议需要选用UDP(视频可以容忍偶尔不清晰,UDP丢包;不能容忍卡顿,TCP重传)。

《NAT是怎么回事》中介绍了NAT基本概念。由于NAT没有强制性标准,在实际应用中有多种类型。根据内网地址到外网地址的映射是1对1,还是1对多,NAT可以分成两大类:Cone NAT(锥型)和Symmetric NAT(对称型),锥形还能细分多种子类型。

本文只介绍NAT穿透原理,不纠结于具体NAT类型,因此选用比较简单的全锥形来进行讨论。如下图,A、B两个客户端分别通过NAT A(对应外网地址eA)、NAT B(eB)接入网络。A和B都只知道自己的内网IP地址,不知道eA,eB的公网地址,因此A和B无法简单的相互建立连接,视频类数据量大,也不能都通过服务器中转。因此需要在公网上设置一个Server,辅助A、B建立连接。

A、B建立连接步骤如下

1、A向Server发送数据包询问 NAT A 的公网地址

2、Server向A返回 eA (A向Server发过消息,所以Server能找到A,参看《NAT是怎么回事》

3、B向Server发送数据包询问 NAT B 的公网地址(A可通过IM系统发送文本消息给B,协同B一起向Server发起询问)

4、Server向B返回 eB

5、Server向A返回 NAT B外网地址eB

6、Server向B返回 NAT A外网地址eA

至此,A、B均得到对方对应的外网地址,可以直接向对方投递数据了。比如A向B发送数据,A只需要向eB发送数据,NAT B会将数据转发给B。

以上只是基本原理,还有很多细节需要处理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 普通程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档