服务端端口状态解释

TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得 注意的状态有两个:CLOSE_WAIT和TIME_WAIT。  

1、LISTENING 处于侦听(LISTENING)状态。

2、ESTABLISHED :建立连接。表示两台机器正在通信

3、CLOSE_WAIT 对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭
    
4、TIME_WAIT 我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分 段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情 况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。
    目前有一种避免TIME_WAIT资源浪费的方法,就是关闭socket的LINGER选项。但这种做法是TCP协议不推荐使用的,在某些情况下这个操作可能会带来错误。
 
5、SYN_SENT 表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为 ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且在向不同的机器发出,那你的机器可能中了冲击波或震荡波 之类的病毒了。这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多 SYN_SENT的原因。
 
例如:cmd 执行 netstat -ano>>D:aa.txt  或 netstat -a -o查看端口占用情况
  1   协议  本地地址          外部地址        状态           PID
  2   TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4
  3   TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       632
  4   TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  5   TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING       692
  6   TCP    0.0.0.0:1026           0.0.0.0:0              LISTENING       872
  7   TCP    0.0.0.0:1027           0.0.0.0:0              LISTENING       1084
  8   TCP    0.0.0.0:1029           0.0.0.0:0              LISTENING       776
  9   TCP    0.0.0.0:1036           0.0.0.0:0              LISTENING       760
 10   TCP    0.0.0.0:1037           0.0.0.0:0              LISTENING       3976
 11   TCP    0.0.0.0:1433           0.0.0.0:0              LISTENING       2576
 12   TCP    0.0.0.0:7045           0.0.0.0:0              LISTENING       4
 13   TCP    0.0.0.0:7046           0.0.0.0:0              LISTENING       4
 14   TCP    0.0.0.0:7047           0.0.0.0:0              LISTENING       4
 15   TCP    0.0.0.0:7048           0.0.0.0:0              LISTENING       4
 16   TCP    0.0.0.0:7049           0.0.0.0:0              LISTENING       4
 17   TCP    0.0.0.0:7050           0.0.0.0:0              LISTENING       4
 18   TCP    0.0.0.0:7051           0.0.0.0:0              LISTENING       4
 19   TCP    0.0.0.0:7070           0.0.0.0:0              LISTENING       2040
 20   TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING       4
 21   TCP    0.0.0.0:9001           0.0.0.0:0              LISTENING       4
 22   TCP    0.0.0.0:9003           0.0.0.0:0              LISTENING       4
 23   TCP    0.0.0.0:9011           0.0.0.0:0              LISTENING       4
 24   TCP    127.0.0.1:1314         127.0.0.1:1315         ESTABLISHED     1368
 25   TCP    127.0.0.1:1315         127.0.0.1:1314         ESTABLISHED     1368
 26   TCP    127.0.0.1:1434         0.0.0.0:0              LISTENING       2576
 27   TCP    127.0.0.1:1696         0.0.0.0:0              LISTENING       6324
 28   TCP    127.0.0.1:1697         0.0.0.0:0              LISTENING       1676
 29   TCP    127.0.0.1:4300         0.0.0.0:0              LISTENING       7216
 30   TCP    127.0.0.1:4301         0.0.0.0:0              LISTENING       7216
 31   TCP    127.0.0.1:5939         0.0.0.0:0              LISTENING       12280
 32   TCP    127.0.0.1:5939         127.0.0.1:7454         ESTABLISHED     12280
 33   TCP    127.0.0.1:7454         127.0.0.1:5939         ESTABLISHED     11816
 34   TCP    127.0.0.1:27382        0.0.0.0:0              LISTENING       8224
 35   TCP    192.168.0.77:139       0.0.0.0:0              LISTENING       4
 36   TCP    192.168.0.77:1723      65.52.0.51:5671        ESTABLISHED     6324
 37   TCP    192.168.0.77:1821      123.151.178.28:80      CLOSE_WAIT      7216
 38   TCP    192.168.0.77:2992      192.168.0.163:1433     ESTABLISHED     9352
 39   TCP    192.168.0.77:3094      192.168.0.163:445      ESTABLISHED     4
 40   TCP    192.168.0.77:3211      192.168.0.163:1433     ESTABLISHED     9352
 41   TCP    192.168.0.77:3272      183.61.38.181:80       CLOSE_WAIT      7216
 42   TCP    192.168.0.77:6628      192.168.0.163:5900     ESTABLISHED     10100
 43   TCP    192.168.0.77:6630      192.168.0.162:5900     ESTABLISHED     9644
 44   TCP    192.168.0.77:6727      123.151.176.162:80     CLOSE_WAIT      7216
 45   TCP    192.168.0.77:6731      101.201.173.115:80     ESTABLISHED     8696
 46   TCP    192.168.0.77:7014      101.201.173.115:80     ESTABLISHED     12076
 47   TCP    192.168.0.77:7209      101.201.173.115:80     ESTABLISHED     1408
 48   TCP    192.168.0.77:7462      159.8.67.132:5938      ESTABLISHED     12280
 49   TCP    192.168.0.77:8235      106.38.181.157:80      CLOSE_WAIT      7216
 50   TCP    192.168.0.77:8242      124.232.163.87:5938    ESTABLISHED     12280
 51   TCP    192.168.0.77:8244      78.46.49.23:80         FIN_WAIT_2      2040
 52   TCP    192.168.1.1:139        0.0.0.0:0              LISTENING       4
 53   TCP    192.168.189.1:139      0.0.0.0:0              LISTENING       4
 54   TCP    192.168.191.1:53       0.0.0.0:0              LISTENING       1368
 55   TCP    192.168.191.1:139      0.0.0.0:0              LISTENING       4
 56   TCP    192.168.191.1:8735     0.0.0.0:0              LISTENING       1368
 57   TCP    [::]:80                [::]:0                 LISTENING       4
 58   TCP    [::]:135               [::]:0                 LISTENING       632
 59   TCP    [::]:445               [::]:0                 LISTENING       4
 60   TCP    [::]:1025              [::]:0                 LISTENING       692
 61   TCP    [::]:1026              [::]:0                 LISTENING       872
 62   TCP    [::]:1027              [::]:0                 LISTENING       1084
 63   TCP    [::]:1029              [::]:0                 LISTENING       776
 64   TCP    [::]:1036              [::]:0                 LISTENING       760
 65   TCP    [::]:1037              [::]:0                 LISTENING       3976
 66   TCP    [::]:1433              [::]:0                 LISTENING       2576
 67   TCP    [::]:7045              [::]:0                 LISTENING       4
 68   TCP    [::]:7046              [::]:0                 LISTENING       4
 69   TCP    [::]:7047              [::]:0                 LISTENING       4
 70   TCP    [::]:7048              [::]:0                 LISTENING       4
 71   TCP    [::]:7049              [::]:0                 LISTENING       4
 72   TCP    [::]:7050              [::]:0                 LISTENING       4
 73   TCP    [::]:7051              [::]:0                 LISTENING       4
 74   TCP    [::]:8000              [::]:0                 LISTENING       4
 75   TCP    [::]:9001              [::]:0                 LISTENING       4
 76   TCP    [::]:9003              [::]:0                 LISTENING       4
 77   TCP    [::]:9011              [::]:0                 LISTENING       4
 78   TCP    [::1]:1434             [::]:0                 LISTENING       2576
 79   TCP    [::1]:1734             [::1]:1736             ESTABLISHED     5384
 80   TCP    [::1]:1736             [::1]:1734             ESTABLISHED     6324
 81   UDP    0.0.0.0:500            *:*                                    1084
 82   UDP    0.0.0.0:4001           *:*                                    7216
 83   UDP    0.0.0.0:4184           *:*                                    7216
 84   UDP    0.0.0.0:4500           *:*                                    1084
 85   UDP    0.0.0.0:5355           *:*                                    1256
 86   UDP    0.0.0.0:51349          *:*                                    12280
 87   UDP    0.0.0.0:51771          *:*                                    7216
 88   UDP    0.0.0.0:54293          *:*                                    7216
 89   UDP    0.0.0.0:54294          *:*                                    7216
 90   UDP    0.0.0.0:54295          *:*                                    7216
 91   UDP    0.0.0.0:55788          *:*                                    12280
 92   UDP    0.0.0.0:57779          *:*                                    7216
 93   UDP    0.0.0.0:58791          *:*                                    7216
 94   UDP    0.0.0.0:59125          *:*                                    3480
 95   UDP    0.0.0.0:59437          *:*                                    1368
 96   UDP    127.0.0.1:1900         *:*                                    3532
 97   UDP    127.0.0.1:61329        *:*                                    3532
 98   UDP    192.168.0.77:137       *:*                                    4
 99   UDP    192.168.0.77:138       *:*                                    4
