


文章目录
一、传输效率的衡量目标
1.并列衡量
传输效率是以
- 吞吐量:单位时间网络上传输多少数据(包括重传),大
- 有效吞吐量:单位时间成功交付给对方应用程序的有效数据量,大
- 协议开销效率:有效数据字节/(有效数据+TCP/IP头+ACK+重传),大
- 主机处理效率:传输单位数据,CPU需要处理多少TCP包,ACK报、多少中断、多少协议栈工作,小
并列衡量的
2.重点目标
不是"很快就把对方内核接收缓冲区塞满",接收缓冲区只是中间缓存,
高效最重要体现在"应用层最终有效收到多少数据/时间",即有效吞吐量goodput
二、ack的延时应答
1.延迟的报量与时间
接收方收到报文,制造出ack后,ack延迟 在 ++等收满延齐报文量++ ,或++等过完延最迟计时器++ 后返回
1.1定量定时:
ack延时 等齐收满的报文量越少 对应地 等待最迟收满它们所用的时间也越少
延时计时器越小:
使得每个窗口后区报文的 停发等待ack延迟完返回 的时间越少->传输的吞吐量越高
延齐报文量越小:
接收方就频率越快地,收齐每小块的报文 返回的ack就越多->
- ack返回频率多了 就能更快得累积完,针对丢包的快速重传
- ack数量增多了,就降低了协议开销效率与主机处理效率
折中衡量后,ack的延齐报文量是2 个报文,延最迟计时器的时间是很短的
2.延迟效果
2.1延齐累积确认
接收方收到普报,它的ack检查前缀后,会查看ack老检查前缀与在后面收普报的新检查前缀
2.1.1连续到达-ack延齐累积
delayed ACK用于正常、连续、按序到达的数据流,
如果新检查前缀覆盖过老前缀,能确定当前报文是,前面无丢报地连续到达过来的:
- 覆盖报文量过少,就会让当前ack先延时暂时不发;
- 等到后面再累积收报文的ack前缀,覆盖老前缀过很多报文量了,就返回 此能一次累积包括确认完,后面新收远范围内大量报文 的一个ack
能省少ack数量,提高协议开销效率与主机处理效率
2.1.2有缺到达-ack立即返回
立即ACK用于异常、断缺、乱序到达的数据流,
如果是乱序,或按序但前面有缺口 的报文到达,它的新ack检查前缀会与老前缀重合,就不是前面报文都连续地已到了,先发但还未到的报文可能是丢了:
- 此时就会针对此可能丢包报文,立即返ack,反馈给快速重传
- 等到 此判为可能丢失的报文 接收方收到后 也会立即返它的ack,终止 报文已到,还在为此进行的,会导致重复传的 超时/快速重传
2.2延寻捎带报文
ack的延时发送 可以让ack在延迟的区间时间内,等寻本方要发的反向数据报文 搭载上去一起捎带返回,就省少了此ack报文的数量,提高了协议开销效率与主机处理效率
2.3延变剩余空间
接收方收到报文后 ack延时应答,停会再发的延迟时间内:
2.3.1延迟剩变大
可能接收缓冲区收到数据<应用层取走数据,使得返回的ack剩余窗口大小更大了,会让下次发送方的滑动窗口更大,而连发更多数据,传输的吞吐量增多
2.3.2延迟剩变小
可能接收缓冲区收到数据>应用层取走数据,使得返回的ack剩余窗口大小更小了,而让下次发送方连发更少的数据,传输的吞吐量减少
绑定时量送达(不用担心的)
TCP剩余窗口是和字节序号空间绑定的时时允许接收范围,实际上发送方只要遵守了rwnd,连发的窗口报文量 就不会受到 应用程序消费速度的正常变化 而发生 当时反馈的接收方剩余空间大小,在窗口量的报文送到时,过后已改变,如变小就装不下而丢弃 的情况
2.4延增等待时间
只有滑动窗口尾部的报文会 停发地等待,还被延时的ack
2.4.1窗口前中区报文
等待ack与ack延时,无影响发送:
发送方发送的报文到对方,到接收方把ack延时,再到ack发回收到的时间内,发送方还在连发,此ack对应报文往后的,还没发完的剩余窗口里的报文,无受 窗口发完没报文可发了,而停下地等待接着的下一个ack,要划新窗口才有报文可发了
因此报文的发送 不受等待ack及其ack延时发送的影响,传输的吞吐量不变
2.4.2窗口后区报文
等待ack与ack延时,有影响发送:
- 等待ack影响:发送方发到窗口后面的余量报文发完时,就会停发地等待 接着最近的一个ack返回,得到对方最新的接收缓冲区剩余量大小,与取出计算的当时拥塞窗口大小,取较小值,划出新窗口,才有窗口内报文可继续发;
- ack延时影响:但往往窗口最后剩余的报文量 对方接收后 无法刚好凑满,延齐报文量 而导致停发地等满,延最迟计时器后 才返回ack
这段 停下发送报文,等待还延时ack返回 的时间,发送方原本可以用来发送数据的,停发地去等后 就少了这段时间内的发送方报文发送量,传输的吞吐量减少
