简介
TCP和UDP是传输层提供的两个协议,提供了不同的运输功能!
头部信息
TCP是一个面向连接、可靠的协议。
UDP是一个无连接、不可靠的协议。
从头部就可以看出,TCP的头部比UDP多出不少内容。
区别
面向连接
TCP是面向连接的,在传输数据之前必须建立连接
UDP不需要连接,直接发送数据包就可以了。
发送方式
TCP面向字节流,将数据以字节流的方式传输。
UDP面向报文,应用程序交付多大的数据包,UDP都直接一次性传输一个报文。
可靠
TCP根据序列号和自动重传提供了可靠传输
UDP没有提供可靠传输。
流量控制和拥塞控制
TCP提供了拥塞控制和流量控制
UDP没有提供流量控制和拥塞控制,即使网络拥堵,也会发送全部数据
对应关系
TCP中客户端和服务器 1:1 对应。
UDP中没有客户端和服务器的概念,1个UDP 可以同时向 多个UDP发送数据包,1个UDP也可以同时接收多个UDP发送的数据包。
分片
当数据超过MTU的时候,会对数据包分片
TCP会在运输层中就开始分片,TCP自己会进行分片,每个分片中都有一个TCP头部。
UDP会将所有数据都放到UDP数据里面,然后在IP层分片,只有一个分片中存在UDP头部。IP层会对UDP分片和重组,如果有分片丢失,就重传所有的分片。具体的原理我们单独开一篇文章讲。
应用场景
TCP适用于HTTP、FTP、SMTP等需要可靠传输的场景。
TCP因为要确保可靠传输,需要建立连接(三次握手等)、维护滑动窗口等操作,延迟比较高。
UDP适用于以下场景:
1、 数据量小并且对可靠性要求不高
2、 多对多传输
3、 实时性要求高
UDP不需要建立连接,并且数据量小的时候不需要IP分片,传输效率高,延迟低。
比如:DNS、实时性要求高的游戏、视频语音聊天等