网络传输粘包的处理

粘包产生的原因

1.发送端数据由于nagle算法,将多个业务数据包压成一个TCP包发送

2.接收端数据缓冲区读数据一次读入了多个包的数据

拆包产生原因:

1.发送端由于消息超过了MSS(最大报文段长度)限制大小被拆成多个TCP报文发送

2.接收端数据缓冲区一次读入了非整数个包的数据

处理粘包或者分包的策略基本就两种:

1.每个数据前后加特殊字符,比如ftp方式,这样方式容易出错,如果数据本身含有特殊字符就会发生分隔错误

2.业务数据加业务协议头标识业务数据的长度,在读取的时候能够确定向后读取数据的长度作为一个业务数据的边界

扫描二维码关注公众号,回复: 342756 查看本文章

业务消息的可靠性

TCP协议保证了传输层的可靠性,如何保证业务处理层的可靠性?request-respone方式或者类似fix协议一样的业务层协议

猜你喜欢

转载自rrsongzi-gmail-com.iteye.com/blog/2305723