TCP(Transmission Control Protocol 传输控制协议)
UDP (User Datagram Protocol 用户数据报协议)
TCP,UDP 均为传输层通信协议,以下是他们的区别
属性 | TCP | UDP |
---|---|---|
连接性 | 面向连接 | 无连接 |
可靠性 | 可靠 | 不可靠 |
有序性 | 有序 | 无序 |
有界性 | 无界 | 有界 |
拥塞控制 | 有 | 无 |
传输速度 | 慢 | 快 |
量级 | 重量级 | 轻量级 |
头部大小 | 大 | 小 |
面向 | 面向字节流 | 面向数据报文 |
双工性 | 全双工 | 一对一,一对多,多对一,多对多 |
应用场合 | 网页,邮件等 | 视频,语音广播等 |
1. TCP 是面向连接的协议,UDP 是无连接协议
TCP 发送数据前使用三次握手建立连接,UDP 发送数据前不需要建立连接
举例
面向连接:电话通信
面向无连接 :邮件通信
2.TCP 可靠,UDP 不可靠
TCP 丢包会自动重传,UDP 不会(任何必需的可靠性必须由应用层来提供)。 TCP 可靠性由三个机制保证:1. 序号(TCP 报文的序号)2. 确认(ACK 机制)3. 重传(超时或者冗余的 ACK)
3.TCP 有序,UDP 无序
消息在传输过程中可能会乱序,后发送的消息可能会先到达,TCP 会对其进行重新排序,UDP 不会。
4.TCP 无界,UDP 有界
TCP 通过字节流传输,UDP 中每一个包都是单独的。
5.TCP 有流量控制(拥塞控制),UDP 没有
TCP 协议的流量控制是基于滑窗协议实现的。 拥塞控制和流量控制不同,流量控制是点对点的通信量抑制,抑制发送端发送速率,使得接收端来得及接收。UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
6.TCP 传输慢,UDP 传输快
因为 TCP 需要建立连接、保证可靠性和有序性,所以比较耗时。 这就是为什么视频流、广播电视、在线多媒体游戏等选择使用 UDP。
7.TCP 是重量级的,UDP 是轻量级的
TCP 要建立连接、保证可靠性和有序性,就会传输更多的信息,如 TCP 的包头比较大。
8. TCP 的 头部比 UDP 大
TCP 开销比 UDP 大,TCP 头部需要 20 字节,UDP 头部只要 8 个字节。
9.TCP面向字节流,UDP面向报文
TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;
UDP是面向报文的
10.TCP是全双工的信道,UDP支持一对一,一对多,多对一和多对多的交互通信
每一条TCP连接只能是点到点的
总结:
TCP 是面向连接的、可靠的、有序的、速度慢的协议;UDP 是无连接的、不可靠的、无序的、速度快的协议。
TCP 开销比 UDP 大,TCP 头部需要 20 字节,UDP 头部只要 8 个字节。
TCP 无界有拥塞控制,UDP 有界无拥塞控制。
Ref
TCP 与 UDP 的区别