即使出现重置RST标志,TCP重新传输仍将继续

即使出现重置RST标志,TCP重新传输仍将继续,tcp,Tcp,根据我对TCP重置(RST)的理解,只要接收到的段不是用于当前连接的,就会设置RST标志,这会导致中止当前TCP会话。但是贴在下面的线鲨捕获似乎并不符合这一理论。基本上,启动重置(帧#466)的A端本身尝试在同一TCP会话上重新传输TCP帧,并继续使用[RST,ACK]响应来自B端的任何后续新连接请求[SYN],该行为重复5次,并且只有在第6次尝试(帧#486)时,三方握手再次成功 我的问题: 为什么终端A继续通过从其自身端生成RST的连接重新传输数据包?可能会发送RST的原因有很多。当TCP段

根据我对TCP重置(RST)的理解,只要接收到的段不是用于当前连接的,就会设置RST标志,这会导致中止当前TCP会话。但是贴在下面的线鲨捕获似乎并不符合这一理论。基本上,启动重置(帧#466)的A端本身尝试在同一TCP会话上重新传输TCP帧,并继续使用[RST,ACK]响应来自B端的任何后续新连接请求[SYN],该行为重复5次,并且只有在第6次尝试(帧#486)时,三方握手再次成功

我的问题:


为什么终端A继续通过从其自身端生成RST的连接重新传输数据包?

可能会发送RST的原因有很多。当TCP段到达时使用重置标志,该TCP段不用于当前打开的连接或侦听端口。例如,如果TCP端口关闭,系统上的TCP堆栈将以RST响应

通常,当系统发送TCP重置时,在确认连接尝试时也会设置ack标志。在您的情况下,没有ack标志,根据RFC,只有在没有建立连接的情况下(在您的情况下)才会执行该标志(从内存中),这会向我表明发送重置的是防火墙或中介设备(不是TCP连接的一部分)。因此,服务器A将合法地认为连接仍然是活动的

帧467-472是标准的TCP重传行为(来自系统A),连接尝试之间的时间加倍,在帧472中的最后一次尝试之后,服务器最终似乎放弃。这些帧是第464帧的重传,这似乎表明系统B没有接收到第465帧。我猜您是在系统B上拍摄的

我相信系统A只有在第473帧被发送后才移动到关闭状态,这将解释为什么我们会看到从系统B发起的三方握手

从你的追踪来看,如果没有更多的网络知识,很难说得更多


可能最初发送ACK的发起方并不期望另一个数据包(不同的序列号)收到ACK,因此它发送RST,然后以不断增长的时间间隔再次发送该数据包,直到接收方发回正确的消息为止(事实并非如此,因此发起方一次又一次地发送RST)。看起来通道中存在问题,可能是电缆故障或接口模式不同(半双工与全双工等)@Alfabravo:发送RST后,当连接移动到关闭状态时,为什么会尝试重新传输数据包?RST并不意味着关闭。RST的意思是“让我们再试一次”。对于关闭连接,顺序为FIN->,@Alfabravo:RST发送后,连接可以保持“相同状态”,或者将移动到“关闭”状态,并且至少在B端移动到“关闭”状态,因为它尝试再次与a重新启动三方握手。是的,我不准确。
464 04:35.1 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105             
465 04:35.2 enpc > 50000 [ACK] Seq=7454 Ack=31999 Win=32127 Len=0               
466 04:35.2 50000 > enpc [RST] Seq=31999 Win=0 Len=0                
467 04:35.4 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105                
468 04:36.1 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105                
469 04:37.5 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105                
470 04:40.3 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105                
471 04:45.9 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105                
472 04:57.1 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105                
473 05:17.1 fg-fps > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1                
474 05:17.1 50000 > fg-fps [RST, ACK] Seq=1 Ack=1 Win=0 Len=0               
475 05:17.5 fg-fps > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1                
476 05:17.5 50000 > fg-fps [RST, ACK] Seq=1 Ack=1 Win=0 Len=0               
477 05:18.0 fg-fps > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1                
478 05:18.0 50000 > fg-fps [RST, ACK] Seq=1 Ack=1 Win=0 Len=0               
479 05:19.5 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105                
480 05:23.2 fg-gip > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1                
481 05:23.2 50000 > fg-gip [RST, ACK] Seq=1 Ack=1 Win=0 Len=0               
482 05:23.7 fg-gip > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1                
483 05:23.7 50000 > fg-gip [RST, ACK] Seq=1 Ack=1 Win=0 Len=0               
484 05:24.2 fg-gip > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1                
485 05:24.2 50000 > fg-gip [RST, ACK] Seq=1 Ack=1 Win=0 Len=0               
486 05:29.7 dyniplookup > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1               
487 05:29.7 50000 > dyniplookup [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 SACK_PERM=1 WS=2             
488 05:29.7 dyniplookup > 50000 [ACK] Seq=1 Ack=1 Win=65536 Len=0               
489 05:29.7 dyniplookup > 50000 [PSH, ACK] Seq=1 Ack=1 Win=65536 Len=105                
490 05:29.7 50000 > dyniplookup [ACK] Seq=1 Ack=106 Win=5840 Len=0              
491 05:29.7 dyniplookup > 50000 [PSH, ACK] Seq=106 Ack=1 Win=65536 Len=105