校招面试 - 计算机网络 - TCP粘包原理
作者:互联网
TCP协议与应用层协议
应用层 | HTTP | Telnet | FTP | SMTP |
传输层 | TCP |
- TCP协议解决的是传输的可靠性和顺序问题
- TCP协议是面向字节流的数据传输协议
应用层的数据拆分
Content-Length: 是一个实体消息首部,用来指明发送给接收方的消息主体的大小,即用十进制数字表示的数据字节的大小。
TCP协议书面向字节流的,可能会组合或者拆分应用层协议的数据
TCP 粘包与Nagle算法
TCP粘包就是指发送方发送的若干包数据到达接收方时粘成了一包,从接收缓冲区来看,后一包数据的头紧接着前一包数据的尾。
Nagle算法:
- Nagle算法是一种通过减少数据包的方式提高TCP传输性能的算法。
- 因为网络带宽有限,他不会将小的数据块直接发送到目的主机,而是会做本地缓冲区中等待更多发送的数据,这种批量发送数据的策略虽然会影响实时性和网络延迟,但是能够降低网络拥堵的可能性并减少额外开销。
- Eg; Telnet 协议,Header(40字节) + 数据 (1字节), 此时宽带利用率:1/(40+1) ~ 2.44%
什么时候发送:
- 缓冲区数据超过最大数据段(MSS)
- 上一个数据段被确认 (ACK) 后
面试常见问题
- 什么是TCP粘包,如何解决TCP粘包问题
校招面试专题系列- 持续更新https://blog.csdn.net/weixin_53800464/article/details/123071002
校招后端面试 - 高频面试题https://blog.csdn.net/weixin_53800464/article/details/123126220
标签:协议,字节,TCP,粘包,校招,数据,应用层 来源: https://blog.csdn.net/weixin_53800464/article/details/123198623