网络性能排查

1 ping 使用

1.1 ping 介绍

ping 命令是一个网络工具,用于测试主机之间的连通性。它通过发送ICMP(Internet Control Message Protocol)回声请求报文到目标主机,并等待接收回声应答来判断网络连接的状态。ping 命令非常有用,因为它可以帮助用户快速诊断基本的网络问题,如确定远程主机是否可达、测量数据包往返时间以及检查丢包率等。

1.2 使用说明

1.2.1 ping -h

root@jeven01:~# ping -h

Usage
  ping [options] <destination>

Options:
  <destination>      dns name or ip address
  -a                 use audible ping
  -A                 use adaptive ping
  -B                 sticky source address
  -c <count>         stop after <count> replies
  -D                 print timestamps
  -d                 use SO_DEBUG socket option
  -f                 flood ping
  -h                 print help and exit
  -I <interface>     either interface name or address
  -i <interval>      seconds between sending each packet
  -L                 suppress loopback of multicast packets
  -l <preload>       send <preload> number of packages while waiting replies
  -m <mark>          tag the packets going out
  -M <pmtud opt>     define mtu discovery, can be one of <do|dont|want>
  -n                 no dns name resolution
  -O                 report outstanding replies
  -p <pattern>       contents of padding byte
  -q                 quiet output
  -Q <tclass>        use quality of service <tclass> bits
  -s <size>          use <size> as number of data bytes to be sent
  -S <size>          use <size> as SO_SNDBUF socket option value
  -t <ttl>           define time to live
  -U                 print user-to-user latency
  -v                 verbose output
  -V                 print version and exit
  -w <deadline>      reply wait <deadline> in seconds
  -W <timeout>       time to wait for response

IPv4 options:
  -4                 use IPv4
  -b                 allow pinging broadcast
  -R                 record route
  -T <timestamp>     define timestamp, can be one of <tsonly|tsandaddr|tsprespec>

IPv6 options:
  -6                 use IPv6
  -F <flowlabel>     define flow label, default is random
  -N <nodeinfo opt>  use icmp6 node info query, try <help> as argument

For more details see ping(8).

1.2.2 ping命令帮助解释

  • 用法
ping [选项] <目标>
  • 选项说明
选项描述
-a在输出中将IP地址解析为主机名(反向解析DNS)
-A使用自适应ping,根据网络状况调整发送速率
-B固定源地址,确保数据包从同一接口发出
-c <计数>计数:在收到<计数>个回复后停止
-D打印时间戳
-d使用SO_DEBUG套接字选项
-f洪水式ping,快速发送数据包
-h显示帮助信息并退出
-I <接口>指定使用的网络接口名或地址
-i <间隔>设置每次发送之间的时间间隔(秒)
-L抑制多播数据包的回环
-l <预加载>在等待回复时发送<预加载>数量的数据包
-m <标记>给外出的数据包打上标记
-M <pmtud选项>给外出的数据包打上标记
-n不解析DNS名称
-O报告未完成的回复
-p <模式>设置填充字节的内容
-q安静输出
-Q 使用服务质量位
-s <大小>发送数据包的数据字节数
-S <大小>将SO_SNDBUF套接字选项设置为<大小>
-t 定义生存时间
-U打印用户到用户的延迟
-v详细输出
-V显示版本信息并退出
-w <截止时间>整个 ping 命令运行的 总超时时长(秒)
-W <超时>每个“请求等待响应”的超时时长(秒)
  • IPv4 特有选项
选项描述
-4使用IPv4
-b允许向广播地址发送ping
-R记录路由
-T <时间戳>定义时间戳,可以是tsonly、tsandaddr、tsprespec之一
  • IPv6 特有选项
选项描述
-6使用IPv6
-F <流标签>定义流标签,默认为随机
-N <节点信息选项>使用ICMPv6节点信息查询,尝试使用help作为参数以获取更多信息

1.2.3 使用

