tcp retransmission

帝国队长 2015-03-05 03:47:06
客户端与服务器连接,时间久了不活动就会中断
用抓包工具试了一下
当客户端与服务器连接后, 20分钟没有任何通信
当客户端再发送信息时,则出现
tcp retransmission 几次, 应该是发不通重发
然后再收到一个RST,ACk


请问什么情况会出现这个。是不是久了不发信息超时了
服务器那边还没有接收到客户端的退出信息,整个抓包过程也没有收到FIN
也就是说客户端单放报出网络错误,服务器那边认为客户端还在线。
求大神们解决一下。
...全文
2020 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyj528 2017-04-25
  • 打赏
  • 举报
回复
我遇到了一样的问题,客户端和服务端在手,两边抓包,从客户端上看发现客户端和服务端长时间保持连接但是没有数据交互。再次操作客户端时,tcp retransmission 几次, 然后再收到一个RST,ACk。看服务端,服务端首先收到RST数据包,连接断开,但是这个数据包不是真正的客户端发出的。百度IP,发现客户端真实的外网IP就是发出RST数据包的机器,这台机器属于运营商路由器。
阿先森 2015-04-19
  • 打赏
  • 举报
回复
感谢邀请。 应该防火墙或者网络节点上的策略问题。
kuba120 2015-03-30
  • 打赏
  • 举报
回复
在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。更要命的是,有的节点(防火墙)会自动把一定时间之内没有数据交互的连接给断掉。在这个时候,就需要我们的心跳包了,用于维持长连接,保活 加心跳包吧,你那个程序估计是长期无通信被什么节点的防火墙给断了
Sandrer 2015-03-06
  • 打赏
  • 举报
回复
给套接字设置 SO_KEEPALIVE 试试
worldy 2015-03-05
  • 打赏
  • 举报
回复
是否服务器发了心跳包,而客户端没响应而关闭了连接? 使用原来的端口,重新打开socket试试,看是否能打开,如果能,说明原来的连接已经被关闭
帝国队长 2015-03-05
  • 打赏
  • 举报
回复
双方都没有开防火墙。应该是和这个无关,而且这个必须等一段时间才会出来,如果正常连续发包,几天都不会有问题
oyljerry 2015-03-05
  • 打赏
  • 举报
回复
会不会是防火墙block
帝国队长 2015-03-05
  • 打赏
  • 举报
回复
返回错误是10053 10054 但问题是服务器什么都没有收到,信号都没有收到 通过抓包工具来看,确实应该是命令都没有发过去,直接进入重发tcp retransmission了然后重发失败RST,ACk
lougd 2015-03-05
  • 打赏
  • 举报
回复
客户端发送的时候api返回错误了吗?这个应该tcp retransmission应该是tcp协议层实现的吧,对用户层api是透明的吧。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