为什么TCP的ISN是随机的?

两个维度:

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算法是一个比较好的选择。

posted on 2018-02-07 10:19  llc_no1  阅读(1080)  评论(0编辑  收藏  举报

导航