当前位置: 代码迷 >> 综合 >> 网络分析工具--【ping、tcpdump、netstat、lsof、ss】
  详细解决方案

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

热度:56   发布时间:2023-12-27 07:40:12.0

文章目录

  • 1. ping
    • 1.1 概述
    • 1.2 ping的使用
    • 1.3 ping常用参数
  • 2. tcpdump
    • 2.1 概述
    • 2.2 tcpdump使用
  • 3. netstat
    • 3.1 概述
    • 3.2 常见参数
    • 3.3 参数使用
  • 4. lsof
    • 4.1 概述
    • 4.2 常见参数列表
    • 4.3 常用命令
  • 5. ss
    • 5.1 概述
    • 5.2 详细参数
    • 5.3 常见用法

1. ping

1.1 概述

  • pingpingpingPacketInternetGroperPacket Internet GroperPacketInternetGroper)是Windows、UNIX和LinuxWindows、UNIX和LinuxWindowsUNIXLinux系统下的一个命令
  • pingpingping也属于一个通信协议,是TCP/IPTCP/IPTCP/IP协议的一部分
  • 利用ping命令可以检查网络是否连通,可以很好地帮助分析和判断网络故障
  • 原理:利用网络上机器IPIPIP地址地唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连通以及时延是多少
  • 应用格式:pingpingping 空格 IPIPIP地址

1.2 ping的使用

  • 1.windowswindowswindows使用ipconfig/all观察本地网络设置是否正确,LinuxLinuxLinux使用ifconfig查看
    在这里插入图片描述
    在这里插入图片描述

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

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

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

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

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

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

1.3 ping常用参数

在这里插入图片描述

2. tcpdump

2.1 概述

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

表达式是一个正则表达式,tcpdumptcpdumptcpdump利用它作为过滤报文的条件

2.2 tcpdump使用

  • 1)默认启动
tcpdump

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

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

如果不指定网卡,默认tcpdumptcpdumptcpdump只会监视第一个网络接口,如eth0eth0eth0

  • 3)监视指定主机的数据包,例如所有进入或离开hostnamehostnamehostname的数据包
tcpdump host hostname
  • 4)打印helioshelioshelios<–>hothothothelioshelioshelios<–>aceaceace之间通信的数据包
tcpdump host helios and \( hot or ace \)
  • 5)打印aceaceace与任何其他主机之间通信的IPIPIP数据包,但不包括与helioshelioshelios之间的数据包
tcpdump ip host ace and not helios
  • 6)截获某端口相关的包
tcpdump port 6666
  • 7)监视指定主机和端口的数据包
tcpdump tcp port 22 and host hostname

了解更多相关命令tcpdump

3. netstat

3.1 概述

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

3.2 常见参数

参数 说明
?a-a?a 显示所有选项,默认不显示LISTENLISTENLISTEN相关
?t-t?t 仅显示TCPTCPTCP相关选项
?u-u?u 仅显示UDPUDPUDP相关选项
?n-n?n 拒绝显示别名,能显示数字的全部转化为数字
?l-l?l 仅列出有在listenlistenlisten(监听)的服务状态
?p-p?p 显示建立相关链接的程序名
?r-r?r 显示路由信息,路由表
?e-e?e 显示扩展信息,例如uiduiduid
?s-s?s 按各个协议进行统计
?c-c?c 每隔一个固定时间,执行该netstatnetstatnetstat命令

3.3 参数使用

  • 1.列出所有端口: netstat -a
    在这里插入图片描述
  • 2.列出所有TCPTCPTCP端口:netstat -at
    在这里插入图片描述
  • 3.列出所有UDPUDPUDP端口:netstat -au
    在这里插入图片描述
  • 4.列出所有处于监听状态的socketsocketsocketnetstat -l
    在这里插入图片描述
  • 5.列出所有监听TCPTCPTCP端口的socketsocketsocket:netstat -lt
    在这里插入图片描述
  • 6.列出所有监听UDPUDPUDP端口的socketsocketsocket:netstat -lu
    在这里插入图片描述
  • 7.列出所有监听UNIXUNIXUNIX端口的socketsocketsocket:netstat -lx
    在这里插入图片描述
  • 8.在netstatnetstatnetstat输出中显示PIDPIDPID和进程名称:netstatnetstatnetstat ?p-p?p
    在这里插入图片描述

