# 前言
计算机网络模型在传输层定义了两种常见的传输协议:TCP 和 UDP 。这里从 10 个方面比较这两种协议。
TCP:传输控制协议,Transmission Control Protocol。 UDP:用户数据报协议,User Datagram Protocol
# 比较
* 1 连接
- TCP 是面向连接的协议。
UDP 是无连接的协议,UDP更加适合消息的多播发布,从单个点向多个点传播消息。
* 2 可靠性
TCP 提供交付保证,如果传输过程中发生丢失,将会重发。
-
* 3 有序性
TCP 保证了消息的有序性,即使到达客户端的顺序不同,TCP 也会排序。
-
* 4 速度
TCP 由于包含握手和挥手,所以速度慢。
-
* 5 报头大小
TCP 报头较大。
- TCP 数据报头的为 20 字节。
- TCP 报头中包含序列号,ACK 号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。

- UDP 报头较小。

TCP 有流量控制。
在任何用户数据可以被发送之前,TCP 需要三数据包来设置一个套接字连接。TCP 处理的可靠性和拥塞控制。
-
* 7 数据边界
TCP 不保存数据边界。
虽然 TCP 也将在收集所有字节之后生成一个完整的消息,但是这些信息在传给传输给接受端之前将储存在 TCP 缓冲区,以确保更好的使用网络带宽。
UDP 保证数据边界。
在 UDP 中,数据包单独发送的,只有当他们到达时,才会再次集成。包有明确的界限来哪些包已经收到,这意味着在消息发送后,在接收器接口将会有一个读操作,来生成一个完整的消息。
* 8 发送消耗
- TCP 发送消耗为重量级。
- UDP 发送消耗低,为轻量级。
因为 UDP 传输的信息中不承担任何间接创造连接,保证交货或秩序的的信息。从报头大小也可以发现。
