wireshark的安装使用及相关UDP、TCP、 ARP

初步了解:

进入wireshark后如图:

屏幕截图 2024-04-28 171149

从图中可以看到很多网络连接在操作的时候我们需要监测哪些 我们可以直接在本地的运行框中输入ipconfig来查看

如图:

屏幕截图 2024-04-28 172641

从以上图片中我们可以清楚地看到哪些网络连接已经连接的我们只需要按需监测他们即可

但是我们的发现在最上面的图片中的序号3所指向的Adapter for loopback traffic capture这个是用来捕获环回流量的

环回流量

  1. 本地主机之间的通信:

    当你在本地主机上运行一个服务器应用程序(如 Web 服务器、数据库服务器等)时,客户端与服务器之间的通信可能会使用环回接口。例如,你在本地主机上运行一个 Web 服务器,并通过浏览器访问该服务器,此时浏览器向服务器发送的 HTTP 请求就会经过环回接口。

  2. 本地主机上的网络服务:

    当你在本地主机上运行一个网络服务(如 DNS 服务器、代理服务器等)时,该服务可能需要与自身进行通信。例如,当你的计算机上运行一个 DNS 服务器,并且其他程序需要解析域名时,这些程序向本地 DNS 服务器发送的 DNS 查询请求就会经过环回接口。

    在wireshark中存在两种模式

屏幕截图 2024-04-28 175854

具体开启方式如图标注:

屏幕截图 2024-04-28 180558

屏幕截图 2024-04-28 180609

Tcp

TCP全称传输控制协议,必须对数据的传输进行控制

tcp连接三次握手:

(第一次握手syn=1,第二次syn=1 ack=1,第三次ack=1)

屏幕截图 2024-05-04 182226

tcp.flags.syn==1 and tcp.flags.ack==0表示筛选出由本机发送的请求并且通信协议是tcp其中的flags表示数据包头部中的特定位或字段

在 TCP 协议中,常见的标志位包括:

  1. SYN(同步):用于发起连接,表示请求建立连接。

  2. ACK(确认):用于确认数据包的接收,表示已收到数据包。

  3. FIN(结束):用于关闭连接,表示不再发送数据。

  4. RST(复位):用于重置连接,表示连接异常或被拒绝。

  5. PSH(推送):用于立即传送数据,表示应用层数据应立即传输而不缓存。

  6. URG(紧急):表示数据包中有紧急数据,需要优先处理。

具体如图:

第一次握手:

屏幕截图 2024-05-04 185641

第二次握手:

屏幕截图 2024-05-04 191106

第三次握手:

屏幕截图 2024-05-04 191125

我们可以在流量图中很形象的看到三次握手 具体操作如图:

屏幕截图 2024-05-04 192704

流量图如图:

屏幕截图 2024-05-04 193501

找到正确的流量指向方法:(可以依据目标ip、端口和源ip、端口即可)

tcp连接断开四次挥手

原理如图:

屏幕截图 2024-05-04 194913

屏幕截图 2024-05-04 195203

相关数据:

屏幕截图 2024-05-04 211423

第一次挥手:

屏幕截图 2024-05-04 211449

第二次:

屏幕截图 2024-05-04 211530

第三次:

屏幕截图 2024-05-04 211616

第四次:

屏幕截图 2024-05-04 211625

关于在wireshark中的相关过滤的操作:

tcp.flags.syn==1 and tcp.flags.ack==0可以找到三次握手(根据三次握手的信息不同即可做出区分)

ip.src_host==127.0.0.1(可以找到指定ip所发送的请求)

ip.dst_host==202.108.22.5(可以找到数据所发送到的地方)

二者可以通过or或者and来连用

如图:

屏幕截图 2024-04-28 214116

ip.addr==127.0.0.1(此命令可以把ip为127.0.0.1的全部显示出来)

ARP协议

地址解析协议ARP(Address Resolution Protocol)

分类:普通ARP、反向ARP(RARP)、免费ARP和代理ARP

网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址而获取目的MAC地址的过程是由ARP(Address Resolution Protocol)协议来实现的

根据IP地址获取物理地址一个TCP/IP协议

