参考答案
TCP 粘包/拆包
一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和粘包问题。
TCP 粘包/拆包发生原因
- 应用程序写入数据的字节大小大于套接字发送缓冲区的大小
- 进行MSS大小的TCP分段。( MSS=TCP报文段长度-TCP首部长度)
- 以太网的payload大于MTU进行IP分片。( MTU指:一种通信协议的某一层上面所能通过的最大数据包大小。)
TCP 粘包/拆包解决方案
- 消息定长
- 在包尾部增加回车或者空格符等特殊字符进行分割
- 将消息分为消息头和消息尾
- 使用其它复杂的协议,如RTMP协议等。
以上,是网络安全面试题【什么是 TCP 粘包/拆包,发生原因、以及解决方案?】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—