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

相关推荐
大树882 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz3 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工3 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈4 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
施努卡机器视觉5 小时前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
程序猿阿伟5 小时前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome