Wireshark抓包分析(ARP TCP DNS HTTP)

目录

一、ARP

二、DNS

三、TCP

TCP的总过程:

​TCP三次握手:

 TCP四次挥手:

 四、HTTP


一、ARP

1.ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。

我们要抓ARP 同网段内的访问网关的情况。

先cmd执行 arp -a 命令,从ARP表中查看本网段内有哪些主机

然后 arp -d 清空ARP表

cmd执行 arp -a,验证ARP表已被清空(ARP的自主学习)

2.Ping本网段内任意主机

1)cmd执行下面这条命令获取局域网内所有主机:

命令的意思是:ping 10.200.1.xxx到 10.200.1.255 之间的所有IP,注意将IP地址改成自己的网段。

for /L %i IN (1,1,254) DO ping -w 2 -n 1 10.200.1.%i

ipconfig -all 查看本机IP及MAC地址:

全部ping网段 或者ping网关或某个ip

3.过滤ARP协议的数据包

显示过滤器中输入:arp,过滤ARP协议的数据包。

两个数据包,第一个包是ARP请求包,第二个包是ARP响应包。

先看第一个数据包,源地址(Source字段)是我自己的MAC地址(8d:e4:71)。
目标地址(Destination字段)是 Broadcast,就是广播的意思。
Info 字段,是对当前动作的描述。

总结一下第一个数据包做了什么:
我的电脑,发送了一个广播,广播的内容是 “谁是10.200.1.8?告诉10.200.1.36”
10.200.1.36是我电脑的IP,意思就是:呼叫10.200.1.8,收到请回复我。

第二个数据包的目的地址(Destination 字段)是我电脑的MAC地址

结合 Info 字段的信息,总结一下第二个数据包做了什么:
有个主机,向我的电脑发送了一个信息,信息的内容是 “10.200.1.36 是 c0-25-a5-8d-e4-71”
这个主机把MAC地址告诉了我的电脑。

结论:

ARP地址解析协议就像一个队内语音,他会向局域网内所有主机广播请求,索要目标IP的MAC地址;知道的主机就会响应具体的MAC地址。

4.数据包内容分析

接下来我们根据包的数据分析一下,这两个包是怎么做的:

1)第一个包的数据:

  • 第一处:ARP后面的括号里是 request,说明这是个请求包
  • 第二处:源IP、源MAC、目标IP都有值,目标MAC却全是0,意思就是告诉他们:我不知道这个IP的MAC地址。

2)第二个包的数据:

  • 第一处:ARP后面的括号里是 reply,说明这是个响应包
  • 第二处:源IP、源MAC、目标IP、目标MAC都有值,接收方可以从这里获取IP对应的MAC地址。

5.ARP自主学习

再次使用 arp -a 查看ARP表

可以发现,表中添加了我们刚才 ping 的IP,以及对应的MAC地址,这就是ARP的学习能力:解析成功的MAC地址会被临时缓存,以节约资源。

第六步:再次访问
1)Wireshark开启抓包,重新访问这个主机

2)查看ARP请求包的目的MAC地址

由于是第二次访问,ARP表中已经缓存了MAC地址,所以这次ARP请求不再广播,而是直接从ARP表中获取。

二、DNS

        DNS是一个应用层协议,基于TCP/IP传输,一般的DNS报文传输层是UDP报文。查询的时候一般请求DNS服务器的53端口号。

        启动wireshark,在浏览器输入www.xiaomi.com,访问小米的官网。(ps:网址会自动跳转到www.mi.com,这是因为小米官网做了域名重定向。)

 ping www.xiaomi.com 

 

 请求报文:

172.16.7.1(DNS服务器地址)

响应报文: 

可以看到,经过DNS查询,得到了IP地址123.125.103.192 和111.202.1.202

三、TCP

        传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1]  定义。

wireshark数据包详细栏每个字段对应的分层。

TCP的总过程:

TCP三次握手:

TCP三次握手示意图 

 

 

1)第一次握手

可以看到,客户端发起一个SYN请求,初始序列号为0

2)第二次握手

