Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么计时器可以防止TCP窗口更新数据包丢失_Tcp - Fatal编程技术网

什么计时器可以防止TCP窗口更新数据包丢失

什么计时器可以防止TCP窗口更新数据包丢失,tcp,Tcp,当TCP数据流的接收方关闭其接收窗口时(或者更准确地说,该窗口被发送方填满而关闭),将出现一系列数据包,Wireshark将这些数据包识别为TCP ZeroWindow和TCP Keep Alive(使用相同序列号重复确认)。一段时间后,接收器将发送一个新的ACK以重新打开窗口(TCP窗口更新),数据将再次开始流动 如果数据没有开始流动,什么样的TCP定时器机制确保重新传输窗口更新数据包 以下是我在连接结束时看到的数据包序列(预计会有更多数据): 否。时间源目标协议长度信息 122160 21:

当TCP数据流的接收方关闭其接收窗口时(或者更准确地说,该窗口被发送方填满而关闭),将出现一系列数据包,Wireshark将这些数据包识别为
TCP ZeroWindow
TCP Keep Alive
(使用相同序列号重复确认)。一段时间后,接收器将发送一个新的ACK以重新打开窗口(
TCP窗口更新
),数据将再次开始流动

如果数据没有开始流动,什么样的TCP定时器机制确保重新传输窗口更新数据包

以下是我在连接结束时看到的数据包序列(预计会有更多数据):

否。时间源目标协议长度信息 122160 21:24:37.421824 192.168.15.121 72.21.81.253 TCP 60 41200>http[ACK]Seq=462 ACK=2984241 Win=5152 Len=0 122162 21:24:37.4455272.21.81.253 192.168.15.121 TCP 1514[重新组装的PDU的TCP段] 122163 21:24:37.445796 72.21.81.253 192.168.15.121 TCP 1514[重新组装的PDU的TCP段] 122164 21:24:37.446087 72.21.81.253 192.168.15.121 TCP 1514[重新组装的PDU的TCP段] 122171 21:24:37.481802192.168.15.12172.21.81.253 TCP 60 41200>http[ACK]Seq=462 ACK=2988621 Win=784 Len=0 122184 21:24:37.744838 72.21.81.253 192.168.15.121 TCP 838[TCP窗口已满][重新组装的PDU的TCP段] 122185 21:24:37.745048 192.168.15.121 72.21.81.253 TCP 60[TCP ZeroWindow]41200>http[ACK]Seq=462 ACK=2989405 Win=0 Len=0 122190 21:24:38.014841 72.21.81.253 192.168.15.121 TCP 60[TCP保持活动]http>41200[ACK]Seq=2989404 ACK=462 Win=15872 Len=0 122191 21:24:38.01499192.168.15.121 72.21.81.253 TCP 60[TCP ZeroWindow]41200>http[ACK]Seq=462 ACK=2989405 Win=0 Len=0 122232 21:24:38.534437 72.21.81.253 192.168.15.121 TCP 60[TCP保持活动]http>41200[ACK]Seq=2989404 ACK=462 Win=15872 Len=0 122233 21:24:38.534599 192.168.15.121 72.21.81.253 TCP 60[TCP ZeroWindow]41200>http[ACK]Seq=462 ACK=2989405 Win=0 Len=0 122314 21:24:39.564525 72.21.81.253 192.168.15.121 TCP 60[TCP保持活动]http>41200[ACK]Seq=2989404 ACK=462 Win=15872 Len=0 122315 21:24:39.564680 192.168.15.121 72.21.81.253 TCP 60[TCP ZeroWindow]41200>http[ACK]Seq=462 ACK=2989405 Win=0 Len=0 122361 21:24:43.403052 192.168.15.121 72.21.81.253 TCP 60[TCP窗口更新]41200>http[ACK]Seq=462 ACK=2989405 Win=119904 Len=0 122892 21:25:45.161896 192.168.15.121 72.21.81.253 TCP 60 41200>http[FIN,ACK]Seq=462 ACK=2989405 Win=186720 Len=0 122902 21:25:45.373289 192.168.15.121 72.21.81.253 TCP 60 41200>http[FIN,ACK]Seq=462 ACK=2989405 Win=186720 Len=0 122927 21:25:45.813267 192.168.15.121 72.21.81.253 TCP 60 41200>http[FIN,ACK]Seq=462 ACK=2989405 Win=186720 Len=0 122936 21:25:46.693275 192.168.15.121 72.21.81.253 TCP 60 41200>http[FIN,ACK]Seq=462 ACK=2989405 Win=186720 Len=0 122956 21:25:48.453337 192.168.15.121 72.21.81.253 TCP 60 41200>http[FIN,ACK]Seq=462 ACK=2989405 Win=186720 Len=0 123009 21:25:51.983392 192.168.15.121 72.21.81.253 TCP 60 41200>http[FIN,ACK]Seq=462 ACK=2989405 Win=186720 Len=0 123061 21:25:59.033566 192.168.15.121 72.21.81.253 TCP 60 41200>http[FIN,ACK]Seq=462 ACK=2989405 Win=186720 Len=0 123262 21:26:13.153852 192.168.15.121 72.21.81.253 TCP 60 41200>http[FIN,ACK]Seq=462 ACK=2989405 Win=186720 Len=0 123460 21:26:41.394469 192.168.15.121 72.21.81.253 TCP 60 41200>http[FIN,ACK]Seq=462 ACK=2989405 Win=186720 Len=0 接收者在21:24:43重新打开窗口,不再听到发送者的任何消息。一分钟后,接收器超时连接(关闭由应用程序启动),并发送一系列未确认的FIN确认

