Wireshark 抓包过滤器使用及TCP三次握手深层分析

本博目录

      • 前言
      • 一、Wireshark介绍与安装
      • 二、Wireshark 抓包(捕获数据包)
      • 三、Wireshark 抓包界面介绍
      • 四、Wireshark 过滤器引擎及过滤条件表达式
        • 1、抓包过滤器(capture filter 抓到包前设置)
        • 2、显示过滤器(display filter 抓到包后设置)
      • 五、Wireshark 数据包分析
        • 1.分析数据包——对照TCP/IP参考模型
        • 2.分析数据包——此处我对照TCP报文格式为例
        • 3.六个标志位 Flags 的功能
      • 六、Wireshark详细分析TCP三次握手
        • 1.我对TCP三次握手的理解
        • 2.追踪一条http记录的TCP stream
        • 3.三次握手的实例分析
      • 七、原创手冻码字不易,谢绝转载,喜欢请收藏点赞哦。

前言

笔者上一篇写过 Docker 的博客 logo 就是一条小鲨鱼,没想到这次想要更的内容,碰巧也是和鲨鱼有关,当然只有 logo 有关了,哈,看来和 shark 有不解之缘。

一、Wireshark介绍与安装

  • Wireshark 是非常流行、功能强大的网络数据包分析软件,并且开源免费。可在 Wireshark官网下载对应系统版本的软件,笔者本文使用 V3.2.5 Windows 64-bit。它用于软件开发、软件测试等工作中debug十分方便;它也不会修改网络数据包的内容,而是只反映出传输的数据包信息。

  • 由于 Wireshark 能获取但不能解密HTTPS,所以处理 HTTP,HTTPS 宜用 Fiddler, 而像TCP,UDP的协议宜用 Wireshark

  • 安装按默认选项Next或根据需求选择,这里仅列出需要注意选择的过程图。

    【选择组件】
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第1张图片
    【快捷方式和关联扩展名】
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第2张图片

    【Npcap 捕获在线网络包】
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第3张图片

    【勾选 wireless adapters】
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第4张图片

二、Wireshark 抓包(捕获数据包)

  1. 启动 Wireshark v3.2.5
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第5张图片

  2. 进入【Capture】—【Options】或快捷键 CTRL+K,取消勾选所有接口使用混杂模式,然后勾选【WLAN】网卡,【OK】开始抓包。
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第6张图片

  3. 如图,Wireshark 正在抓包状态中。
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第7张图片

  4. 要抓取某个网站数据包,

    ping 网址即可,执行完命令后相应数据包就已被 Wireshark 捕获(ICMP报文);

    或者 Chrome 浏览器访问网址,也可以被捕获(TCP报文),但还是要获取该网址服务器ip。

    ping www.baidu.com #执行想抓包的操作,并得到该网址对应的服务器ip
    

Wireshark 抓包过滤器使用及TCP三次握手深层分析_第8张图片

  1. 设置过滤条件(display filter),对抓到的包进行过滤,得到想要分析的那部分数据包。例如:

    tcp and ip.addr == 180.101.49.12
    

    ip.src==180.101.49.12 or ip.dst==180.101.49.12 and tcp
    

过滤条件含义:只显示 Source 或 Destination 为此ip的数据包,并只保留显示TCP协议
Wireshark 抓包过滤器使用及TCP三次握手深层分析_第9张图片

  1. Wireshark 完成对该网址的抓包,进行下一步分析。

三、Wireshark 抓包界面介绍

Wireshark 抓包过滤器使用及TCP三次握手深层分析_第10张图片

重点介绍

  • 显示过滤器(Display Filter)

    用于在抓取数据包后设置条件过滤数据包,通常是在抓取的数据包内容较多时使用。

  • 数据包列表面板(Packet List Pane)

    抓到的每个数据包都有编号,时间戳,源地址,目标地址,协议,长度,信息。 不同的颜色代表不同的协议。

  • 数据包详情区(Packet Details Pane)

    包括 TCP/IP 参考模型的物理层、数据链路层、互联网层、传输层、应用层的详尽信息,例如分别对应:Frame、Ethernet、IPV4、TCP、HTTP。

四、Wireshark 过滤器引擎及过滤条件表达式

wireshark 过滤器引擎能帮助筛选出有用的数据包,屏蔽显示大量不相关的包以免扰乱分析。

1、抓包过滤器(capture filter 抓到包前设置)
  • 进入抓包过滤器:【Capture】—【Capture Filters】
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第11张图片

  • 抓包之前设置过滤条件表达式,如 host 180.101.49.12 && tcp
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第12张图片

  • 【Start】开始捕获,窗口标题会提示我们抓包前设置的内容
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第13张图片

  • 抓包过滤条件表达式规则

    类型 Type:host、port、net

    方向 Dir:src、dst

    协议 Proto:ether、ip、tcp、udp、http、icmp、ftp

    运算符:&& 、|| 、!

(1)按协议过滤:直接输入协议名,只显示某协议的数据包列表,如TCP、ICMP

(2)按IP过滤:

 host 192.168.0.124
 src host 192.168.0.124
 dst host 192.168.0.124

(3)按端口过滤

 port 80
 src port 80
 dst port 80

(4)逻辑运算符&&、|| 、!

 host 192.168.0.124 || host 192.168.0.164 #抓取两个主机地址数据包
 src host 192.168.0.124 && dst port 80    #抓取符合源主机地址和目的端口的数据包
2、显示过滤器(display filter 抓到包后设置)

