分析网络和抓包神器:tcpdump 和 Wireshark,将我们“看不见”的数据包,毫无保留地呈现在我们眼前。
tcpdump 仅支持命令行格式使用,常用在 Linux 服务器中抓取和分析网络包。
Wireshark 除了可以抓包外,还提供了可视化分析网络包的图形页面。
这两者实际上是搭配使用的,先用 tcpdump 命令在 Linux 服务器上抓包,接着把抓包的文件拖出到 Windows 电脑后,用 Wireshark 可视化分析。
博主使用的是 Windows 系统,只需要用 Wireshark 工具就可以。本篇文章以Wireshark为主进行学习记录。
软件下载路径:wireshark官网。按照系统版本选择下载,下载完成后,按照软件提示一路Next安装。
说明:如果你是Win10系统,安装完成后,选择抓包但是不显示网卡,下载 win10 pcap 兼容性安装包。下载路径:win10 pcap Download + How to use Win10Pcap
学习网址:wireshark抓包新手使用教程 + wireshark数据包分析实战!
看准上面的超链接,以下学习内容基于上方的网址,并加以实际操作学习Wireshark,记录学习内容。
Wireshark 开始抓包示例参照 wireshark抓包新手使用教程 进行第一次具体抓包。
Wireshark 的使用界面中,可以更加直观的分析数据包:
1. 展示各个网络包的头部信息。
2. 还会用不同的颜色来区分不同的协议。
网络包列表中选择具体的网络包后,在对应的网络包详情中可以清楚的看到该网络包在协议栈各层的详细信息。
帧 Frame 包括要发送的数据块,帧的序号,捕获字节数等于传送字节数;
以太网,有线局域网技术,是数据链路层;
IPv4 / IPv6协议,也称网际协议,是网络层;
TCP协议 / UDP协议,是传输层;
HTTP协议 / DNS协议,是应用层。
用来保证数据通信的完整性和可靠性,防止丢包,就是防止数据丢失。因为IP 协议只是一个地址协议,并不保证数据包的完整。在tcp的加持下,也就是tcp/ip协议,可以防止丢包。
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP 是面向连接的所以只能用于点对点的通讯。
以 NO. 1664网络包为例进行分析:
Frame信息分析、Ethernet Ⅱ 信息分析、Data信息分析:
IPv4 协议信息分析、Trasmission Control Protocol信息分析:
第一次握手数据包:客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。
第二次握手的数据包:服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N + 1 .即0+1=1。
第三次握手的数据包:客户端再次发送确认包(ACK) SYN == 0,ACK == 1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方。是客户端向服务端发送。三次握手后和服务器建立了TCP连接,就可以开始进行数据交互了。
TCP 流的执行过程:
用来在浏览器(用户)与服务器间传送文档用的。HTTP协议是整个Web应用的基础,万维网的核心。
以 NO. 1705网络包为例进行分析:
HTTP的过滤模式:
1.直接在其中输入协议名即可;
2.例如我们要 过滤POST包 ,那么在 filter 中输入 http.request.method=="POST" 即可进行过滤。
用于传输出错报告控制信息。反馈错误用的,让管理者可以对错误进行诊断,然后采取适当的措施解决问题。
以 NO. 6152 网络包为例进行分析:
Wireshark抓包——ICMP协议分析,ICMP 报文由 IP 首部 和 ICMP 报文 组成:
网络分层是有序的分工,每一层都有自己的工作任务,上层协议完成工作后就交给下一层,最终形成一个完整的网络包。
ip.src ==192.168.1.104 显示源地址为192.168.1.104的数据包列表
ip.dst==192.168.1.104, 显示目标地址为192.168.1.104的数据包列表
ip.addr == 192.168.1.104 显示源IP地址或目标IP地址为192.168.1.104的数据包列表
wireshark中 ip 过滤 的指令是:
ip.host ip.src_host ip.dst_host
tcp.port ==80, 显示源主机或者目的主机端口为80的数据包列表。
tcp.srcport == 80, 只显示TCP协议的源主机端口为80的数据包列表。
tcp.dstport == 80,只显示TCP协议的目的主机端口为80的数据包列表。
wireshark中 端口 过滤 的指令是:
tcp.port==80 tcp.srcport==80 tcp.dstport==80
比较操作符有 == 等于 != 不等于 > 大于 < 小于 >= 大于等于 <=小于等于
逻辑运算符 && 与 || 或 !非
调整数据包列表中时间戳显示格式。调整方法为View -->Time Display Format --> Date and Time of Day。调整后格式如下:
实验一:TCP 第一次握手 SYN 丢包
实验二:TCP 第二次握手 SYN、ACK 丢包
实验三:TCP 第三次握手 ACK 丢包
打开方式: statistics --> capture file properies 或者 快捷键:ctrl + alt + shift + c
进入专家模式的路径:Analyze-->Expert Info Composite 或者 状态栏左下角的圆圈〇
Wireshark的专家模式对话框中的信息是由解析器(原始数据与Wireshark软件之间的翻译器)提供的,解析器的作用是对Wireshark中的所有协议进行转换,得到使用这个协议的数据包中的一些特定状态的警告,这些状态可以分为四类:
解析器将各个警告状态进行了分类,都标志出对应的严重程度和警告信息概要,能够帮助理解警告状态,对其进行分析处理。
不同的警告状态类下具体的标识出了对应位置、警告概要、组和协议层。
打开方式:statistics --> endpoints
根据端点,进行筛选 ==> map可以通过在地图上把这些地址给标出来,观察哪些地点的请求较多。
打开方式:statistics --> I/O Graph
打开方式:statistics->Flow Graph
当用户面对大量连续断开、大量数据帧丢失,I/O Graph 和 Flow Graph 可以帮助排错。
打开方式:statistics->TCP Stream Graphs->Round Trip Time
以上的端点统计 endpoints、I/O图 I/O Graph、数据流图 Flow Graph、TCP数据流量图内容学习来自:wireshark的统计功能