看起来与发送方的通信完全丢失(捕获是在接收方的网络上进行的)。如果没有,那么,即使在足够长的时间让对等方忘记了连接之后,人们是否应该总是期待对finack的确认


不管RFC1122对此有何评论,大型互联网服务器在这方面做一些不同的事情(通常)是不是作为反拒绝服务措施?

如您所述,一旦其接收窗口中有可用空间,接收器就会发送一个带有更新窗口大小的新ACK

为了处理ACK丢失的情况,发送方保留一个“持久定时器”,它偶尔会重新发送一个数据包(“窗口探测”),以便测试waters并查看是否确实存在未报告的接收空间

persist timer的值不是显式指定的,而是计算出的往返时间以及一些指数退避的函数。完整详情见第4.2.2.14节中的RFC1122,如下所示:


提供的跟踪看起来像中间的东西阻塞服务器的返回流量。我的猜测是,您的NAT网关(192.168..不是Internet上的有效地址,因此中间有人正在进行网络地址转换)已确定连接已断开,并拒绝从服务器转发其他数据包。

如您所述,一旦其接收窗口中有可用空间,接收器将发送具有更新窗口大小的新ACK

为了处理ACK丢失的情况,发送方保留了一个“持久定时器”,它偶尔会重新发送 No. Time Source Destination Protocol Length Info 122160 21:24:37.421824 192.168.15.121 72.21.81.253 TCP 60 41200 > http [ACK] Seq=462 Ack=2984241 Win=5152 Len=0 122162 21:24:37.445528 72.21.81.253 192.168.15.121 TCP 1514 [TCP segment of a reassembled PDU] 122163 21:24:37.445796 72.21.81.253 192.168.15.121 TCP 1514 [TCP segment of a reassembled PDU] 122164 21:24:37.446087 72.21.81.253 192.168.15.121 TCP 1514 [TCP segment of a reassembled PDU] 122171 21:24:37.481802 192.168.15.121 72.21.81.253 TCP 60 41200 > http [ACK] Seq=462 Ack=2988621 Win=784 Len=0 122184 21:24:37.744838 72.21.81.253 192.168.15.121 TCP 838 [TCP Window Full] [TCP segment of a reassembled PDU] 122185 21:24:37.745048 192.168.15.121 72.21.81.253 TCP 60 [TCP ZeroWindow] 41200 > http [ACK] Seq=462 Ack=2989405 Win=0 Len=0 122190 21:24:38.014841 72.21.81.253 192.168.15.121 TCP 60 [TCP Keep-Alive] http > 41200 [ACK] Seq=2989404 Ack=462 Win=15872 Len=0 122191 21:24:38.014993 192.168.15.121 72.21.81.253 TCP 60 [TCP ZeroWindow] 41200 > http [ACK] Seq=462 Ack=2989405 Win=0 Len=0 122232 21:24:38.534437 72.21.81.253 192.168.15.121 TCP 60 [TCP Keep-Alive] http > 41200 [ACK] Seq=2989404 Ack=462 Win=15872 Len=0 122233 21:24:38.534599 192.168.15.121 72.21.81.253 TCP 60 [TCP ZeroWindow] 41200 > http [ACK] Seq=462 Ack=2989405 Win=0 Len=0 122314 21:24:39.564525 72.21.81.253 192.168.15.121 TCP 60 [TCP Keep-Alive] http > 41200 [ACK] Seq=2989404 Ack=462 Win=15872 Len=0 122315 21:24:39.564680 192.168.15.121 72.21.81.253 TCP 60 [TCP ZeroWindow] 41200 > http [ACK] Seq=462 Ack=2989405 Win=0 Len=0 122361 21:24:43.403052 192.168.15.121 72.21.81.253 TCP 60 [TCP Window Update] 41200 > http [ACK] Seq=462 Ack=2989405 Win=119904 Len=0 122892 21:25:45.161896 192.168.15.121 72.21.81.253 TCP 60 41200 > http [FIN, ACK] Seq=462 Ack=2989405 Win=186720 Len=0 122902 21:25:45.373289 192.168.15.121 72.21.81.253 TCP 60 41200 > http [FIN, ACK] Seq=462 Ack=2989405 Win=186720 Len=0 122927 21:25:45.813267 192.168.15.121 72.21.81.253 TCP 60 41200 > http [FIN, ACK] Seq=462 Ack=2989405 Win=186720 Len=0 122936 21:25:46.693275 192.168.15.121 72.21.81.253 TCP 60 41200 > http [FIN, ACK] Seq=462 Ack=2989405 Win=186720 Len=0 122956 21:25:48.453337 192.168.15.121 72.21.81.253 TCP 60 41200 > http [FIN, ACK] Seq=462 Ack=2989405 Win=186720 Len=0 123009 21:25:51.983392 192.168.15.121 72.21.81.253 TCP 60 41200 > http [FIN, ACK] Seq=462 Ack=2989405 Win=186720 Len=0 123061 21:25:59.033566 192.168.15.121 72.21.81.253 TCP 60 41200 > http [FIN, ACK] Seq=462 Ack=2989405 Win=186720 Len=0 123262 21:26:13.153852 192.168.15.121 72.21.81.253 TCP 60 41200 > http [FIN, ACK] Seq=462 Ack=2989405 Win=186720 Len=0 123460 21:26:41.394469 192.168.15.121 72.21.81.253 TCP 60 41200 > http [FIN, ACK] Seq=462 Ack=2989405 Win=186720 Len=0