粘包/拆包问题一直都存在,只是到TCP就拆不动了。
💡
原文中文,约1300字,阅读约需3分钟。
📝
内容提要
本文介绍了OSI和TCP/IP协议栈,TCP和UDP的概况和区别,TCP粘包/拆包问题及其解释。提醒不要将TCP带入HTTP请求-响应模型中。
🎯
关键要点
- OSI开放系统互联定义了网络框架,以层为单位实现协议。
- TCP/IP 5层协议栈是目前主流的网络协议实现。
- TCP/IP协议栈包括应用层、传输层和网络层等。
- 系统调用是应用程序与操作系统之间的边界,socket API是网络编程接口。
- TCP是面向连接的、可靠的传输层协议,UDP是面向消息的传输服务。
- TCP通过三次握手和数据确认机制确保可靠性,UDP则没有这些机制。
- TCP连接建立后才能进行HTTP请求和SQL请求,连接池化机制用于提高效率。
- 开发者应避免将TCP的特性带入HTTP请求-响应模型中。
- TCP粘包和拆包问题可能在多个层次发生,但主要在传输层面临。
- TCP协议本身不造成粘包问题,应用层需自行设计消息边界。
- TCP和IP报头结构帮助理解粘包和拆包问题的存在。
- 应用层需使用特殊分隔符或长度来协助封包和拆包。
➡️