今天看啥  ›  专栏  ›  程序员鱼皮

深挖真题:TCP 初始序列号是怎么取值的?

程序员鱼皮  · 公众号  · 互联网安全  · 2024-08-26 13:32

主要观点总结

文章介绍了面试鸭刷题工具,其中涉及到TCP协议的初始序列号(ISN)的相关知识,包括ISN的作用、生成方式、为什么需要动态生成以及相关的安全改进。

关键观点总结

关键观点1: 面试鸭刷题工具介绍

文章介绍了一款名为面试鸭的刷题工具,该工具旨在成为题库全面、持续更新、题解优质的刷题神器。

关键观点2: TCP初始序列号(ISN)的作用和生成方式

文章阐述了ISN在TCP协议中的作用,是以时间戳为基础生成的,每四微秒加一,达到特定数值后会回绕。这种设计可以避免重复序列号导致的冲突,提高安全性。

关键观点3: 为什么需要动态生成ISN

文章解释了为什么ISN不能写死,动态生成ISN可以避免数据错误和提高安全性。如果序列号固定,当网络断开并重新连接时,可能会出现数据包错乱的问题。

关键观点4: RFC 6528对TCP ISN的安全改进

文章提到了RFC 6528提出了安全改进,用于增强TCP初始序列号(ISN)的生成,包括使用计时器和伪随机函数,以抵御序列号预测攻击。

关键观点5: 面试鸭刷题工具的特色和福利

文章最后提到了面试鸭刷题工具的特色,包括精选高频面试真题、大厂资深面试官手写答案等。同时,介绍了当前的早鸟福利和正式运营价格。


文章预览

此答案节选自我们最近弄的 面试鸭刷题工具 ,更多 大厂常问面试题 ,可以点击下面的小程序进行阅读哈! 回答重点 初始序列号 ISN 是以时间戳为基础生成的。 RFC793 中认为 ISN 要和一个假的时钟绑定在一起。ISN 每四微秒加一,当超过 2 的 32 次方之后又从 0 开始,即四个半小时左右发生 ISN 回绕。 所以 ISN 变成一个递增值,真实的实现还需要加一些随机值在里面,防止被不法份子猜到 ISN。 扩展知识 为什么初始序列号不能写死,比如从 0 开始? 想象一下如果写死一个值,比如 0 ,那么假设已经建立好连接了,client 也发了很多包比如已经第 20 个包了,然后网络断了之后 client 重新,端口号还是之前那个,然后序列号又从 0 开始,此时服务端返回第 20 个包的 ack,客户端是不是错乱了? 所以它基于时间递增比较合适,并且还提高了安全性,避免不法 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览