【问题标题】:Sending one big packet vs two little ones发送一个大包与两个小包
【发布时间】:2018-10-15 05:21:08
【问题描述】:

目前我每秒向服务器 A 发送 60 个“同步”数据包,服务器 A 也每秒向客户端发送 60 个不同的“同步”数据包.假设现在数据包延迟如下所示:

  • 从客户端到服务器 A - 平均 30 毫秒。
  • 服务器 A 到客户端 - 平均 35 毫秒。

现在我希望客户端与 服务器 B 建立连接,有时(也是每秒 60 次,或者可能是 20/10/5)发送这个 服务器 B其他一些数据包“不同”。将数据包发送到服务器 AB 将如何影响上述延迟?而且一般情况下,如果我同时发送两个数据包,它们是否可以并行发送到服务器而不会相互干扰?

【问题讨论】:

    标签: tcp server socket.io


    【解决方案1】:

    以 60Hz 发送数据包意味着每个数据包应在前一个数据包之后 16.6ms 发送。使用 1Gbps 网络接口,您可以在此期间发送多达近 2MBytes(或 200KBytes 与 100Mbps 接口)的数据,因此您很有可能每秒可以向服务器 B 再发送 60 个数据包,而不会干扰发送到服务器 A 的数据包。

    注意如果您同时发送两个数据包会发生什么,如果它们必须使用相同的网络接口,它们将不会同时退出。如果服务器有多个 CPU 内核并且驱动程序对每个内核有不同的队列,则每个数据包到网络接口驱动程序的传递可以并行完成,但是每个数据包到网络的出口将被序列化,一个接一个地发送。一个网络接口,至少是一个以太网接口,不能同时向网络发送两个数据包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多