查看端口的监听状态

netstat 命令: 查看系统中网络连接状态信息,  

常用的参数格式 :  netstat -anutp 

-a, --all  显示本机所有连接和监听的端口

-n, --numeric    don't resolve names  以数字形式显示当前建立的有效连接和端口

-u  显示udp协议连接

-t  显示tcp协议连接

-p, --programs   显示连接对应的PID与程序名

image.png

命令执行结果详解: 

        Proto        #连接协议的种类

        Recv-Q        #接收到字节数

        Send-Q        #从本服务器,发出去的字节数

        Local Address         #本地的IP地址,可以是IP,也可以是主机名

        Foreign Address        #远程主机的IP 地址

        STATE:        #网络连接状态

                  CLOSED : 初始(无连接)状态。

                  LISTEN :  侦听状态,等待远程机器的连接请求。

                  ESTABLISHED: 完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。

                   TIME_WAIT :  在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。

扩展:MSL

MSL,即Maximum Segment Lifetime,一个数据分片(报文)在网络中能够生存的最长时间,在RFC 793中定义MSL通常为2分钟,即超过两分钟即认为这个报文已经在网络中被丢弃了。对于一个TCP连接,在双方进入TIME_WAIT后,通常会等待2倍MSL时间后,再关闭掉连接,作用是为了防止由于FIN报文丢包,对端重发导致与后续的TCP连接请求产生顺序混乱

实战:服务器上有大量TIME_WAI连接,如何优化TCP连接,快速释放tcp连接 ?

# netstat  -antup | grep   TIME_WAI

tcp        0      0 123.57.82.225:80            111.196.245.241:4002        TIME_WAIT   -                  

tcp        0      0 123.57.82.225:80            111.196.245.241:3970        TIME_WAIT   -                  

tcp        0      0 123.57.82.225:80            111.196.245.241:4486        TIME_WAIT   -                  

tcp        0      0 123.57.82.225:80            111.196.245.241:3932        TIME_WAIT   -                  

tcp        0      0 123.57.82.225:80            111.196.245.241:3938        TIME_WAIT   -                  

tcp        0      0 123.57.82.225:80            111.196.245.241:3917        TIME_WAIT   -                  

tcp        0      0 123.57.82.225:80            111.196.245.241:3944        TIME_WAIT   -                  

tcp        0      0 123.57.82.225:80            111.196.245.241:3957        TIME_WAIT   -                  

tcp        0      0 123.57.82.225:80            111.196.245.241:3922        TIME_WAIT   -

解决:

例:linux下默认MSL等待时间是60秒

# cat /proc/sys/net/ipv4/tcp_fin_timeout

60 秒             

# echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout  #通过缩短时间time_wait时间来快速释放链接

版权声明:
作者:WaterBear
链接:https://l-t.top/1541.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>