sam*_*ba2 6 c sockets printing tcp
多年来,我们的定制软件一直使用打印机命令语言 (PCL) 在不同的打印机上进行打印。
现在我们有一个新的轻型打印机,我们正在努力支持它。简单的打印就可以完美地工作。但是,如果打印作业的大小增大,我们就会遇到打印作业中断的情况。
环境:
使用 Wireshark 我们发现以下内容:
这是刚刚解释的通信的跟踪片段:
我对“TCP零窗口”机制的理解是,只要打印机正在应答工作站的保活数据包,通信的停止和重新启动就可以永远进行。
然而,在我们的例子中,通信在一段时间后就会中断:
一段时间后(通常是 1-3 分钟后),工作站不再发送新的保持连接,但正在重置通信。对于我们来说,这是无法解释的,因为所有先前的保持活动数据包都会立即被打印机确认。
我也没有成功地尝试复制这个场景。我写了一个简单的TCP客户端和服务器。为了强制出现 TCP 零窗口,TCP 服务器会休眠一段时间,然后继续接收数据。但是,无论服务器等待(睡眠)或中断传输多长时间,我都无法让两者中的任何一个重置通信。相反,上述 TCP 保活/确认算法在空闲时间内运行,以保持连接处于活动状态。
您知道是什么让我们的工作站在有效 TCP 连接期间发送此重置吗?
归档时间: |
|
查看次数: |
3362 次 |
最近记录: |