TCP 建立连接,双方初始化序列号问题。
来源:11-10 TCP连接的三次握手

Nomo_Air
2020-08-27
老师你好,最近在看tcp/ip这本书,有一个问题一直没有得到解决,遂着老师讨教。
问题描述:tcp在三次握手的开始,双发要初始化序列号(ISN),已知ISN一般都是随机的。
但是我们又知道,这个初始化的序列号就是握手中的seq,seq是代表着
“该字节代表着包含该序列号的报文段的数据中的第一个字节。”
于是我的问题出现了,既然是随机的,又怎么能代表数据中的第一个字节。
以下是我个人的推测:在握手时,客户端生成随机数,在seq中带了过去,服务器其实就已经知道了,客户端的随机数是多少。同理,客户端也会知道服务器的随机数是多少。这样只要在以后的每次数据交换中,减去各自的随机数,就可以得出一个真实的seq,真实的seq代表着,该报文段的数据中的第一个字节。
写回答
1回答
-
咚咚呛
2020-08-27
是的,你的推测是正确的。
仔细观察三次握手报文的关键信息,三次握手最主要的目的就是建立连接,其中就包括确定序列号,可以看到的是,序列号是由主动连接的一方随机生成的,而被动连接方在收到序列号后,就会继续沿用这个序列号,此后的通信都是在这个序列号之上做的偏移,所以你的理解是正确的。
00
相似问题