首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TCP在达到默认的15次尝试之前(在物理断开之后)停止重传。

TCP在达到默认的15次尝试之前(在物理断开之后)停止重传。
EN

Stack Overflow用户
提问于 2013-12-05 14:51:12
回答 1查看 1.2K关注 0票数 2

我有一个客户机/服务器程序,可以从服务器向客户端发送可变数量的数据包。/proc/sys/net/ipv4 4/tcp_ the 2设置为默认15,但当我拔掉以太网电缆时,服务器在放弃之前只发送7或8(它是不同的)重传,然后是连续的具有请求的ARP。

向我提出的一项建议是,TCP在7-8重传后停止传输的原因是,此路由的ARP表条目在服务器达到适当重试量之前已过期。我试图通过将/ipv4 4/route/cg_timeout更改为1500(从300)进行补救,但是程序行为并没有明显的区别。

如果有人能解释清楚或提供其他解释,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-05 19:28:12

也许ARP表中的条目即将过期,当ARP请求再次发送时,就会出现无应答超时吗?你运行arp -a了吗?也许设置gc_timeout是不够的,您还需要设置gc_stale_time吗?我在这篇文章中读到了关于它是如何工作的一个很好的解释。那家伙想做的几乎和你想做的正好相反。Configuring ARP age timeout

还有一条线索要调查。也许你也应该改变tcp_retries1?是否可以更改重传超时(RTO)?

此外,我还查看了Kernel文档,文件ip-sysctl.txt和我得到的:

tcp_retries1 -整数此值会影响TCP决定由于未确认的RTO重传而导致错误的时间,并将此怀疑报告给网络层。有关更多详细信息,请参阅tcp_retries2。RFC 1122建议至少重传3次,这是默认情况。

tcp_retries2 -此值影响活动TCP连接的超时,当RTO重传仍未被确认时。给定N的值,假设TCP_RTO_MIN的初始RTO在指数退避后的TCP连接会在(N+1)第RTO终止连接之前重传N次。默认值15会产生假想的超时924.6秒,是有效超时的下限。TCP将有效地超时在第一个RTO,这超过了假设的超时。RFC 1122建议的超时时间至少为100秒,该超时值至少为8。

在其他线程中,我读到了关于套接字选项TCP_USER_TIMEOUT的内容。我从来没有用过它,但它可能是一个简单的解决办法。Application control of TCP retransmission on Linux

我希望这些选择之一能有所帮助。

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

https://stackoverflow.com/questions/20403118

复制
相关文章

相似问题

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