(学习笔记-TCP连接建立)为什么每次建立TCP连接时,初始化的序列号都要求不一样?

news2024/10/5 20:26:18

主要原因有两个方面:

  • 为了防止历史报文被下一个相同的四元组的连接接收(主要)
  • 为了安全性,防止黑客伪造相同序列号的TCP报文被对方接收

展开第一点:

假设每次建立连接,客户端恶核服务端的初始化序列号都是从0开始:

 过程如下:

  • 客户端和服务端建立一个TCP连接,在客户端发送数据包被网络阻塞了,然后超时重传这个数据包,而此时服务端设备断电重启了,之前与客户端建立的连接就消失了,于是在收到客户端的数据包的时候就会发送RST报文。
  • 紧接着,客户端又与服务端建立了与上一个连接相同的四元组连接。
  • 在新连接建立完成后,上一个连接中被网络阻塞的数据包刚好到达了服务端,刚好该数据包的序列号正好是在服务端的接收窗口内,所以该数据包会被服务端正常接收,就会造成数据错误。

 可以看到,如果每次建立连接,客户端和服务端的初始化序列号都是一样的话,很容易出现历史报文被下一个相同四元组的连接接收的问题。

如果每次建立连接客户端和服务端的初始化序列号都不一样,就有大概率因为历史报文的序列号不在对方的接受窗口,从而很大程度上避免了历史报文

 如果每次建立连接客户端与服务端的初始化序列号都一样,就有很大概率遇到历史报文的序列号刚好在对方的接收窗口内,从而导致历史报文被新连接成功接收。


初始序列号ISN是如何随机产生的?

RFC793 提到初始化序列号 ISN 随机生成算法:ISN = M + F(localhost, localport, remotehost, remoteport)。

  • M是一个计时器,这个计时器每隔4微秒+1
  • F是一个Hash算法,根据源IP,目的IP,源端口号,目标端口号生成的一个随机数值。要保证Hash算法不能被外部轻易推算出,用MD5算法是一个比较好的选择

可以看出,随机数是会基于时钟计时器递增的,基本不可能会随机成一样的初始化序列号。

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

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

相关文章

Mysql教程(一):Mysql数据模型和SQL语法分析

Mysql教程(一):Mysql数据模型和SQL语法分析 1、Mysql数据模型 1.1 关系型数据库(RDBMS) 概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。 特点: 使用表存储数…

H5活动营销系统怎么做?H5活动营销系统有哪些优势?

H5营销系统广泛用于各类线下活动场景,即将传统线下活动搬到线上,结合互动和奖励设计,引导用户产生转发、分享等目标行为,从而扩大活动影响力,以获得曝光和转化。因此,h5活动营销系统通常用于拉新促活、刺激…

【LeetCode 75】第三题(1431)拥有最多糖果的孩子

题目: 示例: 分析: 题目是简单题,也确实简单,不过示例给出的解释有些复杂,甚至有些误导.我们只需要遍历得出分配糖果之前的糖果最大值,然后再依次遍历每个孩子拥有的糖果数,若某孩子原有的糖果数加上待分配的所有糖果数大于等于分配前的糖果最大值,则给该孩子对应下标的结果置…

Linux--进程替换(转载)

目录 0.引入 1.替换原理 2.替换函数 execl execv execlp execle execvp execvpe execve 3.调用自定义程序 4.exec函数解释 5.命名理解 0.引入 创建子进程的目的是什么? 就是为了让子进程帮我执行特定的任务 让子进程执行父进程的一部分代码 如果子进程…

深度学习——自编码器AutoEncoder

基本概念 概述 自编码器(Autoencoder)是一种无监督学习的神经网络模型,用于学习数据的低维表示。它由编码器(Encoder)和解码器(Decoder)两部分组成,通过将输入数据压缩到低维编码空…

小程序使用云函数调用第三方api避免域名备案

小程序使用云函数调用第三方api避免域名备案 在小程序开发中,如果需要调用第三方 API,但由于域名备案的限制无法直接在小程序中使用,我们可以利用云函数来解决这个问题。 1. 开通云开发 使用微信开发者工具打开小程序项目,点击…

IDEA 提交git 之后撤回操作

方式一 1.选择提交记录; 2、 右键git然后选择drop commit; 弊端:会将修改的代码全部进行删除操作 打开 IDEA 的 本地历史记录功能,对修改的内容进行复原 方式二: 1、撤回commit 2、选择项目——>右击git——…

