网络分析工具--【ping、tcpdump、netstat、lsof、ss】

版权声明:本文为博主原创文章,转载请注明出处-- https://blog.csdn.net/qq_38790716/article/details/85486681

1. ping

1.1 概述

  • p i n g ping P a c k e t I n t e r n e t G r o p e r Packet Internet Groper )是 W i n d o w s U N I X L i n u x Windows、UNIX和Linux 系统下的一个命令
  • p i n g ping 也属于一个通信协议,是 T C P / I P TCP/IP 协议的一部分
  • 利用ping命令可以检查网络是否连通,可以很好地帮助分析和判断网络故障
  • 原理:利用网络上机器 I P IP 地址地唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连通以及时延是多少
  • 应用格式: p i n g ping 空格 I P IP 地址

1.2 ping的使用

  • 1. w i n d o w s windows 使用ipconfig/all观察本地网络设置是否正确, L i n u x Linux 使用ifconfig查看
    在这里插入图片描述
    在这里插入图片描述

  • 2.ping 127.0.0.1,检查本地的TCP/IP协议有没有设置好
    在这里插入图片描述

  • 3.ping本机 I P IP 地址,检查本机的IP地址是否设置有误
    在这里插入图片描述

  • 4.ping本网网关或本网 I P IP 地址,这样是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常(在非局域网中这一步骤可以忽略)

  • 5.ping本地DNS地址,检查本地DNS服务器是否工作正常

之前使用ipconfig/all得到的DNS服务器地址:
在这里插入图片描述
ping DNS服务器地址:
在这里插入图片描述

  • 6. p i n g ping 远程 I P IP 地址,主要检查本网或本机与外部的连接是否正常,还可以用来测试网络延时,这里 p i n g ping 百度:
    在这里插入图片描述
    在这里插入图片描述

1.3 ping常用参数

在这里插入图片描述

2. tcpdump

2.1 概述

  • t c p d u m p tcpdump 可以将网络中传送的数据包的“头”完全截获下来提供分析,支持针对协议、主机、网络或端口的过滤,并提供了 a n d o r n o t and、or、not 等逻辑语句来帮助去掉无用的信息
  • t c p d u m p tcpdump 根据使用者的定义对网络上的数据包进行截获和分析
  • t c p d u m p tcpdump 使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,利用这些参数定义的过滤规则就能达到迅速定位故障的目的
  • t c p d u m p tcpdump 采用命令行格式,它的命令格式为:
tcpdump [ -adeflnNOpqStvx] [-c 数量]  [-F  文件名] 
		[-i 网络接口] [-r  文件名]  [-s snaplen]
		[-T 类型] [-w 文件名]  [表达式]

表达式是一个正则表达式, t c p d u m p tcpdump 利用它作为过滤报文的条件

2.2 tcpdump使用

  • 1)默认启动
tcpdump

默认情况下,直接启动 t c p d u m p tcpdump 将监视第一个网络接口(非lo口)上所有流通的数据包。这样抓取的结果会非常多,滚动非常快

扫描二维码关注公众号,回复: 5055998 查看本文章
  • 2)监视指定网络接口的数据包
tcpdump -i eth1

如果不指定网卡,默认 t c p d u m p tcpdump 只会监视第一个网络接口,如 e t h 0 eth0

  • 3)监视指定主机的数据包,例如所有进入或离开 h o s t n a m e hostname 的数据包
tcpdump host hostname
  • 4)打印 h e l i o s helios <–> h o t hot h e l i o s helios <–> a c e ace 之间通信的数据包
tcpdump host helios and \( hot or ace \)
  • 5)打印 a c e ace 与任何其他主机之间通信的 I P IP 数据包,但不包括与 h e l i o s helios 之间的数据包
tcpdump ip host ace and not helios
  • 6)截获某端口相关的包
tcpdump port 6666
  • 7)监视指定主机和端口的数据包
tcpdump tcp port 22 and host hostname

了解更多相关命令tcpdump

3. netstat

3.1 概述

  • n e t s t a t netstat 命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于校验本机各端口的网络连接情况
  • n e t s t a t netstat 是在内核中访问网络及相关信息的程序,它能提供 T C P TCP 连接、对 T C P TCP U D P UDP 的监听及获取进程内存管理的相关报告
  • n e t s t a t netstat 的命令格式:
