绕过NAT并通过C++打开端口以实现低延迟

use*_*992 0 c++ networking udp tcp

我的目的是:

  • 不要求用户在他的路由器上打开端口
  • 用我的应用程序通过代码完成所有事

有可能这样做吗?考虑到这个应用程序只适用于安装了相同应用程序的其他机器,我可以从头开始编写某种协议吗?

我的一般想法是尽可能快地建立连接,我还必须交换小数据包,降低延迟对我来说比拥有高吞吐量更重要.

Raf*_*sta 5

不要乱用NAT.无论如何,这对延迟无济于事.您正在使用TCP/IP,这是一种相当高级别的协议,而且速度相对较慢.也就是说 - 该协议为您做了很多伟大的工作 - 但是在延迟方面付出了代价.(它保持连接状态,并保持数据包的顺序,并做一个保证数据包传输等的不错的工作)

如果你想要一个非常低延迟的网络通道使用UDP - 这是较低的水平,并没有像TCP那样做多少工作.UDP只是尽力将每个数据包传送到目的地而不保持连接打开,数据包不一定按顺序到达,并且知道数据包是否到达目的地.

你需要自己构建这些东西 - 或者学会没有它们.

在UDP上构建的应用程序倾向于重复大量信息,并且实现具有大量错误空间的协议逻辑.结果通常是较低的延迟 - 但通常是可靠性或传输速率的成本.

此外 - 如果您需要低延迟,请不要通过其他协议进行隧道传输,例如通过SSH或其他方式进 这只会增加延迟.