渗透测试(13)- 费解的三次握手和四次挥手

        上一篇文章通过wireshark抓包工具简单了解了TCP/IP协议的五层工作模型,其中传输层我们已经知道主要是用来增加端口信息的。传输层主要有两种协议,一种是面向连接的TCP协议,一种是无连接的UDP协议,无连接的UDP协议比较好理解,比如我们刷抖音,看视频,基本都是UDP协议,udp协议传输速度快,但不能保证数据的完整性,我们刷抖音的时候,如果网络有波动,即使丢失了一些画面,影响也很小,可以说基本没有影响,但是如果在一些前后端的交互中,比如淘宝购物下单支付的场景,就必须要保证数据的完整性和安全性。TCP面向连接的协议对比UDP协议,虽然传输速度不如UDP,但很好的保证了数据传输过程中的完整性。

        TCP协议是面向连接的,那么在计算机的传输过程中,具体是如何建立面向连接,就有必要深度学习一下TCP的三次握手和四次挥手,在渗透测试工作中,理解三次握手和四次挥手还是很有必要的。

SYN 表示建立连接
FIN 表示关闭连接
ACK 表示响应
PSH 表示有 DATA 数据传输
RST 表示连接重置。
SEQ分为相对序列号和绝对序列号,默认是相对序列号显示就是0 1不便于查看,可以修改成绝对序列号方法:
编辑-》首选项》Protocols》TCP,标识位置去掉打勾,点击确定
三次握手的过程:
以下为192.168.3.67访问192.168.3.38
第一次握手:67向38发起SYN包,SYN包的意思是建立连接,举个例子:我们准备去朋友家取东西,最开始要询问一下朋友是否在家,如果在家可以去取东西,如果朋友不在家那么不就白跑一趟了。对于第一次握手的过程来说,就是询问朋友是否在家,这时候我们会发送一个叫做seq的东西,这个东西会随机有一个序列号。
第二次握手:67向38发起SYN后,38如果接收到syn包后,是不需要回复一下,回到上边的例子,询问朋友是否在家,朋友是不要回复一下是否在家?在第一次握手的时候,看下边的截图,67发送了一个带有序列号的seq(1860051053),那么38呢,如果确认在家,就回复一个ACK响应包,ACK包也有一个序列号,这个序列号就是在seq序列号的基础上加1,就表示确认的是67的请求,如下图所示ACK的序列号是(1860051053+1=1860051054),同时也会发送一个带有随机序列号的SEQ(859377400)给67,那么为什么38为什么也要发送一个SEQ,回到去朋友家的例子上,我们询问朋友是否在家,朋友回复说在家后,为了保证这次见面顺利,朋友是不也得确认一下你确定要过来?
第三次握手:67收到38发过来的确认ACK响应包,以及需要回复的SYN包后,67需要最终确认是否建立连接,这时候回复一个ACK响应包给38,即在38发送的SYN包序列号的基础上加1(859377400+1=859377401)。回到上边的例子中,朋友确认在家后,询问我们是否确定过来时,我们给了朋友一个答复:肯定过去,至此,一个拜访的约定就确认完毕。对于TCP协议来说,就是建立好了一个连接,接着就可以做数据的传输了,发送PSH包。
四次握手的过程:
         三次握手建立连接,数据传输完成后,就是四次挥手断开连接的过程。
