Wireshark实战:从数据包捕获到网络协议深度解析
1. Wireshark入门从零开始抓取第一个数据包第一次打开Wireshark时面对密密麻麻的界面选项可能会感到无从下手。别担心我们先从最基础的抓包操作开始。安装完成后你会看到主界面列出了所有可用的网络接口。这里有个实用技巧带有流量波动的接口通常就是你正在使用的网络连接。选择正确的网卡很关键。如果你用的是有线网络就选Ethernet开头的接口如果是WiFi则选择Wi-Fi或Wireless开头的。我刚开始用Wireshark时就犯过错误选错了接口导致半天抓不到任何数据包。双击选中的接口Wireshark就会开始捕获经过该接口的所有网络流量。抓包过程中你会看到数据像流水一样不断刷新。这时候可以尝试访问一个网站或者ping某个地址就能在捕获的数据中看到对应的网络活动。我建议新手先尝试ping命令因为它产生的数据包简单明了容易分析。比如打开命令行输入ping www.baidu.com同时在Wireshark中观察ICMP协议的数据包。提示刚开始抓包时数据量可能会很大可以使用捕获过滤器来减少干扰。比如icmp就只抓取ping命令产生的数据包。2. 数据链路层实战解密MAC地址通信2.1 解剖Ethernet帧结构让我们先来看看最基础的Ethernet帧。在Wireshark中随便抓取一个数据包找到Ethernet II这一行展开你会看到6个字节的目的MAC地址和源MAC地址以及2个字节的类型字段。有趣的是Wireshark默认不显示帧校验序列(FCS)这是因为网卡通常在将帧传递给操作系统之前就已经去掉了这个字段。我做过一个实验在同一局域网内ping另一台电脑时抓包发现目的MAC地址就是目标电脑的实际物理地址。而当ping外网地址如www.baidu.com时目的MAC就变成了网关的地址。这是因为本地通信直接使用MAC地址而跨网段通信需要先发给网关。2.2 ARP协议的工作奥秘ARP协议是理解局域网通信的关键。你可以通过一个简单的实验来观察它的工作过程先清空ARP缓存(arp -d *)然后ping同局域网的另一台电脑。在Wireshark中用arp过滤就能看到ARP请求和响应。ARP请求有几个特点值得注意它是广播形式的目的MAC是全F的广播地址而ARP响应是单播的。我在排查网络故障时经常用这个特性来判断局域网连通性。如果看不到ARP响应很可能说明两台电脑之间的物理连接有问题。3. 网络层探秘IP包的旅行日记3.1 IP包头的关键字段解析在Wireshark中随便抓取一个IP协议的数据包展开Internet Protocol Version 4部分你会看到这些重要字段版本号(Version)IPv4是4IPv6是6头部长度(Header Length)通常最小值是20字节生存时间(TTL)每经过一个路由器就减1协议类型(Protocol)6是TCP17是UDP我曾经遇到一个有趣的现象抓包发现某些IP包的TTL值是64有些是128还有些是255。这其实是不同操作系统的默认设置不同Linux通常用64Windows用128而网络设备可能用255。通过这个特征我们甚至可以猜测数据包的来源操作系统。3.2 IP分片与重组实战当IP包大小超过MTU(通常是1500字节)时就会发生分片。我们可以用这个命令产生大包ping www.baidu.com -l 2000。在Wireshark中观察会发现原始数据被分成了多个片段。分片包有几个识别特征分片标志(Fragment Flag)中的MF位1表示还有后续分片分片偏移量(Fragment Offset)表示当前分片在原始数据中的位置标识符(Identification)相同值表示属于同一个原始包注意IPv6已经取消了分片机制路由器遇到过大包会直接丢弃并返回ICMPv6 Packet Too Big消息。4. 传输层深度解析TCP/UDP的异同4.1 TCP三次握手全记录用Wireshark观察TCP连接建立过程特别有意思。访问一个网站时过滤tcp tcp.port80你就能看到经典的三次握手客户端发送SYN1Seqx服务端回复SYN1ACK1SeqyAckx1客户端发送ACK1Seqx1Acky1我经常用这个特性来排查网络连接问题。如果只能看到SYN包没有响应可能是防火墙拦截如果看到SYN重传说明网络延迟严重。4.2 TCP流重组技巧Wireshark有个超实用功能右键TCP包选择Follow - TCP Stream。这会把属于同一个连接的所有数据重组显示对于分析HTTP等应用层协议特别方便。我经常用它来查看完整的网页请求和响应内容。5. 应用层协议分析实战5.1 DNS查询过程全解析先用ipconfig /flushdns清空缓存然后nslookup www.baidu.com同时在Wireshark中过滤dns。你会看到查询使用的是UDP 53端口如果响应太大可能会改用TCP。DNS报文有几个关键字段事务ID(Transaction ID)匹配请求和响应标志(Flags)包含查询/响应标志、递归标志等问题部分(Question)包含查询的域名和类型回答部分(Answer)包含解析结果5.2 HTTP协议抓包技巧过滤http可以看到所有HTTP请求。GET请求通常很简单而POST请求会在后面跟着提交的数据。观察状态码特别有用200是成功304是使用缓存404是找不到页面。我建议重点关注这些头部字段User-Agent客户端类型Cookie会话信息Content-Type数据类型Cache-Control缓存策略在实际工作中我经常用Wireshark来分析网页加载慢的问题。通过查看各个资源的加载时序很容易发现是哪个环节出了问题。比如某个JS文件下载特别慢或者大量重复请求同一个资源等。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2418093.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!