网络分析工具--【ping、tcpdump、netstat、lsof、ss】
原创小呀小二笙 发布于2019-01-01 15:32:19 阅读数 1314 收藏
https://blog.csdn.net/qq_38790716/article/details/85486681 看原文比较好 复制的话 图片没有过来.
展开
文章目录
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 概述
ping pingping(PacketInternetGroper Packet Internet GroperPacketInternetGroper)是Windows、UNIX和Linux Windows、UNIX和LinuxWindows、UNIX和Linux系统下的一个命令
ping pingping也属于一个通信协议,是TCP/IP TCP/IPTCP/IP协议的一部分
利用ping命令可以检查网络是否连通,可以很好地帮助分析和判断网络故障
原理:利用网络上机器IP IPIP地址地唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连通以及时延是多少
应用格式:ping pingping 空格 IP IPIP地址
1.2 ping的使用
1.windows windowswindows使用ipconfig/all观察本地网络设置是否正确,Linux LinuxLinux使用ifconfig查看
2.ping 127.0.0.1,检查本地的TCP/IP协议有没有设置好
3.ping本机IP IPIP地址,检查本机的IP地址是否设置有误
4.ping本网网关或本网IP IPIP地址,这样是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常(在非局域网中这一步骤可以忽略)
5.ping本地DNS地址,检查本地DNS服务器是否工作正常
之前使用ipconfig/all得到的DNS服务器地址:
ping DNS服务器地址:
6.ping pingping远程IP IPIP地址,主要检查本网或本机与外部的连接是否正常,还可以用来测试网络延时,这里ping pingping百度:
1.3 ping常用参数
2. tcpdump
2.1 概述
tcpdump tcpdumptcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析,支持针对协议、主机、网络或端口的过滤,并提供了and、or、not and、or、notand、or、not等逻辑语句来帮助去掉无用的信息
tcpdump tcpdumptcpdump根据使用者的定义对网络上的数据包进行截获和分析
tcpdump tcpdumptcpdump使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,利用这些参数定义的过滤规则就能达到迅速定位故障的目的
tcpdump tcpdumptcpdump采用命令行格式,它的命令格式为:
tcpdump [ -adeflnNOpqStvx] [-c 数量] [-F 文件名]
[-i 网络接口] [-r 文件名] [-s snaplen]
[-T 类型] [-w 文件名] [表达式]
1
2
3
表达式是一个正则表达式,tcpdump tcpdumptcpdump利用它作为过滤报文的条件
2.2 tcpdump使用
1)默认启动
tcpdump
1
默认情况下,直接启动tcpdump tcpdumptcpdump将监视第一个网络接口(非lo口)上所有流通的数据包。这样抓取的结果会非常多,滚动非常快
2)监视指定网络接口的数据包
tcpdump -i eth1
1
如果不指定网卡,默认tcpdump tcpdumptcpdump只会监视第一个网络接口,如eth0 eth0eth0。
3)监视指定主机的数据包,例如所有进入或离开hostname hostnamehostname的数据包
tcpdump host hostname
1
4)打印helios helioshelios<–>hot hothot或helios helioshelios<–>ace aceace之间通信的数据包
tcpdump host helios and \( hot or ace \)
1
5)打印ace aceace与任何其他主机之间通信的IP IPIP数据包,但不包括与helios helioshelios之间的数据包
tcpdump ip host ace and not helios
1
6)截获某端口相关的包
tcpdump port 6666
1
7)监视指定主机和端口的数据包
tcpdump tcp port 22 and host hostname
1
了解更多相关命令tcpdump
3. netstat
3.1 概述
netstat netstatnetstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于校验本机各端口的网络连接情况
netstat netstatnetstat是在内核中访问网络及相关信息的程序,它能提供TCP TCPTCP连接、对TCP TCPTCP和UDP UDPUDP的监听及获取进程内存管理的相关报告
netstat netstatnetstat的命令格式:
netstat [-acCeFghilMnNoprstuvVwx] [-A< 网络类型>] [--ip]
1
3.2 常见参数
参数 说明
−a -a−a 显示所有选项,默认不显示LISTEN LISTENLISTEN相关
−t -t−t 仅显示TCP TCPTCP相关选项
−u -u−u 仅显示UDP UDPUDP相关选项
−n -n−n 拒绝显示别名,能显示数字的全部转化为数字
−l -l−l 仅列出有在listen listenlisten(监听)的服务状态
−p -p−p 显示建立相关链接的程序名
−r -r−r 显示路由信息,路由表
−e -e−e 显示扩展信息,例如uid uiduid等
−s -s−s 按各个协议进行统计
−c -c−c 每隔一个固定时间,执行该netstat netstatnetstat命令
3.3 参数使用
1.列出所有端口: netstat -a
2.列出所有TCP TCPTCP端口:netstat -at
3.列出所有UDP UDPUDP端口:netstat -au
4.列出所有处于监听状态的socket socketsocket:netstat -l
5.列出所有监听TCP TCPTCP端口的socket socketsocket:netstat -lt
6.列出所有监听UDP UDPUDP端口的socket socketsocket:netstat -lu
7.列出所有监听UNIX UNIXUNIX端口的socket socketsocket:netstat -lx
8.在netstat netstatnetstat输出中显示PID PIDPID和进程名称:netstat netstatnetstat −p -p−p
更多netstat netstatnetstat参数详解netstat
4. lsof
4.1 概述
lsof是一个是一个列出当前系统打开文件的工具
在Linux LinuxLinux下,任何事物皆是以文件形式存在的,并且系统在后台都为该应用程序分配了一个文件描述符,通过该文件描述符能掌握大量关于该应用程序的信息,因此通过lsof lsoflsof查看这个列表对系统监测以及排错将是有很大帮助的
执行lsof lsoflsof命令,输出结果如下:
1)COMMAND COMMANDCOMMAND:进程的名称
2)PID PIDPID:进程标识符
3)USER USERUSER:进程所有者
4)FD FDFD:文件描述符,应用程序通过文件描述符识别该文件,如cwd cwdcwd、txt txttxt等
5)TYPE TYPETYPE:文件类型,如DIR、REG DIR、REGDIR、REG等
6)DEVICE DEVICEDEVICE:指定磁盘的名称
7)SIZE SIZESIZE:文件的大小
8)NODE NODENODE:索引节点(文件在磁盘上的标识)
9)NAME NAMENAME:打开文件的确切名称
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.查看所属root rootroot用户进程所打开的文件,文件类型为.txt .txt.txt:lsof -a -u root -d txt
3.监控打开的文件和设备。查看设备 /dev/tty1 /dev/tty1/dev/tty1被哪些进程占用的命令:lsof /dev/tty1
4.监控程序,如查看指定程序server serverserver打开的文件:lsof -c server
5.监控用户。比如查看指定用户ubuntu ubuntuubuntu打开的文件:lsof -u ubuntu
5. ss
5.1 概述
ss是Socket Statistics的缩写,顾名思义用于显示socket状态的统计(可以显示PACKETsockets、TCPsockets、UDPsockets、DCCPsockets PACKET sockets、TCP sockets、UDP sockets、DCCP socketsPACKETsockets、TCPsockets、UDPsockets、DCCPsockets、RAWsockets、UNIX RAW sockets、UNIXRAWsockets、UNIX domainsockets domain socketsdomainsockets等统计)
它可以显示和netstat netstatnetstat类似的内容。但ss ssss的优势在于它能够显示更多更详细的有关TCP TCPTCP和连接状态的信息,而且比netstat netstatnetstat更快速更高效
$ss的命令格式:
ss [option] ss [option] [过滤]
5.2 详细参数
[email protected]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.显示TCP TCPTCP连接:ss -t -a
3.显示Sockets SocketsSockets摘要信息: ss -s
4.列出所有处在listening listeninglistening状态的socket socketsocket: ss -l
5.列出每个进程名及其监听的端口: ss -lp
6.显示所有UDP UDPUDP Sockets SocketsSockets: ss -u -a
7.显示所有状态为established establishedestablished的SMTP SMTPSMTP连接: ss -o state established ‘( dport = :smtp or sport = :smtp )‘
8.显示所有状态为Established EstablishedEstablished的HTTP HTTPHTTP连接: ss -o state established ‘( dport = :http or sport = :http )‘
了解更多详细有关ss命令可以参考:(感谢评论区的同学@凡晨_雪杰介绍)
Linux网络状态工具ss ssss命令使用详解
每天一个linux命令(57):ss命令
---------------------------------------mood moodmood--------------------------------------------
2019 20192019,也要一个人勇敢的走下去。
点赞 9
————————————————
版权声明:本文为CSDN博主「小呀小二笙」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38790716/article/details/85486681
原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/12083285.html