服务端返回SYN+ACK,并且包含服务端的一个初始序列号seq=0,同时返回一个确认号ack=1

 3) 第三次握手

客户端返回一个ACK,并且返回一个确认号ack=1,并且将自己的序列号seq更新为1

  到此,TCP三次握手就结束了。客户端与服务端之间已经成功建立起连接。

 TCP四次挥手:

 TCP四次挥手示意图

 第一次挥手:客户端发起一个FIN,表示客户端希望断开连接。

 第二次挥手:服务端返回一个ACK,表示对客户端断开请求的应答。

 第三次挥手:服务端发起一个FIN,表示服务端希望断开连接。

 第四次挥手:客户端返回一个ACK,表示对服务端断开请求的应答。

 1)第一次挥手

        客户端发起一个FIN请求(表示客户端希望断开连接),

序列号seq=1,应答号ack=1。注意这里的应答是上一次数据通信过程中的应答。

2)第二次

        服务端返回一个ACK(表示对客户端断开请求的应答) 

应答号ack=2,序列号seq=1

 3)第三次挥手

         服务端返回一个ACK(表示对客户端断开请求的应答)+FIN(表示服务端希望发起断开请求)

应答号ack=2,序列号seq=1      

4)第四次挥手

         客户端返回一个ACK(表示对服务端断开请求的应答)

应答号ack=2,序列号seq=2

附:

访问www.xiaomi.com的TCP总过程: 

 四、HTTP

         超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。

HTTP报文由三部分组成,开始行、首部行和实体主体,如图。

在请求报文中,开始行就是请求行。

以超星学习通为例吧:

因为现在大部分网站都是用https加密了。

超星

鲨鱼抓包:

 200的响应码:

小米的 mi.com:

 TLS协议Client Hello

 服务端发出的Server Hello

 到此,TLS的握手过程就结束了,后面可以加密传输消息了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/31736.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日学术速递6.7

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.The ObjectFolder Benchmark: Multisensory Learning with Neural and Real Objects(CVPR 2023) 标题:ObjectFolder 基准测试:使用神经和真实对象进行多感官…

Windows VMware安装RockyLinux9

前言,今天用虚拟机安装rockyLinux时碰到了一些坑,要么时无法联网,要么是无法使用ssh链 接,在这里记录下 准备工作 1. VMware Workstation 17 Pro 2. RockyLinux9.2阿里镜像站,这里无选择了最小版本Rocky-9-latest-x86…

小程序自动化测试的示例代码

背景 近期团队打算做一个小程序自动化测试的工具,期望能够做的业务人员操作一遍小程序后,自动还原之前的操作路径,并且捕获操作过程中发生的异常,以此来判断这次发布时候会影响小程序的基础功能。 上述描述看似简单,但…

【算法证明 七】深入理解深度优先搜索

深度优先搜索包含一个递归,对其进行分析要复杂一些。与上一篇文章一样,还是给节点定义几个状态,然后详细分析深度优先搜索算法有哪些性质。 算法描述 定义状态 v . c o l o r :初始状态为白色,被发现时改为灰色&…

【cfeng work】什么是云原生 Cloud Native

