1、简介

简述TCP的工作流程:

在三次握手的帮助下建立了TCP连接。这是一个启动和确认连接的过程。建立连接后,数据传输开始,传输过程完成后,通过四次挥手关闭已建立的连接。

关于TCP的内容请看之前的文章《TCP协议详解》。

简述UDP的工作流程:

UDP 使用简单的传输方法,无需进行握手对话即可进行通信。UDP还假定错误检查和更正在应用程序中并不重要,UDP提供数据完整性的校验和,但是不提供校正错误的机制。

关于UDP的内容请看之前的文章《UDP协议详解》。

他们的主要区别:

  1. TCP 是面向连接的协议,而 UDP 是无连接协议。

  2. TCP 的速度较慢,而 UDP 的速度速度更快。

  3. TCP 使用握手协议, 如 SYN、 SYN- Ack、 Ack, 而 UDP 没有使用握手协议。

  4. TCP 执行错误检查,同时进行错误恢复,另一方面,UDP 执行错误检查,但它丢弃错误的数据包。

  5. TCP 具有确认段,但 UDP 没有任何确认段。

  6. TCP 是重量级的,UDP 是轻量级的。

02、各自的特点

TCP的特点:

  1. 通信确认。

  2. 重新传输。

  3. 网络拥塞时延迟传输。

  4. 流量控制。

  5. 差错控制。

UDP的特点:

  1. 轻量化。

  2. 减少延迟,速度快。

  3. 允许小事务(DNS 查找)。

  4. 支持可容忍数据包丢失的带宽密集型应用程序。

03、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协议基础上的应用层协议对比。

TCP VS UDP-LMLPHP

点击查看本文所在的专辑,STM32F207网络开发

03-26 03:25