问题标签 [retransmit-timeout]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tcp - 在 ns-3 模拟器中设置默认 RTO(重传超时)值
我在 rtt-estimator.h 中发现了这一点,构造函数设置了m_initialEstimatedRtt
我认为直接控制重传超时值的值。
我不确定如何设置m_initialEstimatedRtt
.
我看到一个名为的方法SetCurrentEstimate
可以用来更改该值,但我不确定如果我使用它应该在模拟的哪个阶段修改它,所以我更喜欢控制初始值。
另外我想知道示例中设置的默认值是什么,我在哪里可以找到它?
vb.net - VB.net 多线程修复设备驱动程序
我试图编写一个基于 VB.net 的设备驱动程序来接收 ASTM 协议中的数据。驱动程序必须进一步处理数据并将其发送到基于数据库的软件(“生物”)。事实上,当收到一小组数据时,我成功地完成了这两项任务。但是当接收到大量数据时,就会出现问题。将数据发送到我的驱动程序的软件没有收到 ACK 命令,并且会重新传输帧。我对多线程不太熟悉,但最近听说它可能会解决我的问题,因为它与同步和超时有关。请在下面找到我的代码的当前版本。如果您能建议和帮助我如何修改它以添加线程并以驱动程序将新数据插入队列并发送 ACK 命令的方式同步它们,我将非常感激,但将与发送并行执行从队列到数据库的数据。我想它应该以同步的方式进行...请帮助...
端模块
linux - TCP 重传计时器覆盖/终止 TCP 保持活动计时器,延迟断开连接发现
机器 - linux,3.10.19 内核
这是在一个大型分布式系统中,有多个服务器和客户端(在相同以及不同的节点/机器上)彼此之间具有 TCP 连接。
测试用例:
客户端程序节点/机器被关闭(故意,测试用例),服务器知道他断开连接的唯一方法是通过keepalive计时器(空闲时间=40秒,4次探测,探测时间=10秒) .
好的案例:
这在大多数情况下都可以正常工作,服务器会在 [40,70] 秒内知道客户端已关闭。
坏情况:
但是我遇到了另一种独特的情况,即当保活计时器运行时,服务器尝试向客户端发送一些数据,这反过来又启动了覆盖/终止保活计时器的 TCP 重传计时器。重传计时器需要大约 15 分钟才能检测到另一端不再存在。
15 分钟对于服务器来说是很长的时间来实现这一点。我正在寻找其他人如何处理这种情况的方法。我需要调整我的重传计时器值吗?
谢谢!
windows - Windows 如何决定将哪个设置/模板(Internet 与数据中心)应用于 TCP 连接?
为了全局配置最小 RTO;延迟确认超时;Windows 7 及以上系统下的拥塞算法等应该使用网络 TCP 模板。要查看这些,您可以使用 Get-NetTCPSetting powershell cmdlet:
为了获得应用到它们的单个连接和设置,可以使用 Get-NetTCPConnection cmdlet:
我如何影响(或至少如何做出)Internet 与数据中心 TCP 设置的选择? 我们有几个低延迟连接,我们希望使用数据中心设置来处理(以加快从通信故障中恢复),但我仍然不想盲目地将其应用于所有连接。
tcp - TCP 重传:将重新发送多少个数据包?
TCP如何重传?哪个公式取决于将重新发送多少数据包?我知道它设置在立方 tcp 的某个地方,但是在哪里?
对它在 Linux 中的工作方式感兴趣。我使用 Debian 8,只是寻找转储。我使用 netcat 建立了到 27000 端口的连接。我通常在使 iptables 丢弃端口 27000 上的所有数据包并发送数据包的服务器上执行此操作(并查看该数据包被重新发送了多少次。)。
linux - 什么时候 TCP 连接被认为是空闲的?
我需要在任何连接上启用 TCP keepalive,现在我正在努力处理我们测试用例的结果。我认为这是因为我不太了解何时发送第一个 keepalive 探测。tcp_keepalive_time
我在 Linux 上的文档中阅读了以下内容:
发送的最后一个数据包(简单的 ACK 不被视为数据)和第一个 keepalive 探测之间的间隔;在连接被标记为需要保持连接后,此计数器不再使用
其他一些消息来源指出这是连接空闲的时间,但他们没有进一步定义这意味着什么。我还研究了史蒂文斯以找到一个更正式的定义,因为我想知道在考虑重传时“发送的最后一个数据包”实际上意味着什么。
在我的测试用例中,我有一个连接,其中数据仅以相当高的速率从服务器发送到客户端。为了测试 keepalive,我们拔掉了客户端 NIC 上的电缆。我现在可以看到网络堆栈尝试发送数据并进入重传状态,但没有发送保持活动探测。在重传期间不发送保持活动探测是否正确?
mysql - MySQL卡住或网络问题?
我们有托管在物理服务器上的 mysql-server(5.5.47)。它监听外部互联网接口(限制用户访问),从不同地方集中使用的mysql服务器(我们使用不同的库与mysql通信)。但有时整个 mysql 服务器(或网络)卡住并停止接受连接,并且客户端因 etimedout(connect)/timeout(recv)而失败,甚至从服务器直接连接到 mysql 而 mysql cli 不起作用(卡住而没有任何响应 - 似乎尝试建立连接)。第一个想法是它与 tcp backlog 有关,所以 mysql backlog 增加了——但这根本没有帮助。
问题不可重复,所以上次发生此问题时,我们会嗅探流量,以及我们得到的结果:
http://grab.by/STwq — 截图
从会话中我们可以假设建立了 tcp 连接,但是服务器向客户端重新传输 SYN/ACK(从转储中我们看到服务器接收到 ACK,为什么要重新传输?),但在正常情况下,mysql 必须在连接后生成初始化数据包并发送给客户端已确立的。它只是来自 1 个会话的屏幕,但所有其他会话大多相同,SYN -> SYN/ACK -> ACK -> 并且服务器重新传输 SYN/ACK 直到 retries_count。
重启mysql后,重启后立即恢复正常。所以不确定它与网络或mysql有关。
任何想法都是合适的。
谢谢!
c# - 看不到从客户端到服务器的重传包
我有一个自定义客户端-服务器应用程序都在 LAN(OS-Windows8)上运行。我在客户端使用了 keep-alive 选项,我在 Wireshark 中看到 Keep alive 数据包。但是,当我拔下运行服务器的机器的网线时,我看不到任何从客户端到服务器的重传数据包,但我看到其他应用程序向服务器的 IP 发送重传数据包。我不明白为什么会这样。我是否需要明确设置重新传输超时值,或者我该如何解决这个问题?
作为参考,这是我正在使用的保持活动代码。 如何在 TCP 客户端(套接字)上在 VB.NET 中实现 TCP KeepAlive
我用值调用 setKeepAlive - SetKeepAlive(clientSocket, 60000, 10000)
谢谢
c - 如何在 C 中嗅探数据包时查找 TCP 重传
我编写了一个简单的源文件,可以使用 C 中的 libpcap 库读取 pcap 文件。我可以逐个解析数据包并分析它们。我希望能够推断出我解析的 TCP 数据包是否是 TCP 重传。在网上广泛搜索后,我得出结论,为此,我需要跟踪流量行为,这意味着还要分析以前收到的数据包。
我真正想要实现的是,在基本层面上,tcp.analysis.retransmission
过滤器在wireshark中所做的事情。
这是一个读取 pcap 文件并分析通过 IPv4 发送的 TCP 数据包的 MRE。该函数find_retransmissions
是分析数据包的地方。
这种方法基于有关重传的 wireshark wiki段落。我确实点击了谷歌必须提供的关于如何进行这种分析的每一页,但这是我唯一能找到的东西。我得到的结果有些正确,一些重传没有被注意到,我得到了很多 DUP-ACK 数据包,一些正常的流量也通过了(用wireshark检查)。我使用在这里找到的 smallFlows.pcap 文件,我相信我应该得到的结果应该与tcp.analysis.retransmission && not tcp.analysis.spurious_retransmission
wireshark 中的过滤器相同。这相当于88
此 pcap 的重新传输。运行此代码会产生 45,我不明白为什么。
对不起,如果声明凌乱,我尽力清理它们。