【网络通信】Wireshark 与 TCP/IP 五层模型速读手册

Wireshark 与 TCP/IP 五层模型速读手册


目录

  • 一、TCP/IP 五层模型总览
  • 二、各层详解与抓包字段定位
    • 2.1 物理层(Frame)
    • 2.2 数据链路层(Ethernet II)
    • 2.3 网络层(IPv4)
    • 2.4 传输层(TCP/UDP)
    • 2.5 应用层(HTTP 示例)
  • 三、各层抓包字段对照表(速查)
  • 四、完整 TCP 流抓包解析(三次握手 → HTTP 传输 → 四次挥手)
  • 五、HTTP GET 请求报文逐字段解析
  • 六、GET 方法特性与 GET vs POST 对比
  • 七、实战建议(过滤、定位、排障)

一、TCP/IP 五层模型总览

从下到上依次为:物理层 → 数据链路层 → 网络层 → 传输层 → 应用层。数据在发送端逐层封装,上行展示为"data → http → tcp → ip → eth";接收端按相反顺序逐层解封装。

  • 物理层:比特流的电/光信号传输(无头尾,仅记录元数据)
  • 数据链路层:以太网帧封装,基于 MAC 寻址
  • 网络层:基于 IP 寻址/路由的跨网段转发
  • 传输层:端到端的可靠传输(TCP)或无连接传输(UDP)
  • 应用层:面向业务协议(HTTP、DNS、TLS 等)

二、各层详解与抓包字段定位

2.1 物理层(Frame)

  • 传输单位:比特(bit)
  • 关键字段(Wireshark):
    • Frame Number(捕获顺序)
    • Frame Length(帧长度,如 54/327 字节)
    • Encapsulation type(Ethernet)
    • Protocols in frame(例如 eth:ethertype:ip:tcp:http:data 用于快速识别封装路径)
  • 实战价值:定位抓包时序、确认是否截断、识别协议栈路径是否符合预期。

