TCP和UDP的区别和各自适用的场景

01 TCP和UDP区别
1. 连接
- TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接。
- UDP无连接。
2. 服务对象
- TCP是点对点的两点间服务,即一条TCP连接只能有两个端点;
- UDP支持一对一,一对多,多对一,多对多的交互通信。UDP它在IP之上仅提供两个附加服务:多路复用和对数据的错误检查。
3. 可靠性
- TCP是可靠交付:无差错,不丢失,不重复,按序到达。当使用TCP向另一端发送数据时,它要求对端返回一个确认。如果没有收到确认,TCP自动重传数据并等待更长时间。在数次重传失败后,TCP才放弃。
- UDP是尽最大努力交付,不保证可靠交付。不提供确认、序列号、超时重传等机制。
4. 拥塞控制,流量控制
- TCP有拥塞控制和流量控制保证数据传输的安全性。TCP比较慢。
- UDP没有拥塞控制,网络拥塞不会影响源主机的发送效率。UDP比较快。
5. 报文长度
- TCP是动态报文长度,即TCP报文长度是根据接收方的窗口大小和当前网络拥塞情况决定的。以字节流的方式进行传输。
- UDP面向报文,不合并,不拆分,保留上面传下来报文的边界。
6. 首部开销
- TCP首部开销大,首部20个字节。
- UDP首部开销小,8字节。(
,源端口
,目的端口
,数据长度
)校验和
02 TCP和UDP适用场景
- 从特点上我们已经知道,TCP 是可靠的但传输速度慢,UDP 是不可靠的但传输速度快。因此在选用具体协议通信时,应该根据通信数据的要求而决定。
- 若通信数据完整性让位于通信实时性,则应该选用 UDP 协议(如小文件传送、
、视频传输
等);反之,则使用TCP 协议(如实时通信
、大文件传输
等)。重要状态的更新
- UDP具有对系统资源要求较少、具有较好的实时性、网络开销小的优点。当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用UDP。