计算机网络学习:TCP握手挥手强制连接中断

之前系统学习过TCP协议,但很多地方并不是特别清晰,今天结合抓包情况,再拾一下拾一下>.<
![

首先看一下TCP数据包的标志位:
SYN:简写为S,同步标志位,用于建立会话连接,同步序列号;
ACK: 简写为.,确认标志位,对已接收的数据包进行确认;
FIN: 简写为F,完成标志位,表示我已经没有数据要发送了,即将关闭连接;
PSH:简写为P,推送标志位,表示该数据包被对方接收后应立即交给上层应用,而不在缓冲区排队;
RST:简写为R,重置标志位,用于连接复位、拒绝错误和非法的数据包;
URG:简写为U,紧急标志位,表示数据包的紧急指针域有效,用来保证连接不被阻断,并督促中间设备尽快处理;
ps:(赋值粘贴自:https://juejin.cn/post/6844904070000410631,写的很详细)

三次握手

第一次握手(SYN):客户端向服务器发送一个 SYN(Synchronize)报文段,用来请求建立连接。该报文段包含客户端的初始序列号 ISN©。

客户端 --> 服务器: SYN=1, Seq=ISN©=80830526

192.168.1.7.36268 > 192.168.1.9.22: Flags [S], cksum 0x01dc (correct), seq 80830526, win 62440, options [mss 4460,sackOK,TS val 3708280593 ecr 0,nop,wscale 7], length 0

第二次握手(SYN-ACK):服务器收到 SYN 报文后,返回一个 SYN-ACK 报文,表示同意建立连接,并向客户端发送自己的初始序列号 ISN(s)。ACK 字段确认了客户端的 ISN。

服务器 --> 客户端: SYN=1, ACK=1, Seq=ISN(s)=1265140446, Ack=ISN©+1=80830527

192.168.1.9.22 > 192.168.1.7.36268: Flags [S.], cksum 0x97c6 (incorrect -> 0x6c95), seq 1265140446, ack 80830527, win 62970, options [mss 4210,sackOK,TS val 591110811 ecr 3708280593,nop,wscale 7], length 0

第三次握手(ACK):客户端收到服务器的 SYN-ACK 报文后,发送一个确认报文段 ACK,确认服务器的 ISN,表示连接建立成功。

客户端 --> 服务器: ACK=1, Seq=ISN©+1, Ack=ISN(s)+1,二者均被tcpdump转换为了相对序列号:1

192.168.1.7.36268 > 192.168.1.9.22: Flags [.], cksum 0x9a32 (correct), seq 1, ack 1, win 488, options [nop,nop,TS val 3708280593 ecr 591110811], length 0

完整的三次握手过程见:

13:21:19.951917 00:00:00:00:01:01 > 00:00:00:00:01:02, ethertype IPv4 (0x0800), length 74: (tos 0x10, ttl 63, id 13722, offset 0, flags [DF], proto TCP (6), length 60)192.168.1.7.36268 > 192.168.1.9.22: Flags [S], cksum 0x01dc (correct), seq 80830526, win 62440, options [mss 4460,sackOK,TS val 3708280593 ecr 0,nop,wscale 7], length 0
13:21:19.951973 00:00:00:00:01:02 > 00:00:00:00:01:01, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)192.168.1.9.22 > 192.168.1.7.36268: Flags [S.], cksum 0x97c6 (incorrect -> 0x6c95), seq 1265140446, ack 80830527, win 62970, options [mss 4210,sackOK,TS val 591110811 ecr 3708280593,nop,wscale 7], length 0
13:21:19.952050 00:00:00:00:01:01 > 00:00:00:00:01:02, ethertype IPv4 (0x0800), length 66: (tos 0x10, ttl 63, id 13723, offset 0, flags [DF], proto TCP (6), length 52)192.168.1.7.36268 > 192.168.1.9.22: Flags [.], cksum 0x9a32 (correct), seq 1, ack 1, win 488, options [nop,nop,TS val 3708280593 ecr 591110811], length 0

三次握手的协商:在三次握手过程中,双方会协商一些关键参数,例如初始序列号(ISN),窗口大小(Window Size),以及一些 TCP 选项(如最大报文段长度 MSS)。这些参数的协商确保了后续的数据传输可以顺利进行。我们仔细看下刚才三次握手过程中,客服端服务端协商的信息:

  • 窗口大小 窗口大小(Window Size),表示接收方愿意接收的字节数,通常用于流量控制。

  • mss 4210: 最大报文段大小(Maximum Segment Size),表示单个 TCP 段允许的最大数据量,这里是 4210 字节。

  • sackOK: 选择性确认(Selective Acknowledgment)允许,表示接收方支持 SACK 选项,允许更有效地处理丢失的数据包。

  • TS val 591110811: 时间戳(Timestamp)值,用于 RTT 测量和防止序列号重用攻击。

  • ecr 3708280593: 时间戳回显回复(Echo Reply),表示时间戳的回复值,用于对方确认 RTT。

  • nop: No Operation,用于对齐 TCP 选项字段。

  • wscale 7: 窗口扩大因子(Window Scale),是一个用于扩大窗口大小的因子。这里的因子是 7,即窗口大小可以乘以 2^7。

传输过程

拓扑:192.168.1.7 ·············> 192.168.1.9
传输过程中,比较简单,通信双方分别确认对方的数据报文序列号

15:43:11.911729 IP 192.168.1.7.60704 > 192.168.1.9.ssh: Flags [P.], seq 33:1545, ack 43, win 502, options [nop,nop,TS val 531487780 ecr 3452696654], length 1512
15:43:11.911774 IP 192.168.1.9.ssh > 192.168.1.7.60704: Flags [P.], seq 43:1155, ack 1545, win 501, options [nop,nop,TS val 3452696655 ecr 531487780], length 1112
15:43:11.911839 IP 192.168.1.7.60704 > 192.168.1.9.ssh: Flags [.], ack 1155, win 501, options [nop,nop,TS val 531487780 ecr 3452696655], length 0
15:43:11.917012 IP 192.168.1.7.60704 > 192.168.1.9.ssh: Flags [P.], seq 1545:1593, ack 1155, win 501, options [nop,nop,TS val 531487785 ecr 3452696655], length 48
15:43:11.919997 IP 192.168.1.9.ssh > 192.168.1.7.60704: Flags [P.], seq 1155:1751, ack 1593, win 501, options [nop,nop,TS val 3452696663 ecr 531487785], length 596
15:43:11.920055 IP 192.168.1.7.60704 > 192.168.1.9.ssh: Flags [.], ack 1751, win 501, options [nop,nop,TS val 531487788 ecr 3452696663], length 0

四次挥手

截取了四次挥手的过程,如下:

16:00:35.625181 IP 192.168.1.7.60706 > 192.168.1.9.ssh: Flags [F.], seq 3361, ack 4015, win 501, options [nop,nop,TS val 532531491 ecr 3453740368], length 0
16:00:35.626116 IP 192.168.1.9.ssh > 192.168.1.7.60706: Flags [F.], seq 4015, ack 3362, win 501, options [nop,nop,TS val 3453740370 ecr 532531491], length 0
16:00:35.626173 IP 192.168.1.7.60706 > 192.168.1.9.ssh: Flags [.], ack 4016, win 501, options [nop,nop,TS val 532531492 ecr 3453740370], length 0

客户端 192.168.1.7 通过发送 FIN 数据包请求关闭连接。
服务器 192.168.1.9 确认了客户端的请求,并发送了自己的 FIN 请求,表示它也准备关闭连接。
客户端最后发送一个 ACK 数据包,确认服务器的 FIN 请求,至此连接关闭。

虽然这个过程可以用三个报文来表示,但它仍然遵循四次挥手的逻辑。特别是在服务器发送的第二个报文中,FIN 和 ACK 是同时发送的,所以看起来像是三次通信,但实际上包含了四次挥手的全部内容。

RST强制中断

发送 RST 报文是强制关闭 TCP 连接的方式,直接中断连接而不进行四次挥手的正常关闭过程。这种方法用于快速和直接地终止连接,通常在出现错误或异常情况下使用。比如连接超时、程序异常终止等。其行为如下:

  • 立即终止连接:RST 报文会立即终止连接,无论连接的状态如何。发送 RST 报文的一方(可以是客户端也可以是服务端)将直接通知对方,表示连接不能再继续进行。

  • 不进行四次挥手:与正常关闭连接时的四次挥手不同,RST 报文不需要等待确认,也不会进行正常的连接关闭过程。RST 报文会立即中断数据传输,并且不进行数据的有序释放。

  • 丢失未发送数据:由于 RST 报文强制关闭连接,任何在连接中尚未发送的数据都会被丢失。

尝试使用如下命令构造了RST报文的场景

apt install dsniff # 安装tcpkill
# 如果有从eth0 到192.168.1.9的连接就中断掉
tcpkill -i eth0 host 192.168.1.9
# 尝试和192.168.1.9建立连接
telnet 192.168.1.9 22

抓包来看

16:42:32.176289 IP 192.168.1.7.60722 > 192.168.1.9.ssh: Flags [S], seq 1907790919, win 64240, options [mss 1460,sackOK,TS val 535048037 ecr 0,nop,wscale 7], length 0
16:42:32.176301 IP 192.168.1.9.ssh > 192.168.1.7.60722: Flags [S.], seq 3539316215, ack 1907790920, win 65160, options [mss 1460,sackOK,TS val 3456256920 ecr 535048037,nop,wscale 7], length 0
16:42:32.176402 IP 192.168.1.7.60722 > 192.168.1.9.ssh: Flags [.], ack 1, win 502, options [nop,nop,TS val 535048037 ecr 3456256920], length 0
16:42:32.182200 IP 192.168.1.9.ssh > 192.168.1.7.60722: Flags [P.], seq 1:43, ack 1, win 510, options [nop,nop,TS val 3456256926 ecr 535048037], length 42: SSH: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.10
16:42:32.182267 IP 192.168.1.7.60722 > 192.168.1.9.ssh: Flags [.], ack 43, win 502, options [nop,nop,TS val 535048043 ecr 3456256926], length 0
16:42:32.348727 IP 192.168.1.7.60722 > 192.168.1.9.ssh: Flags [.], ack 43, win 502, options [nop,nop,TS val 535048210 ecr 3456256926], length 0
16:42:32.348836 IP 192.168.1.7.60722 > 192.168.1.9.ssh: Flags [R], seq 1907790920, win 0, length 0
16:42:32.348836 IP 192.168.1.7.60722 > 192.168.1.9.ssh: Flags [R], seq 1907791430, win 0, length 0
16:42:32.348836 IP 192.168.1.7.60722 > 192.168.1.9.ssh: Flags [R], seq 1907792450, win 0, length 0

telnet尝试和192.168.1.9建立连接,但是连接建立完成后,客户端直接发送RST报文,强制终止了连接,期间并发生四次挥手。

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

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

相关文章

Vue3 + cropper 实现裁剪头像的功能(裁剪效果可实时预览、预览图可下载、预览图可上传到SpringBoot后端、附完整的示例代码和源代码)

文章目录 0. 前言1. 裁剪效果&#xff08;可实时预览&#xff09;2. 安装 cropper3. 引入 Vue Cropper3.1 局部引入&#xff08;推荐使用&#xff09;3.2 全局引入 4. 在代码中使用4.1 template部分4.2 script部分 5. 注意事项6. SpringBoot 后端接收图片6.1 UserController.ja…

2024年8月AI内容生成技术的现状与未来:从文生文到跨模态交互的全景分析

2024年8月AI内容生成技术的现状与未来&#xff1a;从文生文到跨模态交互的全景分析 大家好&#xff0c;我是猫头虎&#xff01;&#x1f680; 随着AI在内容生成领域的爆发式发展&#xff0c;从2022年末开始&#xff0c;AI生成技术已经走过了文生文&#xff08;AIGC&#xff09…

空气净化器对去除宠物毛有效吗?小型猫毛空气净化器使用感受

作为一个养猫多年的猫奴&#xff0c;家里有两只可爱的小猫咪&#xff1a;小白和小花。虽然相处起来很开心&#xff0c;但也给生活带来了一些小麻烦。谁懂啊&#xff0c;我真的受够了&#xff0c;每天都在粘毛。猫窝的猫毛一周不清理就要堆成山&#xff0c;空气中也全是浮毛&…

使用 Kibana 和 Vega 构建高级可视化

作者&#xff1a;来自 Carly Richmond 为了解释在 Kibana 中构建 Vega 可视化的基础知识&#xff0c;我将使用此 GitHub 存储库中的 2 个示例。具体来说&#xff0c;我将介绍&#xff1a; 使用 Elasticsearch 聚合进行数据采购轴和标记事件和信号&#xff08;例如工具提示和更…

计算机基本理论与程序运行原理概述

目录 计算机的基本表示方法 计算机的组成 程序运行的原理 指令执行的流水线 编译原理 个人理解 面试题总结 计算机的基本表示方法 计算机系统使用高、低电平来表示逻辑1和0。数据在计算机中的存储、传输和处理均以二进制形式进行。数据通过总线作为电信号进行传输&…

决策树总结

决策树是什么&#xff1f;决策树(decision tree)是一种基本的分类与回归方法。举个通俗易懂的例子&#xff0c;如下图所示的流程图就是一个决策树&#xff0c;长方形代表判断模块(decision block)&#xff0c;椭圆形成代表终止模块(terminating block)&#xff0c;表示已经得出…

用于仅摄像头闭环驾驶的视觉语言模型

CarLLaVA: Vision language models for camera-only closed-loop driving 用于仅摄像头闭环驾驶的视觉语言模型 Abstract In this technical report, we present CarLLaVA, a Vision Language Model (VLM) for autonomous driving, developed for the CARLA Autonomous Driv…

kafka从浅入深

一、什么是kafka&#xff1f; kafka本质上是一个消息队列MQ&#xff08;Message Queue&#xff09;&#xff0c;用做数据流转。 1.使用消息队列的好处&#xff1f; 1.1、解耦&#xff1a;允许独立扩展或修改队列两头的处理过程&#xff1b; 1.2、可恢复性&#xff1a;即使一个…

中文网址导航模版HaoWa1.3.1/模版网站wordpress导航主题

HaoWa v1.3.1由挖主题开发的一款网址导航类主题。 HaoWA主题除主体导航列表外&#xff0c;对主题所需的小模块都进行了开放式的HTML编辑器形式的功能配置&#xff0c;同时预留出默认的代码结构&#xff0c;方便大家在现有的代码结构上进行功能调整。 同时加入了字体图标Font …

鸿蒙系统学习指南

&#x1f41f;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢编程&#x1fab4; &#x1f421;&#x1f419;个人主页&#x1f947;&#xff1a;Aic山鱼 &#x1f420;WeChat&#xff1a;z7010cyy &#x1f988;系列专栏&#xff1a;&#x1f3de;️ 前端-JS基础专栏✨前…

【全国大学生电子设计竞赛】2022年F题

&#x1f970;&#x1f970;全国大学生电子设计大赛学习资料专栏已开启&#xff0c;限时免费&#xff0c;速速收藏~

深入理解同城代驾系统源码:技术架构与实现细节

今天&#xff0c;小编将深入讲解同城代驾系统的技术架构与实现细节。 一、同城代驾系统的基本功能模块 一个完整的同城代驾系统通常包括以下核心功能模块&#xff1a; 1.用户端应用 2.司机端应用 3.后台管理系统 4.消息推送与通知 二、技术架构设计 同城代驾系统的技术架…

《Transformer Scale Gate for Semantic Segmentation》CVPR2023

摘要 论文提出了一种名为Transformer Scale Gate&#xff08;TSG&#xff09;的模块&#xff0c;用于优化在语义分割任务中多尺度上下文信息的编码。现有的基于Transformer的分割模型在组合不同尺度的特征时没有进行选择&#xff0c;这可能导致次优尺度的特征降低分割的准确性…

Linux常用命令全

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

吴恩达机器学习C1W2Lab05-使用Scikit-Learn进行线性回归

前言 有一个开源的、商业上可用的机器学习工具包&#xff0c;叫做scikit-learn。这个工具包包含了你将在本课程中使用的许多算法的实现。 目标 在本实验中&#xff0c;你将: 利用scikit-learn实现使用梯度下降的线性回归 工具 您将使用scikit-learn中的函数以及matplotli…

大模型在RPA领域的应用与探索-代码生成

01. 前言 随着人工智能技术的飞速发展&#xff0c;大模型在多个领域的应用日益广泛。特别是在机器人流程自动化&#xff08;RPA&#xff09;领域&#xff0c;这些技术的进步为自动化任务的执行带来了显著的效率提升。然而&#xff0c;传统RPA在任务流程编排上依赖人工编写脚本…

RabbitMQ高级特性 - 事务消息

文章目录 RabbitMQ 事务消息概述实现原理代码实现不采用事务采用事务 RabbitMQ 事务消息 概述 RabbitMQ 的 AMQP 协议实现了事务机制&#xff0c;允许开发者保证消息的发送和接收时原子性的&#xff0c;也就是说&#xff0c;要么消息全都发送成功&#xff0c;要么全都发送失败…

【秋招笔试】24-07-27-OPPO-秋招笔试题(算法岗)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 💡 第一题贪心模拟…

掌握SEO站外推广优化的五大绝招

对于网站运营者和数字营销人员来说&#xff0c;SEO站外推广是提升网站流量和排名的重要手段。以下是五个有效的SEO站外推广优化方法&#xff0c;希望对大家有所帮助。 1. 高质量的外链建设 高质量的外部链接&#xff08;Backlinks&#xff09;是搜索引擎排名的重要因素之一。…

【Docker系列】Docker 镜像管理:删除无标签镜像的技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…