最近做lamp到调优测试,针对系统tcp参数进行调整,修改systcl.conf配置文件。做这个调试不得不对netstat 命令监控端口的状态理解,下面针对各个状态进行相对到解释。在这之前回忆一下tcp 三次握手 和 四次断开的过程。
1.三次握手
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务进入SYN_RECV状态;
第三次握手:客户端收到
服务
器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
2.四次断开
一.当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
二.主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
三.由B 端再提出反方向的关闭请求,将FIN置1
四.主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.
回忆了三次握手后,我们来看下各个状态的含义。
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:
没有任何连接状态
以下是我到pc中,netstat 所显示到各个链接状态
haifeng@haifeng-EX38-DS4:~$ netstat -ant
激活Internet连接 (服务器和已建立连接的)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 1 0 192.168.109.42:40040 91.189.88.33:80 CLOSE_WAIT
tcp 0 0 192.168.109.42:42118 192.168.18.44:22 ESTABLISHED
tcp 0 0 192.168.109.42:55021 209.85.135.102:80 TIME_WAIT
tcp 38 0 192.168.109.42:36663 91.189.*。*:443 CLOSE_WAIT
tcp 0 0 192.168.109.42:49780 72.14.203.102:80 TIME_WAIT
tcp 0 0 192.168.109.42:50316 219.142.118.8:80 ESTABLISHED
tcp 0 0 192.168.109.42:46624 192.168.18.44:22 ESTABLISHED
tcp 0 0 192.168.109.42:43129 192.168.18.44:22 ESTABLISHED
tcp 0 0 192.168.109.42:50500 192.168.18.48:22 ESTABLISHED
tcp 0 0 192.168.109.42:42254 192.168.18.47:22 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN