• Wireshark下载、Wireshark使用、Wireshark抓包、ARP抓包、ICMP抓包、TCP抓包、HTTP抓包


    Wireshark下载

    在这里插入图片描述

    Wireshark相关链接:

    官网:https://www.wireshark.org/
    下载:https://www.wireshark.org/download.html

    在这里插入图片描述
    下载对应版本即可,安装就默认安装即可(不要改安装位置),否则可能不会自动安装插件,导致识别不了网卡信息。

    Wireshark抓包即快速定位数据包技巧

    常见协议包

    常见的有以下协议类型:

    • ARP协议
    • ICMP协议
    • TCP协议
    • UDP协议
    • DNS协议
    • HTTP协议

    抓包模式介绍:混杂模式/普通模式

    • 混杂模式概述:混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。默认就是混杂模式。
    • 普通模式概述:普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。

    一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用,默认是混杂模式。

    关闭混杂模式

    先随便选中一个连接,不选后续修改捕获选项的开始按键是灰色的,我连的是无线,所以监控WLAN
    在这里插入图片描述

    在这里插入图片描述
    然后点击捕获,再点击选项
    在这里插入图片描述
    变更之后,点击开始即可
    在这里插入图片描述

    过滤器使用

    列属性从左到右表示

    • No:序号
    • Time:时间
    • Source:源IP地址
    • Destination:目标IP地址
    • Protocol:协议类型
    • Length:数据包长度
    • Info:数据包的描述

    从抓取的很多包中筛选出你想要的,不区分大小写,一般用小写,
    在这里插入图片描述
    筛选TCP
    在这里插入图片描述
    筛选UDP,可以看到很多都是协议,原因就是这些都是基于UDP的传输层之上的协议
    在这里插入图片描述
    以DNS为例,客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以向DNS服务器查询时使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

    根据源IP地址筛选

    ip.src_host:表示源IP地址
    ip.dst_host:表示目标IP地址
    ip.addr:不区分源IP地址还是目标IP地址,二者中有一个包含就会筛选出来
    or:或者
    and:并且
    ==:数值相等

    # 源IP地址192.168.2.7并且目标IP地址101.80.48.159
    ip.src_host == 192.168.2.7 and ip.dst_host == 101.80.48.159
    
    • 1
    • 2

    在这里插入图片描述

    常用协议数据包分析

    协议分析的时候关闭混杂模式,避免一些干扰的数据包
    着重看最后的协议数据包选项

    ARP协议

    ARP协议: 地址解析协议(Address Resolution Protocol) ,是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要。ARP是通过网络地址来定位MAC地址。

    在这里插入图片描述
    请求包:
    在这里插入图片描述
    请求数据包中,目标MAC地址都是00表示不知道目标MAC地址,只知道目标IP地址

    应答包:
    在这里插入图片描述
    对应的响应数据包,可以看到应答包补全了自己的MAC地址,而且应答包的源IP地址和目标地址与请求的地址是相反的,因此根据源IP地址和目标IP地址可以判断请求和响应数据包哪个是一对。

    两个数据包的请求过程:广播请求,单播回应

    # 192.168.2.1 广播:谁有192.168.2.7的MAC地址?
    Who has 192.168.2.7? Tell 192.168.2.1
    
    # 192.168.2.7 应答:192.168.2.7的MAC地址50:5b:c2:c3:25:d9
    192.168.2.7 is at 50:5b:c2:c3:25:d9
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ICMP协议

    ICMP协议: Internet控制报文协议(Internet Control Message Protocol)。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

    简单的触发ICMP方式,ping 包
    在这里插入图片描述
    可以看到,一共是4对8个,一问一答的形式。
    在这里插入图片描述
    请求包:
    在这里插入图片描述
    应答包:
    在这里插入图片描述
    两个数据包的工作过程:
    本机发送一个ICMP Echo Request的包
    接受方返回一个ICMP Echo Reply,包含了接收到数据拷贝和一些其他指令

    TCP协议

    TCP协议: 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议(可靠原因:三次握手四次挥手),也是使用最广泛的传输控制协议。

    不了解三次握手四次挥手(三次挥手)的可以先看下:
    TCP和UDP、TCP三次握手、TCP为什么要进行三次握手不是两次、TCP四次挥手、TCP和UDP的区别、TCP抓包分析、TCP什么时候三次挥手

    TCP报文分析

    物理机想和client建立连接
    过滤器选择TCP、ip.addr选择xhell连接的ip地址即可
    在这里插入图片描述

    TCP三次握手建立连接

    三次握手就是三次确认的过程

    第一次握手,物理机发送SYN数据包给client

    在这里插入图片描述

    第一次握手的Flags标志位如下

    在这里插入图片描述

    在这里插入图片描述

    第二次握手,client同意连接,client发送SYN+ACK给物理机

    在这里插入图片描述

    在这里插入图片描述

    第三次握手,物理机发送ACK确认到client

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    前面三次握手是TCP建立连接的过程,后面就是相互通信,这个时候seq会根据数据包的大小改变
    可以查看图表,通过菜单:统计>流量图,选择对应类型

    在这里插入图片描述

    在这里插入图片描述

    TCP四次挥手断开连接

    三次挥手报文

    使用关闭按钮关闭终端
    在这里插入图片描述
    从图上报文看,可以发现少了一次挥手,少一次ACK确认,变成了三次挥手,这是因为TCP 延迟确认机制。

    当被动关闭方在 TCP 挥手过程中,如果「没有数据要发送」,同时「没有开启 TCP_QUICKACK(默认情况就是没有开启,没有开启 TCP_QUICKACK,等于就是在使用 TCP 延迟确认机制)」,那么第二和第三次挥手就会合并传输,这样就出现了三次挥手。

    四次挥手报文

    本机打开终端(监控的是WLAN),使用curl发送http请求

    # -I:仅返回头部信息
    curl -I baidu.com
    
    • 1
    • 2

    在这里插入图片描述

    在这里插入图片描述

    总结

    四次挥手,断开连接

    1.服务端FIN :Seq = a , Ack = b #我想断开连接
    2.客户端ACK:Seq = b, Ack = a+1 #收到,断开吧
    3.客户端FIN :Seq = b, Ack = a+1 #我也想断开连接
    4.服务端ACK:Seq = a+1, Ack = b+1 #收到,断开吧

    三次挥手,断开连接

    1.客户端FIN :Seq = a , Ack = b #我想断开连接
    2.服务端FIN :Seq = b, Ack = a+1 #收到,断开吧。我也想断开连接
    3.客户端ACK:Seq = a+1, Ack = b+1 #收到,断开吧

    基于TCP/UDP协议的应用层协议有哪些?

    TCP/UDP都是传输层的协议 (上面是应用层,下面是网络层IP层)

    1.基于TCP的应用层协议有:HTTP、FTP、SMTP、TELNET、SSH
    协议 全称 默认端口
    HTTP ( 用的最多) HyperText Transfer Protocol(超文本传输协议) 80
    FTP File Transfer Protocol (文件传输协议) 20用于传输数据,21用于传输控制信息
    SMTP Simple Mail Transfer Protocol (简单邮件传输协议) 25
    TELNET Teletype over the Network (网络电传) 23
    SSH Secure Shell 22
    2.基于UDP的应用层协议:DNS、TFTP(简单文件传输协议)、SNMP:简单网络管理协议
    协议 全称 默认端口
    DNS Domain Name Service (域名服务) 53
    TFTP Trivial File Transfer Protocol (简单文件传输协议) 69
    SNMP Simple Network Management Protocol (简单网络管理协议) 通过UDP端口161接收,只有Trap信息采用UDP端口162。
    NTP Network Time Protocol (网络时间协议) 123
    RADIUS是Remote Authentication Dial In User Service的简称,即远程验证拨入用户服务.
    RADIUS协议的认证端口号为1812(1645端口由于冲突已经不再使用),计费端口号为1813或(1646端口由于冲突已经
    不再使用).

    HTTP协议

    HTTP是TCP的上层协议,因此过滤时用TCP也可以,用HTTP过滤分为会更小

    本机打开终端(监控的是WLAN),使用curl发送http请求

    # -I:仅返回头部信息
    curl -I baidu.com
    
    • 1
    • 2

    在这里插入图片描述
    用本机终端curl的,因此,发起的源地址为IPv4地址
    在这里插入图片描述
    抓包
    在这里插入图片描述

    只过滤curl这个相关的,手动输入过滤器过滤信息、或者选中一条,右键跟踪流,执行对应流的跟踪,都可以整理出这个请求的完整跟踪会话。
    在这里插入图片描述

    在这里插入图片描述
    可以看到这是一次完整的三次挥手,建立连接,发送数据,四次挥手,断开连接的一个过程。

  • 相关阅读:
    如何在idea中修改包名(多图指导!超简单有效,不会报错)(maven项目)
    将强化学习重新引入 RLHF
    Jenkins 使用 Description Setter
    计算机毕业设计Java家政服务平台(源码+系统+mysql数据库+lw文档)
    图像处理之图像的几何变换
    dubbo Can not lock the registry cache file
    React中实现一键复制——五种办法
    个人付费专栏上线预热
    硬盘压缩将C盘拓展成D盘和E盘
    基于PHP+MySQL企业网站的设计与开发
  • 原文地址:https://blog.csdn.net/qq_41929714/article/details/126784960