用netstat查看网络状态详解

一、Linux服务器上11种网络连接状态:

                                用netstat查看网络状态详解
 
                                                   图:TCP的状态机

通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手

注:以下说明最好能结合”图:TCP的状态机”来理解。

SYN:(同步序列编号,Synchronize SequenceNumbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。

ACK:(确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。

FIN:(结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。

1)、LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN.
2)、SYN_SENT:客户端通过应用程序调用connect进行activeopen.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态置为SYN_SENT. 

3)、SYN_RECV:服务端应发出ACK确认客户端的SYN,同时自己向客户端发送一个SYN.之后状态置为SYN_RECV 

4)、ESTABLISHED: 代表一个打开的连接,双方可以进行或已经在数据交互了。

5)、FIN_WAIT1:主动关闭(activeclose)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态.

6)、CLOSE_WAIT:被动关闭(passiveclose)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT. 

7)、FIN_WAIT2:主动关闭端接到ACK后,就进入了FIN-WAIT-2 .

8)、LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个FIN,等待对方的ACK.就进入了LAST-ACK . 

9)、TIME_WAIT:在主动关闭端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态。

10)、CLOSING: 比较少见.

11)、CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束.
TIME_WAIT状态的形成只发生在主动关闭连接的一方。
主动关闭方在接收到被动关闭方的FIN请求后,发送成功给对方一个ACK后,将自己的状态由FIN_WAIT2修改为TIME_WAIT,而必须再等2倍的MSL(Maximum SegmentLifetime,MSL是一个数据报在internetwork中能存在的时间)时间之后双方才能把状态都改为CLOSED以关闭连接。目前RHEL里保持TIME_WAIT状态的时间为60秒。

当然上述很多TCP状态在系统里都有对应的解释或设置,可见man tcp

二、关于长连接和短连接:
通俗点讲:短连接就是一次TCP请求得到结果后,连接马上结束.而长连接并不马上断开,而一直保持着,直到长连接TIMEOUT(具体程序都有相关参数说明).长连接可以避免不断的进行TCP三次握手和四次挥手.
长连接(keepalive)是需要靠双方不断的发送探测包来维持的,keepalive期间服务端和客户端的TCP连接状态是ESTABLISHED.目前http1.1版本里默认都是keepalive(1.0版本默认是不keepalive的),ie6/7/8和firefox都默认用的是http1.1版本了(如何查看当前浏览器用的是哪个版本,这里不再赘述)。Apache,java

一个应用至于到底是该使用短连接还是长连接,应该视具体情况而定。一般的应用应该使用长连接。

1、Linux的相关keepalive参数

a、tcp_keepalive_time – INTEGER
How often TCP sends out keepalive messages when keepalive isenabled.
Default: 2hours.
b、 tcp_keepalive_probes – INTEGER
How many keepalive probes TCP sends out, until it decides thatthe
connection is broken. Default value: 9.
c、 tcp_keepalive_intvl – INTEGER
How frequently the probes are send out. Multiplied by
tcp_keepalive_probes it is time to kill not respondingconnection,
after probes started. Default value: 75sec i.e.connection
will be aborted after ~11 minutesof retries.

2、F5负载均衡上的相关参数说明

a、KeepAlive Interval
Specifies, when enabled, how frequently the system sends data overan idle TCP connection, to determine whether the connection isstill valid.
Specify: Specifiesthe interval at which the system sends data over an idleconnection, to determine whether the connection is still valid.The default is 1800 milliseconds.
b、Time Wait
Specifies the length of time that a TCP connection remains in theTIME-WAIT statebefore entering the CLOSED state.
Specify: Specifiesthe number of milliseconds that a TCP connection can remain in theTIME-WAIT state.The default is2000.

c、Idle Timeout
Specifies the length of time that a connection is idle (has notraffic) before the connection is eligible for deletion.
Specify: Specifiesa number of seconds that the TCP connection can remain idle beforethe system deletes it. The defaultis 300 seconds.

3、Apache的相关参数说明
以下是Apache/2.0.61版本的默认参数和说明

a、KeepAlive:
default On.Whetheror not to allow persistent connections (more than
one request per connection). Set to “Off” to deactivate.
b、MaxKeepAliveRequests:
default 100.Themaximum number of requests to allow
during a persistent connection. Set to 0 toallow an unlimited amount.
We recommend you leave this numberhigh, for maximumperformance.
c、KeepAliveTimeout:
default 15.Number of seconds to wait for thenext request from the
same client on the same connection.

原文地址:http://www.vimer.cn?p=442

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值