专业IM即时通讯软件开发,值得信赖!

视频聊天功能如何穿透NAT

未分类 云聊IM 1772℃

视频类的功能,基于性能、流畅度等方面的原因,协议需要选用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. 1、A向Server发送数据包询问 NAT A 的公网地址
  2. 2、Server向A返回 eA (A向Server发过消息,所以Server能找到A,参看《NAT是怎么回事》)
  3. 3、B向Server发送数据包询问 NAT B 的公网地址(A可通过IM系统发送文本消息给B,协同B一起向Server发起询问)
  4. 4、Server向B返回 eB
  5. 5、Server向A返回 NAT B外网地址eB
  6. 6、Server向B返回 NAT A外网地址eA

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

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

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。
喜欢 (0)
仿微信聊天软件开发
点击这里给我发消息