netstat状态详解

一、生产服务器netstat tcp连接状态................................................................................ 2

1.1生产服务器某个业务LVS负载均衡上连接状态数量............................................... 2

1.2生产服务器某个业务web上连接状态数量............................................................ 3

1.3 生产服务器某个业务db上连接状态数量.............................................................. 3

二、tcp连接状态的描述说明(netstat输出)........................................................................ 4

2.1 执行netstat -n查看输出结果共6列..................................................................... 4

2.2 通过man netstat查看netstat输出结果信息......................................................... 4

2.3netstat第六列State的状态信息......................................................................... 5

2.4netstat第六列State状态信息转换图表.............................................................. 6

2.4.1 状态参考图一................................................................................................... 7

2.4.2 状态参考图二................................................................................................... 9

2.4.3 状态参考图三................................................................................................. 10

2.4.4 客户端的状态变化描述............................................................................ 10

2.4.5 服务器的状态变化描述............................................................................ 10

2.4.6 其他的状态变化描述总结......................................................................... 11

更多目录见博文结尾。

一、生产服务器netstat tcp连接状态


1.1生产服务器某个业务LVS负载均衡上连接状态数量

[[email protected] ~]$ netstat -n |awk ‘/^tcp/ {++oldboy[$NF]} END {for(a in oldboy) print a, oldboy[a]}‘

TIME_WAIT 9137

CLOSE_WAIT 207

FIN_WAIT1 547

ESTABLISHED 597

FIN_WAIT2 74

SYN_RECV 70

CLOSING 55

LAST_ACK 8

[[email protected]_nginx~]#netstat -n |awk ‘/^tcp/ {++oldboy[$NF]} END {for(a in oldboy) print a, oldboy[a]}‘
TIME_WAIT 422
CLOSE_WAIT 590
FIN_WAIT1 56
FIN_WAIT2 28
ESTABLISHED 1731

1.2生产服务器某个业务web上连接状态数量

[[email protected] ~]# netstat -n |awk ‘/^tcp/ {++oldboy[$NF]} END {for(a in oldboy) print a, oldboy[a]}‘
TIME_WAIT 418
FIN_WAIT1 7
FIN_WAIT2 3
ESTABLISHED 1097
LAST_ACK 2

[[email protected] ~]# netstat -n |awk ‘/^tcp/ {++oldboy[$NF]} END {for(a in oldboy) print a, oldboy[a]}‘
TIME_WAIT 250
FIN_WAIT1 2
FIN_WAIT2 3
ESTABLISHED 1032
LAST_ACK 2

[[email protected]_web ~]# netstat -n |awk ‘/^tcp/ {++oldboy[$NF]} END {for(a in oldboy) print a, oldboy[a]}‘
TIME_WAIT 342
CLOSE_WAIT 618
FIN_WAIT1 37
FIN_WAIT2 3
ESTABLISHED 1681
SYN_RECV 1

[[email protected]_50718 ~]# netstat -n |awk ‘/^tcp/ {++oldboy[$NF]} END {for(a in oldboy) print a, oldboy[a]}‘

TIME_WAIT 4146

FIN_WAIT1 352

FIN_WAIT2 1112

ESTABLISHED 8451

SYN_RECV 186

CLOSING 9

LAST_ACK 102

1.3 生产服务器某个业务db上连接状态数量

[[email protected]_slave ~]# netstat -n |awk ‘/^tcp/ {++oldboy[$NF]} END {for(a in oldboy) print a, oldboy[a]}‘
TIME_WAIT 263
FIN_WAIT1 1
FIN_WAIT2 48
ESTABLISHED 918

二、tcp连接状态的描述说明(netstat输出)


2.1 执行netstat -n查看输出结果共6列

[[email protected] ~]# netstat -n

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local AddressForeign AddressState

tcp00 10.0.0.183:5058410.0.0.181:22ESTABLISHED

2.2 通过man netstat查看netstat输出结果信息

[[email protected] ~]# man netstat

OUTPUT

Active Internet connections (TCP, UDP, raw)

Proto

The protocol (tcp, udp, raw) used by the socket.

第一列为socket使用的协议。

