在TCP三次握手过程中,我们研究了在传输控制协议(TCP)中如何利用SYN位段建立客户端和服务器之间的连接。在本文中,我们将研究如何在客户机和服务器之间建立TCP连接。这里,我们还需要向FIN位设置为1的服务器发送位段,本文为你详细解析TCP连接终止。
机制如何在TCP中起作用:
- 步骤1(来自客户的FIN)–假设客户端应用程序决定要关闭连接。 (请注意, 服务器也可以选择关闭连接)。这会导致客户端发送带有鳍设置为1到服务器并输入FIN_WAIT_1州。在FIN_WAIT_1状态, 客户端等待带有确认(ACK)的服务器中的TCP段。
- 第2步(来自服务器的ACK)–当服务器从发件人(客户端)收到FIN位段时, 服务器立即将确认(ACK)段发送到发件人(客户端)。
- 步骤3(客户等待中)–在FIN_WAIT_1状态, 客户端等待服务器的TCP段, 并发出确认消息。收到此细分后, 客户进入FIN_WAIT_2州。在FIN_WAIT_2状态, 客户端等待FIN位设置为1的来自服务器的另一个段。
- 步骤4(来自服务器的FIN)–服务器发送ACK段后的一段时间后, 服务器将FIN位段发送到发件人(客户端)(由于服务器中的某些关闭过程)。
- 步骤5(来自客户端的确认)–当客户端从服务器收到FIN位段时, 客户端确认服务器的段并输入时间的等待州。的时间的等待状态可让客户端重新发送最终确认, 以防确认失去了。客户在时间的等待状态取决于它们的实现, 但是它们的典型值为30秒, 1分钟和2分钟。等待之后, 连接正式关闭, 并且客户端上的所有资源(包括端口号和缓冲区数据)都被释放。
下图说明了假设客户端开始断开连接时服务器端和客户端访问的一系列状态。在这两个状态转换图中, 我们仅显示了如何正常建立TCP连接, 以及TCP连接终止。
ClientSide访问的TCP状态–
ServerSide访问的TCP状态–
在这里, 我们没有描述在某些情况下会发生什么情况, 例如当连接的两端都希望同时启动或关闭时。如果你有兴趣了解有关TCP的更多信息以及其他高级问题, 我们鼓励你阅读Stevens的综合著作。
门问题–
考虑在两台不同的计算机上运行的TCP客户端和TCP服务器。完成数据传输后, TCP客户端调用
关
终止连接, 并将FIN段发送到TCP服务器。服务器端TCP通过发送一个由客户端TCP接收到的ACK进行响应。根据TCP连接状态图(RFC 793), 客户端TCP连接在哪种状态下等待服务器端TCP的FIN?
(A)最后确认
(B)等待时间
(C)FIN-WAIT-1
(D)FIN-WAIT-2
说明:(D)
GATE CS 2017(Set 1), 问题12
参考–
TCP连接终止–维基百科
http://www.bau.edu.jo/UserPortal/UserProfile/PostsAttach/10617_1870_1.pdf
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。