飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • IP协议

    • 认识 IP 协议与网络层定位
    • IPv4 编址体系与分类地址
    • CIDR 与子网划分实战
    • IPv6 编址体系
    • ARP 协议详解
    • NDP 协议详解
    • IGMP 与 MLD 组播侦听发现
    • VRRP 与网关冗余
    • IPv4 数据报首部解析
    • IPv6 数据报与扩展首部
    • IPsec 安全扩展
    • 分片、MTU 与路径发现
    • ICMP 与 Traceroute 原理
    • 路由基础与转发流水线
    • 动态路由协议
    • NAT 网络地址转换
    • DHCP 与自动配置
    • Wireshark 与命令行工具
    • IPv6 过渡技术
    • IP 协议栈排障与攻击防御
  • TCP协议

    • 认识 TCP 协议与传输层定位
    • TCP 报文段首部解析
    • 三次握手与连接建立
    • 四次挥手与连接释放
    • TCP 有限状态机
    • 序列号与确认机制
    • 超时重传与 RTO 计算
    • 滑动窗口与流量控制
    • 拥塞控制基础
    • 现代拥塞控制算法
    • TCP 选项与扩展
    • TCP 性能调优与内核参数
    • Nagle 算法与糊涂窗口综合征
    • TCP 定时器与 Keep-Alive 机制
    • TCP 安全与攻击防御
    • TCP 与上层/下层交互
    • TCP 综合实践与排障

Wireshark 与命令行工具

Wireshark:网络协议的显微镜

Wireshark 是全球最流行的开源网络协议分析器。它捕获网卡上的每一个数据帧,按协议层次解析字段,让你看到网络通信的"每一帧画面"。

安装与基本使用

  1. 下载:https://www.wireshark.org/
  2. 选择捕获接口(Wi-Fi 或以太网)
  3. 开始捕获,停止后分析

核心过滤表达式

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
  • 掌握这些工具,排障时才能快速定位问题层级

动手实践

  1. Wireshark 抓包访问一个网站,用 "Follow TCP Stream" 看完整 HTTP 请求

  2. ipconfig /all 或 ip addr 对比,记录你的 IP、掩码、网关、DNS、MAC

  3. ping -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
  4. traceroute -I 和 traceroute -T -p 80 对比到同一目标的路径差异

  5. ss -tunlp 查看本机监听端口,结合 curl 测试连通性

上一页
DHCP 与自动配置
下一页
IPv6 过渡技术