Recv-Q

The count of bytes not copied by the user program connected to this socket.

第二列为接到的但是还没处理的字节数。

Send-Q

The count of bytes not acknowledged by the remote host.

第三列为已经发送的但是没有被远程主机确认收到的字节数。

Local Address

Address and port number of the local end of the socket.Unless the --numeric(-n)

optionisspecified,thesocketaddress is resolved to its canonical host name

(FQDN), and the port number is translated into the corresponding service name.

第四列为 本地的地址及端口。

Foreign Address

Address and port number of the remote endofthesocket.Analogousto"Local Address."

第五列为外部的地址及端口。

State

Thestateofthesocket.Sincethere are no states in raw mode and usually no

states used in UDP, this column may be left blank. Normally this can be one of sev-

eral values:

第六列为socket的状态,通常仅仅有tcp的状态,状态值可能有ESTABLISHED,SYN_SENT,SYN_RECV FIN_WAIT1,FIN_WAIT2,TIME_WAIT等,详见下文。其中,最重要的是第六列。

2.3 netstat第六列State的状态信息

如果我们执行man netstat可以找到如下的帮助信息

State

Thestateofthesocket.Sincethere are no states in raw mode and usually no

states used in UDP, this column may be left blank. Normally this can be one of sev-

eral values:

第六列为socket的状态,通常仅仅有tcp的状态,状态值可能有ESTABLISHED,SYN_SENT,SYN_RECV FIN_WAIT1,FIN_WAIT2,TIME_WAIT等,详见下文。其中,最重要的是第六列。

ESTABLISHED

The socket has an established connection.

socket已经建立连接,表示处于连接的状态,一般认为有一个ESTABLISHED认为是一个服务的并发连接。这个连接状态在生产场景很重要,要重点关注。

SYN_SENT

The socket is actively attempting to establish a connection.

socket正在积极尝试建立一个连接,即处于发送后连接前的一个等待但未匹配进入连接的状态。

SYN_RECV

A connection request has been received from the network.

已经从网络上收到一个连接请求。

FIN_WAIT1

The socket is closed, and the connection is shutting down.

socket已关闭,连接正在或正要关闭。

FIN_WAIT2

Connectionisclosed,andthesocket is waiting for a shutdown from the remote end.

连接已关闭,并且socket正在等待远端结束。

TIME_WAIT

The socket is waiting after close to handle packets still in the network.

socket正在等待关闭处理仍在网络上的数据包,这个连接状态在生产场景很重要,要重点关注。

CLOSED The socket is not being used.| socket不在被占用了。

CLOSE_WAIT

The remote end has shutdown, waiting for the socket to close.

远端已经结束,等待socket关闭。

LAST_ACK

The remote end has shut down, and the socket is closed. Waiting for acknowl-edgement.|

远端已经结束,并且socket也已关闭,等待acknowl-edgement。

LISTEN Thesocketislisteningforincoming connections.Such sockets are not

included in the output unless you specify the --listening (-l) or --all (-a)

option.

socket正在监听连接请求。

CLOSING

Both sockets are shut down but we still don’t have all our data sent.

sockets关闭,但是我们仍旧没有发送数据。

UNKNOWN

The state of the socket is unknown

未知的状态。

2.4 netstat第六列State状态信息转换图表

TCP的状态图,这是一个看起来比较复杂的状态迁移图,因为它包含了两个部分---服务器的状态迁移和客户端的状态迁移,如果从某一个角度出发来看这个图,就会清晰许多,这里面的服务器和客户端都不是绝对的,发送数据的就是客户端,接受数据的就是服务器。

2.4.1 状态参考图一
见后续博文


2.4.2 状态参考图二


见后续博文


2.4.3 状态参考图三


见后续博文


2.4.4 客户端的状态变化描述

通过状态参考图三,客户端的状态可以用如下的流程来表示:
CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
以上流程是在程序正常的情况下应该有的流程,在建立连接时,当客户端收到SYN报文的ACK以后,客户端就打开了数据交互地连接。而结束连接则通常是客户端主动结束的,客户端结束应用程序以后,需要经历FIN_WAIT_1,FIN_WAIT_2等状态,这些状态的迁移就是前面提到的结束连接的四次握手。

