TCP和UDP对比

2019-01-26

运行在TCP协议上的协议:HTTP、HTTPS、FTP、POP3、SMTP、TELNET、SSH
运行在UDP协议上的协议:DHCP、NTP

1 TCP特性

  1. TCP 提供一种面向连接的、可靠的字节流服务
  2. 在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP
  3. TCP 使用校验和,确认和重传机制来保证可靠传输
  4. TCP 给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复
  5. TCP 使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制

2 UDP 简介

UDP 是一个简单的传输层协议。和 TCP 相比,UDP 有下面几个显著特性:

  1. UDP 缺乏可靠性。UDP 本身不提供确认,序列号,超时重传等机制。UDP 数据报可能在网络中被复制,被重新排序。即 UDP 不保证数据报会到达其最终目的地,也不保证各个数据报的先后顺序,也不保证每个数据报只到达一次
  2. UDP 数据报是有长度的。每个 UDP 数据报都有长度,如果一个数据报正确地到达目的地,那么该数据报的长度将随数据一起传递给接收方。而 TCP 是一个字节流协议,没有任何(协议上的)记录边界。
  3. UDP 是无连接的。UDP 客户和服务器之前不必存在长期的关系。UDP 发送数据报之前也不需要经过握手创建连接的过程。
  4. UDP 支持多播和广播

3 TCP和UDP的区别。

TCP和UDP都是传输层中的协议。

  1. TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,应用程序在使用 TCP协议之前,必须先建立起一个 TCP连接,之后才能进行通信活动(连接:三次握手;断开:四次挥手)。UDP(User Data Protocol,用户数据报协议)是面向无连接的协议,不需要建立和断开连接,发送端可以在任何时候自由地发送数据。
  2. UDP协议支持一对一、一对多、多对一和多对多的交互通信。 而 TCP协议仅支持一对一的交互通信。
  3. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  4. UDP协议是面向报文的。发送方的 UDP对应用程序交付下来的报文,再添加了首部信息之后就向下交付给 IP层。这就是说,应用层交给 UDP多长的报文,UDP会照原样发送,即一次发送一个报文。可以看出,应用程序必须控制报文的长度。UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。而 TCP协议是面向字节流的,就是说虽然应用程序交付给 TCP协议的是大小若干数据块,但是 TCP协议把这些数据看成仅仅是一连串无结构的字节流,然后 TCP协议根据当前情况选择性地将字节流分组并发送。
  5. TCP首部开销20字节;UDP的首部开销小,只有8个字节。
  6. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

4 TCP三次握手与四次挥手

详见TCP协议

三次握手:

  1. a:我要连接你
  2. b:你来连接吧
  3. a:我收到你刚发的消息,我们连接上了

然后就可以相互通信了。

四次挥手:

  1. a:我要断开连接了
  2. b:发送 我收到了你要断开连接的请求。然后进行断开连接的准备阶段
  3. b:发送 断开连接 指令包
  4. a:发送 确认断开连接 包 b在收到a的确认包之后才真正的关闭连接。

参考文献

TCP协议