云计算百科
云计算领域专业知识百科平台

WebRTC服务器Coturn服务器中的通信协议

1、概述

作为WebRTC服务器,coturn通信协议主要是STUN和TURN协议

STUN&TURN协议头部都是20个字节,用 Message Type来区分不同的协议

|——2——|——2——|————4————|————————12————————-|—————————–x————————-|

|–消息类型–|–消息长度—| ——魔法cookie——–|———————–事务ID———————-|———————属性————————|

备注: 内容部分的属性,每个属性都由(类型(2)、长度(2)、值(x))三个部分组成,其中类型占用2个字节,长度2个字节,值(x),根据长度定义

2 STUN协议

探测客户端NAT映射地址, 主要是获取客户端的公网地址

2.1 Binding Request

获取客户端的公网IP和Port

Message Type: 0x0001

eg: 抓包数据

说明这个binding request的长度就是20个字节,Message Length为0,说明内容部分为可变长度为0,也即属性没有

2.2 Binding Response

Message Type: 0x0101

返回客户端的公网IP和端口

eg:

\\

XOR-MAPPED-ADDRESS‌:

表示客户端经过NAT转换后的公网IP地址和端口(通过异或运算加密处理),用于后续P2P通信的地址交换。此属性用于取代旧版协议中的MAPPED-ADDRESS以提高兼容性‌

MAPPED-ADDRESS

表示客户端在NAT后的公网IP地址和端口(明文形式)。在旧版STUN(RFC3489)中使用,新版协议(RFC5389)已逐渐用XOR-MAPPED-ADDRESS替代

RESPONSE-ORIGIN

表示STUN服务器发送响应时使用的源IP地址和端口。客户端可通过此字段验证响应是否来自合法的服务器,防止伪造响应‌

OTHER-ADDRESS

表示服务器提供的备用地址或端口,通常用于冗余或负载均衡场景。例如,当主服务器地址不可达时,客户端可尝试使用此备用地址

3 TURN协议

3.1 Allocate

分配中继地址与端口

3.1.1 Allocate Request

Message Type: 0x0003

Message Length: 8 表示内容属性部分为8个字节长度, 其中属性值为UDP(0x11),类型(2),长度(2)

3.1.2 Allocate Response

Message Type: 0x0113

Message Length: 52,报告401错误,未授权,需要第二次Allocate Reqest带上用户名跟密码,第一次其实是客户端请求返回nonce和realm,第二次的Alocate请求才是真正验证数据

3.1.3 第二次 Allocate Request请求

Message Type: 0x0003

3.1.4 第二次Allocate 的响应(对应4.2.1.3的请求)

Message Type: 0x0103

XOR-RELAYED-ADDRESS

中继服务器的地址和端口

XOR-MAPPED-ADDRESS

客户端的地址和端口

LEFETIME

中继地址的有效期,客户端必须在这个时间过期之前发送REFRESH请求续期

MESSAGE-INTEGRITY

消息签名-防篡改,基于HMAC-SHA1算法

3.2. Channel Binding

优化数据包传输效率

3.2.1 Channel Binding Request

Message Type: 0x0009

3.2.2 Channel Binding Response

Message Type: 0x0109

3.3 Create Permission

授权对等端通信权限

3.3.1 Create Permission Request

Message Type: 0x0008

3.3.2 Create Permission Response

Message Type: 0x0108

3.4 Send Indicate

利用中继,测试两端数据是否通,发送连通性报文

3.4.1 Send Indicate Request

Message Type: 0x0016

3.4.2 Send Indicate Response

Message Type: 0x0017

赞(0)
未经允许不得转载:网硕互联帮助中心 » WebRTC服务器Coturn服务器中的通信协议
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!