第一次挥手:67收到38发送的所有数据后,不需要再维持连接了,这时候就会发送一个带有序列号的FIN包断开连接(一起的ACK包可以理解为是建立链接,传输数据过程中的响应包),回到例子中,我们从朋友家取上了物品(加入是多个物品),要和朋友告别:东西我都拿上了,我要回去了,这就是第一次挥手
第二次挥手:我们和朋友告别,朋友先说好的,但是还没有说再见(没有发送FIN包)-这里假如你和朋友已经有个约定,每次见面,必须互相说再见才能离开。对于TCP协议来说,就是回复一个ACK包,序列号也是在收到的FIN包的seq序列号上加1。
第三次挥手:第二次挥手时,朋友说好的之后,没有说再见,那么这次就是说再见了,对于TCP协议来说,就是也发送一个FIN包,同时也会同时发送一个ACK包。这种机制是为了保证接收数据的完整性,回到例子中,我们取了多个物品后和朋友再见,朋友说好的之后还没有说再见,说再见之间我们还有时间检查一下物品的数量对不对,而在朋友说了再见之后,可能朋友有事马上就出门了,如果物品有差错,我们也没有机会拿取物品了。
第四次挥手:朋友说了再见之后,要求我们给一个回应,确认要再见,没有其他事了吧(这样看来不像拜访朋友,像接头哈)。对于TCP来说,就是67再发送一个ACK响应包,确认断开连接,38收到响应后便会断开连接。
总结:以上就是三次握手和四次挥手的过程。实际上TCP协议建立连接,传输数据,释放连接时,还有其他很多的控制措施,确保数据传输的效率、完整性、安全性等。作为渗透测试人员,先了解基本的建立连接和释放连接的过程就可以,后续随着学习的累积,再继续深入学习TCP协议。

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

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

相关文章

QT上位机开发(MySql访问)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 网上介绍的关于QT和mysql部分的内容,都是利用Qt自带的mysql库来实现数据读写的。但是事实上来说,即使不用qt带的库&#xf…

利用 ChatGPT 高效搜索:举一反三的思考方式,高效查找解决方案

文章目录 基础思路举一反三Go 语言 Web 框架延伸思考思考结论 本文只是我的一些尝试,基于 ChatGPT 实现系统化快速搜索某编程语言的特定领域相关包或者基于其他语言类推荐落地方案的尝试。 这篇文章中描述的方式不一定是好方式,但应该会有一定的启示作用…

深入剖析 Git 对象底层原理

一、引言 在我们日常使用 Git 时,通常的操作是: 在写完一段代码后,执行 git add命令,将这段代码添加到暂存区中然后再执行 git commit和 git push 命令,将 本地 Git 版本库中的提交同步到服务器中的版本库中 Git 在…

Three.js 学习笔记之模型(学习中1.17更新)

文章目录 模型 几何体 材质模型点模型Points - 用于显示点线模型Line | LineLoop | LineSegments网格模型mesh - 三角形 几何体BufferGeometry缓冲类型几何体BufferGeometry - 没有任何形状的空几何体创建几何体的方式BufferAttribute Types定义顶点法线 geometry.attributes…

Maven工程 — 继承与聚合 相关知识点详解

简介:这篇帖子主要讲解Maven工程中的继承与聚合的相关知识点,用简洁的语言和小编自己的理解,深入浅出的说明Maven工程的继承与聚合。 目录 1、继承 1.1 继承关系的实现 1.2 版本锁定 2、聚合 2.1 聚合方法 3、总结 1、继承 图 1-1 继承…

2018年认证杯SPSSPRO杯数学建模C题(第一阶段)机械零件加工过程中的位置识别全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 基于轮廓特征的机械零件位置识别研究 C题 机械零件加工过程中的位置识别 原题再现: 在工业制造自动生产线中,在装夹、包装等工序中需要根据图像处理利用计算机自动智能识别零件位置,并由机械手将零件自动搬…

[go语言]输入输出

目录 知识结构 输入 1.Scan ​编辑 2.Scanf 3.Scanln 4.os.Stdin --标准输入,从键盘输入 输出 1.Print 2.Printf 3.Println 知识结构 输入 为了展示集中输入的区别,将直接进行代码演示。 三者区别的结论:Scanf格式化输入&#x…

ElasticSearch(1):Elastic Stack简介

1 简介 ELK是一个免费开源的日志分析架构技术栈总称,官网https://www.elastic.co/cn。包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据搜索、分析和收集的场景&#xf…

MySQL中根据出生日期计算年龄

