盒子
盒子
文章目录
  1. TCP传输控制协议
    1. 面向连接
  2. UDP用户数据报协议
  3. 协议对比

网络协议TCP、UDP

国际标准化组织(ISO)指定了一个计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。做前端肯定少不了和网络打交道,所以前端知识栈中必有网络协议。

首先我们要知道,UDP和TCP工作在七层模型中的传输层。然后我们需要了解这两种协议的特点以及根据特点使用在合适的场景中。

TCP VS UDP

TCP传输控制协议

直接列出来TCP的特点,然后再一一解释:

  • 面向连接的、可靠的传输协议
  • 全双工通信
  • 通过滑动窗口进行流量控制
  • 拥塞控制

面向连接

在TCP传输数据之前,要先建立连接,这就是所谓的面向连接。通过建立连接的方式传输数据,就是为了保证数据的完整性、一致性等,所以称之为可靠的传输协议。TCP建立连接和断开连接都需要进行握手操作。

TCP建立连接的方式叫做三次握手

三次握手

  • 第一次握手。客户端向服务端发送连接请求报文段。
  • 第二次握手。服务端收到连接请求报文段后,同意后发送一个应答。
  • 第三次握手。当客户端收到同意连接的应答后,向服务端发送一个确认报文,同时进入连接成功状态,服务端收到报文后也进入连接成功状态。此时连接建立完成,开始传送数据。

TCP断开连接的方式叫做四次挥手

四次挥手)

  • 第一次挥手。客户端向服务端发送连接释放请求。
  • 第二次挥手。服务端收到释放请求发送确认包,同时进入等待关闭状态。这时服务端不再接受数据,但是还可以发送数据。
  • 第三次挥手。服务端发送完数据后,向客户端发送连接释放请求。然后服务端就进入最后确认阶段。
  • 第四次挥手。客户端收到释放请求后,向服务端发送确认应答进入等待状态。状态持续2MSL(报文最大生存时间),如果中间没有收到的服务端的重发请求就进入关闭状态,服务端收到确认应答后也进入关闭状态。

双全工通信方式是指通信双发可以同时发送数据。

流量控制是指采用某种方法,控制收发端传输数据的速度,从而维持网络数据传输的平衡。TCP中通过使用体积可变的滑动窗口来实现流量控制。

网络拥塞是因为,在某段时间,网络中某一资源的需求量超过该资源所能提供的资源,简单来说就是需求大于供应。TCP中的拥塞控制包括四个算法:慢开始、拥塞避免、快速重传、快速恢复。

流量控制和拥塞控制虽然起到了类似的效果,但是原理不同。流量控制是为了解决输送方和接收方速度不同而导致的数据丢失问题;拥塞控制是防止过多的数据注入到网络中,导致网络崩溃。

UDP用户数据报协议

UDP传输的特点:

  • UDP是一种面向无连接的、尽最大可能交付的传输协议
  • 支持一对一、一对多、多对一、多对多的传输方式

UDP是面向无连接的,在传输数据之前也不需要先建立连接,且UDP只服务数据报文的搬运,不保证有序完整的将数据传递到目的端,同时也没有流量控制拥塞控制之类的机制。

相对于TCP来说,UDP看似缺点很多,但实际上UDP正因为没有那些复杂的东西,使得传输数据很高效,并且使用的资源很少。

协议对比

使用一张图清晰对比两种协议:

对比

TCP和UDP两种协议就好比是一对一辅导和教室授课(/doge)。

TCP保证老师讲的东西都可以被学生记住,讲课的时候保证一定的环境,老师讲的内容要在学生的接受范围之内,不要求进度,但是要求学生把讲的都学会。

UDP像是,老师不管听懂没听懂,一节课该讲多少就要讲多少,进度可不能落下,所以进度都很快。

由于UDP时效性很高,所以可以用于视频电话,直播等场景中;而TCP对数据完整无误要求更高,所以常用于文件传输等。

欢迎关注公众号
扫码关注我的微信公众号-大前端合集
  • 微信公众号-大前端合集