我正在开发一个主要基于TCP的游戏服务器,并试图在一个Docker容器中运行它。但是,我注意到(通过游戏客户端)访问容器中的服务器时,每个SeqNo的数据包被分成两部分。第一部分是空的TCP-ACK (无有效载荷),第二部分是包含全部有效载荷的TCP,PSH.由于此模式适用于从服务器发送或发送到服务器的所有数据包,因此显然它们属于一起。
为什么会发生这种情况,而且为什么只有在服务器在Docker容器中运行时才会发生这种情况?
发布于 2021-08-18 15:24:35
我不知道您是如何在Docker内部运行游戏服务器的,但是docker的工作方式如下
主机-网络码头-网络码头群-进入网络码头服务-覆盖网络(集装箱服务)
在这种情况下,您需要在Docker中使用不同的网络层,并且所有Docker内部都是虚拟网络。
下一步您需要理解的是,如果您是在群集模式下工作--当您根据端口号按Docker twices指向您的容器服务时--如果您在集群中运行了超过1个副本,那么就有2个请求是mabey,mabey没有命中相同的服务器。
所以你问的问题,我认为这与码头的内部网络如何工作有关,你可以读到更多关于Docker中的网络是如何工作的,而mabey只是一个让你改变的设置。主机
https://serverfault.com/questions/1074948
复制相似问题