拆包
数据在进行网络传输的时候,链路层限制了每次传送的大小,比如是1460个字节,那网络层的IP层就会对数据进行分片传送,这样接收端接收到的数据就不是完整的包
粘包
数据传输时,有可能每次传送的数据包很小,这样每次都需要接收端确认再传下一个包,于是就有了nagle算法,把这些小的数据包合并成一个包一起传输
解决方式
- 加个数据包的报文头,记录数据包的大小
- 消息定长,就是规定每次报文的消息长度固定
- 特殊的分割符,分割出报文,比如FTP协议就是通过回车换行符来分割
抓包工具Wireshark
- 安装时需要选择Npcap
- BPF 语法可以用来创建过滤器
抓包方法:tcpdump
tcpdump -i eth0 tcp port 3306 -w ./mysql.cap