Wireshark 与命令行工具
Wireshark:网络协议的显微镜
Wireshark 是全球最流行的开源网络协议分析器。它捕获网卡上的每一个数据帧,按协议层次解析字段,让你看到网络通信的"每一帧画面"。
安装与基本使用
- 下载:https://www.wireshark.org/
- 选择捕获接口(Wi-Fi 或以太网)
- 开始捕获,停止后分析
核心过滤表达式
Wireshark 过滤分两种:
- 捕获过滤:在抓包时过滤,减少数据量(语法类似 tcpdump)
- 显示过滤:抓完所有包,只看感兴趣的(Wireshark 专用语法)
IP 层常用显示过滤
ip.addr == 192.168.1.1 # 涉及该 IP 的所有包(源或目的)
ip.src == 192.168.1.10 # 源 IP
ip.dst == 8.8.8.8 # 目的 IP
ipv6.addr == fe80::1 # IPv6 地址
ipv6.dst == 2001:db8::1
icmp || arp # ICMP 或 ARP
icmpv6 # ICMPv6
ip.flags.df == 1 # DF 位置 1(禁止分片)
ip.frag # 所有分片包
ip.frag == 0 && ip.flags.mf == 1 # 第一个分片
ip.dsfield.dscp == 46 # DSCP = EF(语音流量)
ip.dsfield.ecn == 3 # ECN = CE(经历拥塞)
igmp || icmpv6.mldv2 # 组播管理
esp || ah || isakmp # IPsec 流量
完整通信流分析
场景:访问 www.example.com
1. ARP/NDP:解析网关 MAC
2. DNS:查询 example.com 的 IP
3. TCP:三次握手(SYN → SYN/ACK → ACK)
4. TLS:握手协商加密参数
5. HTTP:GET 请求 → 200 OK 响应
6. TCP:四次挥手(FIN → ACK/FIN → ACK)
Wireshark 的 "Follow → TCP Stream" 功能可以把这整个会话按时间线展开,让你看到从 ARP 到 DNS、TCP 握手、TLS 加密协商、HTTP 请求响应、最后四次挥手的完整过程。标记关键包(Ctrl+M)后导出,是网络排障报告的标准附件格式。
Wireshark 技巧:
- 右键一个包 → "Follow → TCP Stream",看完整会话
- "Statistics → Flow Graph",看时序图
- 标记关键包(Ctrl+M),导出(File → Export Specified Packets)
Windows 命令行工具链
ipconfig:网络配置的体检表
ipconfig /all
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . : example.com
IPv4 地址 . . . . . . . . . . . . : 192.168.1.10
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.1.1
DHCP 服务器 . . . . . . . . . . . : 192.168.1.1
DNS 服务器 . . . . . . . . . . . : 8.8.8.8
物理地址. . . . . . . . . . . . . : 00-1A-2B-3C-4D-5E
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
租约获得 . . . . . . . . . . . . : 2024年1月15日 8:00:00
租约过期 . . . . . . . . . . . . : 2024年1月16日 8:00:00
ping:连通性测试
ping -t 8.8.8.8 # 持续 ping(按 Ctrl+C 停止)
ping -l 3000 8.8.8.8 # 发送 3000 字节大包
ping -i 2 8.8.8.8 # TTL 设为 2(观察第二跳返回)
ping -f 8.8.8.8 # 洪水 ping(需管理员权限)
ping -4 example.com # 强制 IPv4
ping -6 example.com # 强制 IPv6
tracert:路径追踪
tracert -d 8.8.8.8 # 禁用 DNS 解析,加速显示
tracert -h 30 8.8.8.8 # 最大 30 跳
route:路由表管理
route print # 显示路由表
route add 10.1.1.0 mask 255.255.255.0 192.168.1.1 # 添加静态路由
route delete 10.1.1.0 # 删除路由
arp:邻居表管理
arp -a # 显示 ARP 缓存
arp -d 192.168.1.1 # 删除某条目
arp -s 192.168.1.1 00-1a-2b-3c-4d-5e # 静态绑定
netsh:高级网络配置
netsh interface ip show config # 显示 IP 配置
netsh interface ip show joins # 显示组播组成员
netsh advfirewall firewall show rule name=all # 显示防火墙规则
nslookup / Resolve-DnsName:DNS 查询
nslookup example.com
nslookup -type=mx example.com # 查询邮件交换记录
nslookup -type=aaaa example.com # 查询 IPv6 地址
# PowerShell
Resolve-DnsName -Name example.com -Type AAAA
Linux / macOS 工具链
ip 命令(现代替代 ifconfig/route/arp)
ip addr show # 显示 IP 地址
ip link show # 显示网卡状态
ip route show # 显示路由表
ip neigh show # 显示邻居缓存(ARP/NDP)
ip maddr show # 显示组播组
# 添加/删除
sudo ip addr add 192.168.2.10/24 dev eth0
sudo ip route add 10.0.0.0/8 via 192.168.1.1
sudo ip neigh add 192.168.1.1 lladdr 00:1a:2b:3c:4d:5e dev eth0
ping / traceroute
ping -c 4 8.8.8.8 # 发 4 个包
ping -s 3000 8.8.8.8 # 数据部分 3000 字节
ping -M do -s 3000 8.8.8.8 # 禁止分片,测试 MTU
traceroute -I 8.8.8.8 # ICMP 模式
traceroute -T -p 80 www.example.com # TCP 模式,端口 80
mtr 8.8.8.8 # 实时路径质量(丢包率、延迟)
ss / netstat:连接与路由
ss -tunlp # TCP/UDP,不解析名称,监听端口,显示进程
ss -s # 统计摘要
netstat -rn # 数字形式显示路由表
netstat -an | grep ESTABLISHED # 查看已建立连接
iptables / nftables:防火墙与 NAT
# iptables(传统)
sudo iptables -t nat -L -n -v # 查看 NAT 表
sudo iptables -t filter -L -n -v # 查看过滤规则
# nftables(新一代)
sudo nft list ruleset # 查看所有规则
conntrack:连接跟踪
sudo conntrack -L # 查看 NAT 连接跟踪表
sudo conntrack -L -s 192.168.1.10 # 查看特定源地址的连接
tcpdump:命令行抓包
sudo tcpdump -i eth0 icmp # 只抓 ICMP
sudo tcpdump -i eth0 host 8.8.8.8 # 只抓涉及 8.8.8.8 的包
sudo tcpdump -i eth0 port 80 # 只抓 80 端口
sudo tcpdump -i eth0 -w capture.pcap # 写入文件,Wireshark 打开
本篇小结
- Wireshark 显示过滤语法:
ip.addr、ipv6.addr、icmp、ip.flags.df等 - Windows:
ipconfig、ping、tracert、route、arp、netsh、nslookup - Linux:
ip addr/link/route/neigh/maddr、ping、traceroute、ss、iptables/nft、conntrack、tcpdump - 掌握这些工具,排障时才能快速定位问题层级
动手实践
Wireshark 抓包访问一个网站,用 "Follow TCP Stream" 看完整 HTTP 请求
ipconfig /all或ip addr对比,记录你的 IP、掩码、网关、DNS、MACping -f -l 1472 8.8.8.8(Win)或ping -M do -s 1472 8.8.8.8(Linux):- 1472 + 8(ICMP) + 20(IP) = 1500,刚好以太网 MTU
- 逐步增加 1473,观察何时开始失败,验证 MTU
traceroute -I和traceroute -T -p 80对比到同一目标的路径差异ss -tunlp查看本机监听端口,结合curl测试连通性