[root@iZn4a0wfwff6mymj80o2qmZ ~]# ping -w 10 www.baidu.com
PING www.a.shifen.com (180.101.49.44) 56(84) bytes of data.
64 bytes from 180.101.49.44 (180.101.49.44): icmp_seq=1 ttl=50 time=28.0 ms
64 bytes from 180.101.49.44 (180.101.49.44): icmp_seq=2 ttl=50 time=28.0 ms
64 bytes from 180.101.49.44 (180.101.49.44): icmp_seq=3 ttl=50 time=28.0 ms
64 bytes from 180.101.49.44 (180.101.49.44): icmp_seq=4 ttl=50 time=28.0 ms
64 bytes from 180.101.49.44 (180.101.49.44): icmp_seq=5 ttl=50 time=28.0 ms
64 bytes from 180.101.49.44 (180.101.49.44): icmp_seq=6 ttl=50 time=28.0 ms
64 bytes from 180.101.49.44 (180.101.49.44): icmp_seq=7 ttl=50 time=28.1 ms
64 bytes from 180.101.49.44 (180.101.49.44): icmp_seq=8 ttl=50 time=28.0 ms
64 bytes from 180.101.49.44 (180.101.49.44): icmp_seq=9 ttl=50 time=28.0 ms
64 bytes from 180.101.49.44 (180.101.49.44): icmp_seq=10 ttl=50 time=28.0 ms

--- www.a.shifen.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9009ms
rtt min/avg/max/mdev = 28.007/28.023/28.056/0.198 ms
字段解释
— www.a.shifen.com ping statistics —统计信息头
10 packets transmitted, 10 received, 0% packet loss, time 9009ms共发送了10个数据包,收到了10个响应,没有丢包,整个过程耗时9009毫秒
rtt min/avg/max/mdev = 28.007/28.023/28.056/0.198 ms往返时间统计:- 最小值:28.007毫秒 - 平均值:28.023毫秒 - 最大值:28.056毫秒 - 标准偏差:0.198毫秒

2 netstat 使用

2.1 netstat 介绍

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

2.2 使用说明

2.2.1 netstat -h

~$ netstat -h
usage: netstat [-vWeenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}
       netstat [-vWnNcaeol] [<Socket> ...]
       netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }

        -r, --route              display routing table
        -i, --interfaces         display interface table
        -g, --groups             display multicast group memberships
        -s, --statistics         display networking statistics (like SNMP)
        -M, --masquerade         display masqueraded connections

        -v, --verbose            be verbose
        -W, --wide               don't truncate IP addresses
        -n, --numeric            don't resolve names
        --numeric-hosts          don't resolve host names
        --numeric-ports          don't resolve port names
        --numeric-users          don't resolve user names
        -N, --symbolic           resolve hardware names
        -e, --extend             display other/more information
        -p, --programs           display PID/Program name for sockets
        -o, --timers             display timers
        -c, --continuous         continuous listing

        -l, --listening          display listening server sockets
        -a, --all                display all sockets (default: connected)
        -F, --fib                display Forwarding Information Base (default)
        -C, --cache              display routing cache instead of FIB
        -Z, --context            display SELinux security context for sockets

  <Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}
           {-x|--unix} --ax25 --ipx --netrom
  <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inet
  List of possible address families (which support routing):
    inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
    netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
    x25 (CCITT X.25)

2.2.2 netstat 命令帮助解释

  • 用法
netstat [选项]
  • 选项说明
