| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> TCP-F(orward)ACK:植入快速重传灵魂的强制快速重传 -> 正文阅读 |
|
[系统运维]TCP-F(orward)ACK:植入快速重传灵魂的强制快速重传 |
纸上学来终学浅,绝知此事要躬行。 今日和友人争辩快速重传,只拿着书本上的东西和人对飙近20分钟,还自认为略有取胜,真是汗颜加羞愧。 中文版计算机网络,书上还写着接收到3次重复ACK启用快速重传。TCP/IP详解卷上写着TCP启用FACK算法,会比对ACK和最高水位SACK间的跨度,明确未确认skb包个数,和快速重传阈值dupthresh比较,以此为据,启用快速重传。 指导用书提供了这个检测“快速重传机制”的思想。 但看了点书,就觉得这东西了如指掌,这是旧时代书生的做派,可惜我一个新时代青年也沾染上了这恶习,再次表示惭愧。 这个时代,什么东西都在变,尤其技术变得更快,更何况TCP还开源。拿着纸面上的东西和人争的面红耳赤,到头来也只是跳梁小丑,自取其辱。但好在我这人算进取,知错能改,这次的教训只是让好朋友看了个笑话,自然不打紧。 那就说说“进化后”的TCP-FACK,书本上通俗易懂的“快速重传”和“FACK算法”在如今的Linux上又是如何实现。 Linux的TCP-FACK实现关键函数
其实,从这里就可以看出不少信息,一是函数的命名tcp_force_fast_retransmit,这基本告诉开发者,FACK算法已经是TCP“快速重传”所必须的。通读一版“快速重传机制”的整体流程,果然验证了这一点,这意味着FACK不再是启动失效,而是TCP默认生效并且不可取缔的(net.ipv4.sysctl_tcp_fack的设置没用了)。二是FACK的快速重传检测机制依旧顺承的是SACK,只有SACK生效,FACK才能发挥作用,但SACK并不是必须的,SACK没有启动时,tcp_force_fast_retransmit里与SACK挂钩的变量走初始值,这也意味着FACK不会生效。 光说有点干,给张图。 FACK也就这点东西,一个很简单的启发式。最后再说下Linux里,怎么实现的重复ACK触发“快速重传”,因为上面FACK没有涉及,但这又是每个CS专业接触最多的。但为了避免跑题,不过细解读,只给个出处。 拥塞状态机转移函数
num_dupack表示的就是重复ACK计数。 返回值do_lost将指导后面标记LOST的 TCP也不是越描越黑,这是我盼望的。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 8:46:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |