粘包 接收上次没有收完的内容 应用层软件 直接从系统的缓存区拿取内容 而系统根据TCP或UDP 而做出不同的选择 TCP会出现粘包现象 UDP不会出现 TCP根据流的方式传输 UDP根据数据报的方式传输 recv 和 send 都是在操作自己的缓存区 读取多少内容 和recv字节数有关 TCP 底层根据Nagle算法 把几次发送内容间隔较小 数据量较小的数据 合并为一个大数据块 进行封包发送 收的字节数少了 第二次收还会继续上一次的 发的时候就都粘到一块 发过来的 UDP 会丢数据 接收recv字节数少 会丢失数据 第二次只接收第二次发送过来的内容 面向流的通信是无法确定消息边界的 可以在传输的时候先计算出发送内容的长短 先给另一端发送过去 接收方收到长短后 改变自己recv的字节数 TCP 通信安全在于 发送完成数据后在没有接收到 另一端ACK的回应 是不会删除自己缓冲区的内容的 网卡最大传输端 MTU 做多 1500bytes 失真:最大不要超过8k 传输的过程中有可能中断 顺序可能排序错位 导致失真 因为udp没有连接所以可以实现并发
粘包
最新推荐文章于 2024-01-04 10:17:41 发布