我有以下关于 tcp 握手的查询。
为了建立连接,服务器必须发送一个带有 SYN 标志的数据包到 1 然后服务器用一个 SYN,ACK 标志回复到 1 ,然后主机(客户端)用 ACK 标志回复到 1 和 SYN 0。
但是要终止连接,主机是发送第一个终止还是服务器发送?此外,如果它的服务器是服务器是否将 ACK 、 FIN 发送到 1 并且主机回复 ACK 1 和 FIN 0?
我有以下关于 tcp 握手的查询。
为了建立连接,服务器必须发送一个带有 SYN 标志的数据包到 1 然后服务器用一个 SYN,ACK 标志回复到 1 ,然后主机(客户端)用 ACK 标志回复到 1 和 SYN 0。
但是要终止连接,主机是发送第一个终止还是服务器发送?此外,如果它的服务器是服务器是否将 ACK 、 FIN 发送到 1 并且主机回复 ACK 1 和 FIN 0?
TCP 没有客户端或服务器,这是一个应用概念。TCP 创建对等连接。从应用程序的角度来看,客户端或服务器都可以请求与对方建立连接,这取决于应用程序的架构方式。服务器应用程序向客户端应用程序提供服务。TCP 既不知道也不关心哪个是服务器或客户端。
在这种对等安排中,任何一方都可以请求断开连接。这实际上取决于应用程序或服务的工作方式。不幸的是,关于 OSI 第 4 层之上的应用程序和协议的问题在这里是题外话。
有关 TCP 如何运行的更多信息,您可以参考RFC 793,传输控制协议,并且有第 2.7 节。连接建立和清除。
假设计算机 A将是我们的发送计算机,计算机 B将是我们的接收计算机。
为了启动进程,计算机 A向计算机 B 发送一个 TCP 段,并设置了这个 SYN 标志。这是计算机 A 的说法,“让我们建立一个连接并查看我的序列号字段,以便我们知道这个对话从哪里开始。”
然后计算机 B以 TCP 段响应,其中设置了 SYN 和 ACK 标志。这是计算机 B 的说法,“当然,让我们建立连接,我承认你的序列号。”
然后计算机 A再次响应,只设置了 ACK 标志,这只是说,“我确认您的确认。让我们开始发送数据。”
这种涉及具有 SYN、SYN/ACK 和 ACK 集的段的交换,每次在任何地方建立 TCP 连接时都会发生。并且非常有名,以至于有一个绰号。三向握手。
握手是两个设备确保它们使用相同协议并且能够相互理解的一种方式。一旦三次握手完成,TCP 连接就建立了。
一旦与 TCP 连接有关的设备之一准备关闭连接,就会发生称为四次握手的事情。
准备关闭连接的计算机发送一个FIN 标志,另一台计算机用一个ACK 标志确认。
然后,如果这台计算机也准备关闭连接,几乎总是如此。它将发送一个FIN 标志。
这再次由ACK 标志响应。