现在我们主要使用TCP(传输控制协议)在面向连接的网络中进行数据传输。但是你有没有想过,为什么我们更喜欢 TCP 而不是其他协议呢?
实际上,TCP 为我们提供了两个设备之间安全可靠的连接链路。而且,这只有在建立和关闭两个设备之间的连接期间发生在 TCP 中的 3 次握手过程中才有可能。顾名思义,建立和关闭连接需要三个步骤。因此,在本博客中,我们将了解 TCP 3 次握手过程以及其中涉及的不同步骤。
TCP 3 次握手过程
3-Way Handshake 过程是在 TCP 中发生的一组定义的步骤,用于创建安全可靠的通信链接并关闭它。实际上,TCP 在传输数据之前使用 3 次握手过程在两个设备之间建立连接。建立连接后,设备之间进行数据传输。之后需要终止连接,这也是通过使用 3 次握手过程完成的。建立安全可靠的连接是为了保留设备的 CPU、缓冲区和带宽以正常通信。因此,必须在数据传输后通过终止连接来释放这些资源。因此,可以使用 TCP 3 次握手过程以安全的方式建立和终止网络中的连接。
下面是 TCP 标头的图示。
TCP 头文件中有一些元素用于 3 次握手过程,它们是:
- 序列号:序列号是一个随机的 32 位(范围为 0 到 (2^32 -1))的数字,分配给数据的第一位。通常,一个序列号在一个连接中只使用一次。对于同一连接中的其他数据传输,可以使用其他一些随机序列号。
- 确认号:它是确认发送设备期望从发送方得到的下一个序列号。它通常比从发送方收到的序列号大 1。
- 窗口大小:窗口大小是缓冲区大小。它是缓冲区中可以接收数据的最大容量。
- 最大段大小:它是连接设备可以接受的每个数据段的最大大小。超过此大小,设备将无法接收数据段。
- SYN 标志: SYN 代表同步。它可以描述为建立连接的请求。如果 SYN 为 1,则表示设备要建立安全连接,否则不。
- ACK标志: ACK代表确认。可以说是SYN的响应。如果 ACK 为 1,则设备已收到 SYN 消息并确认,否则没有。
- FIN 标志: FIN 代表已完成。数据传输完成后,设备必须使用 FIN 标志终止连接。如果 FIN 为 1,则设备要终止连接,否则不。
下面是使用 3 次握手过程建立连接的图示。
以下是使用 TCP 中的 3 次握手过程建立连接所涉及的三个步骤:
- 客户端向服务器发送 SYN:当客户端想要连接到服务器时。它将“SYN”标志设置为 1 并将消息发送到服务器。该消息还有一些附加信息,如序列号(任何随机的 32 位数字)、此处的 ACK 设置为 0、窗口大小和最大段大小。例如,如果窗口大小为 2000 位,最大段大小为 200 位,则连接中最多可以传输 10 个数据段(2000/200 = 10)。
- 服务器向客户端回复 SYN 和 ACK:服务器收到客户端的同步请求后,通过将 ACK 标志设置为“1”向客户端发送确认。ACK 的确认号比接收到的序列号大一。例如,如果客户端发送了序列号 = 1000 的 SYN,那么服务器将发送确认号 = 10001 的 ACK。此外,服务器将 SYN 标志设置为“1”并将其发送给客户端,如果服务器也想建立连接。此处用于 SYN 的序列号将与客户端的 SYN 不同。服务器还将其窗口大小和最大段大小通告给客户端。完成这一步后,客户端到服务器端的连接就建立起来了。
- 客户端向服务器发送ACK:客户端收到服务器的SYN后,将ACK标志设置为’1’,并以大于服务器SYN序列号的确认号1发送给客户端。在这里,SYN 标志保持为“0”。完成此步骤后,现在也建立了从服务器到客户端的连接。建立连接后,将考虑发送方和接收方的最大段大小中的最小值进行数据传输。
下面是使用 3 次握手过程终止连接的图示。
以下是使用 TCP 中的 3 次握手过程终止连接所涉及的三个步骤:
- 客户端向服务器发送 FIN:当客户端想要终止连接时。它将 FIN 标志设置为“1”,并使用随机序列号将消息发送到服务器。这里,ACK 设置为 0。
- 服务器向客户端回复 FIN 和 ACK:服务器收到客户端的终止请求后,通过将 ACK 标志设置为“1”向客户端发送确认。ACK 的确认号比接收到的序列号大一。例如,如果客户端发送了序列号 = 1000 的 FIN,那么服务器将发送确认号 = 10001 的 ACK。此外,服务器将 FIN 标志设置为“1”并将其发送给客户端,如果服务器也想终止连接。此处用于 FIN 的序列号将与客户端的 FIN 不同。完成此步骤后,从客户端到服务器端的连接终止。
- 客户端向服务器发送ACK:客户端收到服务器的FIN后,将ACK标志设置为’1’,并以大于服务器的FIN序列号的确认号1发送给客户端。这里,FIN 标志保持为“0”。完成此步骤后,从服务器到客户端的连接现在也终止了。
这是关于 TCP 协议中使用的 3 次握手过程及其步骤的全部内容。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73572.html