1、简介
简述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的区别
对比如下
面向报文:
面向报文的传输方式是应用层交给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网络开发