当前位置: 首页 > news >正文

TCP/IP(二十二)TCP 实战抓包分析(六)TCP 快速建立连接

一  TCP Fast Open 快速建立连接

说明: 之前讲解'TCP 相关知识点'遗漏了这个'知识点',补充上

①  TFO简介

②  请求 Fast Open Cookie过程

++++++++++++  "原理图"  ++++++++++++

③  真正开始 TCP Fast Open

重点: 'TFO' 使 'SYN包' 可以包含'payload 数据'

④  抓包分析

1、Linux 上快速打开是'默认关闭'的,需要'先开启 TFO' --> '客户端'和'服务端'都开启echo 3 > /proc/sys/net/ipv4/tcp_fastopen思考: 如何让'快速连接' Cookie的'进快'过期 --> '设置为0',再'请求一次'即可2、nginx 来'充当'服务器,修改 nginx 配置'listen 80 fastopen=256;',使之支持 TFO知识点: 在nginx '1.5.8' 版本以及之后,'listen 指令'开始支持 'fastopen' 参数

3、服务端'抓包'tcpdump -nni br0 tcp and host 172.25.2.157 -w tcp_fast_open.pcap4、客户端'测试'  curl  --tcp-fastopen -kv nginx.wzj.com/ok知识点: curl '7.42.0+'后才'支持' TFO 选项 '--tcp-fastopen'

实验1: 第一次:'请求 Fast Open Cookie' 抓包分析

说明: 实验'1' 的第'1'个 SYN 包:wireshark 有标记 'TFO=R',看下这个包的 'TCP 首部'特点: 这个首部包含了 TCP Fast Open 选项,但是 Cookie 为'空',表示向服务器请求新的Cookie

说明: 实验 '1' 的第 '2' 个包是 'SYN + ACK' 包,wireshark 标记为TFO=C备注: 这个包的'首部'如下图'所示':补充: 服务器已经生产了一个值为 "df8f286592b0187c" 的 Cookie

说明: 实验 '1' 的第'3'个包是'客户端' 对服务器的 'SYN 包'的'确认'包小结: 到此三次握手完成,这个过程跟'无 TFO 三次握手'唯一的'不同点'--> 就在于 Cookie 的请求和返回后面的几个包就是'正常'的'数据传输'和'四次挥手'断开连接了
实验2: '第二次':'真正的快速打开' 抓包分析

第 1 个包就很'亮瞎眼',wireshark 把这个包识别为了 'HTTP 包','展开头部'看一下

需求: '显示'当TFO密钥cat /proc/sys/net/ipv4/tcp_fastopen_key遗留: 系统为什么'默认'没有开启'TFO'快速连接?备注: 'mac' 默认情况下已经'支持TFO'在TFO的'问题': 1、如伪造TFO SYN攻击 '通过DHCP及NAT、Moles获取有效的Cookies'2、这种场景下,Server资源会'被攻击耗尽'

TFO 系统知识点汇总   TFO的安全性

二  TCP 快速建立连接

①   常规的TCP三次握手过程

1、RTT '往返'时间 Round-trip Time 含义说明: 一个'TCP数据包'从源端'发送'到接收端,源端收到接收端'确认'的时间'间隔'2、怎么'简单'的看一下RTT是多少:说明: ping一下'对端'机器,最后的'time值'其实就是这两台机器的'RTT时间'啦3、 2.5 RTT 是'如何'计算的1.5 RTT(握手) + 1 RTT(数据往返) = 2.5 RTT4、 2 RTT 是'如何'计算的一般来说,比较'积极'的TCP在第三次握手的时候,已经顺便携带了'数据'请求,需要的时间将减小为:1 RTT(握手) + 1 RTT(数据往返) = 2 RTT

高RTT值的网络中,如何提高短连接的传输速度

补充: 客户端发送完'第三次'握手包后,'不再需要'服务端的确认,立即可以'发送'数据

思考: 如何证明'第三次'握手携带了'payload 数据报文'?

验证TCP第三次握手刻意携带数据

思考: 如果第'三次握手包'服务器'没有'收到,就'直接'发送数据,会发生什么?结论:1、如果第三次握手包服务器'没有'收到,就直接'发送'数据2、服务器将这个'携带应用数据'的包当做'第三次'握手原因:直接发送的那个GET请求包中,ACK标记是置位了的,所以服务端就把这个GET包当成了第三次握手了3、前提:这一个包中携带有'ACK'标记

