1 优化目标
降低网络拥塞。总是有效吗?并不是,它们有特定的使用场景。
2 Nagle算法和Delayed ACK算法
在TCP/IP协议中,每一个报文都是由报文头(header)和报文体(payload)组成。就像我们网上买的书到了,书是装在一个袋子里,然后会贴一个标签,上面包含了一些关键信息,比如:发件人姓名、发件人电话、发件人地址、收件人姓名、收件人电话、收件人地址、物品简介。这里书类似报文体,标签上的关键信息类似报文头。
如果一个报文的报文体尺寸非常小,甚至比报文头还小,没有有效利用带宽,在网络流量很大是,这种报文会给网络带来更多的负担。比如你在同一家网店买30本书,如果分为30个快递邮寄给你,那么店家会下单30次,快递员会分拣送货30次,你也会拆30次快递,整个流程就会很低效,快递成本也会增加很多。因此最好将这30本书合并为一个快递邮寄给你。TCP报文头最多可占用40 Byte,每次只发送1 Byte的数据的程序是很常见的。如果系统立刻发送这种报文,那么一个报文总共有41 Byte,但是只有1 Byte是应用要发送的数据。我们的卡车本次只运输了一双拖鞋,这太低效了,会增加交通拥堵。发送报文时,Nagle算法会合并同一TCP流中的多个报文,保证合并后报文的报文头与报文体的比例处于合理范围,提高带宽利用效率,降低网络拥塞。Nagle算法延迟了报文的发送,增加了延迟,对于一些强调交互的场景,会降低用户体验。
延迟ACK(Dela