帧头和数据重合
帧头、长度、帧尾重合 接受缓冲区越大,重合概率越小,可以不考虑
发送和发送数据转义(转义和帧头相同的数据),避免帧头和数据重合
参考:https://www.amobbs.com/thread-5656551-1-1.html?_dsign=4ffd7c5a
误码率
crc等校验,避免传输过程中信号衰减导致的,传输码错误
拆包组包
tcp协议,由于window协议栈,收取数据后数据缓存在一个缓冲区中,发送太快,接收太慢,数据在缓冲区中累积就会产生粘包问题,需要解析协议头,通过协议头或者帧尾拆分完整的包数据。
- 拆包,拆分帧头和帧尾
- 组包,组装帧头和帧尾数据,组成一个完成的包(多次接收才能凑成一个完整的包)
如果通信的协议的数据长度固定,可以不拆包,也不组包,直接每次接收固定长度的数据
udp协议,每次接收的数据都是存在不同的缓冲区中,所以udp不存在粘包问题
udp和tcp的差异,udp缺少重发机制,属于短链接,每次发送完即断开,需要收发两方确认数据是否接收成功,失败需要重发;udp缺少包排序机制,局域中一般不存在问题,在多级路由情况下,后发数据可能先到,不同的缓冲区,导致数据包序号错误,需要建立包排序机制