P2P模块介绍
TUTK P2P协议,是TUTK基于UDP/TCP协议自行开发的一套点对点通信协议,提供了设备快速连入P2P平台和APP方便快捷访问设备的能力。P2P SDK提供了透传的通道,方便接入各种类型的数据,并且提供了丰富的API,方便应用层自由开发各种功能。P2P SDK高效的穿透能力,可以为流媒体传输节省大量服务器成本。
一、常见的概念
SDK License Key: App和设备端SDK配置,用以启动SDK,以及Master服务器 IP地址解析。
UID: 设备端配置,用以平台识别设备的唯一ID。
ServerKey: P2P服务器配置,用以授权该P2P服务器。
P2P License Key: P2P服务器配置,会被用以解析master ip。
Master服务器: 主服务器,用以UID的验证,P2P服务器的管理,分布于中国、亚洲、欧洲、北美等区域。
P2P服务器: 用以管理UID的报到,协助APP连线设备,以及数据转发。全球分布,可以私有化部署。
连接(会话): APP和设备之间的一次访问,直到调用API断开或者异常断开。(了解更多:连接与通道)
连线模式:
- LAN - 局域网模式,即客户端与设备在同一个路由器下面。
- P2P - 点对点通信,即客户端与设备之间直接通信。
- RLY - 转发模式,即客户端与设备端的通信,需要服务器转发。
通道: 连接成功建立后,用以传输数据的管道。(了解更多:连接与通道)
区域: 服务器的区域,终端的区域,主要指地理空间。
VPG: 群组,以VID+PID+GID区分,每个厂商最少会有一个VPG,可以用不同的VPG管理不同的客户或者产品,多个VPG对于分区分流的服务器部署会比较有帮助。
VID: 厂商ID。
PID: 产品ID。
GID: 组ID。
NAT: 网络地址转换协议,NAT类型会直接影响P2P的穿透。
二、SDK的默认数值
| 模块 | 模块简介 | 描述 | 数值 |
|---|---|---|---|
| IOTCAPIs | 提供P2P连线接口和不可靠的传输接口,一般只用作设备报到,设备连线,以及连线的管理,主要操作对象是连线的ID(SID)。 | 最大连接数/个 | 128 |
| APP和设备端默认的心跳超时/秒 | 60(超时会返回-23,-20016等报错) | ||
| APP和设备端默认的心跳间隔/秒 | 1 | ||
| 设备端login心跳间隔/秒 | 40(3.1.10以下是25) | ||
| P2P服务器判定设备logout的心跳超时/分钟 | 5~10 | ||
| 每个连接的最大通道数/个 | 32 | ||
| authkey长度 | 8 | ||
| IOTC连线超时/秒 | 60 | ||
| AVAPIs | 基于IOTC模块来进行封装的数据传输(重传机制可配置),比如图像,声音,控制,状态等信息,对不同类型数据,封装了不同的接口,主要操作的对象是av通道(avIndex)。 | 每个连接的最大通道数/个 | 32 |
| 密码最大长度/位 | 257 | ||
| token最大长度/位 | 1024 | ||
| IO附带数据大小 | 3.3以下SDK不超过1020字节,3.3以上不超过131068字节。 | ||
| 视频帧大小 | 可以到1MB,要对应调大缓存区 | ||
| 音频帧大小 | 1280字节 | ||
| RDTAPIs | 基于IOTC模块进行封装的可靠的数据传输,只提供简单的Read和Write接口,需要自己设计上层协议和切包,主要操作的对象是RDTIndex。 | 最大可用RDT通道数/个 | 128 |
| buffer大小上限 | 不限制,依赖于系统内存容量 | ||
| P2PTunnelAPIs | 基于RDTAPIs模块进行封装的可靠的数据传输,提供的是虚拟的数据隧道服务,只需要简单的几行代码,便可以接入基于TCP/IP协议开发的协议,比如http、https、ftp、ssh、telnet、rtsp等。 | - | - |
三、功能对接
一般消费类的智能产品,通过会包含直播、监听,对讲、回放、下载、云存等功能:

主要功能列表:
