区别点 | TCP | UDP |
---|---|---|
面向连接、可靠传输 | ✔️ | ❌ |
流量控制 | ✔️ 滑动窗口 | ❌ |
拥塞控制 | ✔️ 慢开始、拥塞避免、快重传、快恢复 | ❌ |
效率 | ❌ | ✔️ |
传输形式 | 字节流 | 报文 |
双工性 | 全双工 | 一对一 一对多 多对一 多对多 |
上述为二者主要区别 ⭐⭐⭐ UDP 和 TCP 的头部格式详情说明来啦 ~
- 目标端口和源端口: 应该把报文发给哪个进程
- 包长度: UDP 首部的长度跟数据的长度之和
- 校验和: 为了提供可靠的 UDP 首部和数据而设计,接收方使用检验和来检查该报文段中是否出现差错
- 源端口号和目的端口号: 用于多路复用/分解来自或送到上层应用的数据。告诉主机报文段来自哪里,传给哪个上层协议或应用程序
- 序列号: 该报文段首字节的字节流编号,用来解决网络包乱序问题。确认应答号:对发送来的TCP 报文段的响应,值是收到的 TCP 报文段的序号值加1,用来解决不丢包的问题。序列号和确认应答号都用于实现可靠数据传输
- 首部长度: 标识 TCP 头部有多少字节,最长 60
- 窗口大小: 接收窗口,告诉对方本端TCP缓冲区还有多少空间可以接收数据,用来做流量控制。
- 标志字段:
ACK
:用于指示确认应答号值是否有效,置1表示包含一个对已成功接收报文段的确认RST
:用于重置一个已经混乱的连接,或拒绝一个无效的数据段或者连接请求;SYN
:用于连接建立过程,请求建立一个连接;FIN
:用于断开连接,表示发送方没有数据要传输了。
- 校验和: 为了提供可靠的 UDP 首部和数据而设计,接收方使用检验和来检查该报文段中是否出现差错
参考资料:代码随想录