(一)预备知识
tcp是以流动的方式传输数据,没有边界的一段数据。像打开自来水管一样,连成一片,没有边界。传输的最小单位为一个报文段(segment)。tcp Header中有个Options标识位,常见的标识为mss(Maximum Segment Size)指的是:连接层每次传输的数据有个最大限制MTU(Maximum Transmission Unit),一般是1500比特,超过这个量要分成多个报文段,mss则是这个最大限制减去TCP的header,光是要传输的数据的大小,一般为1460比特。换算成字节,也就是180多字节。
tcp为提高性能,发送端会将需要发送的数据发送到缓冲区,等待缓冲区满了之后,再将缓冲中的数据发送到接收方。同理,接收方也有缓冲区这样的机制,来接收数据。
(二) 粘包和拆包的表现形式
假设客户端向服务端连续发送了两个数据包,用packet1和
TCP传输中可能出现粘包和拆包现象,导致接收端难以处理数据。粘包是多个数据包合并成一个报文段,而拆包则是因为数据被分割。产生粘包和拆包的原因包括发送缓冲区满、数据大小超过MSS、接收端未及时读取等。解决方法包括添加包首部记录长度、固定长度封装、设置数据边界等。
最低0.47元/天 解锁文章
1109

被折叠的 条评论
为什么被折叠?