②  快速建立连接

说明: 注意'演进'的过程TCP Fast Open 的'优势': 一个最显著的优点是可以利用'握手'去除一个'往返 RTT'特点: 在开启 TCP Fast Open以后,从'第二次请'求开始,就可以在'一个RTT'时间拿到'响应'的数据

++++++++++++  "原理描述"  ++++++++++++使用TCP 快速打开 'TCP Fast Open, TFO',尽可能'降低'握手对'网络延迟'的影响

③  在 Linux 上如何打开 Fast Open 功能?

注意: Fast Open 功能是'3.7+'内核引入的内核参数: 'tcp_fastopen'

④  TFO 抓包分析

DDOS:  耗光'内存'从而'拒绝'服务

相关文章:

TCP/IP(二十二)TCP 实战抓包分析(六)TCP 快速建立连接

一 TCP Fast Open 快速建立连接 说明: 之前讲解TCP 相关知识点遗漏了这个知识点,补充上 ① TFO简介 ② 请求 Fast Open Cookie过程 "原理图" ③ 真正开始 TCP Fast Open 重点: TFO 使 SYN包 可以包含payload 数据 ④ 抓包分析 1、…...

IDEA如何拉取gitee项目?

1.登录gitee 说明:打开idea,在设置上面搜索框输入gitee,然后登录gitee注册的账号。 2. 创建gitee仓库 说明:创建idea中的gitee仓库。 3.寻找项目文件 说明:为需要添加gitee仓库的项目进行添加。 4.项目右键 说明&a…...

视频编辑不求人,教你一招制胜批量添加封面

视频添加封面是一个相当简单的任务,您只需要一款专门的软件,就能轻松搞定!下面就是详细教程啦! 首先,您需要在浏览器中搜索“固乔智剪软件”,进入官网并下载这款软件。固乔智剪软件是一款非常专业的视频剪辑…...

产品的竞争力是什么

产品的竞争力归根到底是3点:功能,性能,容量。 功能 我这个产品完成了别人没有实现的功能,而且是用户需要的。解决了客户的痛点 性能 我这个产品的功能虽然别人有,但是我性能好,性能好意味着干同样的活给…...

vue3 拖拽插件 Vue3DraggableResizable

Vue3DraggableResizable 拖拽插件的官方文档 一、Vue3DraggableResizable 的属性和事件 1、Vue3DraggableResizable 的属性配置 属性类型默认值功能描述示例initWNumbernull设置初始宽度&#xff08;px&#xff09;<Vue3DraggableResizable :initW“100” />initHNumb…...

VUE父组件向子组件传递数据和方法

