tcp的粘包与拆包
首先知道dns的数据传输协议既有tcp也有udp。
udp是有最大传输限制为512字节,而tcp则允许大于512字节。
区域数据同步时使用tcp(数据量大);
请求解析域名时使用udp,减少dns的负载压力,虽然也支持tcp,但是大多数情况dns进行配置时指定的udp传输解析域名(查询包);
tcp协议是可靠的,基于数据传输的准确性,而拆包与粘包的发生主要因为三点:(1)、程序的读写超过socket的最大缓存。(2)、每次均以mss(最大报文段长度)传输。mms=mtu-tcp首部(40IPv4,60IPv6)。(3)、应用层数据大于mtu,发生Ip分片(发生在中间路由器或者原始发送端主机上)
解决策略:
(1)、消息定长发送
(2)、改变底层协议
(3)、将消息分为消息头和消息尾(并将消息长度写在消息头中)
浙公网安备 33010602011771号