linux之errno值为104(connetction reset by peer)

当尝试在Linux环境中使用write方法向socket写入数据时,遇到errno值为104的问题,意味着'connetction reset by peer'。这通常发生在对已关闭连接调用write时,对端会发送RST重置包。通过网络抓包分析,可以看到TCP的Retransmission现象,展示了TCP协议如何通过重传确保数据可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 问题

往fd里面写(write方法)入数据的时候出错,返回小于等于0的值,然后这个时候打印errno值是104

 

 

 

 

 

 

 

 

2 分析

errno是104就是connetction reset by peer,表明在对一个对端socket已经关闭的的连接调用write或send方法,在这种情况下,调用write或send方法后,对端socket便会向本端socket发送一个RESET信号
我们抓包部分图片如下

很明显,这里172.28.100.170向10.0.1.6发了一个RST包,也就是重置包,很明显这里,10.0.1.6是客户端,然后172.28.100.170是 服务端,然后下面进行TCP三次握手的时候,我们可以看到TCP的Retransmission,也就是TCP的重传数据包,TCP协议是一个可靠的协议。它通过重新发送(retransmission)来实现TCP片段传输的可靠性。简单的说,TCP会不断重复发送TCP片段,直到片段被正确接收 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码莎拉蒂 .

你的鼓励是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值