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:  耗光'内存'从而'拒绝'服务

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

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

相关文章

AD20原理图库的制作

1、打开“51单片机最小系统”的工程文件。 2、创建原理图库文件:单击“文件”菜单,选择“新的”选项中的“库”选项,再选择“原理图库”,进入原理图库元件的编辑界面。 3、保存原理图库文件:选择“文件”菜单&#xff…

CPU飙高问题排查命令

1. 远程客户端连接服务器,top命令查看cpu占用最高的进程id 2. (top -H -p 进程pid) 命令: 找出进程里面线程占用CPU高的线程有哪些 ? 3. (printf 0x%x\n 线程id) 线程id转16进制 4. (./jstack PID | grep TID(十六进制) -A 30)

设计模式之建造者模式

什么是建造者模式 建造者模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。这种模式将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 举一个简单的例子:假设我们要创建一个复杂的对象,例如一…

vscode摸鱼插件开发

不知道大家在写代码的时候,摸不摸鱼,是不是时不时得打开一下微博,看看今天发生了什么大事,又有谁塌房,而你没有及时赶上。 为此,我决定开发一个vscode插件,来查看微博热搜 插件名称&#xff1…

influxDB学习记录

一、官网 influxdb官方英文文档:https://docs.influxdata.com/influxdb/v1.8/query_language/spec/influxdb中文文档:https://jasper-zhang1.gitbooks.io/influxdb/content/ 二、centos安装与基本配置 influxdb安装与基本配置(centos) 三…

论文阅读[51]通过深度学习快速识别荧光组分

【论文基本信息】 标题:Fast identification of fluorescent components in three-dimensional excitation-emission matrix fluorescence spectra via deep learning 标题译名:通过深度学习快速识别 三维激发-发射矩阵荧光光谱中的荧光组分 期刊与年份&…

【量化交易笔记】10.建立最简单的交易策略

概述 量化说得简单一些用策略进行股票交易,在实施交易之前,需要制定策略,并回测试共效果 为了把交易说明清楚,将这个过程,能简单,就简单,总之,简单,简单再简单。 以下主…

unity NPR 卡通渲染

文章目录 一、 介绍二、 素材准备三、 步骤四、 shader代码五、工程链接 一、 介绍 NPR是计算机图形学中的一类,即非真实感绘制(Non-photorealistic rendering),主要用于模拟艺术式的绘制风格,也用于发展新绘制风格,形式一般是卡…

冰蝎默认加密的流量解密

破解冰蝎的默认加密 流量包分析 上传的冰蝎流量包 POST /web-zh/DVWA/vulnerabilities/upload/ HTTP/1.1 Host: 192.168.197.111 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0 Accept: text/html,application/xhtmlxml,a…

vscode调试container(进行rocksdb调试)+vscode比较git项目不同分支和fork的哪个分支

vscode调试container(进行rocksdb调试) 参考链接: https://blog.csdn.net/qq_29809823/article/details/128445308#t5 https://blog.csdn.net/qq_29809823/article/details/121978762#t7 使用vscode中的插件dev containners->点击左侧的…

【微信小程序开发】小程序微信用户授权登录(用户信息手机号)

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于小程序的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 授权流程讲解 一.用户信息授权登录 1.w…

MD-MTSP:粒子群优化算法PSO求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、多仓库多旅行商问题MD-MTSP 多旅行商问题(Multiple Traveling Salesman Problem, MTSP)是著名的旅行商问题(Traveling Salesman Problem, TSP)的延伸,多旅行商问题定义为:给定一个𝑛座城市…

LabVIEW中管理大型数据

LabVIEW中管理大数据 LabVIEW的最大优势之一是自动内存管理。这种内存管理允许用户轻松创建字符串、数组和集群,而无需C/C用户经常担心。但是,这种内存管理设计为绝对安全,因此数据被非常频繁地复制。这通常不会造成任何问题,但是…

vue3 列表页开发【选择展示列】功能

目录 背景描述: 开发流程: 详细开发流程: 总结: 背景描述: 这个功能是基于之前写的 封装列表页 的功能继续写的,加了一个选择展示列的功能,可以随时控制表格里展示那些列的数据&#xf…

深度强化学习 第 4 章 DQN 与 Q 学习

4.1 DQN 最优动作价值函数的用途 假如我们知道 Q ⋆ Q_⋆ Q⋆​,我们就能用它做控制。 我们希望知道 Q ⋆ Q_⋆ Q⋆​,因为它就像是先知一般,可以预见未来,在 t t t 时刻就预见 t t t 到 n n n时刻之间的累计奖励的期望。假如…

5G来临,迎客莱带你探索运营商大数据的应用

随着5G时代的来临,不仅在算力的基础上得到了加强和保障,同时也丰富了计算的方式和模式,如边缘计算、霾计算等。计算方式和模式的改变,对于运营商来说,意味着更丰富的数据维度,更鲜活的数据和更强大的数据处…

无人机航拍图像拼接与目标识别

一、简介 无人机用来做图像侦察是常见功能,现有技术基本是无人机对某片区域进行飞行,人工实时监控飞行图像,将图像录制成视频供事后回放。此方法对人员业务要求比较高、反应速度足够快、不利于信息收集、录制视频丢失空间信息、对于后期开展区…

Qt判断一个点在多边形内还是外(支持凸边形和凹变形)

这里实现的方法是转载于https://blog.csdn.net/trj14/article/details/43190653和https://blog.csdn.net/WilliamSun0122/article/details/77994526 来实现的,并且按照Qt的规则进行了调整。 以下实现方法有四种,每种方法的具体讲解在转载的博客中有说明&…

Python之爬虫

目录 HTTP请求HTTP响应获得页面响应伪装用户访问打包数据爬取豆瓣top250 HTTP请求 HTTP:HypertextTransferProtcol 超文本传输协议 1、请求行 POST/user/info?new_usertrue HTTP/1.1#资源了路径user/info 查询参数new_usertrue 协议版本HTTP/1.1 2、请求头 Ho…

element ui 下拉框 选择月份和天数

一、背景 目前做的管理系统项目&#xff0c;期望实现功能为&#xff1a;设置出账周期和出账日&#xff0c;考虑使用element ui下拉框实现功能 二、所用技术 vue2element ui 三、实现效果 四、具体代码 <template><popup-frame :title"批量设置出账日" …