TCP VS UDP
Fireflycjd 人气:01、简介
简述TCP的工作流程:
在三次握手的帮助下建立了TCP连接。这是一个启动和确认连接的过程。建立连接后,数据传输开始,传输过程完成后,通过四次挥手关闭已建立的连接。
关于TCP的内容请看之前的文章《TCP协议详解》。
简述UDP的工作流程:
UDP 使用简单的传输方法,无需进行握手对话即可进行通信。UDP还假定错误检查和更正在应用程序中并不重要,UDP提供数据完整性的校验和,但是不提供校正错误的机制。
关于UDP的内容请看之前的文章《UDP协议详解》。
他们的主要区别:
-
TCP 是面向连接的协议,而 UDP 是无连接协议。
-
TCP 的速度较慢,而 UDP 的速度速度更快。
-
TCP 使用握手协议, 如 SYN、 SYN- Ack、 Ack, 而 UDP 没有使用握手协议。
-
TCP 执行错误检查,同时进行错误恢复,另一方面,UDP 执行错误检查,但它丢弃错误的数据包。
-
TCP 具有确认段,但 UDP 没有任何确认段。
-
TCP 是重量级的,UDP 是轻量级的。
02、各自的特点
TCP的特点:
-
通信确认。
-
重新传输。
-
网络拥塞时延迟传输。
-
流量控制。
-
差错控制。
UDP的特点:
-
轻量化。
-
减少延迟,速度快。
-
允许小事务(DNS 查找)。
-
支持可容忍数据包丢失的带宽密集型应用程序。
03、TCP和UDP的区别
对比如下
TCP |
UDP |
TCP 是一个面向连接的协议。 |
UDP 是一个无连接的协议。 |
TCP 只能一对一通信。 |
UDP 支持一对一,一对多,多对一和多对多交互通信。 |
TCP 消息从一台计算机到另一台计算机在互联网上传播,面向字节流通信。 |
UDP 不是基于连接的,因此一个程序可以向另一个程序发送大量数据包,面向报文通信。 |
TCP 按特定顺序重新排列数据包。 |
UDP 协议没有固定顺序,因为所有数据包彼此独立。 |
TCP 的速度较慢。 |
UDP 速度更快,因为未尝试恢复错误。 |
TCP 协议首部大小为 20 字节。 |
UDP 协议首部大小为 8 字节。 |
TCP 是重量级的。TCP 需要三个数据包来设置套接字连接,然后才能发送任何用户数据。 |
UDP 是轻量级的。没有跟踪连接、消息排序等。 |
TCP 会进行错误检查,还可以进行错误恢复。 |
UDP 执行错误检查,但它丢弃错误的数据包。 |
TCP 有确认段。 |
UDP 无确认段。 |
TCP 使用握手协议,如 SYN、SYN-ACK、ACK。 |
UDP 无握手(因此无连接协议)。 |
TCP 是可靠的,因为它保证将数据传递到目标设备。 |
UDP 中无法保证将数据传递到目标设备。 |
TCP 提供广泛的错误检查机制,因为它提供流量控制和数据确认。 |
UDP 只有一个用于校验和的错误检查机制。 |
TCP 可靠传输,使用流量控制和拥塞控制 |
UDP 不可靠传输,不使用流量控制和拥塞控制 |
面向报文:
面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。(一个udp的最大报文长度2^16-1-20-8,20是ip报文头,8是udp报文头)
面向字节流:
面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。
04、TCP的应用
效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。举几个例子:文件传输(准确性要求高、但是速度可以相对慢)、接受邮件、远程登录。
05、UDP的应用
效率要求相对高,对准确性要求相对低的场景。举几个例子:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)。
06、总结
在传输层TCP和UDP协议基础上的应用层协议对比。
点击查看本文所在的专辑,STM32F207网络开发
加载全部内容