选项描述
-a或–all显示所有连线中的Socket
-A<网络类型>或–<网络类型>列出该网络类型连线中的相关地址
-c或–continuous持续列出网络状态
-C或–cache显示路由器配置的快取信息
-e或–extend显示网络其他相关信息
-F或–fib显示FIB
-g或–groups显示多重广播功能群组组员名单
-h或–help在线帮助
-i或–interfaces显示网络界面信息表单
-l或–listening显示监控中的服务器的Socket
-M或–masquerade显示伪装的网络连线
-n或–numeric直接使用ip地址,而不通过域名服务器
-N或–netlink或–symbolic显示网络硬件外围设备的符号连接名称
-o或–timers显示计时器
-p或–programs显示正在使用Socket的程序识别码和程序名称
-r或–route显示Routing Table
-s或–statistice显示网络工作信息统计表
-t或–tcp显示TCP传输协议的连线状况
-u或–udp显示UDP传输协议的连线状况
-v或–verbose显示指令执行过程
-V或–version显示版本信息
-w或–raw显示RAW传输协议的连线状况
-x或–unix此参数的效果和指定”-A unix”参数相同
–ip或–inet此参数的效果和指定”-A inet”参数相同
  • 连接状态解释
状态说明
LISTEN侦听来自远方的TCP端口的连接请求
SYN-SENT再发送连接请求后等待匹配的连接请求
SYN-RECEIVED再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED代表一个打开的连接
FIN-WAIT-1等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2从远程TCP等待连接中断请求
CLOSE-WAIT等待从本地用户发来的连接中断请求
CLOSING等待远程TCP对连接中断的确认
LAST-ACK等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED没有任何连接状态

2.3.3 使用

~$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:6037            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN
tcp        0    208 localhost:ssh           30.207.96.210:57766     ESTABLISHED
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  3      [ ]         STREAM     CONNECTED     1902585137
unix  3      [ ]         STREAM     CONNECTED     901008797
unix  3      [ ]         STREAM     CONNECTED     901008800
unix  3      [ ]         STREAM     CONNECTED     901008798
unix  3      [ ]         STREAM     CONNECTED     901008801
unix  3      [ ]         STREAM     CONNECTED     1902585136

3 traceroute 使用

3.1 traceroute 介绍

在网络故障排查中,快速定位数据包传输路径的异常节点至关重要。traceroute(或tracert在Windows中)是Linux系统中用于追踪数据包从源主机到目标主机经过的路由路径的核心工具。通过分析每一跳(Hop)的延迟和丢包情况,可精准诊断网络连接问题(如延迟高、路由环路、防火墙拦截等)。

3.2 核心原理

traceroute通过发送一系列探测包(默认使用UDP协议,端口从33434递增)并监控其路径,实现路由追踪。其核心逻辑基于TTL(Time-To-Live)机制:

  • 发送第一个探测包时设置TTL=1,到达第一个路由器后TTL减为0,触发ICMP Time Exceeded响应。
  • 逐步增加TTL值(TTL=2,3,…),直至探测包到达目标主机或达到最大跳数(默认30跳)。
  • 通过分析每个路由节点的响应时间和IP地址,绘制完整路径。

3.3 使用说明

3.3.1 traceroute -h

traceroute -h
traceroute: invalid option -- 'h'

Usage: traceroute [-46IFlnrv] [-f 1ST_TTL] [-m MAXTTL] [-q PROBES] [-p PORT]
	[-t TOS] [-w WAIT_SEC] [-s SRC_IP] [-i IFACE]
	[-z PAUSE_MSEC] HOST [BYTES]

Trace the route to HOST

	-4,-6	Force IP or IPv6 name resolution
	-F	Set don't fragment bit
	-I	Use ICMP ECHO instead of UDP datagrams
	-l	Display TTL value of the returned packet
	-n	Print numeric addresses
	-r	Bypass routing tables, send directly to HOST
	-v	Verbose
	-f N	First number of hops (default 1)
	-m N	Max number of hops
	-q N	Number of probes per hop (default 3)
	-p N	Base UDP port number used in probes
		(default 33434)
	-s IP	Source address
	-i IFACE Source interface
	-t N	Type-of-service in probe packets (default 0)
	-w SEC	Wait for a response (default 3)
	-z MSEC	Wait before each send

3.3.2 traceroute 命令帮助解释

  • 用法
traceroute [选项] 目标主机或IP
  • 选项说明
