1
我正在解决一些通信问题,并且在网络跟踪中偶尔会遇到TCP序列错误。一个例子,我得到的是:应用程序是否可以影响TCP重新传输
- 服务器到客户端:SEQ = 3174,长度= 50
- 客户端到服务器的ACK = 3224
- 服务器到客户端:SEQ = 3224,长度= 50
- 客户端到服务器:ACK = 3224
- 服务器到客户端:SEQ = 3274,LEN = 10
- 客户端到服务器:ACK = 3224,SLE = 3274,SRE = 3284
数据包4几乎完全在同一时间记录在跟踪中(来自客户端和服务器之间的路由器),因此它们很可能在传输过程中发生交叉。
TCP会话与客户端失去了来自服务器的最后两次传输的同步。这两个数据包应该已被重新传输,但它们不是,跟踪中的下一个日志是数据包6 24秒后来自客户端的RST数据包。
我的问题与可能导致重传失败的原因有关来自数据包的服务器数据3 & 5?我会假定重传将在操作系统级别,但无论如何,应用程序可能会影响它并阻止它被发送?一个线程阻塞或睡觉或类似的东西?
我没有想到应用程序涉及,但这意味着我有一些奇怪的事情发生在网络上,更难以理清:(我把它从数据包5的数据不会传递给应用程序直到收到数据包3的数据? – sipwiz 2009-09-29 11:13:26
sipwiz:正确。您可能需要做的下一步是在两端获取数据包日志,而不是中间的一个。 – caf 2009-09-29 11:25:29