TCP
SACK: Selective ACK
只有收到失序的分组时才会可能会发送SACK,TCP的ACK还是建立在累积确认的基础上的。
如果收到的报文段与期望收到的报文段的序号相同就会发送累积的ACK,SACK只是针对失序到达的报文段的。
-
SACK包括了两个TCP选项,一个选项用于标识是否支持SACK(SACK_permitted),是在TCP连接建立时时发送;另一种选项则包含了具体的SACK信息。
第二个选项参数:接收方告诉发送方已经接收到并缓存的不连续的数据块,发送方可根据此信息检查究竟是哪个块丢失,从而发送相应的数据块。
AIMD(additive-increase/multiplicative-decrease)
即和性增长,乘性降低,相应的还有:乘性增长/乘性降低(MIMD)和加性增长/加性降低(AIAD)等算法
AIMD算法最广为人知的用途是在TCP拥塞控制
AIMD将拥塞窗口的线性增长与监测到拥塞时的指数降低相结合。使用AIMD拥塞控制的多个流将最终收敛到使用等量的共享链路。乘性增长/乘性降低(MIMD)和加性增长/加性降低(AIAD)的相关方案无法达到稳定。
Window Scale 和 Timestamp
参考
Implementation and validation of TCP options and congestion control algorithms for ns-3
这篇paperthe sequence number wrap around
关于TCP Cubic中的几个特殊的地方
①和②处是Cubic被重置后,k=0,窗口从三次曲线的平滑处开始增长,看起来像是线性的,其实并不是
③处是:Rto的时候才会更新
m_lastMaxCwnd = 0;
,但是只要丢包就是一个新的epoch,就会有m_epochStart = Time::Min (); // end of epoch
。所以丢完包(不需要等Rto)之后,就可能满足m_epochStart == Time::Min () && m_lastMaxCwnd > segCwnd
,从而更新出一个很大的k。bicK是Cubic回到W_max需要的时间,bicK很大的话这个时间跨度很长,再加上窗口增长以MSS为单位,攒够一个MSS才会加到Cwnd上,所以表现出来就是cwnd暂时是平的线。
计算机史
命令行界面 (CLI)、终端 (Terminal)、Shell
太长不看:
- 命令行界面 (CLI) = 使用文本命令进行交互的用户界面
- 终端 (Terminal) = TTY = 文本输入/输出环境
- 控制台 (Console) = 一种特殊的终端
- Shell = 命令行解释器,执行用户输入的命令并返回结果
网络
packet狂飙现象:(message间隔)
message是间断产生的,如果上一个message发完之后与下一个msg隔得比较久,这期间窗口一直在增大,但是没有需要发送的数据
一旦下一个message到来,就会立刻填满发送窗口,具体体现是一下子发送上百个包,我称其为packet狂飙现象🤦♂️
(可以通过开pacing 解决)
只有一条流是不会丢包的
(前提是收包速率==发包速率)这样不会在队列产生堆积
只有在多条流同时向buffer中发包的情况下,入的速率>出的速率,队列才会堆积,才可能丢包
Gbps这种网速的单位是1000为底
数据大小是1024为底,MB、KB、GB这种-
想要实现网络拓扑的CLOS架构,只要让下联和上联的带宽1:1对等,同时让网络的上行和下行的带宽1:1对等,实现无阻塞网络
例如Fat-Tree 拓扑:
AI
Bayes调参【多元优化】
Sys
- 本文链接:https://wan-nan.github.io/2023/04/01/Computer-Basics%EF%BC%88%E7%A7%91%E7%A0%94%E5%90%91%EF%BC%89/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。