这句话的意思是(根据IP地址获取物理地址一个TCP/IP协议"的意思是指通过使用 TCP/IP 协议来查询某个设备的 IP 地址,然后利用这个 IP 地址去获取相应设备的物理地址(即 MAC 地址)。这个过程通常通过 ARP(地址解析协议)来实现,ARP 会将 IP 地址映射到对应的 MAC 地址)

根据 IP 地址获取物理地址的过程涉及到 TCP/IP 模型中的多个层面:

  1. 物理层:物理层定义了数据传输的物理媒介和信号传输的规范。尽管获取物理地址的过程通常不直接涉及物理层,但是在实际数据传输中,通过物理层的传输媒介,如网线、无线信号等,才能确保数据帧从源设备传输到目标设备。

  2. 数据链路层:数据链路层负责将数据帧从一个网络设备传输到相邻的网络设备。在这个层面上,每个网络设备都有一个唯一的物理地址,即 MAC 地址。ARP 协议在数据链路层上实现,用于将 IP 地址映射到对应的 MAC 地址,以便进行数据帧的传输。

  3. 网络层:网络层使用 IP 地址来唯一标识网络中的设备,并负责数据包的路由和转发。获取物理地址的过程中,首先需要查询目标设备的 IP 地址,然后通过 ARP 协议将该 IP 地址映射到相应的 MAC 地址,以确定数据帧的接收者。

  4. 应用层:尽管获取物理地址的过程通常不涉及应用层,但某些应用程序可能会利用网络信息(如 IP 地址)来实现特定功能,例如网络发现或远程管理。

根据 IP 地址获取物理地址的过程涉及到 TCP/IP 模型中的多个层面,包括物理层、数据链路层、网络层和在某些情况下可能涉及的应用层

根据 IP 地址获取物理地址的过程不涉及传输层因为输层主要负责从发送端到接收端的数据传输和通信

一个数据包的传输流程如下:

  1. 应用层:数据包从应用程序生成,该层负责应用程序与网络的通信。例如,HTTP、FTP、SMTP 等协议运行在应用层。

  2. 传输层:传输层负责提供端到端的通信服务。例如,TCP 和 UDP 协议运行在传输层,它们将数据分割成数据段,并添加相应的头部信息。

  3. 网络层:网络层负责将数据包从源主机传输到目标主机。在这个过程中,数据包被封装成 IP 数据包,并添加相应的 IP 头部信息。“路由器”等网络设备在网络层进行路由和转发。

  4. 数据链路层:数据链路层负责将数据包从一个网络设备传输到相邻的网络设备。在这个过程中,数据包被封装成帧,并添加相应的数据链路层头部信息。“交换机、网桥”等网络设备在数据链路层进行数据帧的转发。

  5. 物理层:物理层负责定义物理连接和传输介质的特性,例如电压、频率等。在这个层面上,数据被转换成比特流,并通过物理介质传输。

所以,在一个数据包的传输过程中,并不是所有的层都被逐一经过。例如,当两台主机在同一局域网中进行通信时,数据包可能只经过数据链路层和物理层,而不经过网络层和传输层。而在跨越多个网络进行通信时,数据包则会经过更多的层次。

在wireshark上操作

查看arp协议 建议可以先去随便ping一下这样比较方便的去看出网关和本机的交互过程

再看之前需要先去分清本地ip和网关ip

如图:(因为我在这里抓的是WLAN的包所以选择去查看WLAN分发的ip)

屏幕截图 2024-05-04 133337

然后如图:

屏幕截图 2024-05-04 132240

第一行:

  • Frame 13663: 这是数据包的编号,表示网络捕获工具捕获的第13663个数据包。

  • 60 bytes on wire (480 bits): 数据包在网络上传输时的大小,以字节和位表示。

  • 60 bytes captured (480 bits): 实际捕获到的数据包大小,以字节和位表示。

  • on interface \Device\NPF_{7921C416-3C04-48A7-8126-1736AC2C8BE7}: 数据包捕获时所使用的网络接口,这里是一个设备标识符。

  • id 0: 数据包的标识符,通常用于唯一标识捕获到的每个数据包

上图中的ARP部分如下:

屏幕截图 2024-05-04 134844

  • Hardware type(硬件类型): 指定硬件类型,这里是以太网(Ethernet)。

  • Protocol type(协议类型): 指定网络层协议类型,这里是IPv4。

  • Hardware size(硬件地址长度): 指定硬件地址的长度,这里是6个字节也就是48位(以太网地址的长度)。

  • Protocol size(协议地址长度): 指定协议地址的长度,这里是4个字节(IPv4地址的长度)。

  • Opcode(操作码): 指定ARP消息类型,这里是请求(request)。

  • Sender MAC address(发送者MAC地址): 指定发送ARP请求的设备的MAC地址,这里是 FiberhomeTel_2e:2d:40(68🇩🇪ce:2e:2d:40)。

  • Sender IP address(发送者IP地址): 指定发送ARP请求的设备的IPv4地址,这里是192.168.1.1。

  • Target MAC address(目标MAC地址): 指定要解析MAC地址的设备的MAC地址,这里是未知,表示正在请求目标设备的MAC地址。

  • Target IP address(目标IP地址): 指定要解析MAC地址的设备的IPv4地址,这里是192.168.0.159,表示正在请求该IP地址对应的设备的MAC地址。

这个过程表示的是网关在向本机请求mac地址的过程 其中192.168.0.159是本机ip

192.168.1.1是网关ip

以上是网关的请求(request)包 下面是本机的响应(reply)包

屏幕截图 2024-05-04 140453

从arp中可得出本机返回到网关中的数据包中含有本机的mac地址

wireshark之ICMP协议

ICMP(Internet Control Message Protocol,互联网控制消息协议)是用于在IP网络中发送错误报告和操作消息的协议

它可以帮助网络设备进行错误报告、连通性测试和路由器通知,从而确保网络的正常运行。它是TCP/IP协议族的一部分,通常用于网络设备之间的通信。以下是 ICMP 协议的一些重要特点:

  1. 错误报告:ICMP用于发送各种类型的错误报告,例如目标不可达、超时等。当路由器或主机在传输数据时遇到问题时,会向源发送ICMP错误报告。

  2. Ping测试:ICMP还用于执行ping测试,即向目标主机发送一个ICMP回显请求(Echo Request),然后接收目标主机发送的回显回复(Echo Reply)。这种测试通常用于确定网络连接的连通性和延迟。

  3. 路由器通知:ICMP也可以用于向网络中的设备发送路由器通知。例如,当一个路由器重新启动或一个网络出现故障时,它可以发送ICMP通知,通知其他设备发生了什么情况。

  4. 消息类型:ICMP消息分为多种类型,包括错误消息和查询消息。错误消息用于指示发生了某种错误,而查询消息用于向其他设备发出请求或回复。

  5. 轻量级:ICMP是一个轻量级的协议,通常不需要建立连接就可以发送消息,因此它对网络开销很小。

如果想去瞅瞅icmp数据包长啥样我们可以去尝试直接ping个东西即可比如ping一下网关 不知道网关ip的话可以去在终端直接去ipconfig一下

如图:

屏幕截图 2024-05-04 145027

屏幕截图 2024-05-04 145233

  • Internet Control Message Protocol: 表示传输层使用的是ICMP协议。

  • Type: 8 (Echo (ping) request): ICMP消息类型,表示这是一个回显请求(ping请求)。

  • Code: 0: ICMP消息的代码字段,用于进一步指定消息类型。0表示发送成功

  • Checksum: 校验和字段,用于检测数据包在传输过程中是否发生了错误。

  • Identifier: 用于标识回显请求的唯一标识符。

  • Sequence Number: 用于标识回显请求的序列号。

  • Data: 数据字段,这里包含32字节的数据。

这个数据包是一个ICMP回显请求,即ping请求,发送者的IP地址是192.168.0.159,接收者的IP地址是192.168.0.1。

wireshark抓HTTP协议

可以在终端输入curl -I baidu.com

(这条命令是使用 curl 命令对百度网站发送一个 HEAD 请求,并输出响应的头部信息)

如图:

屏幕截图 2024-05-04 213246

流量图:

UDP 协议

UDP全称为用户数据报协议。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法

协议特点
1.无连接:只知道对端的IP和端口号就可以发送,不需要实现建立连接。(就像寄信)。
2.不可靠:没有确认机制, 没有重传机制。如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息。
3.面向数据报: 应用层交给UDP多长的报文, UDP原样发送既不会拆分,也不会合并。所以UDP不能够灵活的控制读写数据的次数和数量。
4.UDP存在接收缓冲区,但不存在发送缓冲区。UDP没有发送缓冲区,在调用send to时会直接将数据交给内核,由内核将数据传给网络层协议进行后续的传输动作。UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报文的顺序和发送UDP报的顺序一致,如果缓冲区满了再到达的UDP数据报就会被丢弃。

为什么UDP不需要发送缓冲区?

因为UDP不保证可靠性,它没有重传机制,当报文丢失时,UDP不需要重新发送,而TCP不同,他必须具备发送缓冲区,当报文丢失时,TCP必须保证重新发送,用户不会管,所以必须要具备发送缓冲区

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP与JavaBean

目录 一、JavaBean是什么 二、创建JavaBean 三、在JSP中使用JavaBean 1、按照Java语法直接使用 2、<jsp:useBean>动作 Bean的加载原理 scope属性的不同取值 3、<jsp:setProperty>动作 设置为一个表达式的值或字符序列 通过表单的参数的值来设置Bean的相应…

【C++】STL — List的接口讲解 +详细模拟实现

前言&#xff1a; 本章我们将学习STL中另一个重要的类模板list… list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是带头双向循环链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xf…

论文笔记ColdDTA:利用数据增强和基于注意力的特征融合进行药物靶标结合亲和力预测

ColdDTA发表在Computers in Biology and Medicine 的一篇一区文章 突出 • 数据增强和基于注意力的特征融合用于药物靶点结合亲和力预测。 • 与其他方法相比&#xff0c;它在 Davis、KIBA 和 BindingDB 数据集上显示出竞争性能。 • 可视化模型权重可以获得可解释的见解。 …

三种滤波(EKF、UKF、CKF)的对比,含MATLAB源代码

使用MATLAB模拟三维的滤波,包含扩展卡尔曼滤波EKF、无迹卡尔曼滤波UKF、容积卡尔曼滤波CKF。 状态更新和观测更新均为非线性的,模拟一定强度的机动性,可用于卡尔曼滤波方法的对比学习,自己修改成需要的运动模型后,可以用于组合导航(GPS+DVL形式)。 运行结果 真值的三轴…

Unity UGUI Image 点击事件忽略空白像素区域

我们会遇到图片不是方形的不规则图片。这个时候我们希望只有点击到图像内容本身才算点击&#xff0c;点击空白区域则不算点击。而UGUI对图片的处理是整个图片都会算作点击区域&#xff0c;这样不能满足于我们的使用需求了。 首先我们需要把图片本身的Read/Write 选项打开 然后…

Meta Llama 3 使用 Hugging Face 和 PyTorch 优化 CPU 推理

原文地址&#xff1a;meta-llama-3-optimized-cpu-inference-with-hugging-face-and-pytorch 了解在 CPU 上部署 Meta* Llama 3 时如何减少模型延迟 2024 年 4 月 19 日 万众期待的 Meta 第三代 Llama 发布了&#xff0c;我想确保你知道如何以最佳方式部署这个最先进的&…

时间日志格式的统一和定制

返回当前格式的时间没有错误&#xff0c;但是不符合中国人的阅读习惯 解决&#xff1a; 方案一&#xff1a;JsonFormat 解决后端 传到 前端格式问题 依赖&#xff1a; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jack…

STM32:GPIO输出

文章目录 1、GPIO介绍1.1 GPIO的基本结构1.1 GPIO的位结构 2、 GPIO工作模式3、GPIO标准外设库接口函数3.1 RCC接口函数3.2 GPIO接口函数3.2.1 GPIO的读取函数3.2.1 GPIO的写入函数 4、GPIO的初始化 1、GPIO介绍 GPIO&#xff08;General Purpose Input Output&#xff09;通用…

Python设计模式 - 单例模式

定义 单例模式是一种创建型设计模式&#xff0c; 其主要目的是确保一个类只有一个实例&#xff0c; 并提供一个全局访问点来访问该实例。 结构 应用场景 资源管理&#xff1a;当需要共享某个资源时&#xff0c;例如数据库连接、线程池、日志对象等&#xff0c;可以使用单例模…

【UnityRPG游戏制作】Unity_RPG项目_玩法相关

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

【算法与数据结构】哈希表

文章目录 引入哈希函数介绍便利店的例子Python3 中的哈希表C 中的哈希表 应用将散列表用于查找防止重复将散列表用作缓存 哈希冲突与解决链地址法开放寻址 总结参考资料写在最后 引入 假设你在一家便利店上班&#xff0c;你不熟悉每种商品的价格&#xff0c;在顾客需要买单是时…

详述DM9161芯片的特性和用法

目录 概述 1. 认识DM9161 2 DM9161的特性 2.1 特性总结 2.2 结构框图 3 功能描述 4 RMII接口 4.1 100Base-TX Operation 4.2 10Base-T Operation 4.3 Auto-Negotiation 4.4 HP Auto-MDIX功能描述 6 DM9161的寄存器 6.1 寄存器列表 6.2 寄存器功能介绍 6.2.1 基本…

ubuntu20中ros与anaconda的python版本冲突问题

系统环境 原本系统是ubuntu20 noetic&#xff0c;python都在/usr/bin中&#xff0c;一共是两个版本的python&#xff0c;一个是python3.8&#xff0c;另一个是python2.7。 问题发现 当安装anaconda后&#xff0c;并且将anaconda的bin目录加入到系统环境中时候&#xff0c;…

Stable Diffusion webUI 配置指南

Stable Diffusion webUI 配置指南 本博客主要介绍部署Stable Diffusion到本地&#xff0c;生成想要的风格图片。 文章目录 Stable Diffusion webUI 配置指南1、配置环境&#xff08;1&#xff09;pip环境[可选]&#xff08;2&#xff09;conda环境[可选] 2、配置Stable Diffu…

Monorepo(单体仓库)与MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南

&#x1f31f; 引言 在软件开发的浩瀚宇宙里&#xff0c;选择合适的代码管理方式是构建高效开发环境的关键一步。今天&#xff0c;我们将深入探讨两大策略——Monorepo&#xff08;单体仓库&#xff09;与MultiRepo&#xff08;多仓库&#xff09;&#xff0c;并通过使用现代化…

CMakeLists.txt语法规则:部分常用命令说明一

一. 简介 前一篇文章简单介绍了CMakeLists.txt 简单的语法。文章如下&#xff1a; CMakeLists.txt 简单的语法介绍-CSDN博客 接下来对 CMakeLists.txt语法规则进行具体的学习。本文具体学习 CMakeLists.txt语法规则中常用的命令。 二. CMakeLists.txt语法规则&#xff1a;…

【Qt问题】VS2019 Qt win32项目如何添加x64编译方式

解决办法&#xff1a; 注意改为x64版本以后&#xff0c;要记得在项目属性里&#xff0c;修改Qt Settings、对应的链接include、lib等 参考文章 VS2019 Qt win32项目如何添加x64编译方式_vs2019没有x64-CSDN博客 有用的知识又增加了~

Spring事件

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Spring⛺️稳中求进&#xff0c;晒太阳 Spring事件 简洁 Spring Event&#xff08;Application Event&#xff09;就是一个观察者模式&#xff0c;一个bean处理完任务后希望通知其他Bean的…

OpenCV人脸识别C++代码实现Demo

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉库&#xff0c;它提供了很多函数&#xff0c;这些函数非常高效地实现了计算机视觉算法。 官网&#xff1a;https://opencv.org/ Github: https://github.com/opencv/opencv Gitcode…

查找算法与排序算法

查找算法 二分查找 (要求熟练) // C// 二分查找法&#xff08;递归实现&#xff09; int binarySearch(int *nums, int target, int left, int right) // left代表左边界&#xff0c;right代表右边界 {if (left > right) return -1; // 如果左边大于右边&#xff0c;那么…