【ICE】网络通信协议

简介

ICE协议是一种NAT穿透技术,用于通过offer/answer模型建立的基于UDP的流媒体传输场景(可以扩展来处理其它协议如TCP)。ICE协议是offer/answer模型的一种扩展,使用在SDP offers和SDP answers中提供的多个ip地址及端口工作,这些IP及端口会被用于连通性检查(connectivity check)。 连通性检查通过修正过的STUN协议[Session Travelsal Utilities for NAT]进行。与 STUN 和 TURN 不同,ICE 不是一种协议,而是一个框架(Framework)并整合了 STUN 和 TURN。

案例

典型的ICE使用场景中会有两个需要进行通信终端(endpoint)叫做agent。这个两个agent能通过使用一些信令如sip来进行间接的SDP信息交换。 ICE启动时,两个agent都位于各自的NAT,而且NAT的类型及属性未知,以至于agent并不知道他自身的网络拓扑结构,但是ICE允许agent去发现他自己的拓扑结构和找出两个agent之间可能进行通信的所有网络路径,然后这个两个agent能通过offer/answer模式来交换SDP信息,一般的这个SDP信息交换是通过sip服务器来进行的。

ICE通讯流程

1.内网直接通信

如果两个对端是在同一个局域网内,那么这俩就直接通过这个本地的IP地址就可以进行通讯。

2.穿越NAT

终端首先访问STUN服务,通过STUN服务,能获取到NAT映射后的终端的公网地址(IP+端口)。

并且终端双方可以通过服务器,获取得到对方的公网地址,就可以进行NAT穿越了!!

那如果穿越成功了,他们也直接就能通过NAT进行通讯了。

3.TURN服务进行中继

走中继。那这个终端通过NAT将数据转给TURN中继,中继服务,再向另外一个端去转发数据。

那是不是就这三个呢?其实不是啊,在这个终端上其实可能是多网卡。所以有可能是四个,但是可能有那个VPN那就有五个,有可能是虚拟IP那六个。其实每一个都要做一些尝试,ICE的基本的功能就是第一步,要收集终端双方所有的通路(因为终端可能包含多个网卡,必定包含多个通路),那么第二步就是对所有通路进行检测,看能不能通,那通了之后,那么ICE的这个工作就算结束了。

特点

长链接

ICE 会每隔 15 秒通过使用中的候选传输地址发送连接检查,以确保 NAT 映射以及过滤规则不在媒体会话期间超时;这样当媒体暂停或因其他原因没有发送的情况下,仍有数据包可以持续发送;

若媒体会话仍处于活动状态,对端 ICE 代理会生成 STUN 响应,若本端 ICE 收到此 STUN 响应则表明仍可继续发送媒体数据;若本端 ICE 没有收到 STUN 响应则停止媒体流,此时需要重启 ICE

总结:本文对ice只是进行初步表面的了解,如有不妥之处,请多多包涵

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值