纸上学来终学浅,绝知此事要躬行。
今日和友人争辩快速重传,只拿着书本上的东西和人对飙近20分钟,还自认为略有取胜,真是汗颜加羞愧。
中文版计算机网络,书上还写着接收到3次重复ACK启用快速重传。TCP/IP详解卷上写着TCP启用FACK算法,会比对ACK和最高水位SACK间的跨度,明确未确认skb包个数,和快速重传阈值dupthresh比较,以此为据,启用快速重传。
指导用书提供了这个检测“快速重传机制”的思想。
但看了点书,就觉得这东西了如指掌,这是旧时代书生的做派,可惜我一个新时代青年也沾染上了这恶习,再次表示惭愧。
这个时代,什么东西都在变,尤其技术变得更快,更何况TCP还开源。拿着纸面上的东西和人争的面红耳赤,到头来也只是跳梁小丑,自取其辱。但好在我这人算进取,知错能改,这次的教训只是让好朋友看了个笑话,自然不打紧。
那就说说“进化后”的TCP-FACK,书本上通俗易懂的“快速重传”和“FACK算法”在如今的Linux上又是如何实现。
Linux的TCP-FACK实现关键函数tcp_force_fast_retransmit是这样
static bool tcp_force_fast_retransmit(struct sock *sk)
{
struct tcp_sock *tp = tcp_sk(sk);
return after(tcp_highest_sack_seq(tp),
tp->snd_una + tp->reordering * tp->mss_cache);
}
其实,从这里就可以看出不少信息,一是函数的命名tcp_force_fast_retransmit,这基本告诉开发者,FACK算法已经是TCP“快速重传”所必须的。通读一版“快速重传机制”的整体流程,果然验证了这一点,这意味着FACK不再是启动失效,而是TCP默认生效并且不可取缔的(net.ipv4.sysctl_tcp_fack的设置没用了

最低0.47元/天 解锁文章
2207

被折叠的 条评论
为什么被折叠?



