zoukankan      html  css  js  c++  java
  • netstat命令

    netstat命令使用总结

    作用:

    显示网络连接,端口,路由表,接口状态。一般用于查看本机各个端口的网络连接状况

    语法参数:

    netstat [options]

    options参数

    参数

    含义

    解释

    -r

    --route

    显示路由表

    -l

    --listensing

    显示正在监听的socket

    -a

    all

    显示所有正在监听和非监听的socket

    -n

    numeric

    显示数字IP地址(默认主机名)

    -t

    TCP

    显示tcp协议的连接情况

    -u

    udp

    显示UDP协议的连接情况

    -s

    statistics

    显示网络统计

    -p

    --programs

    显示监听的socket进程

    网络连接状态

    状态

    说明

    LISTEN 

    监听来自对端的TPC端口的连接请求 

    SYN_SENT 

    发送连接请求后等待匹配的连接请求(尝试建立一个连接) 

    SYN_RECEIVED

    再收到和发送一个连接请求后等待对方对连接请求的确认

    ESTABLISHED 

    代表一个打开的连接(已建立的连接)

    FIN_WAIT1

    等待远程TCP连接中断请求,或先前的连接中断请求的确认

    FIN_WAIT2

    从远程TCP等待连接中断请求

    CLOSE_WAIT

    等待从本地用户发来的连接中断请求

    CLOSING

    等待远程TCP对连接中断的确认

    LAST_ACK

    等待原来的发向远程TCP的连接中断请求的确认

    TIME_WAIT

    等待远程TCP接收到连接中断请求的确认(系统在等待客户端的响应)

    CLOSED

    没有任何连接状态

    说明:上面每一种连接状都是一个并发

    具体应用实例

    查看所有连接

    [root@localhost ~]# netstat –an

    查看所有tcp和udp的连接

    [root@localhost ~]# netstat -tunl

    Active Internet connections (only servers)

    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:25                0.0.0.0:*                   LISTEN      

    tcp        0      0 :::80                       :::*                        LISTEN      

    tcp        0      0 :::22                       :::*                        LISTEN      

    tcp        0      0 ::1:25                      :::*                        LISTEN      

    udp        0      0 0.0.0.0:68                  0.0.0.0:*

    输出内容讲解 

    Proto 协议使用的协议 

    Recv-Q 

    Send-Q 

    Local Address 本地的IP及端口 

    Foreign Address 本地连接远端的IP及端口 

    State 网络状态

    查看ssh监听的端口

    [root@localhost ~]# netstat -anput | grep ssh

    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1359/sshd           

    tcp        0     52 192.168.254.10:22           192.168.254.19:63759        ESTABLISHED 1514/sshd           

    tcp        0      0 :::22                       :::*                        LISTEN      1359/sshd

    生产案例:连接数

    (1)、查看当前系统的连接数(已连接的)

    [root@localhost ~]# netstat -an |awk 'BEGIN {FS=":"} /ESTABLISHED/ {print $4":"$5" "$8}' |sort |uniq -c |sort -rn |head -5

    5 172.16.123.177:80 119.102.6.54 

    2 192.168.123.17:22177 192.168.123.10 

    2 172.16.123.177:80 121.207.208.40 

    2 172.16.123.177:80 117.136.16.197 

    2 172.16.123.177:80 110.90.250.8 

    说明:找出网络状态为ESTABLISHED已连接的前五个IP地址 

    (2)、生产案例:查看当前系统的TIME_WAIT连接(等待的连接,没有被释放,网站访问慢的原因)(重点)

     [root@localhost ~]# netstat -an |awk 'BEGIN {FS=":"} /TIME_WAIT/ {print $4":"$5" "$8}' |sort |uniq -c |sort -rn |head -5

    3 172.16.123.177:80 117.136.15.108 

    2 172.16.123.177:80 211.137.59.23 

    2 172.16.123.177:80 117.136.25.141 

    1 172.16.123.177:80 183.213.18.83 

    1 172.16.123.177:80 125.39.239.221 

    注意:httpd服务和mysqld等都会有连接状态,通过本地端口区分,都会导致网站访问慢的原因 

    说明:TIME_WAIT状态是等待客户端的响应,这种等待会占用连接数,导致网站访问慢 

    (3)、优化TIME_WAIT(内核优化参数)

    说明:TIME_WAIT如果时间比较大,该连接没有被释放,快速回收不提供服务连接出现过多TIME_WAIT连接,清理没有被释放的TIME_WAIT连接 

    提示:连接数超过五千,可能就无法提供服务了,将某个IP大于50个就使用防火墙给干掉,正常情况下一个客户端不会超过10个 

    net.ipv4.tcp_fin_timeout = 2 

    #→表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

    net.ipv4.tcp_tw_reuse = 1 

    #→表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭。 

    net.ipv4.tcp_tw_recycle = 1 

    #→表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

    提示:以上两个参数为了防止生产环境下 time_wait过多设置的。

    控制TIME_WAIT的数量 

    如果设置了,服务器超过了这个数量,日志中会提示警告,默认是180000 

    生产案例:蓝讯CDN缓存服务器生产环境使用的内核参数(提供缓存的服务器)

    [root@CNC-BJ-H-388 ~]# sysctl -p |grep net.ipv4 

    net.ipv4.ip_forward = 0 

    net.ipv4.conf.default.rp_filter = 1 

    net.ipv4.conf.default.accept_source_route = 0 

    net.ipv4.tcp_max_tw_buckets = 1800000 

    net.ipv4.tcp_max_syn_backlog = 8192 

    net.ipv4.tcp_tw_reuse = 1 

    net.ipv4.tcp_tw_recycle = 1 

    net.ipv4.tcp_retries1 = 22 

    net.ipv4.tcp_syncookies = 1 

    net.ipv4.tcp_max_syn_backlog = 8192 

    net.ipv4.tcp_fin_timeout = 10 

    net.ipv4.tcp_synack_retries = 3 

    net.ipv4.tcp_syn_retries = 3

  • 相关阅读:
    no-useless-call (Rules) – Eslint 中文开发手册
    Java 8 Stream
    CSS3 ,checked 选择器
    MySQL 数据类型
    _Alignas (C keywords) – C 中文开发手册
    C 库函数 – modf()
    JavaScript E 属性
    SyntaxError.prototype (Errors) – JavaScript 中文开发手册
    swagger和openAPI: 上传文件
    Java中HashMap的putAll()方法: HashMap.putAll()
  • 原文地址:https://www.cnblogs.com/pycode/p/8734262.html
Copyright © 2011-2022 走看看