1.如果当一次旧的报文数据(假设sqe = 90)发送时发生了网络堵塞的问题的话,而新的报文数据(假设 sqe = 100)又发送了。而此时却是旧的报文段比新的报文段先到服务端,也就是序列号为90的因网络不堵塞了比序列号为100的先到达了服务端,此时服务端会返回旧的确认号给客户端,也就是 ack = 90 + 1; 2.但是此时客户端根据上下文判断自己应该收到的确认号应该为 ack = 100 + 1,所以此时客户端会发送RST请求中断连接,此时连接终止。 3.当新的报文段(sql = 100)到达了服务端之后,此时服务端会正常返回ack = 100 + 1,然后客户端返回ACK正式建立连接。 那为什么两次握手就不行了呢? 因为再第一次旧的连接到达时,第二次握手服务端就已经建立连接状态返回ack了,但是此时这个连接是一个旧的连接(序列号超时或者过期是一次历史连接),但是由于是两次握手一样建立了连接。 此时客户端判断ack并不是自己想要的 发送RST连接终止,一段时间后 新的报文段到达,而服务端又建立了连接。此时服务端并没有阻止掉历史连接
点赞 评论

相关推荐

牛客网
牛客企业服务