TCP四层模型
TCP三次握手
TCP四次挥手
TCP像打电话
UDP像发短信
简单说说对TCP的“粘包”和“拆包”的理解。
TCP为了保证可靠传输,尽量减少额外开销,免得每次发包都要验证,因此采用了流式传输,面向流的协议(stream)。
相对于UDP这种面向消息的传输,TCP这种传输方式可以减少发送包的数量,可以减少额外开销。
通常情况下,应用程序发送数据是有消息边界的,是一条一条的。
UDP不会粘包,因为UDP有消息边界。
TCP没有消息边界这个概念。
对于数据频繁传输的程序来说,从接收端来看,收到的TCP传过来的数据可能就是一条两条三条数据连在一起,或者断头断尾不完整的。
这就是粘包。
粘包原因是多方面的,可能是发送端的问题也可能是接收端的问题。
粘包的处理通常可以使用以下这些方法:
(1)发送固定长度的消息
(2)把消息的尺寸与消息一块发送
(3)使用特殊标记来区分消息间隔
![]() |
![]() |