netstat [-acCeFghilMnNoprstuvVwx] [-A< 网络类型>] [--ip]

3.2 常见参数

参数 说明
a -a 显示所有选项,默认不显示 L I S T E N LISTEN 相关
t -t 仅显示 T C P TCP 相关选项
u -u 仅显示 U D P UDP 相关选项
n -n 拒绝显示别名,能显示数字的全部转化为数字
l -l 仅列出有在 l i s t e n listen (监听)的服务状态
p -p 显示建立相关链接的程序名
r -r 显示路由信息,路由表
e -e 显示扩展信息,例如 u i d uid
s -s 按各个协议进行统计
c -c 每隔一个固定时间,执行该 n e t s t a t netstat 命令

3.3 参数使用

  • 1.列出所有端口: netstat -a
    在这里插入图片描述
  • 2.列出所有 T C P TCP 端口:netstat -at
    在这里插入图片描述
  • 3.列出所有 U D P UDP 端口:netstat -au
    在这里插入图片描述
  • 4.列出所有处于监听状态的 s o c k e t socket netstat -l
    在这里插入图片描述
  • 5.列出所有监听 T C P TCP 端口的 s o c k e t socket :netstat -lt
    在这里插入图片描述
  • 6.列出所有监听 U D P UDP 端口的 s o c k e t socket :netstat -lu
    在这里插入图片描述
  • 7.列出所有监听 U N I X UNIX 端口的 s o c k e t socket :netstat -lx
    在这里插入图片描述
  • 8.在 n e t s t a t netstat 输出中显示 P I D PID 和进程名称: n e t s t a t netstat p -p
    在这里插入图片描述

更多 n e t s t a t netstat 参数详解netstat

4. lsof

4.1 概述

  • lsof是一个是一个列出当前系统打开文件的工具
  • L i n u x Linux 下,任何事物皆是以文件形式存在的,并且系统在后台都为该应用程序分配了一个文件描述符,通过该文件描述符能掌握大量关于该应用程序的信息,因此通过 l s o f lsof 查看这个列表对系统监测以及排错将是有很大帮助的
  • 执行 l s o f lsof 命令,输出结果如下:
    在这里插入图片描述
    1) C O M M A N D COMMAND :进程的名称
    2) P I D PID :进程标识符
    3) U S E R USER :进程所有者
    4) F D FD :文件描述符,应用程序通过文件描述符识别该文件,如 c w d cwd t x t txt
    5) T Y P E TYPE :文件类型,如 D I R R E G DIR、REG
    6) D E V I C E DEVICE :指定磁盘的名称
    7) S I Z E SIZE :文件的大小
    8) N O D E NODE :索引节点(文件在磁盘上的标识)
    9) N A M E NAME :打开文件的确切名称

4.2 常见参数列表

lsof filename  显示打开指定文件的确切名称
lsof -a 表示两个参数都必须满足时才显示结果
lsof -c string  显示COMMAND列中所包含指定字符的进程所有打开的文件
lsof -u username 显示所属user进程打开的文件
lsof -g gid  显示归属gid的进程情况
lsof +d /DIR/  显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
lsof -d FD 显示指定文件描述符的进程
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof -i  用以显示符合条件的进程情况

4.3 常用命令

  • 1.查看6666端口现在运行情况,命令:lsof -i :6666
    在这里插入图片描述
  • 2.查看所属 r o o t root 用户进程所打开的文件,文件类型为 . t x t .txt lsof -a -u root -d txt
    在这里插入图片描述
  • 3.监控打开的文件和设备。查看设备 / d e v / t t y 1 /dev/tty1 被哪些进程占用的命令:lsof /dev/tty1
    在这里插入图片描述
  • 4.监控程序,如查看指定程序 s e r v e r server 打开的文件:lsof -c server
    在这里插入图片描述
  • 5.监控用户。比如查看指定用户 u b u n t u ubuntu 打开的文件:lsof -u ubuntu
    在这里插入图片描述

5. ss

5.1 概述

  • ss是Socket Statistics的缩写,顾名思义用于显示socket状态的统计(可以显示 P A C K E T s o c k e t s T C P s o c k e t s U D P s o c k e t s D C C P s o c k e t s PACKET sockets、TCP sockets、UDP sockets、DCCP sockets R A W s o c k e t s U N I X RAW sockets、UNIX d o m a i n s o c k e t s domain sockets 等统计)
  • 它可以显示和 n e t s t a t netstat 类似的内容。但 s s ss 的优势在于它能够显示更多更详细的有关 T C P TCP 和连接状态的信息,而且比 n e t s t a t netstat 更快速更高效
  • $ss的命令格式:
