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

相关推荐
碳基沙盒19 小时前
OpenClaw 多 Agent 配置实战指南
运维
Sinclair3 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
Rockbean4 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
蝎子莱莱爱打怪4 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
茶杯梦轩4 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
简离4 天前
前端调试实战:基于 chrome://webrtc-internals/ 高效排查WebRTC问题
前端·chrome·webrtc
海天鹰4 天前
【免费】PHP主机=域名+解析+主机
服务器
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅4 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
不是二师兄的八戒4 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器