大家好!我在利用C#做TCP网络编程时遇到一个问题:我做了一个TCP服务端,然后利用客户端发包来测试服务器的响应速度。
当我隔一段时间发一次时,在客户端网口抓到的包是这样的:
发包时刻:Arrival Time: Mar 25, 2015 14:27:47.522490000 中国标准时间
回包时刻:Arrival Time: Mar 25, 2015 14:27:47.777323000 中国标准时间
时差:∆=254.833ms
当我连续发包时,在网口抓到的包是这样的:
发包时刻:Arrival Time: Mar 25, 2015 14:30:05.177101000 中国标准时间
回包时刻:Arrival Time: Mar 25, 2015 14:30:05.187818000 中国标准时间
时差:∆=10.717ms
可以明显看出在连续发包时,回包响应速度快很多。造成这种想象是由于TCP的延时确认机制ACK回包造成的,可以看到第二幅图是两个PUSH发送包在一起的,而第一幅图中两个PUSH发送宝之间有一个ACK确认包。
我想请问一下大家,在C#中怎么解决这个ACK确认问题,有办法直接禁用掉吗?
谢谢大家了!