PHP实战PHP经验分享程序员

Linux命令netstat详解

2019-03-01  本文已影响0人  Brown_

今天来学习一个命令netstat,官方文档 https://linux.die.net/man/8/netstat

简介

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

参数

-r : 显示内核路由表。
-g : 显示IPv4和IPv6的多播组成员信息。
-i : 显示所有网络接口的表。
-M : 显示伪装连接的列表。
-s : 显示每个协议的统计信息。
-v : 详细地告诉用户发生了什么。
-n : 显示数字地址(ip),而不是主机名.
-c : 每个一个指定时间执行以下netstat
-e : 显示扩展信息
-o : 显示与网络相关的时间
-p : 显示每个socket的 PID 和 程序name
-l : 只显示在侦听中的socket
-a : 显示在侦听中和不在侦听中的socket
--numeric-hosts : 输出host
--numeric-ports : 输出端口
--numeric-users : 输出用户id

输出

Proto : socket使用的协议。
Recv-Q : 表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走。
Send-Q :对方没有收到的数据或者说没有Ack的,还是本地缓冲区。

State 详解(详细解释戳:https://www.jianshu.com/p/a546cd27f96e):

使用方法

netstat -a 显示所有socket

Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4       0      0  10.222.69.194.52290    111.202.100.40.http    ESTABLISHED
tcp4       0      0  10.222.69.194.52289    10.210.97.18.https     ESTABLISHED
tcp4       0      0  10.222.69.194.52281    10.210.97.18.https     ESTABLISHED
tcp4       0      0  10.222.69.194.52278    10.81.254.21.ndl-aas   ESTABLISHED
tcp4      31      0  10.222.69.194.52277    202.108.23.152.https   CLOSE_WAIT
tcp4       0      0  10.222.69.194.52276    124.67.215.8.https     ESTABLISHED
tcp4       0      0  10.222.69.194.52242    10.81.254.21.ndl-aas   ESTABLISHED
tcp4       0      0  10.222.69.194.51973    17.252.156.36.5223     ESTABLISHED
tcp6       0      0  *.51538                *.*                    LISTEN
tcp4       0      0  *.51538                *.*                    LISTEN
tcp4       0      0  10.222.69.194.49809    223.167.84.139.http-al ESTABLISHED
tcp4       0      0  10.222.69.194.49765    172.16.78.199.ssh      ESTABLISHED
tcp4       0      0  10.222.69.194.49738    10.210.97.118.http     CLOSE_WAIT
tcp4       0      0  *.*                    *.*                    CLOSED
tcp4       0      0  localhost.15292        *.*                    LISTEN
tcp46      0      0  *.11300                *.*                    LISTEN
tcp46      0      0  *.49937                *.*                    LISTEN
tcp4       0      0  *.49937                *.*                    LISTEN
tcp4       0      0  10.222.69.194.52291    13.107.5.88.https      TIME_WAIT

netstat -t 显示所有tcp

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:cslistener    localhost:59022         TIME_WAIT
...

找出运行程序的端口 netstat -ap | grep ssh

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1153/sshd
tcp        0      0 10.13.2.215:22          172.16.78.199:1628      ESTABLISHED 10746/sshd:---
tcp        0      0 10.13.2.215:22          10.55.21.253:27749      ESTABLISHED 6017/sshd:---
tcp        0      0 10.13.2.215:22          172.16.78.199:11353     ESTABLISHED 4387/sshd:---

查找某个端口是否被占用 netstat -ap | grep ':80'

查看连接80端口最多的的IP地址 netstat -tn | grep '127.0.0.1:80' |awk '{print 5}' |awk -F ':' '{print1}'| sort | uniq -c | sort -nr | less

  2796 10.41.1.103
   2746 10.41.1.64
   2712 10.41.1.65
   2684 10.41.1.104

查看TCP连接最多状态 netstat -t |awk '{print $6}' | sort | uniq -c | sort -rn

  64342 TIME_WAIT
    192 FIN_WAIT2
     88 ESTABLISHED
      7 FIN_WAIT1
      3 SYN_RECV
      1 LAST_ACK
      1 Foreign

netstat 命令非常的好用,非常适合查看网络连接的状态。为了更好使用这个命令,最好了解一下TCP的三次握手和四次握手。

上一篇下一篇

猜你喜欢

热点阅读