创建student表 mysql> create table student( -> sid int primary key comment 学生号, -> sname varchar(20) comm…

Android Studio由于开启代理无法下载依赖,一直在Build model

一、问题描述 正常打开AS项目,一直显示Build model就是不下载依赖 二、问题解决 1、首先选择No Proxy,可以看到这位同学之前是使用的代理。 2、打开下面文件,然后删除某尾的4行。 3、面对提示框,直接点击OK。 4、然后停…

IIS 缓存, 更新后前端资源不能更新问题

解决办法: 通常只需要index.html 不缓存即可, 其他文件都是根据index.html 中的引用去加载; 正确的做法是在 站点下增加 web.config 文件, 内容如下: 我这个是因为目录下有个config.js 配置文件, 也不能缓存, 所以加了两个 <?xml version"1.0" encoding&quo…

基于Python flask的猫眼电影票房数据分析可视化系统,可以定制可视化

技术方案 猫眼电影票房数据分析可视化系统是基于Python Flask框架开发的一款用于分析和展示猫眼电影票房数据的Web应用程序。该系统利用Flask提供了一个简单而强大的后端框架&#xff0c;结合Request库进行网络爬虫获取猫眼电影票房数据&#xff0c;并使用Pyecharts进行可视化…

消息中间件面试题

目录 一.为什么使用消息队列 二.RabbitMQ 1.RabbitMQ如何保证消息不丢失 2.RabbitMQ消息的重复消费问题 3.RabbitMQ延迟队列 4.RabbitMQ消息堆积 5.RabbitMQ高可用机制 三.Kafka 1.Kafka如何保证消息不丢失 2.Kafka如何保证消费消息的顺序性 3.Kafka高可用机制 4.Ka…

黑马程序员——javase基础——day05——面向对象基础

目录&#xff1a; 面向对象 面向对象介绍为什么要用面向对象编程面向对象.重点学习什么?类和对象 什么是类什么是对象对象的属性和行为类的定义对象的使用学生类的定义和使用对象内存图 Java内存分配单个对象多个对象思考&#xff1a;多个引用指向相同成员变量和局部变量的区…

未来能源转型之路:2023年第十三届中国国际储能大会启示录

在2023年第十三届中国国际储能大会上&#xff0c;全球各地的能源专家、学者和企业代表齐聚一堂&#xff0c;共同探讨了储能技术在推动能源转型中的重要作用。对于我们普通人来说&#xff0c;从这场大会中可以学到什么呢&#xff1f; 一、储能技术是未来能源发展的关键 随着可再…

html+js网页连接MQTT服务器new Paho.MQTT.Client

网页完整代码示例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible&quo…

YOLOv5改进 | 检测头篇 | 利用DynamicHead增加辅助检测头进行针对性检测(让小目标无所遁形)

一、本文介绍 本文给大家带来的改进机制是针对性的改进,针对于小目标检测增加P2层,利用DynamicHead(原版本一比一复现,全网独一份,不同于网上魔改版本)进行检测,其中我们增加P2层其拥有更高的分辨率,这使得模型能够更好地捕捉到小尺寸目标的细节。在这些的基础上配合Dyn…

基于springboot+vue的社区团购系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

人工智能 AI 如何让我们的生活更加便利

每个人都可以从新技术中获益&#xff0c;一想到工作或生活更为便利、简捷且拥有更多空余时间&#xff0c;谁会不为之高兴呢&#xff1f;借助人工智能&#xff0c;每天能够多一些空余时间&#xff0c;或丰富自己的业余生活&#xff0c;为培养日常兴趣爱好增添一点便利。从电子阅…

微信小程序(六)tabBar的使用

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1. 标签栏文字的内容以及默认与选中颜色 2. 标签栏图标的默认样式与选中样式 3. 标签选项路径页面 4.标签栏背景颜色 &#x1f43c;&#xff08;文末补充&#xff09;设置标签栏后为什么navigator标签无法跳转页面了 温…