ROS-Qt-转CMake编译以及qmake第三方库添加及其他

Qt 开发ROS 界面的方法 方法2 带ui的工作空间配置(以ROS节点执行) 步骤1 $ mkdir catkin_qt $ cd catkin_qt $ mkdir src $ cd src $ catkin_init_workpasce $ cd .. $ catkin_make $ cd src $ catkin_create_qt_pkg ros_ui roscpp rospy std_msgs $ …

生成式AI时代,亚马逊云科技致力推动技术的普惠,让更多企业受益

当谈及AIGC时, 我们该谈些什么? 生成式AI技术与应用的不断发展,为各个行业都注入了全新的机会与活力。AIGC成为了今年最为激动人心的技术话题。亚马逊云科技也一马当先,在6月27-28日,2023亚马逊云科技中国峰会上分享…

堆的Top-K问题

⭐️ TOP-K问题 TOP-K问题:即求数据结合中前 k k k 个最大的元素或者最小的元素,一般情况数据量都比较大。 比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 如果数据量过大,排序的方式就不太可取了。 思路&…

TikTok引流的新玩法,用AdsPower打开新大陆!

做跨境电商的人都知道,天上不会掉流量,想要产品火,就必须要引流。大佬的一个产品动不动就几千几万的观看量,可是自己的产品却无人问津。他们到底怎么做到的呢?很简单,注册AdsPower和TikTok的账号&#xff0…

el-input输入框的那些事

vue3element-plustses6 此帖只为记录开发中遇到的需求,技术问题,坑 1、文本域禁止自由拉伸 1、文本域禁止自由拉伸 el-input有一个枚举类型的resize属性,控制拉伸,‘none’ | ‘both’ | ‘horizontal’ | ‘vertical’&#xf…

找实拍高清视频网站,我推荐这6个

本期推荐6个高清视频素材网站,视频剪辑、自媒体必备,建议收藏~ 菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 菜鸟图库虽然是一个设计网站,但它还有非常丰富的视频和音频素材,视频素材全部都是高清无水印&#xff0…

暑期代码每日一练Day1:Leetcode415. 字符串相加

题目 415. 字符串相加 分析 题目意思是给你两个纯数字 字符串(表示的是一个有意义的正整数),让你算出这两个字符串表示的数字的和,最后返回以字符串表示的结果,其中的过程不能直接将初始给定的两个字符串直接转化为…

ORB+FLANN

FLANN 代表 近似最近邻的快速库。它包含针对大型数据集中的快速最近邻搜索和高维特征优化的算法集合。对于大型数据集,它比BFMatcher工作得更快。 对于基于 FLANN 的匹配器,我们需要传递两个字典,指定要使用的算法、相关参数等。第一个是Ind…

2024考研408-操作系统 第三章-内存管理 学习笔记

文章目录 一、内存管理基础1.1、内存的基础知识1.1.1、什么是内存?有何作用?1.1.2、进程运行的基本原理1.1.2.1、指令的工作原理1.1.2.2、理解逻辑地址与物理地址1.1.2.3、从写程序到程序运行1.1.2.4、三种链接方式(静态、转入时动态、运行时…

openssl源码编译输出库-guidance-傻瓜式教程

目标: 下载openssl源码 编译输出目标版本,例如使用Android NDK编译输出Android使用的32位的库 1、下载源码 git clone https://github.com/openssl/openssl.git -b openssl-3.0.9 2、 请下载Linux版本的Android NDK 请下载Linux版本的Android NDK, 并完…

没看完这篇文章,别说你会用Ping

中午好,我的网工朋友。 网工生活里每天都和ping打交道,ping来ping去,很多人知道ping,却不知道怎么把ping用出更多花样出来。 今天,我特地给你关于ping命令的使用大全,在更多不同的项目场景里,…

解决访问127.0.0.1时,提示“127.0.0.1 拒绝了我们的连接请求”

目录 问题描述 解决方案 问题描述 我电脑是win10系统,刚刚在访问http://127.0.0.1时,浏览器显示“127.0.0.1 拒绝了我们的连接请求”,为何访问本机IP显示拒绝访问? 解决方案 1. windows徽标 I 打开设置,选择“应用…

3ds max高级教程:创建带有骨骼动画的机器人模型

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 然而,下面我们示例机器人腿的第一个版本不是很现实,因为它会像没有肌肉的骨骼结构一样坍塌。在第二个版本中,我们将添加一些机器人“肌肉”,第三个版本将包括…