应用程序是否会影响TCP重新传输

时间:2009-09-29 06:21:12

标签: networking tcp

我正在解决一些通信问题,在网络跟踪中我偶尔会遇到TCP序列错误。我得到的一个例子是:

  1. 服务器到客户端:Seq = 3174,Len = 50
  2. 客户端到服务器:Ack = 3224
  3. 服务器到客户端:Seq = 3224,Len = 50
  4. 客户端到服务器:Ack = 3224
  5. 服务器到客户端:Seq = 3274,Len = 10
  6. 客户端到服务器:Ack = 3224,SLE = 3274,SRE = 3284
  7. 数据包4& 5跟踪记录在跟踪中(来自客户端和服务器之间的路由器)几乎完全相同,因此它们很可能在传输过程中交叉。

    TCP会话与客户端不同步,错过了服务器的最后两次传输。这两个数据包应该已经重新传输,但它们不是,下一个跟踪日志是数据包6后24秒来自客户端的RST数据包。

    我的问题与无法从数据包3&amp ;;重新传输服务器数据的原因有关。 5?我会假设重新传输将在操作系统级别,但无论如何应用程序可以影响它并阻止它被发送?线程阻塞或进入睡眠或类似的东西?

1 个答案:

答案 0 :(得分:2)

从服务器到客户端只丢失了一个数据包 - 数据包3.数据包6包含数据包5的选择性确认(SACK),以便通过。

在回答您的具体问题时,不,应用程序级问题不应阻止TCP重新传输。