2. 技术原理

  T2uSvr (设备端)和 Libt2u (客户端)作为 2 个代理,分别运行在设备端和客户端,两个代理之间通过 P2P NAT 技术 建立连接,依靠自主研发的 UDP 可靠传输和拥塞控制算法进行数据通信,再加上端口转发技术,实现了将远端设备的任意端口映射到客户机本地的功能。可在不知道设备 IP 地址,也没有在路由器上 做端口映射的情况下,通过 TCP/UDP 连接本地映射的端口来达到连接远端设备的目的。

  客户端使用 P2P 和不使用 P2P 在流程上的区别:

  • 不使用P2P技术时的连接方式:

  • 使用P2P技术时的连接方式:

  如上图所示,客户端创建一个使用端口A的Socket,并且调用T2uCli(即
P2P客户端)创建一个代理 TCP 侦听端口 C,在创建代理TCP侦听端口 C 时,告诉 T2uCli,要连接服务端的侦听端口B,T2uCli 随后立即与T2uSvr(即P2P 服务端)创建一个 P2P 连接。然后,客户端就象之前直接连接服务端侦听端口 B 一样,连接 T2uCli 的侦听端口 C,使用原来的协议和流程与侦听端口 C 进行交互,T2uSvr 会立即创建使用端口 D 的 Socket 与服务器侦听端口 B 建立 TCP 连接,并且将客户端发过来的数据原封不动地转发给服务端。

  从上面的过程可以看出,使用业务无关性 P2P 技术,客户端和服务端的程序都可以在不作修改的情况下,直接从原来只支持 TCP 传输转换到可以使用 P2P 传输,如 telnet,http 服务可以在不做任何修改的情况下,使用 P2P 方式进行传输。