文章目录 1 父组件写法2 子组件写法 1 父组件写法 父组件参数和方法 data() {return {// 遮罩层loading: true,// 表格数据yfeList: []}}导入组件 import yfTable from "/views/yf/yfTable.vue";组件 components: {yfTabTable},传值使用 <yfTabTable :loadin…...

NPI加速器在烽火科技SMT车间的应用:贴片机程序制作效率的革新

烽火科技&#xff0c;一个在国内颇具知名度的高科技企业&#xff0c;坐落于武汉光谷的SMT车间中&#xff0c;机器嗡嗡作响&#xff0c;作业员们忙碌地进行着生产。工厂使用的是ASM的贴片机&#xff0c;使用Sipalce Pro作为其编程软件。然而&#xff0c;在高效的生产线背后&…...

如何给照片添加水印?请看下面3个简单教程

如何给照片添加水印&#xff1f;随着智能手机的普及和不断提升的拍摄技术&#xff0c;如今人们可以轻松使用手机进行高质量的照片拍摄。从老人到小孩&#xff0c;每个人都可以在日常生活中捕捉到美好瞬间&#xff0c;并将其记录下来。作为一种表达自己的方式&#xff0c;现在手…...

仿写知乎日报第一周

效果图 主要的逻辑 Manager封装网络请求 首先&#xff0c;对于获取网络请求&#xff0c;我是将这些方法封装成了一个类Manager&#xff0c;后续在获取以往的内容时又封装了一个beforeManager类用于网络请求。这里不多赘述&#xff0c;Manager封装网络请求的知识参考我的以往博…...

32二叉树——DFS深度优先遍历

目录 深度优先算法&#xff08;Depth-First Search&#xff0c;DFS&#xff09; LeetCode之路——102. 二叉树的层序遍历 分析 深度优先算法&#xff08;Depth-First Search&#xff0c;DFS&#xff09; DFS是一种用于遍历或搜索树状数据结构的算法&#xff0c;其中它首先探…...

华为昇腾NPU卡 ChatGLM2模型使用

参考&#xff1a;https://gitee.com/mindspore/mindformers/blob/dev/docs/model_cards/glm2.md#chatglm2-6b 1、安装环境&#xff1a; 昇腾NPU卡对应英伟达GPU卡&#xff0c;CANN对应CUDA底层&#xff1b; mindspore对应pytorch&#xff1b;mindformers对应transformers 本…...

【机器学习】集成模型/集成学习:多个模型相结合实现更好的预测

1. 概述 1.1 什么是集成模型/集成学习 "模型集成"和"集成学习"是相同的概念。它们都指的是将多个机器学习模型组合在一起&#xff0c;以提高预测的准确性和稳定性的技术。通过结合多个模型的预测结果&#xff0c;集成学习可以减少单个模型的偏差和方差&am…...

如何提高广告投放转化率?Share Creators 资产库与Appsflyer营销数据的全面结合

如何提高广告投放转化率&#xff1f;Share Creators 资产库与Appsflyer营销数据的全面结合 全球经济进入了低迷期。 营销成本越来越高&#xff0c; 营销需要更务实&#xff0c;注重投入产出比。众所周知&#xff0c;除了渠道、客群画像以外&#xff0c; 优秀的广告设计图&#…...

《软件方法》2023版第1章(11)1.4.3 具体工作步骤

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.4 应用UML的建模工作流 1.4.3 使用UML建模的工作流步骤 图1-17中“工件形式”一列所列出的图就是本书推荐的在建模工作流ABCD中的UML用法&#xff0c;我用活动图进一步表示建模的步…...

git将当前分支A强制推送远程分支pro上

前言 开发中基于线上分支pro创建了A分支&#xff0c;开发完成之后。又基于线上分支pro创建了B分支&#xff0c;都以此合并到测试分支&#xff0c;两个分支更改中都动用部分共同的文件&#xff0c;这就导致后续开发合并代码越来越乱&#xff0c;这时你想把本地开发的分支强推到…...

【计算机基础】存储器

目录 一.概念二.分类1&#xff0e;按存储介质分类2&#xff0e;按存储方式分类3&#xff0e;按存储器的读写功能分类4&#xff0e;按信息的可保存性分类5&#xff0e;按在计算机系统中的作用分类 三.主存区分SRAM、DRAM、Flash、DDR1.SRAM&#xff08;静态随机存储器&#xff0…...

【LCR 159. 库存管理 III】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int getrandom(int left,int right,vector<int>& stock){return stock[rand()%(right-left1)left];}void qsort(int l,int r,vector<int>& s…...

Android ADB 常见问题和注意事项

Android ADB 常见问题和注意事项 在使用 ADB 过程中&#xff0c;可能会遇到一些常见问题和需要注意的事项&#xff1a; 1. USB 调试 要使用 ADB&#xff0c;你需要在设备上启用 USB 调试模式。这通常在设备的开发者选项中设置。如果你不能看到开发者选项&#xff0c;可以在设…...

TCP/IP五元组

什么是五元组规则&#xff1f; 五元组是通信术语&#xff0c;英文名称为five-tuple,或5-tuple&#xff0c;五元组包括源IP地址(source IP)、源端口(source port)、目的IP地址(destination IP)、目的端口(destination port) 和 传输层协议(the layer 4 protocol)的五个量集合。…...

aiohttp ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] 错误处理

这个问题原因吧其实就是3.10 开始官网更新了TLS 堆栈默认安全设置 感兴趣的可以看下链接 python官网叙述: Python 3.10 增加了 TLS 堆栈的默认安全设置 解决也很简单&#xff0c;将ssl安全等级降下来就行&#xff0c;例如&#xff1a; import ssl import aiohttp ctx ssl.cr…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...