TCP的粘包问题

TCP是面向字节流的:有序的、可靠的、双向的、基于连接的

字节流传输:以字节为单位,像水流一样的传输

大量的数据要发送,不一定非要一次性发送,而是将数据放到发送缓冲区中,系统选择合适的时机,合适的大小进行传输,接受方接收到的数据也会放在接收含缓冲区中,不一定要一次性交付给应用层,

优点:传输比较灵活,UDP每次必须进行整条数据的收发,

缺点:TCP的粘包问题 ----- 将多条数据当做一条数据处理

TCP并不关注数据格式数据边界,因此有可能将多条数据当作一条数据处理,

解决方案:粘包的本质是因为TCP没有数据的边界管理,因此程序员需要在应用层进行数据边界管理

  1. 特殊字符进行间隔
  2. 数据定长
  3. 在应用层协议头部定义数据长度

 

 

 

 

你可能感兴趣的:(Linux)