tcp - TCP - 当 RTO 太小时会发生什么?
问题描述
我正在研究 TCP,我有这个疑问。让我们认为客户端变得太快,并且服务器在 RTO 到期之前永远不会收到 ACK。所以服务器重新传输了很多不必要的段。服务器如何确认这一点并将 RTO 设置为更大的值?
谢谢!
解决方案
https://tools.ietf.org/rfc/rfc793.txt
" 一个示例重传超时过程
Measure the elapsed time between sending a data octet with a
particular sequence number and receiving an acknowledgment that
covers that sequence number (segments sent do not have to match
segments received). This measured elapsed time is the Round Trip
Time (RTT). Next compute a Smoothed Round Trip Time (SRTT) as:
SRTT = ( ALPHA * SRTT ) + ((1-ALPHA) * RTT)
and based on this, compute the retransmission timeout (RTO) as:
RTO = min[UBOUND,max[LBOUND,(BETA*SRTT)]]
where UBOUND is an upper bound on the timeout (e.g., 1 minute),
LBOUND is a lower bound on the timeout (e.g., 1 second), ALPHA is
a smoothing factor (e.g., .8 to .9), and BETA is a delay variance
factor (e.g., 1.3 to 2.0).
"
推荐阅读
- r - 在 R 中创建模型时,使用公式进行模型规范会产生错误
- reactjs - 如何在 useEffect 中包含 state/props 而不会成为触发器?
- d3.js - d3.js 分组条形图:文本未显示在条形图上
- http-headers - Base64图片内容安全策略错误
- sockets - 是否可以在不断开连接的 TCP 套接字的情况下进行部署而不停机?
- javascript - 学习如何创建搜索菜单来过滤链接
- java - Spring MVC:使用 Test WebApplicationContext 和嵌入式 Jetty 进行 UI 测试
- r - 如何为数据框中的事件分配特定值?
- google-sheets - 查找多重匹配和求和结果
- android - Sonarqube 未启动,退出代码 [es]:1