为什么TCP的ISN是随机的?

本文探讨了TCP连接中初始序列号(ISN)随机性的两个关键维度:攻击维度和连接稳定性维度。解释了为何随机ISN对于防止恶意攻击及确保连接稳定至关重要,并介绍了RFC1948中提出的ISN生成算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两个维度:

1)攻击维度

如果TCP每次连接都使用固定ISN,黑客可以很方便模拟任何IP与server建立连接。

问题:通过抓包就可以计算出来TCP连接的ISN,那固定于不固定ISN有什么区别呢?

答:抓包只能发生在同一网络中,随机ISN能避免非同一网络的攻击

 

2)TCP连接稳定维度

广域网的随机性,复杂性都很高,假设clent与server连接状况不好,不停的断开。那么之前交互的报文很可能在连接已断但是还没到到server。

如果ISN是固定的,那很可能在新连接建立后,上次连接通信的报文才到达,这种情况有概率发生老报文的seq号正好是server希望收到的新连接的报文seq。这就全乱了。

 

so:

RFC1948中提出了一个较好的初始化序列号ISN随机生成算法。ISN = M + F(localhost, localport, remotehost, remoteport).

M是一个计时器,这个计时器每隔4毫秒加1。

F是一个Hash算法,根据源IP、目的IP、源端口、目的端口生成一个随机数值。要保证hash算法不能被外部轻易推算得出,用MD5算法是一个比较好的选择。

转载于:https://www.cnblogs.com/llc-blog/p/8425377.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值