netstat 中state详解

简介:

TCP三次握手的过程如下:

        主动连接端发送一个SYN包给被动连接端;

        被动连接端收到SYN包后,发送一个带ACK和SYN标志的包给主动连接端;

        主动连接端发送一个带ACK标志的包给被动连接端,握手动作完成。


TCP四次挥手的过程如下:

        主动关闭端发送一个FIN包给被动关闭端;

        被动关闭端收到FIN包后,发送一个ACK包给主动关闭端;

        被动关闭端发送了ACK包后,再发送一个FIN包给主动关闭端;

        主动关闭端收到FIN包后,发送一个ACK包,当被动关闭端收到ACK包后,四次挥手动作完成,连接断开。


netstat中的各种状态:

        CLOSED 

                初始(无连接)状态。

        LISTEN 

                侦听状态,等待远程机器的连接请求。

        SYN_SEND 

                在TCP三次握手期间,主动连接端发送了SYN包后,进入SYN_SEND状态,等待对方的ACK包。

        SYN_RECV 

                在TCP三次握手期间,主动连接端收到SYN包后,进入SYN_RECV状态。

        ESTABLISHED 

                完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。

        FIN_WAIT_1 

                在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。

        FIN_WAIT_2 

                在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。

        TIME_WAIT 

                在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。

        CLOSING 

                在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却收到对方的FIN包,此时,进入CLOSING状态。

        CLOSE_WAIT 

                在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。

        LAST_ACK 

                在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。


主动连接端可能的状态有:         

        CLOSED        SYN_SEND        ESTABLISHED。

主动关闭端可能的状态有:         

        FIN_WAIT_1        FIN_WAIT_2        TIME_WAIT。

被动连接端可能的状态有:         

        LISTEN        SYN_RECV        ESTABLISHED。

被动关闭端可能的状态有:         

        CLOSE_WAIT        LAST_ACK        CLOSED。


在Linux下,如果连接数比较大,可以使用效率更高的ss来替代netstat。


本文转自神ge 51CTO博客,原文链接:http://blog.51cto.com/12218412/1895171


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Arthas 测试技术 网络安全
The telnet port 3658 is used by process
是否在本地使用Arthas的时候,遇到The telnet port 3658 is used by process 34725 instead of target process 44848, you will connect to an unexpected process的异常,其实解决方法很简单。
1297 0
The telnet port 3658 is used by process
|
9天前
|
网络协议
netstat命令
`netstat`命令用于显示网络连接、路由表及接口统计信息。常用选项包括`-a`(显示所有连接和监听端口)、`-n`(数字形式显示地址)、`-t`和`-u`(分别显示TCP和UDP连接)、`-l`(显示监听套接字)、`-p`(显示关联进程ID)等。输出包含协议、本地/外部地址、状态和进程信息。例如,`netstat -an`显示所有活动连接和监听端口。注意,可能需管理员权限运行,并且输出依系统和版本不同可能有差异。它是网络管理和问题排查的重要工具。
8 3
|
8月前
|
Perl
成功解决virsh -r net-dhcp-leases default | grep -i 00:16:3e:2d:95:85 | awk ‘{ print $5 }
成功解决virsh -r net-dhcp-leases default | grep -i 00:16:3e:2d:95:85 | awk ‘{ print $5 }
|
8月前
|
机器学习/深度学习 网络协议 决策智能
ubuntu16.04中 启动 Error starting userland proxy: listen tcp 0.0.0.0:5900: bind: address already in use
ubuntu16.04中 启动 Error starting userland proxy: listen tcp 0.0.0.0:5900: bind: address already in use
109 0
|
10月前
|
网络协议 Docker 容器
dockerq启动报错(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9876 -j DNAT --t
dockerq启动报错(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9876 -j DNAT --t
175 0
|
网络协议 Linux