TCP初始化序列号为什么要不一样

ops/2025/2/24 11:08:26/

区分不同的连接(包括一些历史连接)、确保数据的顺序性、防止重放攻击(时间戳)

初始化序列号 ISN = M + F(localhost, localport, remotehost, remoteport)。

  • M是一个32位的计时器,这个计时器每隔 4 微秒加1,循环一次4.55小时
  • F 是一个 Hash 算法,根据源IP、目的IP、源端口、目的端口生成一个随机数值,要保证 hash 算法不能被外部轻易推算得出。

这样的算法会让初始化序列号以增长的方式生成,即使这样,当序列号快速回绕,仍然有可能出现问题

为了解决这个问题,就需要TCP时间戳,tcp_timestamps默认开启,开启后,TCP头部就会使用时间戳,便于精确计算RTT并防止序列号回绕

防回绕序列号算法要求连接双方维护最近一次收到的数据包的时间戳(Recent TSval),每收到一个新数据包都会读取数据包中的时间戳值跟 Recent TSval 值做比较,如果发现收到的数据包中时间戳不是递增的,则表示该数据包是过期的,就会直接丢弃这个数据包


http://www.ppmy.cn/ops/160956.html

相关文章

Linux 内核中关于 CPU 编号和拓扑管理

CPU 拓扑结构定义 // topology.h struct cpu_topology {int thread_id; // SMT IDint core_id; // 核心 IDint package_id; // 物理 CPU IDint die_id; // Die IDcpumask_t thread_sibling; // SMT 线程掩码cpumask_t core_sibling; // 核心掩码 };CPU 在线…

ArcGIS Pro中等高线的生成与应用详解

在地理信息科学与空间数据分析领域,等高线作为一种重要的地形表达方式,扮演着至关重要的角色。 无论是在地图制图、城市规划,还是在自然资源管理等诸多方面,等高线都为我们提供了丰富的地形信息。 而ArcGIS Pro作为一款功能强大…

【Java项目】基于SpringBoot的【高校校园点餐系统】

【Java项目】基于SpringBoot的【高校校园点餐系统】 技术简介:采用Java技术、MySQL数据库、B/S结构实现。 系统简介:高校校园点餐系统是一个面向高校师生的在线点餐平台,主要分为前台和后台两大模块。前台功能模块包括(1&#xff…

MySQL日志undo log、redo log和binlog详解

MySQL 日志:undo log、redo log、binlog 有什么用? 一、前言 在MySQL数据库中,undo log、redo log和binlog这三种日志扮演着至关重要的角色,它们各自承担着不同的功能,共同保障了数据库的正常运行和数据的完整性。了解…

使用Socket编写超牛的http服务器和客户端(二)

客户端 动态扩展连接池、线程池优雅关闭、超时机制、健康检查等功能,并将代码模块化: 文件结构 HTTPClientProject/ ├── ConnectionPool.h ├── ConnectionPool.cpp ├── TaskQueue.h ├── ThreadPool.h ├── main.cpp 工程代码主要分为以下几个模块: Connectio…

vector结构刨析与模拟实现

目录 1.引言 2.C模拟实现 2.1模拟实现构造函数 1)直接构造 2)拷贝构造 3)单一赋值构造 4)迭代器构造 2.2模拟实现析构函数 2.3模拟实现其他常规函数 1)capacity函数 2)size函数 3)b…

10.Docker 仓库管理

Docker 仓库管理 Docker 仓库管理 Docker 仓库管理 Docker 仓库,类似于 yum 仓库,是用来保存镜像的仓库。为了方便的管理和使用 docker 镜像,可以将镜像集中保存至 Docker 仓库中,将制作好的镜像 push 到仓库集中保存,在需要镜像…

Python+Selenium+Pytest+POM自动化测试框架封装

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、测试框架简介 1)测试框架的优点 代码复用率高,如果不使用框架的话,代码会显得很冗余。可以组装日志、报告、邮件等一些高…