抓包理解协议

news2024/11/19 23:41:57

用的Wireshark 抓包

1.抓包网卡选择 - WLAN 无线网卡,其他是本地虚拟机的网卡

 

这里分别是开始捕获、停止捕获、重新捕获、网卡选择,下面是可以过滤选择

 过滤tcp包

 3次握手: source是源地址, destination是目标地址,info中的SYN是建立连接,syn,ack是一个包两个标记,建立连接+ack  然后 ack应答

syn包:

左边是工具解析的协议层,frame是框架,Ethernet是链路层,右边对应的是他的数据区

数据结构:协议头+数据
数据里面又是对应的高层协议头+数据 层层封包  这里没有抓到链路层的CRC码

链路层 协议头:28位16进制  换算2进制是28*4 = 112位(因为2^4 = 16,一位16进制占用4位二进制)


然后位宽是96位(2进制)【24位(16进制)】(链路层协议固定格式 )

所以链路层协议头是两层数据,第一层96位,第二层16位 (2进制)

 第一层:目标MAC和源MAC各占48位,第二层 下一层的协议号占用16位

0800(16进制) 对应 0000100000000000 (二进制)

注:数据长度不够,前面补0,凑足长度

 这里目标MAC是WiFi路由的,源MAC是我本机 IPv4协议表示数据包(后面一堆)是IPV4解析

按理来说包最后会有CRC码,没拿到。

网络层协议  - ipV4头数据 (32位宽,主要说下数据)

1.版本4、长度5(头长度:4*5 = 20byte =40位16进制 = 32位2进制)1byte占8位2进制,byte是32进制数据

2.服务器类型

3.总长 52byte (当前协议头+数据包)  头是20,总长52,数据包32byte

4.flag 和 fragmentoffset 标记位、数据偏移量 一个数据包太长,会拆分多个数据包分开发(CRC校验码限制了包长度)

5.time to live :  防环,路由一次-1,减到0就丢弃;路由次数

6.下层协议类型(TCP)、头部校验码

7.源、目标ip

传输层  TCP协议 - 源、目标 端口、序列号、flag标记、windows、校验码、紧急指针

序列号有两个,一个是我这边的,一个是对方的,三次握手过程:

sync的时候随机产生一个,然后后面每次我这边发过去都+1,

对方【sync+ack】的时候生成他的序列号以及记录我的序列号,

ack的时候,我这边序列号+1,并且记录他那边的序列号

flag:消息标记,12位2进制(3位16进制) 开头三位暂时没用(所以一共有九个状态)

syn:建立连接   ack:回复收到  【syn+ack】就是这两个标记位都是1。

reset:报告异常 - 让对方关闭连接,不用ack, 数据包不会接收和发送了。

urgent标记,配合紧急指针,把窗口当前的数据以及当前数据包中紧急偏移的部分数据一起紧急处理掉(窗口清空),然后当前包剩下的数据放窗口里面缓存。

四次挥手:

请求方:fin: 请求关闭连接,不会发送数据了,但是可以接收数据         第一次

应答方:ack: 告诉对方收到了fin包  正常接收、发送数据                    第二次

应答方可能还在中途给他发数据 - 没来得及发完的数据包

应答方:fin:可以关闭连接了,不会发数据,等一个ack包                   第三次

请求方接收完剩下的数据。。。。

请求方处理完 发送 ack包,请求方关闭,应答方收到 ack包关闭连接    第四次

会话层:Http协议   HTTPS是再TCP和HTTP中间加了一层TLS/SSH协议

HTTP的话直接是明文可以看到HTTP内容,HTTPS只能看到TLS/SSL协议信息,内容是加密的

HTTPS的TCP端口是 443端口

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

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

相关文章

Mysql用语句创建表/插入列【示例】