2.4.5 服务器的状态变化描述

通过状态参考图三,服务器的状态可以用如下的流程来表示:
CLOSED->LISTEN->SYN_RECVD->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
在建立连接的时候,服务器端是在第三次握手之后才进入数据交互状态,而关闭连接则是在关闭连接的第二次握手以后(注意不是第四次)。而关闭以后还要等待客户端给出最后的ACK包才能进入初始的状态。

2.4.6 其他的状态变化描述总结

针对服务器和客户端两方面的总结如下

?1)LISTEN->SYN_SENT,对于这个解释就很简单了,服务器有时候也要打开连接的嘛。

?2)SYN_SENT->SYN_RECVD,服务器和客户端在SYN_SENT状态下如果收到SYN数据报,则都会发送SYN的ACK数据报并把自身状态调整到SYN_RECVD,准备进入ESTABLISHED

?3)SYN_SENT->CLOSED,在发送超时的情况下,会返回到CLOSED状态。

?4)SYN_RECVD->LISTEN,如果受到RST包,会返回到LISTEN状态。

?5)SYN_RECVD->FIN_WAIT_1,这个迁移是说,可以不用到ESTABLISHED状态,而可以直接跳转到FIN_WAIT_1状态并等待关闭。

netstat状态详解,码迷,mamicode.com

时间: 2024-12-11 06:04:13

netstat状态详解的相关文章

用netstat查看网络状态详解

--用netstat查看网络状态详解 -----------------------------2014/06/11 一.Linux服务器上11种网络连接状态:                                          图:TCP的状态机 通常情况下:一个正常的TCP连接,都会有三个阶段:1.TCP三次握手;2.数据传送;3.TCP四次挥手 注:以下说明最好能结合"图:TCP的状态机"来理解. SYN: (同步序列编号,Synchronize Sequence

Linux netstat命令详解

Linux netstat命令详解 简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等. 输出信息含义 执行netstat后,其输出结果为 Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address State

TCP协议状态详解

原文出自:Vimer的程序世界 1.建立连接协议(三次握手)(1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1.(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志.因此它表示对刚才客户端SYN报文的回应:同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯.(3) 客户必须再次回应服务段一个ACK报文,这是报文段3. 2.连接终止协议(四次握手) 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭.这原则是当一

netstat 命令详解

netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息,在我的计算机上执行netstat后,其输出结果为:netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息,在我的计算机上执行netstat后,其输出结果为:Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Addre

netstat命令详解

1.netstat命令详解其实我常用的是 netstat -tnl | grep 443 (查看443端口是否被占用),如果有当前是root用户,我喜欢用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程PID).netstat功能说明:显示网络状态.语 法:netstat [-acCeFghilMnNoprstuvVwx] [-A<网络类型>][--ip]补充说明:利用netstat指令可让你得知整个Linux系统的网络情况.参 数:-a   或–all  

[转]iOS应用程序生命周期(前后台切换,应用的各种状态)详解

转载地址:http://blog.csdn.net/totogo2010/article/details/8048652 iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的. iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的.在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验. //开发app,我们要遵循apple公司的一些指导原则,原则如下: 1.应用程序的状态 状态如下: Not running

iOS iOS应用程序生命周期(前后台切换,应用的各种状态)详解

iOS应用程序生命周期(前后台切换,应用的各种状态)详解 http://blog.csdn.net/totogo2010/article/details/8048652

启用php-fpm状态详解

status_path 启用php-fpm状态详解

netstat怎样查看端口占用?netstat命令详解

netstat是使用比较频繁的端口查看命令,监控TCP/IP网络非常有用的工具.在使用VPS或云服务器上安装启动IIS.Apache或tomcat等网站环境软件时,常会遇到80端口被占用而无法启动错误,这时就可以利用netstat命令查看80端口占用情况. netstat命令详解: netstat命令一般格式为:netstat[-a][-e][-n][-o][-pProtocol][-r][-s][Interval] 详细参数介绍: -a 显示所有socket,包括正在监听的. -c 每隔1秒就