netstat 查看TCP状态值

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8000

网卡为eth1,因为阿里云服务器有两张网卡,eth0绑定的是内网地址。

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

CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,
vim /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攻击

net.ipv4.tcp_tw_reuse = 1

表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接

net.ipv4.tcp_tw_recycle = 1

表示开启TCP连接中TIME-WAIT sockets的快速回收

net.ipv4.tcp_fin_timeout

修改系統默认的 TIMEOUT 时间

客户端与服务器端建立TCP/IP连接后,关闭SOCKET,服务器端连接的端口状态为TIME_WAIT

是不是所有执行主动关闭的socket都会进入TIME_WAIT状态呢?
有没有什么情况使主动关闭的socket直接进入CLOSED状态呢?

主动关闭的一方在发送最后一个 ack 后就会进入 TIME_WAIT 状态 停留2MSL(max segment lifetime)时间

这个是TCP/IP必不可少的,也就是“解决”不了的。

也就是TCP/IP设计者本来是这么设计的,主要有两个原因:

1。防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)

2。可靠的关闭TCP连接,在主动关闭方发送的最后一个 ack(fin) ,有可能丢失,这时被动方会重新发

fin, 如果这时主动方处于 CLOSED 状态 ,就会响应 rst 而不是 ack。所以主动方要处于 TIME_WAIT 状态,而不能是 CLOSED 。

TIME_WAIT 并不会占用很大资源的,除非受到攻击。

还有,如果一方 send 或 recv 超时,就会直接进入 CLOSED 状态

时间: 2024-10-08 08:04:48

netstat 查看TCP状态值的相关文章

netstat查看tcp连接的状态

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}' 原文地址:https://www.cnblogs.com/yeyu1314/p/10082188.html

十(2)nload命令、监控io性能、free命令、ps命令 、netstat查看网络状态

nload命令(查看网卡流量,与sar -n DEV) (系统默认是没安装这个工具包的,yum install -y nload,安装nload前安装epel-release) 使用nload查看网卡信息,可以看到进出使用网卡的信息,按q键退出.                                         监控io性能(磁盘) 安装:sysstat包就会安装有 iostat(iostat和sar同属一个包) iostat -x %util数值高(磁盘io不足),则rkb/s

Cent OS 服务器 netstat下令 查看TCP连接数信息

netstat命令的功能是显示网络连接.路由表和网络接口的信息,可以让用户得知有哪些网络连接正在运作.在日常工作中,我们最常用的也就两个参数,即netstat –an,如下所示: [[email protected]_moban nginx]# netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address               Foreign Addre

用netstat查看网络状态详解

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

Linux下用netstat查看网络状态、端口状态

在linux一般使用netstat 来查看系统端口使用情况步. netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的 netstat命令的功能是显示网络连接.路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作. 该命令的一般格式为: netstat [选项] 命令中各选项的含义如下: -a 显示所有socket,包括正在监听的. -c 每隔1秒就重新显示一遍,直到用户中断它. -i 显示所有网络接口的信息,格式同"i

查看TCP状态命令

查看TCP状态命令: [[email protected]_206_14_centos ~]$ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 179 CLOSE_WAIT 1 SYN_SENT 1 FIN_WAIT1 181 FIN_WAIT2 4 ESTABLISHED 56986 SYN_RECV 220 LAST_ACK 293 [[email protected]_206_14

linux上使用netstat查看当前服务和监听端口

netstat这个命令常用在网络监控方面.利用这个命令,可以查看当前系统监听的服务和已经建立的服务,以及相应的端口.协议等信息. netstat参数说明 netstat参数虽然很多,但是常用的不多,主要是下面几个参数: netstat -[atunlp] -a :all,表示列出所有的连接,服务监听,Socket资料 -t :tcp,列出tcp协议的服务 -u :udp,列出udp协议的服务 -n :port number, 用端口号来显示 -l :listening,列出当前监听服务 -p :

查看tcp各个连接状态的数量

4. 查看tcp各个连接状态的数量 下面对的 netstat -tan|awk '$1~/tcp/{aa[$NF]++}END{for (h in aa)print h,aa[h]}' SYN_SENT 1 ESTABLISHED 3 LISTEN 15 netstat -tan|awk '$1~/tcp/{print $NF}'|sort|uniq -c|sort -nr 15 LISTEN 3 ESTABLISHED 1 SYN_SENT 统计8080端口上有多少个TCP连接,命令: net

三十、监控IO性能、free命令、ps命令、netstat查看网络状态、Linux下抓包

一.监控IO性能 CPU.内存有剩余,但是系统负载还是很高,用vmstat查看发现b列或者wa列比较大,就说明磁盘有问题,那么就要更详细的查看磁盘. iostat命令:在安装sysstat包时就会安装此命令. 用法:可以直接输入查看,也可以加数字1,类似vmstat. # iostat Linux 3.10.0-693.el7.x86_64 (yaowei-01) 2018年03月21日 _x86_64_ (2 CPU) avg-cpu:  %user   %nice %system %iowa