TCP和UDP的区别
面试常考的知识点
1.传输控制协议TCP(Transmisson Control Protocol)
- 是提供面向连接,可靠传输的数据传输服务。
主要特点:
- TCP是面向连接的;
- 每一条TCP连接只能有两个端点,每一条TCP连接只能点对点(一对一);
- TCP提供可靠的交付服务。通过TCP传送的数据,无差错,不丢失,不重复,并按时到达;
- TCP提供全双工通信。TCP允许应用程序在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据;
- 面向字节流。TCP 中的“流”(Stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。
2.用户数据协议UDP(User Datagram Protocol)
- 是提供无连接,尽最大努力的数据传输服务,不保证数据传输的可靠性。
主要特点
- UDP是面向无连接的;
- UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态(这里面有许多参数);
- UDP是面向报文的
- UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 直播,实时视频会议等);
- UDP 支持一对一、一对多、多对一和多对多的交互通信;
- UDP 的首部开销小,只有8个字节,比TCP的20个字节的首部要短。
3.区别
TCP与UDP从以下几个方面:
- 可靠性;TCP是可靠的,UDP不不可靠的
- TCP的面向连接的。UDP是面向无连接的
- 有序性。TCP在接受数据后是有序的。UDP则是无序的
- 速度。TCP速度比较慢,因为要创建连接。UDP则比较快,比较适合实时应用
- 量级。TCP是重量级的,头部大小在20-60;UDP则是轻量级的,头部大小在8个字节
- 应用场景。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。 UDP 一般用于即时通信,实时应用,比如: QQ 语音、 QQ 视频 、直播等等