ISN:初始化序列号(initial sequence number),是在建立tcp三次握手的时候,存储在TCP头部的序列号位置中的数字的代称。也就是说,告诉对方我将要开始发送的初始化序列号是多少,两边都要发这个ISN,即tcp三次握手中第一次握手的SYN包和第二次握手的SYN+ACK包中都有这个数值。

这个ISN的具体数值是不固定的,通常我们在wireshark中看到的都是0,这是wireshark帮我们转换过了的。看wireshark的注释也知道,这里注释的是relative sequence number,也就是说这是相对的序列号。并不是确定的。

ISN的具体的数值得由操作系统的源码来决定,有好几种生成方式。

RFC1948中提出了一个较好的初始化序列号ISN随机生成算法:
ISN = M + F(localhost, localport, remotehost, remoteport)
M是一个计时器,这个计时器每隔4毫秒加1。
F是一个Hash算法,根据源IP、目的IP、源端口、目的端口生成一个随机数值。要保证hash算法不能被外部轻易推算得出,用MD5算法是一个比较好的选择。

TCP的ISN为什么不能固定?

从攻击的角度:
TCP初始化序列号不能设置为一个固定值,因为这样容易被攻击者猜出后续的序列号,从而遭到攻击。

从TCP连接稳定角度:
广域网的随机性,复杂性都很高,假设client与server连接状况不好,不停的断开又重连。那么之前交互的报文很可能在连接已断开时还没到达server。
如果ISN是固定的,那很可能在新连接建立后,上次连接通信的报文才到达server,这种情况有概率发生上次连接发送的报文的seq序列号正好是server希望收到的新连接的报文seq序列号。这就全乱了。

因此,TCP的ISN不能是固定的。

ISN之后发送数据时的序列号如何计算

实际发送数据时的序列号计算:ISN +

参考:
TCP初始化序列号ISN
面试冲刺:04—TCP的序列号(seq)、初始序列号(ISN)、确认号(ACK)
tcp小笔记 ISN
20-1-tcp连接——初始化序列号(ISN)
为什么TCP的ISN是随机的?
什么是tcp序列号欺骗
TCP欺骗攻击
TCP/IP协议中,在建立连接的时候ISN序号分配问题?
TCP三次握手阶段及数据通信阶段,应答序号与发送序号的关系有何不同?
求验证,TCP的确认序号是不是这样计算出来的?
TCP序列号和确认号详解

TCP初始序列号ISN相关推荐

  1. TCP通信过程中初始序列号为什么随机产生

    TCP通信过程中初始序列号为什么随机产生? 为了网络安全,防止黑客获取到初始化序列号,并伪造序列号进行攻击.

  2. tcp协议栈优化1-增加TCP初始拥塞窗口

    看linux3.0 network代码,发现TCP initcwd(初始拥塞窗口)默认已经调为10,同时,TCP rcvwnd初始接收窗口也已调为10.      tcp initcwd初始化函数-- ...

  3. TCP初始化序列号ISN

    TCP初始化序列号ISN TCP初始化序列号不能设置为一个固定值,因为这样容易被攻击者猜出后续序列号,从而遭到攻击. RFC1948中提出了一个较好的初始化序列号ISN随机生成算法. ISN = M ...

  4. TCP初始拥塞窗口与初始接收窗口

    根据RFC3390(2002年)中的表述,TCP初始窗口的上限定义为: min (4 * MSS, max (2*MSS, 4380 bytes)),旨在限制初始窗口在4K范围内,但是当MSS非常大时 ...

  5. 为什么TCP的初始序列号ISN是随机生成的?

    本文转自https://www.cnblogs.com/llc-blog/p/8425377.html 从两个角度考虑: 1.受攻击角度 如果TCP每次连接都使用固定ISN,黑客可以很方便模拟任何IP ...

  6. 网络安全:与 TCP 连接管理相关的网络攻击

    目录 攻击方法1:SYN 泛洪 攻击方法2:影响路径最大传输单元 攻击方法3:破坏现有的TCP连接 攻击方法4:欺骗攻击 攻击方法1:SYN 泛洪 SYN 泛洪是一种 TCP 拒绝服务攻击,在这种攻击 ...

  7. Python网络编程-一文厘清socket、TCP和UDP那点事

    文章目录 网络基础 网络协议 IP地址与端口 socket套接字 概念 Python中socket模块 TCP下的服务器与客户端 TCP工作原理 TCP服务器的实现 TCP客户端的实现 UDP下的服务 ...

  8. Nmap支持的TCP IP指纹识别方法

    Nmap OS指纹识别的工作原理是向目标机器的已知打开和关闭端口发送最多16个TCP,UDP和ICMP探针.这些探针专门用于利用标准协议RFC中的各种模糊性.然后Nmap侦听响应. 分析并组合这些响应 ...

  9. 【RFC7414 传输控制协议 (TCP) 规范文档的路线图】(翻译)

    原文 rfc7414 (ietf.org)   A Roadmap for Transmission Control Protocol (TCP) Specification Documents  传 ...

最新文章

  1. JavaScript中innerHTML与innerText,createTextNode的区别
  2. mysql semisync 恢复_mysql半同步复制(semi_sync_replication)搭建及使用
  3. MRI图像右心室分割
  4. 智能水位检测系统proteus_浅谈智能视觉检测系统的6大优点
  5. Quartz学习总结(1)——Spring集成Quartz框架
  6. 如何恢复初始git提交?
  7. [leetcode]169. 多数元素
  8. docker入门、docker基本命令
  9. 25个超适合学生党的0成本兼职,自我增值的最有效方式
  10. 百兆网络变压器原理图及网络变压器功能(附PDF工程图纸)
  11. php学习笔记——PHP 概述
  12. 计算机专业定向选调,兄弟们,关于定向选调和找工作,JR们能不能给小弟一些建议...
  13. js相对视口的高度_js获取可视区域高度
  14. 从2018年全球半导体数据中看物联网芯片产业现状
  15. Python ORM框架peewee
  16. CocosCreator 方块消除教程
  17. 初秋最全的穿搭都在这里了!
  18. 计算机毕业论文致谢信范文,论文致谢信10篇
  19. Cocos2d-HTML5--人物动画
  20. Zk中组建显示模型mold都有哪些

热门文章

  1. GoJS教程:图布局
  2. word中鼠标点击文字下方出现蓝线,不点击就不出现
  3. jupyter更改路径
  4. Wannafly交流赛1B 硬币 ( 数学
  5. MCU极海 APM32F103VET6 兼容替代 STM32F103VET6
  6. 喜报!《大数据》72篇论文入选中国知网《学术精要数据库》高影响力论文!...
  7. ts453bmini 内存_为华硕天选游戏本而生:8GB DDR4-3200单条跌至194,补齐内存短板
  8. Ubuntu蓝牙耳机连接失败问题解决
  9. 华为OSPF配置练习
  10. 腾讯云~Redis6.2.6 伪集群 哨兵模式_搭建