社区
C语言
帖子详情
TCP是否会自动重发?
james_hw
2011-03-13 04:47:06
现在有一个现象,客户端发送了一条消息,服务器端有较小概率收到2条一模一样的消息。
当时的链路情况不是很稳定,不知道有没有朋友遇到同样的问题?
怀疑会不会在链路不稳定时,底层socket会自动重发
...全文
567
10
打赏
收藏
TCP是否会自动重发?
现在有一个现象,客户端发送了一条消息,服务器端有较小概率收到2条一模一样的消息。 当时的链路情况不是很稳定,不知道有没有朋友遇到同样的问题? 怀疑会不会在链路不稳定时,底层socket会自动重发
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yanghehong
2011-03-13
打赏
举报
回复
TCP作为一种可靠传输协议,是有超时自动重传机制没错。
RFC 793:
. If the ACK is not received within a timeout
interval, the data is retransmitted.
不过这个重传对应用程序是透明的,对应用来说,这会收到一个,因为TCP加序号然后做了重复的过滤:
At the receiver, the sequence
numbers are used to correctly order segments that may be received
out of order and to eliminate duplicates.
楼主这个问题,得再自己对自己的发送和接受应用程序做更仔细的调试。基本上和TCP无关。
-
千里孤行
maoxing63570
2011-03-13
打赏
举报
回复
记得,如果因为网络传输超时,TCP协议会对重复得到的包直接丢弃,然后发送确认
arong1234
2011-03-13
打赏
举报
回复
虽然都可能出错,但是TCP底层出错的可能性比你程序出错的可能性要小得多,因此仅仅根据自己日志就去怀疑TCP是没有道理的。
最直观的办法是在发送端和接收端同时用netmon或者其他sniffer抓包,看看到底谁发了重复的报文
[Quote=引用 6 楼 jamesf1982 的回复:]
引用 4 楼 qq120848369 的回复:
再咋样收到两条说明客户端用户自主发送了两次,与协议无关。
通过日志验证的确只send了一次
[/Quote]
arong1234
2011-03-13
打赏
举报
回复
TCP会自动过滤多余的自动重传消息,你服务器收到重复的消息应该和TCP无关,因为TCP确保你收到且只收到一份你发出的消息
[Quote=引用 2 楼 jamesf1982 的回复:]
引用 1 楼 csuxiaowu 的回复:
TCP 协议中的自适应的超时重传
能说明一下这个超时重传机制么?有没有办法防止服务器端收到2条一模一样的消息?
[/Quote]
james_hw
2011-03-13
打赏
举报
回复
[Quote=引用 4 楼 qq120848369 的回复:]
再咋样收到两条说明客户端用户自主发送了两次,与协议无关。
[/Quote]
通过日志验证的确只send了一次
james_hw
2011-03-13
打赏
举报
回复
[Quote=引用 3 楼 freefice 的回复:]
异步通信机制,需要添加流水号与校验码,根据流水号确定是否是重发信息,根据校验码确定是否要重发。
[/Quote]
这是一个办法,不过服务器端为每个客户端分配流水号与校验码则工作量亦不轻松。能否从socket上配置避免其自动重发?
qq120848369
2011-03-13
打赏
举报
回复
再咋样收到两条说明客户端用户自主发送了两次,与协议无关。
庄鱼
2011-03-13
打赏
举报
回复
异步通信机制,需要添加流水号与校验码,根据流水号确定是否是重发信息,根据校验码确定是否要重发。
james_hw
2011-03-13
打赏
举报
回复
[Quote=引用 1 楼 csuxiaowu 的回复:]
TCP 协议中的自适应的超时重传
[/Quote]
能说明一下这个超时重传机制么?有没有办法防止服务器端收到2条一模一样的消息?
Csuxiaowu
2011-03-13
打赏
举报
回复
TCP 协议中的自适应的超时重传
C#与Android进行
Tcp
通讯(心跳包;长连接,
自动
重连,发送失败时
自动
重发
)
具有心跳包,长连接,
自动
重连,发送失败
自动
重发
等功能 电脑与Android需要同属一个局域网
tcp
Listener设计成只能与一个
tcp
Client通信(当多个客户端接入时,
会
自动
与前一个接入的客户端断开)
tcp
Client具有重连,...
TCP
是什么意思?.docx
如果在预定时间内未能收到接收端的确认,
TCP
将
自动
重发
数据包。此外,为了防止网络拥塞导致的数据丢失,
TCP
还实施了拥塞控制。如果网络中出现了丢包的状况,
TCP
将减少数据传输速率,避免网络过载。 让我们想象一下...
c#多线程
tcp
高并发林业监测硬件设备模拟器.zip
4 设备应具备数据
自动
重发
功能。(当设备发送数据到服务器失败时,
会
自动
将失败的数据主动
重发
到服务器) 5 协议中提及的按顺序的12个采集因子,分别是:温度,湿度,地湿,3秒平均风速,3秒平均风向,2分平均...
TCP
&UDP测试工具.rar
在
TCP
中,每个数据包都
会
被确认接收,如果丢失或错误,
TCP
会
自动
重发
。这种特性使得
TCP
适合于需要高可靠性的应用,如HTTP、HTTPS、FTP等。 相比之下,UDP(用户数据报协议)是一种无连接的、不可靠的传输协议。它不...
104规约超时和报文丢失
重发
的处理机制
3. **空闲状态检测**:如果系统在一段时间内(由t3参数定义)既没有发送也没有接收任何数据,则
会
自动
进入空闲状态,以减少资源消耗。此时,除非有新的数据传输请求,否则系统将保持空闲状态。 4. **连接重建机制**...
C语言
70,038
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章