更多netstatnetstatnetstat参数详解netstat

4. lsof

4.1 概述

  • lsof是一个是一个列出当前系统打开文件的工具
  • LinuxLinuxLinux下,任何事物皆是以文件形式存在的,并且系统在后台都为该应用程序分配了一个文件描述符,通过该文件描述符能掌握大量关于该应用程序的信息,因此通过lsoflsoflsof查看这个列表对系统监测以及排错将是有很大帮助的
  • 执行lsoflsoflsof命令,输出结果如下:
    在这里插入图片描述
    1)COMMANDCOMMANDCOMMAND:进程的名称
    2)PIDPIDPID:进程标识符
    3)USERUSERUSER:进程所有者
    4)FDFDFD:文件描述符,应用程序通过文件描述符识别该文件,如cwdcwdcwdtxttxttxt
    5)TYPETYPETYPE:文件类型,如DIR、REGDIR、REGDIRREG
    6)DEVICEDEVICEDEVICE:指定磁盘的名称
    7)SIZESIZESIZE:文件的大小
    8)NODENODENODE:索引节点(文件在磁盘上的标识)
    9)NAMENAMENAME:打开文件的确切名称

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.查看所属rootrootroot用户进程所打开的文件,文件类型为.txt.txt.txtlsof -a -u root -d txt
    在这里插入图片描述
  • 3.监控打开的文件和设备。查看设备 /dev/tty1/dev/tty1/dev/tty1被哪些进程占用的命令:lsof /dev/tty1
    在这里插入图片描述
  • 4.监控程序,如查看指定程序serverserverserver打开的文件:lsof -c server
    在这里插入图片描述
  • 5.监控用户。比如查看指定用户ubuntuubuntuubuntu打开的文件:lsof -u ubuntu
    在这里插入图片描述

5. ss

5.1 概述

  • ss是Socket Statistics的缩写,顾名思义用于显示socket状态的统计(可以显示PACKETsockets、TCPsockets、UDPsockets、DCCPsocketsPACKET sockets、TCP sockets、UDP sockets、DCCP socketsPACKETsocketsTCPsocketsUDPsocketsDCCPsocketsRAWsockets、UNIXRAW sockets、UNIXRAWsocketsUNIX domainsocketsdomain socketsdomainsockets等统计)
  • 它可以显示和netstatnetstatnetstat类似的内容。但ssssss的优势在于它能够显示更多更详细的有关TCPTCPTCP和连接状态的信息,而且比netstatnetstatnetstat更快速更高效
  • $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, netlinkFAMILY := {
    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=QUERYQUERY := {
    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.显示TCPTCPTCP连接:ss -t -a
    在这里插入图片描述
  • 3.显示SocketsSocketsSockets摘要信息: ss -s
    在这里插入图片描述
  • 4.列出所有处在listeninglisteninglistening状态的socketsocketsocket: ss -l
    在这里插入图片描述
  • 5.列出每个进程名及其监听的端口: ss -lp
    在这里插入图片描述
  • 6.显示所有UDPUDPUDP SocketsSocketsSockets: ss -u -a
    在这里插入图片描述
  • 7.显示所有状态为establishedestablishedestablishedSMTPSMTPSMTP连接: ss -o state established '( dport = :smtp or sport = :smtp )'
    在这里插入图片描述
  • 8.显示所有状态为EstablishedEstablishedEstablishedHTTPHTTPHTTP连接: ss -o state established '( dport = :http or sport = :http )'
    在这里插入图片描述

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

---------------------------------------moodmoodmood--------------------------------------------

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