首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VIP转移到另一个主机后,谁应该重置TCP连接?

在VIP转移到另一个主机后,谁应该重置TCP连接?
EN

Network Engineering用户
提问于 2021-04-26 16:42:59
回答 1查看 222关注 0票数 1

想象一下这种情况--客户机(Linux)与服务器(Linux)上托管的虚拟IP之间的TCP连接(NFS4或数据库)。服务器失败,VIP被另一台服务器接管(使用ARP)。

客户端不知道这一点,并认为TCP连接仍然处于打开状态。客户端不断向辅助服务器发送重传(其中5-8个),而忽略它们。这大约需要3分钟,客户端会放弃,关闭失败的TCP连接并尝试打开一个新的连接。

让客户端尽可能快地转移到新服务器上的最佳机制是什么?

EN

回答 1

Network Engineering用户

发布于 2021-04-26 16:51:14

客户端不断向辅助服务器发送重传(其中5-8个),而忽略它们。

那是不正确的。如果故障转移服务器与发送主机没有TCP连接,则TCP将在接收到不存在的连接中的一个段时发送RST,从而终止主机上的连接,该连接将需要与故障转移服务器建立新连接。

RFC 793,传输控制协议是TCP的定义,如果您想做您所描述的事情,那么您应该真正熟悉其中的所有内容。它有一个一般性的解释,但还有许多其他的事情你应该理解:

重置生成作为一般规则,当一个段到达时,必须发送重置(RST),这显然不是当前连接的意图。如果不清楚是否存在这种情况,则不能发送重置。有三组国家:

  1. 如果连接不存在(已关闭),则响应任何传入段发送重置,但另一次重置除外。特别是,通过这种方式拒绝发送给不存在连接的SYNs。如果传入段具有ACK字段,则重置从段的ACK字段获取其序列号,否则重置具有序列号为零,并且ACK字段设置为传入段的序列号和段长度之和。连接仍处于关闭状态。
  2. 如果连接处于任何非同步状态(侦听、SYN发送、SYN接收),而传入段确认尚未发送的内容(段携带不可接受的ACK),或者如果传入段具有与请求连接的级别和间隔不完全匹配的安全级别或间隔,则发送重置。如果我们的SYN尚未被确认,且传入段的优先级级别高于请求的优先级级别,则要么提高本地优先级级别(如果用户和系统允许),要么发送重置;或者如果传入段的优先级级别低于请求的优先级级别,则继续保持与优先级完全匹配的状态(如果远程TCP无法提高与我们的优先级级别匹配,将在它发送的下一个段中检测到这一点,然后将终止连接)。如果我们的SYN已被确认(可能在此传入段中),则传入段的优先级级别必须与本地优先级级别完全匹配,如果没有,则必须发送重置。如果传入段具有ACK字段,则重置从段的ACK字段获取其序列号,否则重置具有序列号为零,并且ACK字段设置为传入段的序列号和段长度之和。连接保持在相同的状态。
  3. 如果连接处于同步状态(已建立,fin-等待-1,fin-等待-2,关闭-等待,关闭,最后-ACK,时间-等待),则任何不可接受的段(窗口外序列号或不可接受的确认号)必须只引出一个空确认段,其中包含当前发送序列号和指示预期接收的下一个序列号的确认,并且连接仍处于相同状态。如果传入段具有与级别不完全匹配的安全级别或间隔或优先级,以及请求连接的间隔和优先级,则发送重置,连接进入关闭状态。重置从传入段的ACK字段获取其序列号。

除SYN发送外,所有状态下的重置处理都通过检查SEQ-字段验证所有重置(RST)段。如果重设的序列号在窗口中,则重置是有效的。在SYN发送状态(响应于初始SYN接收的RST )中,如果ACK字段确认SYN,则RST是可以接受的。RST的接收方首先验证它,然后更改状态。如果接收者处于侦听状态,则忽略它。如果接收器处于SYN接收状态,并且先前处于侦听状态,则接收器返回侦听状态,否则接收器中止连接并进入关闭状态。如果接收器处于任何其他状态,则中止连接并通知用户并进入关闭状态。

票数 2
EN
页面原文内容由Network Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://networkengineering.stackexchange.com/questions/73642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档