一、TCP与UDP
TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。
UDP是数据报传输协议,利用 IP 提供面向无连接的通信服务。
二、TCP与UDP的区别
首先TCP与UDP的头部报文格式不同
TCP多了序列号、确认号、标志位、窗口大小、紧急指针等
UDP多了报文长度字段
下面我们来具体说一下TCP与UDP的区别
1. 连接
TCP 是面向连接的传输层协议,传输数据前先要建立连接。
UDP 是不需要连接,即刻传输数据。
2. 服务对象
TCP 是一对一的两点服务,即一条连接只有两个端点。
UDP 支持一对一、一对多、多对多的交互通信
3. 可靠性
TCP 是可靠交付数据的,数据可以无差错、不丢失、不重复、不失序。
UDP 是尽最大努力交付,不保证可靠交付数据。但是我们可以基于 UDP 传输协议实现一个可靠的传输协议,比如 QUIC 协议,此时我们就可以引申到HTTP3的QUIC协议!
4. 拥塞控制、流量控制
TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。
UDP 则没有,即使网络非常拥堵了,也不会影响 UDP 的发送速率。
此时我们就可以引申到TCP/UDP的应用场景,因为TCP有拥塞控制和流量控制以及具有可靠性,所以一些需要保证安全性的操作需要用到TCP,同样可以根据UDP的特性,应用到一些需要实时性的操作
5. 首部开销
TCP 首部长度较长,会有一定的开销,首部在没有使用选项字段时是 20 个字节,如果使用了选项字段则会变长的。
UDP 首部只有 8 个字节,并且是固定不变的,开销较小。
6. 传输方式
TCP 是流式传输,没有边界,但保证顺序和可靠。(可以引申到TCP为什么是基于字节流的,以及TCP的粘包问题以及解决)
UDP 是一个包一个包的发送,是有边界的,但可能会丢包和乱序。
7. 分片不同
TCP 的数据大小如果大于 MSS 大小,则会在传输层进行分片,目标主机收到后,也同样在传输层组装 TCP 数据包,如果中途丢失了一个分片,只需要传输丢失的这个分片。
UDP 的数据大小如果大于 MTU 大小,则会在 IP 层进行分片,目标主机收到后,在 IP 层组装完数据,接着再传给传输层。(可以引申到IP层的路径MTU发现,利用ICMP协议)、
还有一些不那么重要的差别,比如socket通信中UDP和TCP的使用等,一定要注意知识的系统性,学会延伸与扩展