ss [option] 
ss [option] [过滤]

5.2 详细参数

root@VM-0-2-ubuntu:/home/ubuntu# ss -h
Usage: ss [ OPTIONS ]
       ss [ OPTIONS ] [ FILTER ]
   -h, --help          this message   //帮助信息
   -V, --version       output version information  //程序版本信息
   -n, --numeric       don't resolve service names //不解析服务名称
   -r, --resolve       resolve host names       //解析主机名
   -a, --all           display all sockets      //显示所有套接字
   -l, --listening     display listening sockets //显示监听状态的套接字
   -o, --options       show timer information    //显示计时器信息
   -e, --extended      show detailed socket information //显示详细的套接字信息
   -m, --memory        show socket memory usage   //显示套接字的内存使用情况
   -p, --processes     show process using socket  //显示使用套接字的进程
   -i, --info          show internal TCP information //显示TCP内部信息
   -s, --summary       show socket usage summary   //显示套接字使用概况
   -b, --bpf           show bpf filter socket information //显示BPF过滤器套接字信息
   -E, --events        continually display sockets as they are destroyed //在被破环时不断显示套接字
   -Z, --context       display process SELinux security contexts //显示SELinux的安全上下文过程
   -z, --contexts      display process and socket SELinux security contexts  //显示过程和Socket SELinux的安全上下文
   -N, --net           switch to the specified network namespace name //切换到指定的网络命名空间名称

   -4, --ipv4          display only IP version 4 sockets //仅显示IPV4的套接字
   -6, --ipv6          display only IP version 6 sockets  //仅显示iPV6的套接字
   -0, --packet        display PACKET sockets
   -t, --tcp           display only TCP sockets
   -S, --sctp          display only SCTP sockets
   -u, --udp           display only UDP sockets
   -d, --dccp          display only DCCP sockets
   -w, --raw           display only RAW sockets
   -x, --unix          display only Unix domain sockets
       --vsock         display only vsock sockets
   -f, --family=FAMILY display sockets of type FAMILY //示 FAMILY类型的套接字(sockets),FAMILY可选,支持  unix, inet, inet6, link, netlink
       FAMILY := {inet|inet6|link|unix|netlink|vsock|help}

   -K, --kill          forcibly close sockets, display what was closed
   -H, --no-header     Suppress header line

   -A, --query=QUERY, --socket=QUERY
       QUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram}[,QUERY]

   -D, --diag=FILE     Dump raw information about TCP sockets to FILE
   -F, --filter=FILE   read filter information from FILE //从文件中去过滤器的信息
       FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
       STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}
         TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listening|closing}
          connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
       synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
             bucket := {syn-recv|time-wait}
                big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listening|closing}

5.3 常见用法

  • 1.显示所有网络连接ss -a -n
    在这里插入图片描述
  • 2.显示 T C P TCP 连接:ss -t -a
    在这里插入图片描述
  • 3.显示 S o c k e t s Sockets 摘要信息: ss -s
    在这里插入图片描述
  • 4.列出所有处在 l i s t e n i n g listening 状态的 s o c k e t socket : ss -l
    在这里插入图片描述
  • 5.列出每个进程名及其监听的端口: ss -lp
    在这里插入图片描述
  • 6.显示所有 U D P UDP S o c k e t s Sockets : ss -u -a
    在这里插入图片描述
  • 7.显示所有状态为 e s t a b l i s h e d established S M T P SMTP 连接: ss -o state established '( dport = :smtp or sport = :smtp )'
    在这里插入图片描述
  • 8.显示所有状态为 E s t a b l i s h e d Established H T T P HTTP 连接: ss -o state established '( dport = :http or sport = :http )'
    在这里插入图片描述

了解更多详细有关ss命令可以参考:(感谢评论区的同学@凡晨_雪杰介绍)
Linux网络状态工具 s s ss 命令使用详解
每天一个linux命令(57):ss命令

--------------------------------------- m o o d mood --------------------------------------------

2019 2019 ,也要一个人勇敢的走下去。

猜你喜欢

转载自blog.csdn.net/qq_38790716/article/details/85486681