TCP NO_DELAY +丢失标头+ TCP重传

时间:2015-11-03 17:40:16

标签: c# http tcp nagle

在这种情况下可以看到一种奇怪的情况:

  1. 使用TCP标志NO_DELAY发送HTTP请求(即禁用Nagle算法);
  2. WireShark没有使用HTTP动词和标头捕获TCP数据包 - 只能看到带有HTTP正文的数据包(数据包丢失了吗?);
  3. 带有ACK的远程主机响应显示并非所有数据都已得到确认;
  4. 发生TCP重传,现在由WireShark捕获HTTP动词和标题。
  5. TCP flow from WireShark

    更多说明:

    1. 如果Nagle算法为ON,则不会发现数据包丢失或重新传输;
    2. 该问题在两个不同的网络中得到验证,因此该问题几乎与网络环境无关(除了主机是虚拟机之外);
    3. 使用c#HttpClient(.NET 4);
    4. 进行请求
    5. HTTP正文大小似乎起作用 - 对于相对较小的数据包没有问题。
    6. 所以看起来NO_DELAY会导致丢失的TCP数据包内部出现HTTP标头/动词的奇怪行为。

      有什么建议吗?

0 个答案:

没有答案