tcp的可靠性与粘包处理

    有时候在做二进制协议的粘包处理过程中,总是会想到一个问题,就是,如果收到的数据是有混乱的,有正常的包,该怎么办,如何解决等等问题。下面的描述基本就是为了解决这个疑问来进行的答疑,也让未来再写粘包处理时,更加有的放矢!

    在《tcp/IP协议详解》卷一中明确表示:TCP提供一种面向连接的、可靠的字节流服务。也就是说,我们默认tcp接收端收到的所有包应该都是正常的协议包,tcp保证只要你发的,我就能收到(可靠性)。但无法保证你发的是正常包,还是组包错误,导致包出现异常,即包的内容由发送方来保证协议的完整性。而tcp的接收端,可默认按协议包进行粘包处理。对于发过来的乱了的包, 在确保了粘包处理算法没问题的前提下,说明发送方发送数据有问题,就需要发送方去解决发送数据的问题,或者我们接收方对于有问题的包,进行抛弃即可。

    所以,我们在做基于tcp的应用层协议时,不需要考虑接收到的数据重复、乱序等等问题,当然,如果是可靠性要求比较高的行业(比如银行),则需要对客户端的错误进行包容处理,就需要考虑这方面的要求。

    另外,关于TCP的可靠性保证,可参考:https://blog.youkuaiyun.com/xuzhangze/article/details/80490362

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值