Syncthing中继服务器

引用

Syncthing中继服务器(译作:Relay Server)。

Syncthing依赖于社区提供的中继服务器网络。 任何人都可以运行中继服务器,它将自动加入中继池并可供Syncthing用户使用。 可以在http://relays.syncthing.net/找到当前的继电器列表。

 

引用

Relay Server是用于连接两个不在同一局域网内的设备,即网络穿透。中继通过单个TCP socket监听,但有两种模式。

  • protocol mode
    • protocol mode允许客户端和中继交互,如加入中继、请求连接到设备,它在中继上是可用的。该模式要求设备通过TLS使用强大的密码组(与BEP相同)连接,允许中继验证和导出设备ID。其中protocol mode又分为永久协议子模式(Permanent protocol submode)和临时协议子模式(Temporary protocol submode)。
  • session mode
    • 第二种模式是在一些初始消息通过中继直接连接两个设备之后的会话模式,并且是一个纯文本协议,对于一个设备写入的每个字节,将相同的字节集合发送给另一个设备。

因为上述的两个连接方式都是通过同一个socket操作的。所以需要检测连接方式。

当新的客户端连接到中继时,中继检查客户端发送的第一个字节,如果匹配0x16,这意味着连接是协议模式连接,因为0x16是TLS握手中的第一个字节,并且只有协议模式连接使用TLS。

如果第一个字节不是0x16,那么我们假设连接是会话模式连接。