`

netstat 解析状态

 
阅读更多

这个问题之前没有怎么留意过,是最近在面试过程中遇到的一个问题,面了两家公司,两家公司竟然都面到到了这个问题,不得不使我开始关注这个问题。说起CLOSE_WAIT状态,如果不知道的话,还是先瞧一下TCP的状态转移图吧。


关闭socket分为主动关闭(Active closure)和被动关闭(Passive closure)两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接。将关闭部分的状态转移摘出来,就得到了下图:


产生原因
通过图上,我们来分析,什么情况下,连接处于CLOSE_WAIT状态呢?
在被动关闭连接情况下,在已经接收到FIN,但是还没有发送自己的FIN的时刻,连接处于CLOSE_WAIT状态。
通常来讲,CLOSE_WAIT状态的持续时间应该很短,正如SYN_RCVD状态。但是在一些特殊情况下,就会出现连接长时间处于CLOSE_WAIT状态的情况。

出现大量close_wait的现象,主要原因是某种情况下对方关闭了socket链接,但是我方忙与读或者写,没有关闭连接。代码需要判断socket,一旦读到0,断开连接,read返回负,检查一下errno,如果不是AGAIN,就断开连接。

连接进程是通过一系列状态表示的,这些状态有:LISTEN,SYN-SENT,SYN-RECEIVED,ESTABLISHED,FIN-WAIT-1,FIN-WAIT-2,CLOSE-WAIT,CLOSING,LAST-ACK,TIME-WAIT和 CLOSED。CLOSED表示没有连接,各个状态的意义如下: LISTEN - 侦听来自远方TCP端口的连接请求; SYN-SENT - 在发送连接请求后等待匹配的连接请求; SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认; ESTABLISHED - 代表一个打开的连接,数据可以传送给用户; FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认; FIN-WAIT-2 - 从远程TCP等待连接中断请求; CLOSE-WAIT - 等待从本地用户发来的连接中断请求; CLOSING - 等待远程TCP对连接中断的确认; LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认; TIME-WAIT - 等待足够的时间以确保远程TCP接收到连接中断请求的确认; CLOSED - 没有任何连接状态; TCP连接过程是状态的转换,促使发生状态转换的是用户调用:OPEN,SEND,RECEIVE,CLOSE,ABORT和STATUS;传送过来的数据段,特别那些包括以下标记的数据段SYN,ACK,RST和FIN;还有超时,上面所说的都会时TCP状态发生变化。
netstat -tunlp |grep 8000



用这个命令就能看到是哪个程序了,最右面的是程序名 

我这没有8000的程序,列一下22的



[root@localhost tmp]# netstat -tunlp |grep 22
tcp        0      0 0.0.0.0:42957               0.0.0.0:*                   LISTEN      2230/rpc.statd      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      2443/sshd           
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2292/cupsd      
分享到:
评论

相关推荐

    Netstat 命令

    在实际应用中,Netstat 命令可以帮助网络管理员快速了解当前系统中的网络连接状态,从而帮助他们更好地管理和维护网络系统。此外,Netstat 命令也可以用于排查网络问题,例如网络连接超时、连接不上等问题。

    使用netstat命令进行网络问题排查的诀窍.docx

    本文包含了10个典型的问题及netstat的实际使用方法、实际截图和简明解析,方便在实际中运用。 一般来说,netstat的执行结果内容比较多、比较杂,观察起来比较费力,可以配合findstr|grep|more|>等重定向指令,对结果...

    NETSTAT命令详解

    netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息,在我的计算机上执行netstat后,其输出结果为

    Linux netstat命令详细解析

    简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。 输出信息含义执行netstat后,其输出结果为 代码如下...

    网络管理理论与实践(B1800031S-48学时) 实验一:基本网络测试工具的使用 通达学院

    一、实验目的和要求 熟练使用操作系统自带的基本网络测试工具,包括网络状态查询设置、网络状态测试和...4.掌握使用netstat命令显示网络状态的技能。 二、实验环境(实验设备) 硬件: 微型计算机 软件: Windows 操作系统

    计算机网络:实验1 网络管理基本命令.doc

    在本实验中,我们将学习使用 ipconfig、ping、traceroute 和 netstat 等命令来检测网络的连通性、可到达性和处理名称解析的方法。 一、实验目的 在本实验中,我们将学习掌握使用 ipconfig 实用程序的方法,藉此...

    as_netstat:AntSword 无命令执行权限下获取网络连接情况插件

    AntSword NetStatAntSword 查看网络连接状态插件在目标主机「禁止了命令执行」或者「没有 netstat 命令」的时候,可通过该插件查看 Linux目标系统连接情况。同时也支持解析通过其它方式获取到的 /proc/net/tcp、/...

    常见网络管理命令的使用天津冶金职业技术学院主页.pptx

    netstat命令用于显示网络连接状态。netstat命令的用法包括: * netstat -s:显示网络连接的统计信息 * netstat -e:显示当前网络连接的详细信息 * netstat -r:显示路由表信息 * netstat -a:显示所有网络连接信息 ...

    网络端口查询

    如何查询端口用及停止程序的方被占法 收藏 端口如果被其他程序占用就不能正常启动,比如...在命令提示符状态下键入“netstat -a -n”,按下回车键后就可以看到以数字形式显示的TCP和UDP连接的端口号及状态(如图)。

    计算机网络实验4常见网络设计命令.doc

    netstat命令是一个监控TCP/IP网络的非常有用的工具,能够显示路由表、实际的网络连接、每一个网络接口设备的状态信息。netstat命令可以指定参数选项,例如netstat -a、netstat -e、netstat -n等。 例如,使用...

    Windows网络操作命令的使用(实验报告)4.pdf

    NETSTAT 命令是一个网络连接统计命令,用于显示路由表、实际的网络连接和每个网络接口的设备状态信息。 NETSTAT 命令的使用方法有多种,例如: * 输入 netstat 可以显示当前系统网络连接的信息 * 输入 netstat/? ...

    常用网络命令实验报告.pdf

    此外,netstat命令也可以用于显示当前网络的连接状态,例如当前的连接状态、当前的连接数量等信息。 六、Ping命令 Ping命令用于验证配置、测试两台计算机之间的IP连接。Ping命令可以发送ICMP请求到目的计算机,并...

    计算机网络常用网络命令实验报告.pdf

    ARP命令用于将IP地址解析为物理地址,tracert命令用于跟踪网络数据包的路由路径,netstat命令用于显示当前系统的网络连接状态和网络统计信息。 三、实验仪器设备及软件 实验中,我们使用PC机、安装有TCP/IP协议的...

    TCPView 是一个 Windows 程序,它将显示系统上所有 TCP 和 UDP 终结点的详细列表,包括 tcp 连接

    TCPView 提供了 Windows 附带的 Netstat 计划的更丰富且更方便的子集。 TCPView 下载包括 Tcpvcon,这是具有相同功能的命令行版本。 使用 TCPView 启动 TCPView 后,它将枚举所有活动 TCP 和 UDP 终结点,并将所有 ...

    实验一常用网络命令的使用实验报告.doc

    通过使用 Nslookup 命令,我们可以了解域名服务器的信息,并将域名解析为 IP 地址。 四、Netstat 命令 Netstat 命令用于显示活动的 TCP 连接、计算机侦听端口、以太网统计信息、IP 路由表、IPV4 统计信息以及 IPv6...

    LINUX查看端口是否被占用过程解析

    图1中主要看监控状态为LISTEN表示已经被占用,最后一列显示被服务mysqld占用,查看具体端口号,只要有如图这一行就表示被占用了。 2.netstat -nultp(此处不用加端口号) 该命令是查看当前所有已经使用的端口情况,...

    计算机网络实验常用命令

    * -a:解析计算机 NetBios 名。 * -n:发送 count 指定的 Echo 数据包数,默认情况下,只发送四个数据包,可以自己定义发送的个数,对衡量网络速度很有帮助。 * -r:在“记录路由”字段中记录输出和返回数据包的路由...

    ubuntu虚拟机网络配置步骤

    用户可以使用 ping 命令来测试网络连接,host 命令来测试 DNS 解析,netstat 命令来查看网络状态等。 本文详细介绍了 Ubuntu 虚拟机网络配置步骤,包括桥接模式、NAT 模式和主机模式三种网络配置方式,以及经典 ...

    计算机网络原理期末课程设计

    任务一 (1) 写出常用网络命令ipconfig, ping, netstat, tracert, arp, telnet的功能; (2) 在windows环境下使用上述网络命令进行网络状态监测和跟踪,给出相应的截图和对结果的解释。 任务二: (1) 安装packet ...

    linux查看ip地址、显示太网卡配置、网络设备.docx

    * netstat 命令:用于显示所有活动的网络连接和它们的进程 ID。 * tcpdump 命令:用于显示所有 HTTP 流量。 * iwlist 命令:用于显示无线网络。 * iwconfig 命令:用于显示无线网络卡的配置信息。 五、Windows 网络...

Global site tag (gtag.js) - Google Analytics