一、 创建表 COMMENT表示字段或列的注释 -- 新建student表 CREATE TABLE student (id BIGINT NOT NULL COMMENT 学生id, enroll_date DATE NOT NULL COMMENT 注册时间, NAME VARCHAR(18) DEFAULT NOT NULL COMMENT 学生姓名, deal_flag TINYINT(1) DEFAULT 0 NOT NULL COMM…

创新入门|从点击到转化:AI个性化登陆页助力潜在客户转化

在数字营销的竞争格局中,采用先进技术对于旨在区分自己并吸引受众的企业至关重要。人工智能 (AI) 成为一项关键技术,尤其是在制作个性化登录页面的艺术方面。这些页面不仅仅是品牌与其潜在客户之间的第一个接触点;它们是吸引兴趣、…

vue-admin-template项目实现中英文切换

实现效果: 1.安装 *注意版本号 npm install vue-i18n8.24.5 -S2.新建文件夹 在src目录下新建lang文件夹,里面有3个文件 // index.js import Vue from vue import VueI18n from vue-i18n import Cookies from js-cookie import elementEnLocale fr…

Redis 服务等过期策略和内存淘汰策略解析

redis服务是基于内存运行的,所以很多数据都存放在内存中,但是内存又不是无限的,所以redis就引出了key的过期和淘汰策略。 一、Redis的过期策略: 我们在set key的时候,可以给它设置一个过期时间,比如expire …

【UnityRPG游戏制作】RPG项目的背包系统商城系统和BOSS大界面

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

【06】JAVASE-数组讲解【从零开始学JAVA】

Java零基础系列课程-JavaSE基础篇 Lecture:波哥 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。…

华为MRS服务使用记录

背景:公司的业务需求是使用华为的这一套成品来进行开发,使用中发现,这个产品跟原生的Hadoop的那一套的使用,还是有很大的区别的,现记录一下,避免以后忘了 一、原始代码的下载 下载地址:MRS样例…

使用Umbrello学习工厂模式

工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工厂类都有共同的接口, 或者有共同的抽象父类。 当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对象以及一个具体工厂对 象,原有工厂对象不需要进行任何修改,也不…

Go语言中有哪些常见的编码规范和最佳实践?

文章目录 一、命名规范1. 包名2. 变量名3. 函数名原因 二、代码格式1. 花括号位置2. 缩进3. 空格示例代码原因 三、错误处理1. 检查错误2. 错误值3. 多重错误处理示例代码原因 四、注释1. 注释内容2. 注释位置3. 避免冗余注释示例代码原因 五、总结 在Go语言编程中,…

数据结构––复杂度

目录 一.时间复杂度 1.1定义 1.2时间复杂度的分类 1.3时间复杂度基本计算规则 1.4例子 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.4.10 1.4.11 1.4.12 1.4.13 二.空间复杂度 2.1定义 2.2推导大O阶方法 一.时间复杂度 1.1定义 算法的时间…

面试算法题精讲:最长公共子序列

面试算法题精讲:最长公共子序列 题面 题目来源:1143. 最长公共子序列 题目描述: 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列(LCS)的长度。如果不存在公共子序列 ,返回…

浅谈大数据时代下的电商风控||电商数据API接口

抢抢抢!最后1天,双十一直播活动来啦!抢直播专属优惠…… 视频号 随着大数据时代的兴起,互联网电商风控已经从无风控、人工抽取规则为主的简易规则模型发展到当前基于大数据的风控。与金融风控不同,互联网电商风控呈现出…

vue3 ——笔记 (条件渲染,列表渲染,事件处理)

条件渲染 v-if v-if 指令用于条件性地渲染一块内容,只有v-if的表达式返回值为真才会渲染 v-else v-else 为 v-if 添加一个 else 区块 v-else 必须在v-if或v-else-if后 v-else-if v-else-if 是v-if 的区块 可以连续多次重复使用 v-show 按条件显示元素 v-sh…

[Java]线程生命周期与线程通信

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/138101131 出自【进步*于辰的博客】 线程生命周期与进程有诸多相似,所以我们很容易将…

【Vue】可拖拽排序表格组件的实现与数据保存

1、描述 使用el-table-draggable组件来创建一个可拖拽的表格。 表格中的数据存储在tableData数组中,每个对象都有sortOrder、id、name和age属性。 当用户拖拽表格行并释放时,handleRowOnEnd方法会被调用, 更新tableData中每个对象的sortO…

super与this

目录 原型链与继承继承中的原型链 classsuper与this 我们可能会对一个问题感到好奇:为什么在派生类中,我们需要在调用this之前调用super。我们通常将其视为一种规范,却很少深入探究这个规范的真正意义。许多人认为super不过是ES6之前继承方式…

vercel.app 部署的服务国内无法最优解决方案

今天在部署 waline 评论系统时,发现国内 IP 无法访问,这将导致评论系统无法使用,由于我的站点是技术站点需要和用户评论沟通,但是如果评论无法使用的话就会导致流失更多的用户,通过自己实际测试后发现一个最优的解决方…

【IR 论文】DPR — 最早提出使用嵌入向量来检索文档的模型

论文:Dense Passage Retrieval for Open-Domain Question Answering ⭐⭐⭐⭐⭐ EMNLP 2020, Facebook Research Code: github.com/facebookresearch/DPR 文章目录 一、论文速读二、DPR 的训练2.1 正样本和负样本的选取2.2 In-batch negatives 技巧 三、实验3.1 数据…

编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 编写…

长度最小的子数组 ---- 滑动窗口

题目链接 题目: 分析: 解法一:暴力解法, 找到所有连续子数组, 保留满足条件的解法二: 利用滑动窗口 找子数组 因为数组中都是正整数, 通过进窗口的操作, 我们找到一组, 如示例一中的2,3,1,2, 判断满足和>7, 那么根据单调性, 我们就不再需要判断加上后面两个数的两个子数组…