概述
wireshark是一款非常优秀的网络抓包与分析软件,它可以把计算机上某一块网卡的所有数据包都抓取下来供用户分析。wireshark自带非常完整的网络协议解析功能,可以解析几乎所有的常见网络协议。
使用界面
打开软件,进入欢迎界面,选择需要抓包的网卡。
点击网卡后自动进入抓包界面,wireshark自动按时间顺序把本网卡上所有的数据包都列举出来,点中某一个数据包后,下面显示的是该数据包的详细信息,包括这个数据包的二进制数据,以及其中所包含的协议信息。也可以双击某一个数据包,在弹出的界面中进行分析。右键某一个数据包,点击“追踪流”可以查看某一连接的所有交互数据。
解包分析
使用wireshark的主要目的是分析网络数据包的交互过程与每个包的构造。以下是各种数据包的组成。
以太网帧
IP包
ARP包
ICMP包
TCP包
UDP包
常用的抓包过滤选项
使用wireshark抓包的一大技巧就是使用各种过滤选项对所数据包进行筛选,以快速定位需要分析的包。
指定协议
ip arp icmp tcp udp http
指定MAC地址
eth.addr==00:12:17:b7:86:01
eth.src==00:12:17:b7:86:01
eth.dst==ac:2b:6e:77:9d:8b
指定ip地址或源/目的IP地址
ip.addr==192.168.0.102
ip.src==192.168.0.102
ip.dst==192.168.0.102
指定端口
只有TCP和UDP有端口的概念:
tcp.port==80
udp.port==80
以上所有选项可以用or或||连接,表示或的关系,或是以and 或&& 连接,表示与的关系。当过滤选项表达式正确时,输入框显示的是浅绿色,当过滤表达式设置不正确时,输入框显示红色。
网络通信过程分析
以服务器建立连接,客户端给a发送三次数据为例,解析一次通信过程中各种标志及序号的的变化。
问题验证
- DNS在传输层是用什么协议实现的,端口是多少?
- 通信过程中拔掉网线,会发生什么,能收到数据包吗?
- TCP链接中的服务器的监听队列满了以后,再向服务器连接,数据包的交互过程是怎么样的?
- 通信过程中对客户端或服务端任意一端按Ctrl+C强制终止程序,数据包是数据交互的?