Wireshark 抓包过滤器使用及TCP三次握手深层分析_第14张图片

  • 点击【Stop】停止上面刚才的抓取,再进入【Options】进入新的抓取

  • 清除之前设置的“抓取过滤器”,再【Start】抓取该 WLAN 网卡所有数据包
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第15张图片

    所有数据包如下
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第16张图片

  • ping 某网址或ip,然后在显示过滤栏输入过滤条件,例如 ip.addr == 180.101.49.12 and icmp
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第17张图片

  • 显示过滤器规则

(1)按协议过滤

Filter 框中直接输入对应协议名,如 tcp、icmp。注:协议名称小写。

(2) 按IP过滤

ip.src == 192.168.0.124  #显示源地址数据包列表
ip.dst == 192.168.0.124  #显示目标地址数据包列表
ip.addr == 192.168.0.124 #显示源IP地址或目标IP地址的数据包列表

(3)按端口过滤

tcp.port == 80     #TCP协议源主机或目的主机端口
tcp.srcport == 80  #TCP协议的源主机端口
tcp.dstport == 80  #TCP协议的目的主机端口

(4)按http请求方法过滤

http.request.method=="GET" #只显示HTTP GET方法的数据包列表

(5)比较操作符: == 、!= 、> 、< 、>= 、<=

(6)逻辑运算符: and,or,not

五、Wireshark 数据包分析

熟悉界面和过滤表达式后,就能分析过滤到的数据包了。

1.分析数据包——对照TCP/IP参考模型

​ 在 Wireshark 数据包详情区中有:

Frame: 物理层数据帧概况

Ethernet II: 数据链路层以太网帧头部

Internet Protocol Version 4: 互联网层IP包头部

Transmission Control Protocol: 传输层的数据段头部

Hypertext Transfer Protocol: 应用层的信息

2.分析数据包——此处我对照TCP报文格式为例

Wireshark 抓包过滤器使用及TCP三次握手深层分析_第18张图片

​ 在数据包详情区中,需点【+】号展开"transmission control protocol"。

​ 对应TCP报文格式如下所示:
Wireshark 抓包过滤器使用及TCP三次握手深层分析_第19张图片

3.六个标志位 Flags 的功能

URG:urgent 紧急标志,1–优先级高
ACK:acknowledgement 确认标志,代表响应,1–确认有效
PSH:push 推标志,代表有数据传输,1–尽快推给应用层
RST:reset 复位标志,代表连接重置,1–出现严重差错要重置
SYN:synchronized 同步标志,代表建立连接,1–连接请求或连接接受请求
FIN:finish 结束标志,代表关闭连接,1–没数据传了,要求释放连接
Wireshark 抓包过滤器使用及TCP三次握手深层分析_第20张图片

六、Wireshark详细分析TCP三次握手

​ 对比UDP这种不可靠但效率高的协议来讲,TCP协议是传输层中可靠的协议,适用于【准确性高,时效性较低】的【用户登录】等场景。所以,为了保证“可靠”这一需求,建立连接的时候,就要用“三次握手”保证。这体现在:只要收到对方数据,就要发送 ACK 进行确认。

​ 四次挥手由于这次我写的篇幅太长了,在另一篇里有空再做详解。

1.我对TCP三次握手的理解

发送方(client)好比男生,譬如笔者我哈哈;接收方(server)好比女孩子,下图是我画的示意图。
Wireshark 抓包过滤器使用及TCP三次握手深层分析_第21张图片
在一个华灯初上,天朗气清的城市深夜,我(client)遇到了一个女孩子(server),人群熙攘相距较远不能确定对方是否认识自己;首先要通过打招呼即招手(syn)的方式,确认她是否认识我,从而进行交流(data):

  1. 我(client)首先向女孩子(server)用力地招手(syn)

  2. 妹子(server)看到招手后,向我微笑点头(ack)表示确认看到了我,同时她不确定我是否也注意到了她,所以也向我(client)招了招手(syn)

  3. 我(client)看到妹子也向这边招手后,赶忙也微笑点头(ack)表示确认我也看到了她,妹子看到我也微笑点头后,便确信找对了人(established)

    于是我们两个人就走到了一起,communication or date (ha ha)。

2.追踪一条http记录的TCP stream

如图,【Analyze】-【Follow】-【TCP stream】或 “tcp.stream eq 46”
Wireshark 抓包过滤器使用及TCP三次握手深层分析_第22张图片

然后,得到该HTTP记录(如腾讯网)的相关TCP流:抓到的前3个都是TCP包,第4个包是HTTP的,说明该HTTP使用的是TCP来建立连接。
Wireshark 抓包过滤器使用及TCP三次握手深层分析_第23张图片

3.三次握手的实例分析
  • 第一次握手:标志位SYN,设序列号seq=0(3507523343)
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第24张图片

  • 第二次握手:标志位SYN,ACK,把收到的序列号seq+1,得确认序列号ack为1(3507523344),即ack=seq+1;并设新序列号new seq=0(3907585407)
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第25张图片

  • 第三次握手:标志位ACK,把收到的新序列号 new seq+1,得确认序列号ack为1(3907585408),即ack=new seq+1。
    Wireshark 抓包过滤器使用及TCP三次握手深层分析_第26张图片
    注:这里我讨论的 seq/ack 为0或1,使用的是 relative sequence/ack number,相对序列号/确认号

七、原创手冻码字不易,谢绝转载,喜欢请收藏点赞哦。

本博文首次且唯一发表在CSDN,手动原创码字,喜欢请收藏点赞,共同进步。

pps:又是研究的一天呢╮(╯▽╰)╭晚安。T20200721 01:46

你可能感兴趣的:(软件测试,Web协议,wireshark,tcpip,网络协议,web)