tcp粘包是怎么产生的

参考答案

1. tcp粘包

发送方发送的多个数据包,到接收方缓冲区首尾相连,粘成一包,被接收。

2. tcp粘包产生原因

  • 发送端需要等缓冲区满才发送。如 TCP 协议默认使用 Nagle 算法可能会把多个数据包一次发送到接收方;
  • 接收方不及时接收缓冲区的包,造成多个包接收。如应用程读取缓存中的数据包的速度小于接收数据包的速度,缓存中的多个数据包会被应用程序当成一个包一次读取。

3. tcp粘包处理方法

  • 发送方使用 TCP_NODELAY 选项来关闭 Nagle 算法;
  • 数据包增加开始符和结束,应用程序读取、区分数据包;
  • 在数据包的头部定义整个数据包的长度,应用程序先读取数据包的长度,然后读取整个长度的包字节数据,保证读取的是单个包且完整。

以上,是Java面试题【tcp粘包是怎么产生的】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