ping命令是常用的网络命令,它通常用来测试与目标主机的连通性。
ping命令:
-c #: ping包的个数
-s #: ping包的大小
-w #: 等待时长
-W #:等待一次ping请求的时长
-f: 极限检测。大量且快速地送网络封包给一台机器,看它的回应
-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次
-t 存活数值:设置存活数值TTL的大小
实例:
[root@young ~]# ping -f -c 65535 -s 20000 192.168.1.6 #泛洪***
PING 192.168.1.6 (192.168.1.6) 20000(20028) bytes of data.
[root@young ~]# ping -w 5 192.168.1.1 #指定等待时长5s
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.10 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.19 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=1.30 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=1.23 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=0.944 ms
--- 192.168.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 5000ms
rtt min/avg/max/mdev = 0.944/1.156/1.307/0.124 ms
[root@young ~]# ping -c 3 192.168.1.1 #指定次数为3
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.14 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.858 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=1.12 ms
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 0.858/1.041/1.146/0.135 ms
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
说明:tracepath命令和traceroute命令功能类似,但不需要root权限。
常用选项:
-m#:设置检测数据包的最大存活数值TTL的大小。
-n: 直接使用IP地址而非主机名称。
-p#: 设置UDP传输协议的通信端口
-q#: 设置每跳检测包的发送个数,默认三个
-r 忽略普通的Routing Table,直接将数据包送到远端主机上
实例:
[root@bash young]# traceroute -m 5 -q 4 -n www.baidu.com
traceroute to www.baidu.com (115.239.211.112), 5 hops max, 60 byte packets
1 192.168.1.1 6.188 ms 5.990 ms 5.868 ms 5.753 ms
2 100.65.0.1 5.638 ms 5.522 ms 6.447 ms 9.321 ms
3 60.235.65.145 9.133 ms 9.311 ms 9.179 ms 11.035 ms
4 60.235.64.81 20.402 ms 20.297 ms 20.226 ms 20.573 ms
5 202.97.40.101 27.015 ms 26.890 ms 202.97.40.149 29.884 ms 202.97.40.141 26.662 ms
Mtr是 Linux中有一个网络连通性判断工具,它结合了ping, traceroute,nslookup 的相关特性。
常用参数:
-s:用来指定ping数据包的大小
--no-dns:不对IP地址做域名解析
-a:来设置发送数据包的IP地址 这个对一个主机由多个IP地址是有用的
-i:使用这个参数来设置ICMP返回之间的要求默认是1秒
-4:IPv4
-6:IPv6
实例:
[root@bash young]# mtr --no-dns 8.8.8.8
My traceroute [v0.85]
bash (0.0.0.0) Mon Feb 13 22:35:30 2017
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.1 0.0% 18 3.3 1.6 0.9 3.3 0.5
2. 100.65.0.1 0.0% 18 5.1 7.0 3.6 19.5 4.5
3. 60.235.65.141 0.0% 18 6.1 6.4 5.7 8.8 0.8
4. 60.235.64.109 0.0% 18 28.1 22.1 12.5 58.5 13.4
...
以上报告示例说明:
第一列:显示的是IP地址和本机域名,这点和traceroute很像
第二列:snt:10 设置每秒发送数据包的数量,默认值是10 可以通过参数 -c来指定。
第三列:是显示的每个对应IP的丢包率
第四列:显示的最近一次的返回时延
第五列:是平均值 这个应该是发送ping包的平均时延
第六列:是最好或者说时延最短的
第七列:是最差或者说时延最常的
第八列:是标准偏差
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
常用选项:
-r: 显示路由表
-n: numeric,数字格式显示主机地址
-t: tcp协议相关的连接
-u: udp协议相关的连接
-l: 显示处于监听状态的连接;表示:被动打开等待客户端访问的服务;
-p: 显示连接状态中的进程程序名和进程号;
-a: 所有的连接
-ta: tcp相关的所有连接
-s: 按各个协议进行统计
-e: 显示扩展信息,例如uid等
-c: 每隔一个固定时间,执行该netstat命令
实例:
1)显示列出所有端口 (包括监听和未监听的)
[root@bash young]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:discp-client 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:x11 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp 0 96 192.168.1.6:ssh 192.168.1.105:27443 ESTABLISHED
tcp 0 0 192.168.1.6:59947 116.211.167.193:http TIME_WAIT
...
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 20526 private/local
unix 2 [ ACC ] STREAM LISTENING 20529 private/virtual
...
说明:
从整体上看,netstat的输出结果可以分为两个部分:
一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。 Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
2) 列出所有 tcp 端口 netstat -at
[root@bash young]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:discp-client 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:x11 0.0.0.0:* LISTEN
...
3)列出所有 udp 端口 netstat -au
[root@bash young]# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 localhost:323 0.0.0.0:*
udp6 0 0 localhost:323 [::]:*
4)只显示监听端口 netstat -l
[root@bash young]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:discp-client 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:x11 0.0.0.0:* LISTEN
5)只列出所有监听 udp 端口 netstat -lu
[root@bash young]# netstat -lu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 localhost:323 0.0.0.0:*
udp6 0 0 localhost:323 [::]:*
说明:只显示监听的tcp端口为 netstat -tl
,只显示监听的unix端口为 netstat -lx
6)显示所有端口的统计信息 netstat -s
[root@bash young]# netstat -s
Ip:
1409453 total packets received
0 forwarded
0 incoming packets discarded
1262997 incoming packets delivered
1279112 requests sent out
...
7) 显示 TCP 或 UDP 端口的统计信息 netstat -st 或 -su
# netstat -st
# netstat -su
8) 在 netstat 输出中显示 PID 和进程名称 netstat -p
[root@bash young]# netstat -tp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 96 192.168.1.6:ssh 192.168.1.105:27443 ESTABLISHED 45793/sshd: root@pt
tcp 0 0 192.168.1.6:60000 116.211.167.193:http TIME_WAIT -
...
9) 在 netstat 输出中不显示主机,端口和用户名 (host, port or user)
#netstat -an
10) 持续输出 netstat 信息
#netstat -c
ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
小贴士:为什么ss比netstat快
netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多
常用选项:
-t: tcp协议相关
-u: udp
-p: process
-l: listening
-n: numeric
-a: all
-e: 扩展信息
-m: 内存使用信息
-o state {established|fin_wait_1|listening|...}
小贴士:ss基本用法同netstat一致下文实例只列出不同用法
实例:
1)ss列出所有http连接中的连接
[root@bash young]# ss -o state established '( dport = :http or sport = :http )'
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp 0 0 192.168.1.6:50036 118.144.78.39:http
tcp 0 0 192.168.1.6:60218 116.211.167.193:http timer:(keepalive,9.506ms,0)
tcp 0 0 192.168.1.6:60214 116.211.167.193:http
说明:以上包含对外提供的80,以及访问外部的80
2)列出本地哪个进程连接到x server
# ss -x src /tmp/.X11-unix/*
3)列出处在FIN-WAIT-1状态的http、https连接
[root@bash young]# ss -o state fin-wait-1 '( sport = :http or sport = :https )'
#注意括号里面空格必须存在否则语法报错
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
ss常用的state状态:
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listen
closing
all : All of the above states
connected : All the states except for listen and closed
synchronized : All the connected states except for syn-sent
bucket : Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.
big : Opposite to bucket state.
4)ss使用IP地址筛选
[root@bash young]# ss src 192.168.1.6
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp ESTAB 0 0 192.168.1.6:57449 83.168.200.199:ntp
udp ESTAB 0 0 192.168.1.6:36484 173.255.215.209:ntp
tcp ESTAB 0 96 192.168.1.6:ssh 192.168.1.105:27443
说明:
ss src ADDRESS_PATTERN[:PORT]
src:表示来源
ADDRESS_PATTERN:表示地址规则
5)ss使用端口筛选
ss dport OP PORT
OP:是运算符
PORT:表示端口
dport:表示过滤目标端口、相反的有sport
OP运算符如下:
<= or le : 小于等于 >= or ge : 大于等于
== or eq : 等于
!= or ne : 不等于端口
< or lt : 小于这个端口 > or gt : 大于端口
OP实例:
ss sport = :http 也可以是 ss sport = :80
ss dport = :http
ss dport \> :1024 #注意字符转义
ss sport \> :1024
ss sport \< :32000
ss sport eq :22
ss dport != :22
ss state connected sport = :http
ss \( sport =
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。