客户端收到客户端的异常rst包,再次调用send会返回失败吗?

最近在项目中遇到这样的一个问题,客户端收到一个rst包之后(在网卡上抓包),收到包之后客户端继续发送消息(send 是异步的)没有返回失败,甚是疑惑啊,最后查看包发现收到的rst包的seq和之前收到的包的seq一样,并且中间有数据收发,如下图所示
在这里插入图片描述
在这里插入图片描述
注意N. 9971和10180
起初以为即使rst包的seq和之前的重复,协议栈也应该正常处理,但是经过如下方式的验证:
伪造异常seq的rst包给客户端
1, 写一个客户端和服务端程序,服务端和服务器分别部署到两个机器上(这样抓包看起来比较明确)
2,写一个原始套接字程序,该程序功能是伪造rst包(随机seq)发送给客户端
3,客户端无响应,客户端和服务端仍然能正常收发数据
伪造正常seq的rst包给客户端
1, 写一个客户端和服务端程序,服务端和服务器分别部署到两个机器上
2,通过在客户端抓包拿到正确的seq, 套接字程序伪造一个正确的seq的rst包发送给客户端
3,客户端响应服务端关闭连接

通过以上验证得出如下结论:
rst包的seq异常的话协议栈会把该包丢弃,后续在详细写为何客户端会收到异常的rst(seq 和之前包的seq一样)包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值