java 窗口更新_TCP窗口更新方案

在我们的应用程序中,我们使用的是在8081中运行的apache tomcat webserver .

它在IST时间帧16:42:06.87从客户端收到POST消息 . 它通过ACK数据包确认,在200ms后窗口大小为62356字节 .

在几秒钟(3-5秒)之后,它还向客户端发送类似的ACK数据包,但作为65535字节(缓冲区空)的“TCP窗口更新”数据包 . 然后它发送200 OK表示成功处理......

我的问题:

将“TCP窗口更新”数据包从服务器发送到客户端的方案是什么 .

这是否意味着Web服务器或应用程序层需要大约3-5秒来读取其TCP接收器窗口中的65535-62356(~3100)字节,并且在读取之后,它已发送“TCP窗口更新”数据包,因为它尚未发送响应

经过一些套接字测试,

有趣的观察:“TCP窗口更新”数据包仅在应用层仅完全读取整个消息而不是一半/部分数据时传输!

想添加我实际上通过C中的普通客户端 - 服务器套接字编程再现“TCP窗口更新”数据包 .

场景:

客户端发送一个大段(约3000字节)服务器接受连接并通过fork生成一个子 . 在fork之后,服务器需要等待一分钟左右()才能读取套接字 . 这通常会向客户端发起一个减少“TCP窗口大小(65535-3000)”的ACK . 我确保读取调用读取完全接收的数据并确保该套接字的TCP接收队列为空 . 然后,服务器需要等待一段时间,然后只写入套接字 . 在读取后的等待时间段内,我从iptraces看到“TCP窗口更新”数据包从服务器发送到客户端,更新窗口为65535字节 .

此外,当我使用读取调用来读取部分传入数据时,即使缓冲区在部分读取后实际增加,它也不会发送“TCP窗口更新数据包” .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值