选项简写描述
-4-强制使用 IPv4
-6-强制使用 IPv6
-d–debug启用 socket 层调试
-F–dont-fragment不分片数据包
-f first_ttl–first=first_ttl指定起始 TTL(默认从 1 开始)
-g gate,…–gateway=gate,…指定网关路由(最多 8 个 IPv4 或 127 个 IPv6)
-I–icmp使用 ICMP ECHO 进行追踪
-T–tcp使用 TCP SYN 进行追踪,默认端口为 80
-i device–interface=device指定使用的网络接口
-m max_ttl–max-hops=max_ttl设置最大跳数(默认为 30)
-N squeries–sim-queries=squeries设置同时探测的数量(默认为 16)
-n-不进行 DNS 解析,直接显示 IP 地址
-p port–port=port设置目标端口。根据方法不同,初始化值不同:UDP 默认 33434,ICMP 默认从 1 增加,TCP 默认 80
-t tos–tos=tos设置 TOS(IPv4 的 Type of Service)或 TC(IPv6 的 Traffic Class)值
-l flow_label–flowlabel=flow_label为 IPv6 数据包指定 Flow Label
-w MAX,HERE,NEAR–wait=MAX,HERE,NEAR设置等待响应的最大时间(HERE:同一跳倍数,NEAR:下一跳倍数,MAX:最大秒数)
-q nqueries–queries=nqueries每个跳点发送的探测次数(默认为 3)
-r-绕过正常路由,直接发送到本地网络中的主机
-s src_addr–source=src_addr指定发送数据包的源地址
-z sendwait–sendwait=sendwait探测之间的最小间隔时间(默认为0,>10为毫秒,否则为秒,支持浮点数)
-e–extensions显示 ICMP 扩展信息(如 MPLS)
-A–as-path-lookups在路由注册表中查找 AS 路径,并在对应地址后打印结果
-M name–module=name指定 traceroute 模块(内置或外部),如 -I 等价于 -M icmp
-O OPTS,…–options=OPTS,…为模块指定特定选项,多个用逗号分隔,用 help 查看模块选项
–sport=num-指定发送数据包的源端口,隐含 -N 1
–fwmark=num-为发送的数据包设置防火墙标记
-U–udp使用 UDP 协议进行追踪(默认端口为 53)
-UL-使用 UDPLITE 协议进行追踪(默认端口为 53)
-D–dccp使用 DCCP Request 协议进行追踪(默认端口为 33434)
-P prot–protocol=prot使用指定协议(prot)的原始数据包进行追踪
–mtu-发现路径 MTU,等价于 -F -N 1
–back-推测反向路径的跳数,并在有差异时打印
-V–version显示版本信息并退出
–help-显示帮助信息并退出

3.3.3 使用

traceroute www.baidu.com
traceroute to www.baidu.com (182.61.200.108), 30 hops max, 46 byte packets
 1  10.10.26.1 (10.10.26.1)  0.392 ms  1.839 ms  33.893 ms
 2  30.207.82.126 (30.207.82.126)  9.133 ms  56.391 ms  3.402 ms
 3  30.207.72.53 (30.207.72.53)  40.995 ms  4.664 ms  24.508 ms
 4  30.207.71.41 (30.207.71.41)  2.975 ms  4.458 ms  95.041 ms
 5  30.207.68.25 (30.207.68.25)  0.664 ms  30.207.68.29 (30.207.68.29)  53.454 ms  101.255 ms
 6  30.207.67.134 (30.207.67.134)  201.696 ms  1.518 ms  108.725 ms
 7  30.207.65.130 (30.207.65.130)  126.377 ms  4.543 ms  144.726 ms
 8  30.253.1.177 (30.253.1.177)  104.769 ms  23.577 ms  19.561 ms
 9  10.54.92.69 (10.54.92.69)  48.225 ms  10.102.36.245 (10.102.36.245)  20.640 ms  10.54.92.45 (10.54.92.45)  229.317 ms
