📜  为什么 TCP 连接终止需要 4 次握手?

📅  最后修改于: 2022-05-13 01:57:03.406000             🧑  作者: Mango

为什么 TCP 连接终止需要 4 次握手?

日常生活中的现代发展,在技术和互联网方面,只有在 TCP/IP 套件的帮助下才能实现。

TCP用于网络上设备之间的通信。它代表传输控制协议。它可以与任何类型的网络一起使用,无论是个人网络还是互联网。例如,它可以与 Extranet 或 Intranet 等一起工作。

简而言之,TCP 只是简单地决定了网络中的数据传输。 TCP 的工作原理是将数据分解成可以通过网络活动传输的小数据包。

让我们通过一个例子来理解它,假设客户端需要向服务器发送一些数据,它将通过 TCP 发送。它用于在客户端和服务器之间创建连接。一旦成功建立连接并将数据传输到服务器。因此,下一步将是关闭连接。

在本文中,我们将讨论 TCP 在计算机网络中的重要性以及 TCP 连接的建立和终止。主要是,我们将讨论四次握手过程,它的重要性,优点和缺点。

TCP连接建立过程

TCP是面向连接的协议,以全双工方式工作。因此,首先需要在设备之间建立良好的逻辑连接,以便可以交换数据。这里值得注意的是它可以向双方发送数据。

因此,这里是主要的 3 个步骤,也称为 TCP 3-way Handshake,完全建立 TCP 连接所需的步骤如下:

  1. 在第一步中,一方面,客户端或服务器通过向另一端发送“同步”SYN 标志来启动连接建立。在这一步中,客户端的初始序列号将被发送到服务器以创建连接。
  2. 作为对 SYN 标志的回报,TCP 服务器将发送一个“确认”ACK 标志及其初始序列号以建立连接。
  3. 最后,在客户端通过ACK标志确认后,返回服务器的SYN标志,连接建立将被激活。

现在,为了清楚地理解这个过程,我们将在下面讨论建立 TCP 连接的进一步步骤:

第一步,客户端发送一个 SYN 请求建立连接,作为 Packet SYN:1 到服务器。在成功接收到SYN标志或数据包后,现在服务器将发送一个ACK标志作为数据包ACK:1,用于向客户端确认。在这个过程中,服务器也可以将数据发送给对方。为此,服务器会将数据作为数据包 SYN: 1 发送给客户端。最后,客户端在成功接收到数据后,会向服务器发送一个ACK标志作为数据包ACK:1作为确认。

要理解它,您还可以查看下面给定的图表:

三路连接建立

三路连接建立

四次握手或 TCP 连接终止:

这里,要终止已建立的 TCP 连接,需要交换以下 4 个 TCP 数据包。您可以通过以下陈述来理解:

1.主机A→主机B:设置FIN标志。
2.主机B→主机A:ACK标志设置。
3.主机B→主机A:FIN标志设置。
4.主机A→主机B:ACK标志设置。

这 4 个步骤称为TCP 4 次握手,这是终止 TCP 连接所必需的。为了终止已建立的 TCP 连接,该过程需要执行以下步骤。下面给出:

  1. 首先,从连接的一侧,无论是客户端还是服务器,都会发送 FIN 标志作为终止连接的请求。
  2. 在第二步中,无论谁收到 FIN 标志,都将向对方发送一个 ACK 标志作为对关闭请求的确认。
  3. 并且,在稍后的步骤中,服务器也会向对方发送一个 FIN 标志作为关闭信号。
  4. 在最后一步,收到最终 FIN 标志的 TCP 将发送一个 ACK 标志作为建议的连接关闭的最终确认。

由于关闭活动连接需要四个主要步骤,因此称为四次握手。为了更好地理解,您可以看一下下图:

四次握手过程

四次握手过程

为什么 TCP 连接终止需要 4 次握手?

现在的问题是,为什么终端不能同时发送ACK和FIN数据包?可以减少一个步骤。为什么这里需要四次握手?

嗯,仔细看可以看出,四次握手实际上是一组两次握手。但是,在某些情况下,可以将 2 和 3 设置在同一个数据包中,这也不是完全错误的。

四次握手作为一对双向握手。其中,第一个阶段是,当客户端向服务器发送 FIN 标志时,作为回报,服务器发送 ACK 标志作为确认。

这可以通过下面的语句来理解:

Client ------FIN-----> Server
Client <-----ACK------ Server

此时客户端处于等待状态,正在等待来自服务器的FIN标志。因此,可以终止连接。这种状态可以称为 FIN_WAIT_2。

现在我们知道它作为全双工模式工作,因此如果一侧连接断开,则无法从连接的那一侧发送更多数据。但它仍然可以从另一端接收数据。

在这里,当Client处于FIN_WAIT_2状态时,服务器可以发送更多的数据。并且一旦服务器完成发送数据,那么服务器将向客户端发送FIN标志作为终止请求,然后客户端发送ACK标志作为终止连接的确认。

正如您在下面的声明中看到的:

Client <-----FIN------ Server
Client ------ACK-----> Server

因此,正如所解释的,在这种情况下,步骤 2 和 3 不能作为一个包发送,因为它们属于两个不同的状态。

在这种情况下,这里需要四次握手,作为第一个 FIN 标志,由客户端发送到服务器是终止请求。而客户端收到的第一个 ACK 只是对 FIN 1 的响应。现在这里只断开了来自客户端的连接,但服务器仍然处于工作状态。这意味着它可能仍有一些数据要发送。因此,在这种情况下,不能突然切断连接。在这里,其他两个步骤需要由服务器执行。

现在另一个原因是双方都很难定义对等方不响应的原因。此外,不仅离线状态会导致数据包丢失。此外,服务器处理中的其他异常也可能导致它。而且这个想法还有一个问题是,在这种情况下,客户端将不得不等待很长时间,直到时间结束。在这里,四次握手看起来是解决这些问题的更好、更容易的选择。

使用 TCP 的优点

在这里,下面给出了使用 TCP 连接的一些优点:

  • 这是一种安全的数据传输方式,因为在发送任何数据之前,它需要在每个步骤中进行确认。
  • 它可以用于与计算机网络相关的许多不同领域。
  • 它可以通过各种不同的网络进行通信,例如协议等。
  • 由于其可扩展性,可以轻松添加和撤回更多设备。
  • 在安全方面,通过IP地址来识别网络上的每一台设备,有助于提高网络的安全性。 IP 地址可用于识别设备。

使用 TCP 的缺点:

以下是使用 TCP 的一些缺点。下面给出:

  • 它不能像其他蓝牙连接一样代表 TCP/IP 套件中接受的其他协议。
  • 服务、接口和协议的概念之间的界限尚不清楚。
  • 除此之外,这是一个耗时的过程,因为它涉及许多步骤。而且,如果没有 FIN 标志和 ACK 标志作为双方的确认,就无法关闭连接,这需要时间。

到目前为止,我们已经讨论了 TCP 在计算机网络中的作用。通过四次握手建立和终止网络连接的过程。总之,尽管有其局限性,但它是一种在网络之间传输数据的有效方法。