40 lines
1.9 KiB
Protocol Buffer
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//Relay-Based Connection Upgrade (RBCU) 是通信流程中的一个步骤。它通过中继路径确保基础通信的可用性并在此基础上尝试升级到更高效的直连P2P方式。
//## RBCU 流程
//前提1. 已建立的中继连接, 2. 可以获取自己socket对应的外网地址端口STUN或其他
//设定主动方为A被动方为B
//1. 【基于中继】A获取地址列表形成RbcuInfo发送到B并等待RbcuInfo。
//2. 【基于中继】B收到RbcuInfo将自己的地址列表形成RbcuResp作为响应。
//4. 【基于UDP】AB向对方的地址列表发送RbcuProbe
//5. 【基于UDP】AB收到RbcuProbe则认为直连成功并回复RbcuConfirm
// 参阅https://docs.star-lock.cn/zh/starchart/rbcu
syntax = "proto3";
package main;
option go_package = "./spb/rbcu";
// RbcuInfo 地址交换
message RbcuInfo {
string SessionId = 1; // 随机UUID用于匹配接下来的打洞会话
string Name = 2; // 用于标识自己的名字
repeated string Address = 4; // 地址+端口 列表
uint64 Time = 5; // 开始时间戳
bool isResp = 6; // 是否是响应, 如果是响应,就不用回复了, 第一个发起的人这里传false后续收到并发出的人这里传true
}
// RbcuProbe 万箭齐发
message RbcuProbe {
string SessionId = 1; // RbcuInfo的UUID用于匹配
string Data = 2; // 100字节随机数据因为有些防火墙会拦截小包(空白也行但是会被pb压缩所以最好填充随机或顺序数据)
string TargetAddress = 3; // 目标地址例如这个包我发往192.168.1.2:9000 那么这个字段就是192.168.1.2:9000
}
// RbcuConfirm 连通确认
message RbcuConfirm {
string SessionId = 1; // RbcuInfo的UUID用于匹配
string ProbeAddress = 2; // 地址+端口 从RbcuProbe里面取的TargetAddress
string ReceiveAddress = 3; // 地址+端口 收到RbcuProbe的来源地址(udp_read()函数的返回值)
}