WorkProj 内容管理 云原生云原生应用十二要素应用cfeng的work理解 本文introduce 云原生 Cloud Native相关内容 随着技术的迭代,从最初的物理机—> 虚拟机,从单机 —> 分布式微服务, 现在的热门概念就是云☁(cloud&#xff…

python 使用 openpyxl 处理 Excel 教程

目录 前言一、安装openpyxl库二、新建excel及写入单元格1.创建一个xlsx格式的excel文件并保存2.保存成流(stream)3.写入单元格 三、创建sheet工作表及操作四、读取excel和单元格1.读取 excel 文件2.读取单元格3.获取某一行某一列的数据4.遍历所有单元格5.遍历指定行列范围的单元…

数据结构之堆——算法与数据结构入门笔记(六)

本文是算法与数据结构的学习笔记第六篇,将持续更新,欢迎小伙伴们阅读学习。有不懂的或错误的地方,欢迎交流 引言 当涉及到高效的数据存储和检索时,堆(Heap)是一种常用的数据结构。上一篇文章中介绍了树和完…

iOS自动化环境搭建(超详细)

1.macOS相关库安装 libimobiledevice > brew install libimobiledevice 使用本机与苹果iOS设备的服务进行通信的库。 ideviceinstaller brew install ideviceinstaller 获取设备udid、安装app、卸载app、获取bundleid carthage > brew install carthage 第三方库…

机器视觉初步5:图像预处理相关技术与原理简介

在机器视觉领域中,图像预处理是一项非常重要的技术。它是指在对图像进行进一步处理之前,对原始图像进行一系列的操作,以提高图像质量、减少噪声、增强图像特征等目的。本文将介绍一些常用的图像预处理技术,并通过配图说明&#xf…

Android CMake

首先了解几个名词 NDK The Android Native Development Kit The Android NDK is a toolset that lets you implement parts of your app in native code, using languages such as C and C. For certain types of apps, this can help you reuse code libraries written in t…

Centos7安装Python3.10

Centos7用yum安装的Python3版本比较旧,想要安装最新版本的Python3需要自己动手编译安装。下面就来讲讲安装步骤,主要分为这么几个步骤,依赖→下载→编译→配置。另外所有操作都是在root用户下进行。 依赖 编译Python源码需要依赖许多库&…

springboot-内置Tomcat

一、springboot的特性之一 基于springboot的特性 自动装配Configuretion 注解 二、springboot内置Tomcat步骤 直接看SpringApplication方法的代码块 总纲: 1、在SpringApplication.run 初始化了一个上下文ConfigurableApplicationContext configurableApplica…

《C++ Primer》--学习4

函数 函数基础 局部静态对象 局部静态对象 在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁,在此期间即使对象所在函数结束执行也不会对它有影响 指针或引用形参与 const main: 处理命令行选项 列表初始化返回…

机器人参数化建模与仿真,软体机器人

专题一:机器人参数化建模与仿真分析、优化设计专题课程大纲 机器人建模基础 机器人运动学基础几何运动学闭环解解析法建模运动学MATLAB脚本文件编写(封闭解、构型绘制)、工具箱机器人工作空间(离散法、几何法)建模工作…

Debian12中Grub2识别Windows

背景介绍:windows10 debian11,2023年6月,Debian 12正式版发布了。抵不住Debian12新特性的诱惑,我将Debian11升级至Debian12。升级成功,但Debian12的Grub2无法识别Window10。于是执行如下命令: debian:~# update-grub G…

MySQL如何在Centos7环境安装:简易指南

目录 前言 一、卸载不要的环境 1.检查本地MySQL是否正在运行 2.停止正在运行的MySQL 二、检查系统安装包 三、卸载这些默认安装包 1.手动一个一个卸载 2.自动卸载全部 四、获取mysql官方yum源 五、安装mysql yum源,对比前后yum源 1.安装前 2.安装中 3.…

认识服务器

1、查看操作系统的信息 CentOS 输入:cat /etc/os-release 字段含义解释NAME操作系统名称CentOS LinuxVERSION操作系统版本7 (Core)ID操作系统标识centosID_LIKE相关操作系统标识rhel fedoraVERSION_ID操作系统版本号7PRETTY_NAME可读性较好的操作系统名称CentOS L…

0004Java程序设计-SSM+JSP医院挂号系统

摘 要 医院挂号,一直以来就是困扰医院提高服务水平的重要环节,特别是医疗水平高、门诊访问量高的综合型医院,门诊拥挤就成了普遍现象。因此,本文提出了医院挂号系统。预约挂号,是借助信息化的技术,面向全社…

PB9如何实现datawindow打印导出PDF,PB导出PDF

PB9如何实现datawindow打印导出PDF,PB导出PDF? 之前的saveas导出pdf,设置非常麻烦。需要 1. 安装gs705w32.exe 2. 设置系统path: C:\gs\gs7.05\bin (以实际安装目录为准) 3. 安装虚拟打印机 PowerBuilder9.0自带的: Sybase\Shared\Power…

【雕爷学编程】Arduino动手做(120)---游戏摇杆扩展板

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…