首页 > 其他分享 >四次挥手

四次挥手

时间:2023-09-14 23:44:39浏览次数:32  
标签:挥手 ACK 报文 四次 关闭 服务器 FIN 客户端

第一次挥手(Active Close):
客户端发送一个FIN(Finish)报文给服务器,表示客户端不再发送数据。客户端进入FIN_WAIT_1状态,等待服务器的确认。

第二次挥手(Passive Close):
服务器收到客户端的FIN报文后,发送一个ACK(Acknowledge)报文作为确认,表示已经收到了客户端的关闭请求。服务器进入CLOSE_WAIT状态。此时,服务器可能还有未发送完的数据,因此仍可以发送数据给客户端。

第三次挥手(Passive Close):
服务器发送一个FIN报文给客户端,表示服务器也准备关闭连接。同时,服务器通知客户端:我已经没有数据要发送了。服务器进入LAST_ACK状态。

第四次挥手(Active Close):
客户端收到服务器的FIN报文后,发送一个ACK报文作为确认。客户端进入TIME_WAIT状态,并等待一段时间(两个最大报文段生存时间的时间),以确保服务器接收到了ACK报文。

在等待时间结束后,客户端关闭了连接,进入CLOSED状态。服务器接收到ACK报文后,也关闭了连接,进入CLOSED状态。

服务器在发送最后一个FIN报文后,并不会立即断开连接,而是进入LAST_ACK状态。在LAST_ACK状态下,服务器等待客户端发送确认的ACK报文。

在接收到客户端的确认ACK报文后,服务器才会关闭连接并进入CLOSED状态。这个过程中,服务器也需要等待一段时间以确保客户端接收到ACK报文,避免出现网络延迟或丢包导致的问题。

因此,可以说服务器在发送最后一个FIN报文后并不立即断开连接,而是等待客户端的确认ACK报文后才关闭连接。这样做是为了确保连接的正常关闭,并保证数据的可靠传输。

如果服务器最后发送的FIN报文没有收到客户端的ACK报文,那么服务器就无法确认连接已经被关闭,因此不能立即关闭连接。在这种情况下,服务器会等待一段时间(通常是2倍的最大报文段生存时间)以确认ACK报文是否丢失或者延迟到达。

如果在等待时间结束后服务器仍然没有收到客户端的ACK报文,那么服务器就会强制关闭连接。在强制关闭连接后,服务器可能会向上层应用程序或者其他系统发送错误报告或日志,以提醒管理员发现和修复问题。

需要注意的是,在正常情况下,四次挥手过程中服务器不会强制关闭连接,除非发送的FIN报文丢失或者延迟到达导致ACK报文没有及时到达。四次挥手过程中的等待时间是为了保证数据传输的可靠性和完整性,并尽可能避免数据丢失或损坏。

标签:挥手,ACK,报文,四次,关闭,服务器,FIN,客户端
From: https://www.cnblogs.com/lzfyz/p/17703834.html

相关文章

  • OpenHarmony南向开发培训第四次作业(D9案例数据上云)
    首先,要实现Bearpi(Hi3861)的数据上云,我们要先了解bearpi的上云案例是怎么运行的这里我选取的是D9_iot_cloud_oc_manhole_cover这个案例那么既然是上云,我们肯定要先链接平台,而在案例里链接平台的函数是staticintCloudMainTaskEntry(void)你就记住你什都不用改,要改什么会在文章最后......
  • 简单描述下HTTP协议和TCP协议之间的关系以及TCP三次握手, 四次挥手
    TCP三次握手,四次挥手TCP(传输控制协议)是一种用于在计算机网络中建立可靠连接的协议。TCP连接的建立和终止分别使用了"三次握手"和"四次挥手"的过程。三次握手:-第一步:客户端发送一个带有SYN(同步)标志的TCP数据包,请求建立连接。-第二步:服务器收到请求后,回复一个带有SYN和ACK(确......
  • 两张动图-彻底明白TCP的三次握手与四次挥手(有用***)
    两张动图-彻底明白TCP的三次握手与四次挥手 原文链接:https://blog.csdn.net/qzcsu/article/details/72861891 背景描述通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的......
  • 梅科尔工作室-IoT-南向开发第四次培训笔记
    当使用MQTT协议进行开发时,以下是一些值得注意的方面:选择MQTT代理:MQTT代理是负责消息传递的中间件,你可以选择使用开源的MQTT代理,如EclipseMosquitto、EMQX等,或者使用云服务提供商的MQTT服务。定义主题(Topic)结构:在设计时,你需要合理地定义主题结构,以便发布者和订阅者可以有效地进行......
  • tcp三次握手和四次挥手
    三次握手所谓三次握手(Three-wayHandshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个报文。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。在socket编程中,客户端执行connect()时。将触发三次握手。......
  • TCP的三次握手四次挥手
    简述TCP的三次握手。第一步,是请求端(客户端)发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号。第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被......
  • 深入解析:HTTP和HTTPS的三次握手与四次挥手
    推荐阅读AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、AI讲话、翻译,GPU点亮AI想象空间「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间https://drive.uc.cn/s/2aeb6c2dcedd4AIGC资料包https:......
  • TCP三次握手与四次挥手状态变化十一种状态变化详解
    建立连接过程:客户端默认状态:CLOSED:关闭发起建立连接状态:SYN_SENT 发送SYN建立连接状态:ESTABLISHED已连接服务端服务端默认状态为LISTEN接受SYN并发送ACK:SYN_RCVD我接受到了你的SYN请求ESTABLISHED 建立连接断开连接过程客户端:连接状态:ESTABLISHED客户端发送FIN断开连接客户......
  • TCP三次握手与四次挥手详解
    三次握手根据TCP的包头字段,存在三个重要的标识ACKSYNFINACK:位置为1,表示确认收到发送请求,表示确认位SYN:位置1,表示建立TCP连接FIN:位置1,表示断开TCP连接PC1要与PC2建立TCP连接三次握手1)首先PC1像PC2发送:SYN包(表示我要与你建立连接)2)PC2收到后回复PC1:ACK(同意与你建立连接),并发送:SYN(......
  • 关于三次握手和四次挥手,面试官到底想听到怎样的回答?
    我一看到TCP,啪就点进来了,很快啊。  TCP报文   一个完整的TCP报文头部共有20个字节,其中包括:源端口号(16位)和目的端口号(16位):再加上ip首部的源ip地址和目的IP地址可以唯一确定一个TCP连接。数据序号(16位):表示在这个报文段中的第一个数据字节序号。确认序号:仅当......