0
点赞
收藏
分享

微信扫一扫

为什么每次建立TCP连接时初始化的序列号都要求不一样


为了防止历史报文被下一个相同的四元组的连接接受

假设每次建立连接。客户端和服务端的初始化序列号都是从0开始的

为什么每次建立TCP连接时初始化的序列号都要求不一样_网络协议


客户端和服务端建立了一个TCP连接,在客户端发送数据包被网络阻塞了然后超时重传了这个数据包,而此时服务端断电重启,之前与客户端建立的连接也消失了,于是收到客户端的数据包的时候就会发送RST报文。

紧急着,客户端又与服务端建立了与上一个连接相同的四元组连接。

在新连接建立完成后,上一个连接中被网络阻塞的数据包正好抵达了服务端,刚好该数据包的序列号正好在服务端的接收窗口,所以该数据包会把服务端正常接受就会造成数据错乱

因此如果每次建立连接,客户端和服务端的初始化序列号一样的话就会很容易出现历史报文被下一个相同四元组的连接接受问题。


举报

相关推荐

0 条评论