亲宝软件园·资讯

展开

TCP VS UDP

Fireflycjd 人气:0

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的区别

对比如下

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网络开发

加载全部内容

相关教程
猜你喜欢
用户评论