首页 > 其他分享 >TCP连接过程中涉及到的状态转换

TCP连接过程中涉及到的状态转换

时间:2024-12-08 23:01:32浏览次数:6  
标签:转换 重传 ACK TCP TIME 客户端 连接 WAIT

TCP连接过程中涉及到的状态转换

TCP 服务器和客户端都要有一定的数据结构来保存这个连接的信息。
在这个数据结构中其中就有一个属性叫做 “状态”
操作系统内核根据状态的不同,决定了当前应该干什么。(不会迷茫也不会混乱)

在这里插入图片描述

LISTEN

LISTEN状态,表示服务器这边,创建好 serverSocket 了,并且绑定端口号完成。

ESTABLISHED

ESTABLISHED已确立的。客户端和服务器连接已经建立完毕 (三次握手握完了)

在这里插入图片描述

谁被断开连接,谁进入 CLOSE_WAIT

CLOSE_WAIT

CLOSE_WAIT就表示,接下来代码中需要调用 close 来主动发起 fin,收到对方的 fin 之后进入这个状态的。

谁主动断开连接,谁进入 TIME_WAIT

TIME_WAIT

TIME_WAIT就是表示本端给对方发起 FIN 之后,对端也给我发 FIN,此时本端进入 TIME_WAIT,给最后一个 ACK 的重传留有一定的时间。

TIME_WAIT 存在的意义,主要是防止最后一个 ACK 丢包

在四次挥手的过程中,会涉及到确认应答和超时重传。
如果没有收到 ACK 就视为丢包。
服务器如果没有收到最后一个 ACK,就会重传 FIN。

客户端如果在这个环节把 TCP 连接释放掉,此时意味着重传的 FIN 就无法被返回 ACK 了。
(保存对端信息的数据结构存在,才能给这个连接提供各种操作,才能返回 ACK)

此处的 TIME_WAIT 等待也不是无休止的等待,最多等 2 MSL (MSL 是一个系统内核的配置项,表示客户端到服务器之间,消耗的最长时间。这个时间一般都是拍脑门出来的一个非常大的时间,比如常见的设置值是 1min)

客户端等一个很长很长的时间,这么长时间你都不复传,意思是就再不会复传了~~

在这里插入图片描述

用netstat -ano | findstr 9090 可以看到TCP状态

(前提是你写的端口为9090 的程序启动)

在这里插入图片描述

标签:转换,重传,ACK,TCP,TIME,客户端,连接,WAIT
From: https://blog.csdn.net/t1750982356/article/details/144273047

相关文章

  • Spring Guava数据流转换与处理14
    在现代开发中,数据流的转换与处理是一个非常常见的需求。无论是从文件读取数据、接收用户输入,还是从数据库提取信息,数据往往需要进行一系列转换和处理。Guava提供了许多工具和类,能够简化这一过程,尤其是在处理数据时,它的链式调用风格使得数据流的处理更加清晰、优雅。通过结合Gua......
  • Spring Guava数据流转换与处理15
    在现代开发中,数据流的转换与处理是一个非常常见的需求。无论是从文件读取数据、接收用户输入,还是从数据库提取信息,数据往往需要进行一系列转换和处理。Guava提供了许多工具和类,能够简化这一过程,尤其是在处理数据时,它的链式调用风格使得数据流的处理更加清晰、优雅。通过结合Gua......
  • 添加TCP SYN扫描的Qt程序
            在Qt框架中实现TCPSYN扫描需要使用Qt的网络模块(QtNetwork)来发送和接收网络数据包。由于Qt本身并不直接支持底层网络操作(如直接发送原始数据包),因此我们需要结合使用Qt和一些底层网络库(如libpcap或rawsockets)来实现这一功能。基于Qt的端口扫描程序的设计与实......
  • Spring Guava数据流转换与处理14
    在现代开发中,数据流的转换与处理是一个非常常见的需求。无论是从文件读取数据、接收用户输入,还是从数据库提取信息,数据往往需要进行一系列转换和处理。Guava提供了许多工具和类,能够简化这一过程,尤其是在处理数据时,它的链式调用风格使得数据流的处理更加清晰、优雅。通过结合Gua......
  • SparkSQL 中 DataFrame 的转换
    目录一、Spark中的数据类型概述二、DataFrame的转换方式自动推断类型转换DataFrame  自定义Schema转换DataFrame三、DataFrame与RDD互转四、实际应用场景与注意事项五、总结        在大数据处理领域,SparkSQL凭借其强大的数据处理能力和高效的......
  • 记一次线上高并发环境 TCP 握手丢包的故障处理
    背景业务场景需要有客户端通过tcp连接线上环境emqx集群环境,集群规模有5台node节点承载emqx业务,每台节点在业务端口上都有15w左右的tcp连接保持。近期发现与emqx相关的业务功能会出现间歇性的连接等待状态,索性运维同学在内网环境进行网络层的连接测试,确实复现了连接间......
  • Spring Guava数据流转换与处理12
    在现代开发中,数据流的转换与处理是一个非常常见的需求。无论是从文件读取数据、接收用户输入,还是从数据库提取信息,数据往往需要进行一系列转换和处理。Guava提供了许多工具和类,能够简化这一过程,尤其是在处理数据时,它的链式调用风格使得数据流的处理更加清晰、优雅。通过结合Gua......
  • Spring Guava数据流转换与处理14
    在现代开发中,数据流的转换与处理是一个非常常见的需求。无论是从文件读取数据、接收用户输入,还是从数据库提取信息,数据往往需要进行一系列转换和处理。Guava提供了许多工具和类,能够简化这一过程,尤其是在处理数据时,它的链式调用风格使得数据流的处理更加清晰、优雅。通过结合Gua......
  • Spring Guava数据流转换与处理11
    在现代开发中,数据流的转换与处理是一个非常常见的需求。无论是从文件读取数据、接收用户输入,还是从数据库提取信息,数据往往需要进行一系列转换和处理。Guava提供了许多工具和类,能够简化这一过程,尤其是在处理数据时,它的链式调用风格使得数据流的处理更加清晰、优雅。通过结合Gua......
  • Spring Guava数据流转换与处理13
    在现代开发中,数据流的转换与处理是一个非常常见的需求。无论是从文件读取数据、接收用户输入,还是从数据库提取信息,数据往往需要进行一系列转换和处理。Guava提供了许多工具和类,能够简化这一过程,尤其是在处理数据时,它的链式调用风格使得数据流的处理更加清晰、优雅。通过结合Gua......