10  10.216.217.10 (10.216.217.10)  29.876 ms  10.216.216.246 (10.216.216.246)  53.223 ms  *
11  10.255.37.2 (10.255.37.2)  48.127 ms  10.54.41.145 (10.54.41.145)  47.423 ms  117.49.51.141 (117.49.51.141)  79.872 ms
12  182.61.251.14 (182.61.251.14)  45.387 ms  182.61.251.2 (182.61.251.2)  112.948 ms  10.216.233.46 (10.216.233.46)  48.809 ms
13  182.61.255.51 (182.61.255.51)  49.682 ms  10.216.233.50 (10.216.233.50)  151.592 ms  182.61.255.51 (182.61.255.51)  114.993 ms
14  182.61.239.5 (182.61.239.5)  64.795 ms  *  182.61.251.28 (182.61.251.28)  217.841 ms
15  182.61.251.20 (182.61.251.20)  198.538 ms  *  182.61.251.16 (182.61.251.16)  55.260 ms
16  *  *  *
17  *  *  *
18  *  *  *
19  *  *  *
20  *  *  *
21  *  *  *
22  *  *  *
23  *  *  *
24  *  *  *
25  *  *  *
26  *  *  *
27  *  *  *
28  *  *  *
29  *  *  *
30  *  *  *

结果说明:

  • 第1列:跳数(Hop),从1开始递增。
  • 第2列:路由节点的IP地址和域名(若可解析)。
  • 后续列:每个探测包的往返时间(RTT),默认发送3个探测包。
    *符号:表示该探测包未收到响应(可能被防火墙过滤或节点未回复)。

4 tcpdump 使用

4.1 tcpdump 介绍

Tcpdump是linux环境下抓包工具,可以对对应网络接口流量进行抓取或者过滤抓取,可以打印输出到屏幕,也可以保存到指定文件。指定的文件可以用wireshark来打开查看。可以快速查看符合网络接口符合某一条件的抓包,方便我们确定网络问题。

4.2 使用说明

4.2.1 tcpdump -h

 tcpdump -h
tcpdump version 4.9.3
libpcap version 1.8.1
OpenSSL 1.0.2p  14 Aug 2018
Usage: tcpdump [-aAbdDefhHIKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
		[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
		[ -i interface ] [ -M secret ] [ --number ]
		[ -Q in|out|inout ]
		[ -r file ] [ -s snaplen ] [ -T type ] [ --version ] [ -V file ]
		[ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
		[ -Z user ] [ expression ]

4.2.2 tcpdump 命令帮助解释

  • 用法
tcpdump [选项]

在这里插入图片描述

  • 关于 proto:可选有 ip, arp, rarp, tcp, udp, icmp, ether 等,默认是所有协议的包

  • 关于 dir:可选有 src, dst, src or dst, src and dst,默认为 src or dst

  • 关于 type:可选有 host, net, port, portrange(端口范围,比如 21-42),默认为 host

  • 选项说明

选项说明
-i 指定监听的网卡接口(如 eth0, wlan0)。默认选择第一个可用接口。
-nn不将地址和端口转换为域名和服务名,直接显示数字(加快速度)。
-v, -vv, -vvv增加输出详细程度,多写提高详细级别。
-c 捕获指定数量的数据包后退出。
-w 把抓包内容写入文件(pcap格式),可供后续用Wireshark分析。
-r 读取文件(pcap格式),进行解析显示。
-s 指定每包抓取的最大长度(默认68或262144字节,视版本而定)。
-X以16进制和ASCII显示数据内容。
-A以ASCII显示数据内容(常用于HTTP分析)。
-D列出所有可用的网络接口并编号。
-F 指定过滤表达式的文件。
-G 按时间间隔分割文件(适合长期抓包和自动轮换)。
-C 按文件大小分割输出文件(单位为MB)。
-Z 抓包后降权为指定用户运行,提高安全性。
–version显示版本信息。
-h, --help显示帮助信息并退出。

5 wireshark 使用

https://www.cnblogs.com/hobbybear/p/17445763.html
https://www.cnblogs.com/hobbybear/p/17460270.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值