100   UDP    192.168.0.77:1900      *:*                                    3532
101   UDP    192.168.0.77:5353      *:*                                    12280
102   UDP    192.168.0.77:61328     *:*                                    3532
103   UDP    192.168.1.1:137        *:*                                    4
104   UDP    192.168.1.1:138        *:*                                    4
105   UDP    192.168.1.1:1900       *:*                                    3532
106   UDP    192.168.1.1:5353       *:*                                    12280
107   UDP    192.168.173.1:67       *:*                                    1084
108   UDP    192.168.173.1:68       *:*                                    1084
109   UDP    192.168.189.1:137      *:*                                    4
110   UDP    192.168.189.1:138      *:*                                    4
111   UDP    192.168.189.1:1900     *:*                                    3532
112   UDP    192.168.189.1:5353     *:*                                    12280
113   UDP    192.168.191.1:53       *:*                                    1368
114   UDP    192.168.191.1:67       *:*                                    1368
115   UDP    192.168.191.1:137      *:*                                    4
116   UDP    192.168.191.1:138      *:*                                    4
117   UDP    192.168.191.1:1900     *:*                                    3532
118   UDP    192.168.191.1:5353     *:*                                    12280
119   UDP    192.168.191.1:61327    *:*                                    3532
120   UDP    [::]:500               *:*                                    1084
121   UDP    [::]:4500              *:*                                    1084
122   UDP    [::]:5355              *:*                                    1256
123   UDP    [::]:55789             *:*                                    12280
124   UDP    [::1]:1900             *:*                                    3532
125   UDP    [::1]:5353             *:*                                    12280
126   UDP    [::1]:61326            *:*                                    3532
127   UDP    [fe80::1485:f3e1:c20a:89d4%22]:1900  *:*                                    3532
128   UDP    [fe80::58c1:dd0b:8c94:cdcb%30]:1900  *:*                                    3532
129   UDP    [fe80::58c1:dd0b:8c94:cdcb%30]:61324  *:*                                    3532
130   UDP    [fe80::60ee:5c16:dff8:26c6%21]:1900  *:*                                    3532
131   UDP    [fe80::b8dd:2f46:ec42:728d%12]:1900  *:*                                    3532
132   UDP    [fe80::b8dd:2f46:ec42:728d%12]:61325  *:*                                    3532
活动连接

 根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),在Windows下默认为4分钟,即240秒,TIME_WAIT状态下的socket不能被回收使用. 具体现象是对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量的处于TIME_WAIT状态的socket, 甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的socket,停止服务. TIME_WAIT是TCP协议用以保证被重新分配的socket不会受到之前残留的延迟重发报文影响的机制,是必要的逻辑保证.


windows 机器设置
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,右键添加名为TcpTimedWaitDelay的
DWORD键,设置为60,以缩短TIME_WAIT的等待时间

ubuntu机器设置

vi /etc/sysctl.conf

编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
 
然后执行 /sbin/sysctl -p 让参数生效。
 
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间



查看系统TCP连接资源命令
netstat 
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

一般情况下,系统的socket资源默认5000个。(非官方)

TCP协议中有TIME_WAIT这个状态
主要有两个原因
1。防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)
2。可靠的关闭TCP连接。在主动关闭方发送的最后一个 ack(fin) ,有可能丢失,这时被动方会重新发
fin, 如果这时主动方处于 CLOSED 状态 ,就会响应 rst 而不是 ack。所以主动方要处于 TIME_WAIT 状态,而不能是 CLOSED 。

posted @ 2015-11-23 13:35  J.Y  阅读(...)  评论(...编辑  收藏