【发布时间】:2009-09-29 06:21:11
【问题描述】:
我正在解决一些通信问题,并且在网络跟踪中我偶尔会遇到 TCP 序列错误。我的一个例子是:
- 服务器到客户端:Seq=3174,Len=50
- 客户端到服务器:Ack=3224
- 服务器到客户端:Seq=3224,Len=50
- 客户端到服务器:Ack=3224
- 服务器到客户端:Seq=3274,Len=10
- 客户端到服务器:Ack=3224,SLE=3274,SRE=3284
数据包 4 和 5 几乎同时记录在跟踪中(来自客户端和服务器之间的路由器),因此它们很可能在传输过程中交叉。
TCP 会话与客户端失去同步,丢失了来自服务器的最后两次传输。这两个数据包应该已经被重新传输但他们没有,跟踪中的下一个日志是数据包 6 后 24 秒来自客户端的 RST 数据包。
我的问题与无法从数据包 3 和 5 重新传输服务器数据的原因有关?我会假设重传将在操作系统级别,但无论如何应用程序会影响它并停止发送它吗?线程阻塞或进入睡眠状态或类似的东西?
【问题讨论】:
标签: networking tcp