2.2 数据链路层(Ethernet II)

  • 传输单位:帧(Frame)
  • 封装内容:网络层包 + 以太网头(源/目的 MAC、Type)+ FCS
  • 关键字段:
    • Source/Destination MAC(同时可见厂商 OUI,如 IntelCor_...HuaweiTe_...
    • Type:IPv4(0x0800)、IPv6(0x86DD)
  • 实战价值:按 MAC 定位设备,确认二层广播/单播行为、定位链路问题。

2.3 网络层(IPv4)

  • 传输单位:包(Packet)
  • 关键字段:
    • Version(4)
    • Header Length(20 bytes,最小头,表示无扩展)
    • Flags:如 DF(Don't Fragment,禁止分片)
    • Fragment Offset(分片偏移,配合 DF 识别是否允许分片)
    • TTL(常见 Windows=128,Linux=64;跨路由器逐跳减 1)
    • Protocol(6=TCP,17=UDP)
    • Source/Destination Address(源/目的 IP)
  • 实战价值:验证路径与 OS 类型(TTL)、MTU/分片策略、上层协议类型。

2.4 传输层(TCP/UDP)

  • 传输单位:TCP 段(Segment) / UDP 数据报(Datagram)
  • TCP 关键字段:
    • Source/Destination Port(端口)
    • Seq/Ack(序列号/确认号,可靠传输核心)
    • Flags(SYN/ACK/FIN/RST/PSH 等)
    • Len(本段数据长度)
  • UDP 关键字段:
    • Source/Destination Port、Length、Checksum
  • 实战价值:定位可靠性问题(重传、乱序、丢包、RST)、端口/连接追踪。

2.5 应用层(HTTP 示例)

  • 传输单位:消息(Message)
  • 关键字段:
    • 请求行:GET /scan HTTP/1.1
    • 请求头:Host / User-Agent / Accept / ...
    • 响应行:HTTP/1.1 200 OK
    • 响应体:数据负载(如文本、JSON)
  • 实战价值:直接面向业务排障,结合 Follow Stream 重组成对请求/响应。

三、各层抓包字段对照表(速查)

层级 传输单位 典型封装内容 Wireshark 字段(示例) 实战解读
物理层 比特 元数据 Frame Length / Arrival Time / Protocols in frame 验证是否截断、识别协议路径
数据链路层 源/目的 MAC、Type Ethernet II: Src/Dst, Type: IPv4 MAC 定位设备、识别广播/单播
网络层(IPv4) 源/目的 IP、TTL、DF IPv4: Src/Dst、TTL、Flags(DF) 路由可达性、MTU/分片策略
传输层(TCP) 端口、Seq/Ack、Flags TCP: Src/Dst Port、Seq、Ack、Flags 可靠性与连接状态
应用层(HTTP) 消息 请求/响应行与头、体 HTTP: Request/Response 业务级问题定位

四、完整 TCP 流抓包解析(三次握手 → HTTP 传输 → 四次挥手)

基于"标准全流程抓包(Stream 124)"信息整理如下(字段不变,结构化呈现):

  1. 三次握手(建立连接)
  • 客户端 → 服务器:SYN Seq=789532880(初始序列号随机;MSS=1460)
  • 服务器 → 客户端:SYN+ACK Seq=1487226709 Ack=789532881
  • 客户端 → 服务器:ACK Ack=1487226710
    → 进入 ESTABLISHED
  1. 数据传输(HTTP 请求/响应)
  • 客户端 → 服务器:GET /LICENSE HTTP/1.1
  • 服务器 → 客户端:ACK(确认请求)
  • 服务器 → 客户端:分段发送响应体(如 1848、1849 两段重组),最终 HTTP/1.1 200 OK (text/plain),Flags 常见 PSH, ACK
  • 客户端 → 服务器:ACK(确认收到完整响应)
  1. 四次挥手(优雅断开)
  • 客户端 → 服务器:FIN+ACK
  • 服务器 → 客户端:FIN+ACK
  • 客户端 → 服务器:ACK
    → 连接关闭(客户端进入 TIME_WAIT 等待 2MSL)

要点:

  • TCP 分段与重组:Wireshark 自动重组跨段的应用层数据
  • PSH 标志:提示立即推送数据到应用层
  • Seq/Ack 严格递增,验证可靠传输按序特性

五、HTTP GET 请求报文逐字段解析

curl 工具访问 nginx.org/LICENSE 为例,抓包中可见如下结构:

  1. 请求行(Request Line)

    GET /LICENSE HTTP/1.1\r\n

  • 方法:GET(获取资源)
  • 路径:/LICENSE
  • 版本:HTTP/1.1(持久连接、分块传输等特性)
  1. 请求头(Request Headers)

    | 头字段 | 取值 | 作用 |

    |--------|------|------|

    | Host | nginx.org | 虚拟主机标识 |

    | User-Agent | curl/8.15.0 | 客户端标识 |

    | Accept | / | 可接受任意类型响应 |

    | 空行 | \r\n | 分隔头与体(此处无请求体) |

  2. 抓包关联

  • Wireshark 会在请求包右侧注记 [Response in frame: XXX],可跳转响应包
  • 完整 URI:http://nginx.org/LICENSE

实战价值:

  • 若请求失败,通过 Host 排查域名解析;通过 UA 判断是否被拦截

六、GET 方法特性与 GET vs POST 对比

GET 的核心特性:

  1. 幂等性:多次相同 GET 不改变服务器状态(返回结果一致)
  2. 请求体可选:参数常在 URL 中(Query String);多数情况下无请求体
  3. 可缓存性:CDN/代理/浏览器可缓存 GET 响应(304 验证)
  4. 安全性(相对):参数暴露在 URL 中,不适合传递敏感信息

GET vs POST(关键对比):

  • 核心作用:GET 获取资源;POST 提交数据(新增/修改)
  • 参数位置:GET 在 URL;POST 常在请求体
  • 幂等性:GET 是;POST 否
  • 可缓存:GET 是;POST 否(默认)
  • 敏感信息:GET 不适合;POST 更适合(仍需 TLS)

七、实战建议(过滤、定位、排障)

  • 过滤器实践(显示过滤器):
    • 只看某 IP HTTP 流:ip.addr == <server_ip> && http && tcp.port == 80
    • 只看某客户端临时端口:tcp.port == <ephemeral_port>
    • 排除 ARP 广播:!arp
  • 捕获 vs 显示过滤器:
    • 捕获过滤器(libpcap):host <ip>tcp port 80
    • 显示过滤器(Wireshark):ip.addr == <ip>http && tcp.port == 80
  • Follow Stream(追踪流):
    • TCP:Ctrl+Alt+Shift+T(按四元组重组一个连接)
    • HTTP:Ctrl+Alt+Shift+H(按会话标识重组请求/响应)
  • 典型异常定位:
    • 大量 [TCP Retransmission] + 最终 RST:网络丢包/服务端异常导致异常关闭
    • DF 标志 + MTU 不足:关注 "ICMP 不可达/需分片",排查路径 MTU
    • TTL 异常波动:排查绕路/回环
相关推荐
麻辣长颈鹿Sir3 小时前
TCP/IP四层架构通俗理解及功能介绍
网络协议·tcp/ip·tcp/ip协议四层架构·网络通信介绍
测试界的世清4 小时前
金九银十软件测试面试题(800道)
测试工具·面试·职场和发展
帝落若烟4 小时前
loadrunner {“msg“:“请求访问:/getInfo,认证失败,无法访问系统资源“,“code“:401}
测试工具·压力测试
..过云雨5 小时前
从寻址到转发:网络层 IP 协议全流程工作原理详解
网络·网络协议·tcp/ip
njmanong5 小时前
2026年海外代理IP实测:青果网络,bright data,iproyal,ipdodo,kookeey,oxylabs
网络·tcp/ip·php
卓码软件测评5 小时前
第三方软件课题验收测试【使用Docker容器部署LoadRunner负载生成器以实现弹性压测 】
测试工具·docker·容器·性能优化·单元测试·测试用例
连山齐名5 小时前
TCP和UDP的服务器与客户端构建
服务器·tcp/ip·udp
云小逸5 小时前
【网络通信】Wireshark 教程与抓包实战
网络·测试工具·wireshark
zhaotiannuo_19985 小时前
渗透测试之wireshark
网络·测试工具·wireshark
科技块儿5 小时前
嵌入式系统IP查询库内存10KBvs50MB占用方案实测
服务器·数据库·tcp/ip