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

news/2024/2/20 10:11:40

主要原因有两个方面:

  • 为了防止历史报文被下一个相同的四元组的连接接收(主要)
  • 为了安全性,防止黑客伪造相同序列号的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.ppmy.cn/news/921909.html

相关文章

如何去掉右键菜单中的上传到qq网络硬盘

1、删除QQ目录下的AddEmotion.htm、AddPanel.htm、AddToNetDisk.htm三个文件。 2、打开注册表 定位到 HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt,删除MenuExt下的QQ右键菜单。 3、下载eXeScope 用eXeScope打开QQ目录下的QQRes.dll文件&…

关于 QQ网络硬盘最新免排队 的两个方法

关于 QQ网络硬盘最新免排队 的两个方法 根据网络文章整理后发布与大家分享~~~ 一,就是从网络上找到" QQ网络硬盘最新免排队 补丁" ,复制到QQ安装目录下即可 二,就是将QQ切换到TM状态,在网络硬盘下载,搞完后,再切换回QQ状态即可

禁止QQ扫描硬盘

QQ运行时扫描硬盘已经不是新闻了,但在被360爆出新闻之后,QQ并没有做出什么修改,2011的最新版本还是继续扫描你的电脑硬盘。不相信的话,就装个360,用“隐私保护器”中的“文件访问检测”就可以看到。我曾有一次看到QQ在…

QQ扫描硬盘

最近发现QQ扫描硬盘事件,大家也比较关注。 早先在园子里就有人发表了QQ扫描硬盘的事情,我一直在关注这个事情。有时候觉得很有趣,两个IT巨头不知道是否就此拉开战幕,真的很期待两大巨头对用户的玩弄! 今天无意中发现一…

Android平台GB28181设备接入侧音频采集推送示例

技术背景​ GB/T28181是广泛应用于视频监控行业的标准协议规范,可以在不同设备之间实现互联互通。今天我们主要探讨Android平台的Audio采集部分。 先说如何拿到数据源,在Android平台上采集音频,常用的方式如下: 1. 使用MediaRe…

前端学习记录~2023.7.10~CSS杂记 Day5

前言一、样式化表格1、一个典型的 HTML 表格2、进行样式化(1)间距和布局(2)简单地排版(3)图形和颜色(4)图案(5)样式化标题 最终效果如下 ![在这里插入图片描述…

解决:Docker 运行镜像创建容器后,使用docker ps 没有显示正在运行的容器

最近在使用docker在安装jenkins容器时,遇到了通过运行Jenkins镜像后,使用docker ps 没有显示正在运行的容器信息,解决方法如下: 1.使用mkdir -p /home/jenkins命令,创建映射Jenkins目录 2.使用:docker run …

Python异步编程框架Tornado使用方法

Tornado简介 Python异步编程框架Tornado是一个轻量级的Web框架和异步网络库,它能够处理大量并发连接和请求,非常适合高并发的网络应用和实时应用。 Tornado基本概念: 协程:Tornado采用协程并发模型,可以让单线程同时…

【分享】Redis的持久化策略(RDB和AOF)和适用场景

Redis的持久化策略 Redis的持久化策略有两种:RDB和AOF。RDB持久化适用于需要快速备份和恢复数据的场景,而AOF持久化适用于对数据精确度和安全性的要求更高的场景。Redis也支持同时使用RDB和AOF两种持久化方式。 RDB持久化(Redis DataBase&am…

Galaxy Note 通过Kies升级,固件存放目录在哪里?

Windows 7 : C:\Users\[你的用户名]\AppData\Local\Temp\Binary\GT-N7000 转载于:https://www.cnblogs.com/MaxWoods/archive/2012/04/03/2430857.html

分布式数字身份 —— 从创建一个Weidentity数字身份开始

分布式数字身份——创建一个Weidentity数字身份 前言DIDWeid 前置环境准备基础配置FISCO BCOS 链部署 Weidentity 合约部署 Weidentity Rest Serivce 使用 Weidentity Python SDK项目分享 参考链接总结关于作者 前言 DID 基于区块链技术的分布式数字身份是一种自我主权的、可…

开发者如何在 DoraHacks 上参加 Web3世界的 Hackathon 和 Grant

开发者如何在 DoraHacks 上参加 Web3世界的 Hackathon 和 Grant DoraHacks 简介如何参加 Hackathon/Grant创建自己的项目选择自己感兴趣的 Hackathon 参赛参加 Grant 参赛小技巧参加Hackathon的经验小提示:参加Grant的提示: 参加Hackathon能带来的"…

Kies Air连接电脑传文件挺好用的 不用连数据线

也不知道大家有人使用Kies Air的没 介绍下我的使用经历吧 打开Kies Air 它会提示你是用WIFI还是便携式WIFI与电脑连接1.如果周围有可用的wifi且你的电脑和手机都连在这个无线网络上那么,就可以选择“wifi”,连上之后,手机上会提示你在电脑的浏…

Kies upgrade to latest.

Kies upgrade to latest. 添加注册表项Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Samsung\Kies2.0\FUS]"Server""https://neofusstgsvr.samsungmobile.com/""Setting_1"dword:00000000"Trace""true&q…

三星9300 Kies 升级包 存储

刷机有风险,操作需谨慎 情况如下: 1、手机升级太慢,家里没网络,可用其他电脑获取升级包本地升级 2、保存官网升级包,刷机不好用时备用(使用Odin3) 1、开始升级后等待下载进度 2、打开下载文件…

哪里可以下载Samsung Galaxy S2 USB驱动程序?

对于在诸如Samsung Galaxy S2的真实设备上进行Android开发,您需要安装Samsung OEM驱动程序或USB驱动程序 。 该Android OEM驱动程序文档将指导您在何处下载……但是该指南并不容易遵循。 实际上,“ 三星USB驱动程序 ”包含在名为“ 三星Kies或PC Sync ”…

samsungGalaxyS4USB驱动

samsungGalaxyS4USB驱动 http://www.samsung.com/cn/support/usefulsoftware/KIES/JSP posted on 2014-08-08 21:45 秦瑞It行程实录 阅读( ...) 评论( ...) 编辑 收藏 转载于:https://www.cnblogs.com/ruiy/p/kies.html

找不到android驱动程序,实际的Android设备找不到adb设备

我已经写了一个简单的应用程序,并想在我的三星Galaxy i9000上试用它。在找到合适的USB驱动程序后,我终于在设备管理器的Android Phone/Android Composite ADB Interface下显示设备。我运行的是Vista SP1,我的手机是2.1-update1的三星Galaxy i…

kies air java 证书_Java ToStringBuilder類代碼示例

本文整理匯總了Java中org.apache.commons.lang3.builder.ToStringBuilder類的典型用法代碼示例。如果您正苦於以下問題:Java ToStringBuilder類的具體用法?Java ToStringBuilder怎麽用?Java ToStringBuilder使用的例子?那麽恭喜您…

canopen 驱动台达电机

首先熟悉了ds301,搞懂了sdo,Pdo,sync,heart beat,等协议基本知识,使用CAN协议分析仪通过sdo简单的进行修改pdo映射,修改控制模式等操作,然后将开源协议canfestival移植到实验板,设定好pdo的通信参数,包括cobid设置&…
最新文章