【博客40】TCP的初始序列号并非完全随机

内容: 今天记录一篇短博客,关于TCP初始序列号是如何确定的

一.问题引入TCP初始序列号真的是1或者完全随机生成吗? 其实挺多书上讲的时候,为了方便起见就设置为1,并且我在wireshark上进行抓包测试的时候,如果没有设置成绝对序列号,那也是以相对的来显示给你看,那么还是1。我用tcpdump进行抓包的时候,如果没有设置显示真正的序列号,那么在我的linux上也是给我显示了1。但是其实并不是肯定为1,也并不是完全为随机。
(后面有空分享下tcpdump和wireshark入门操作,我也是入门不久,刚会一些基础的操作)

二.正题: 初始序列号如何设置
1.【RFC0793】指出初始序列号可被视为随时间而改变,有一个32位计数器用来设置,这个计时器每4微妙加1。
2.linux采取相对复杂的方法:为时钟还要再加一个偏移量。偏移量是在4元组的基础上,用加密散列函数得到的,并且散列函数每5分钟就会改变一次。32位中,高8位是一个保密序列号,后面24位是用散列函数得到的。前8位中的5位由一个定时器的数值取模32得到,这个定时器64秒加1,接着三位是对服务器最大段的编码值。

三.感受:
真的是需要多看书,你才能学到更多的知识,这个知识就是我在tcp/ip卷1上面看到的。而在学校教材以及图解tcp/ip,计算机网络第七版教材中,我都看过,但均没有提到初始序列号具体计算方法,只是粗略提一下是随机的。在看一些很厚很厚的书的过程中,我感触最深的就是当你烦躁的时候,一定要停下来放松一下你自己,不要顶着压力去看,这样不利于你对知识的理解,可能会加剧你对它的抵触,虽然这些很厚的书看起来是很烦,但是只有多看一些名著,你才会会有更深入的理解和更大的进步。不过,书中知识过于详细,看过不复习会忘记,这个问题就太烦人了哈哈。有时真希望有哆啦A梦的记忆面包,看完记下来,吃下去就变为永恒的记忆了。好了,不作白日梦了,继续复习了,还有几个月就秋招了。

猜你喜欢

转载自blog.csdn.net/qq_43684922/article/details/89843306