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

1. ping

1.1 概述

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

1.2 ping的使用

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

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

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

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

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

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

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

1.3 ping常用参数

在这里插入图片描述

2. tcpdump

2.1 概述

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

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

2.2 tcpdump使用

  • 1)默认启动
tcpdump

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

  • 2)监视指定网络接口的数据包
tcpdump -i eth1

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

  • 3)监视指定主机的数据包,例如所有进入或离开 h o s t n a m e hostname hostname的数据包
tcpdump host hostname
  • 4)打印 h e l i o s helios helios<–> h o t hot hot h e l i o s helios helios<–> a c e ace ace之间通信的数据包
tcpdump host helios and \( hot or ace \)
  • 5)打印 a c e ace ace与任何其他主机之间通信的 I P IP IP数据包,但不包括与 h e l i o s helios 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 netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于校验本机各端口的网络连接情况
  • n e t s t a t netstat netstat是在内核中访问网络及相关信息的程序,它能提供 T C P TCP TCP连接、对 T C P TCP TCP U D P UDP UDP的监听及获取进程内存管理的相关报告
  • n e t s t a t netstat netstat的命令格式:
netstat [-acCeFghilMnNoprstuvVwx] [-A< 网络类型>] [--ip]

3.2 常见参数

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

3.3 参数使用

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

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

4. lsof

4.1 概述

  • lsof是一个是一个列出当前系统打开文件的工具
  • L i n u x Linux Linux下,任何事物皆是以文件形式存在的,并且系统在后台都为该应用程序分配了一个文件描述符,通过该文件描述符能掌握大量关于该应用程序的信息,因此通过 l s o f lsof lsof查看这个列表对系统监测以及排错将是有很大帮助的
  • 执行 l s o f lsof lsof命令,输出结果如下:
    在这里插入图片描述
    1) C O M M A N D COMMAND COMMAND:进程的名称
    2) P I D PID PID:进程标识符
    3) U S E R USER USER:进程所有者
    4) F D FD FD:文件描述符,应用程序通过文件描述符识别该文件,如 c w d cwd cwd t x t txt txt
    5) T Y P E TYPE TYPE:文件类型,如 D I R 、 R E G DIR、REG DIRREG
    6) D E V I C E DEVICE DEVICE:指定磁盘的名称
    7) S I Z E SIZE SIZE:文件的大小
    8) N O D E NODE NODE:索引节点(文件在磁盘上的标识)
    9) N A M E NAME 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 root用户进程所打开的文件,文件类型为 . t x t .txt .txtlsof -a -u root -d txt
    在这里插入图片描述
  • 3.监控打开的文件和设备。查看设备 / d e v / t t y 1 /dev/tty1 /dev/tty1被哪些进程占用的命令:lsof /dev/tty1
    在这里插入图片描述
  • 4.监控程序,如查看指定程序 s e r v e r server server打开的文件:lsof -c server
    在这里插入图片描述
  • 5.监控用户。比如查看指定用户 u b u n t u ubuntu 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 PACKETsocketsTCPsocketsUDPsocketsDCCPsockets R A W s o c k e t s 、 U N I X RAW sockets、UNIX RAWsocketsUNIX d o m a i n s o c k e t s domain sockets domainsockets等统计)
  • 它可以显示和 n e t s t a t netstat netstat类似的内容。但 s s ss ss的优势在于它能够显示更多更详细的有关 T C P TCP TCP和连接状态的信息,而且比 n e t s t a t netstat 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 TCP连接:ss -t -a
    在这里插入图片描述
  • 3.显示 S o c k e t s Sockets Sockets摘要信息: ss -s
    在这里插入图片描述
  • 4.列出所有处在 l i s t e n i n g listening listening状态的 s o c k e t socket socket: ss -l
    在这里插入图片描述
  • 5.列出每个进程名及其监听的端口: ss -lp
    在这里插入图片描述
  • 6.显示所有 U D P UDP UDP S o c k e t s Sockets Sockets: ss -u -a
    在这里插入图片描述
  • 7.显示所有状态为 e s t a b l i s h e d established established S M T P SMTP SMTP连接: ss -o state established '( dport = :smtp or sport = :smtp )'
    在这里插入图片描述
  • 8.显示所有状态为 E s t a b l i s h e d Established Established H T T P HTTP HTTP连接: ss -o state established '( dport = :http or sport = :http )'
    在这里插入图片描述

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

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

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

  • 10
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值