TCP中发送数据的情况

发送窗口和接收窗口的本质,可以叫做“TCP 的生产者 - 消费者”模型,这个只是单个网络连接的数据传输。发送窗口相当于生产者,接收窗口相当于消费者。TCP必须考虑多个连接共享在有限的带宽上,兼顾效率和公平性的控制,而拥塞控制才是多个连接在实际网络传输中的模型。
拥塞控制常用的算法有“慢启动”,它通过一定的规则,慢慢地将网络发送数据的速率增加到一个阈值。超过这个阈值之后,慢启动就结束了,另一个叫做“拥塞避免”的算法登场。在这个阶段,TCP 会不断地探测网络状况,并随之不断调整拥塞窗口的大小。
在任何一个时刻,TCP 发送缓冲区的数据是否能真正发送出去,至少取决于两个因素,一个是当前的发送窗口大小,另一个是拥塞窗口大小,而 TCP 协议中总是取两者中最小值作为判断依据。
发送窗口反应了作为单 TCP 连接、点对点之间的流量控制模型,它是需要和接收端一起共同协调来调整大小的;而拥塞窗口则是反应了作为多个 TCP 连接共享带宽的拥塞控制模型,它是发送端独立地根据网络状况来动态调整的。
三个重要概念:
糊涂窗口综合征:应用进程间传送的报文段很小的情况,这种现象产生的原因是发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之。
Nagle算法:限制大批量的小数据包同时发送,为此,它提出,在任何一个时刻,未被确认的小数据包不能超过一个。
延时 ACK: 在收到数据后并不马上回复,而是累计需要发送的 ACK 报文,等到有数据需要发送给对端时,将累计的 ACK捎带一并发送出去。

此文章为11月Day 17学习笔记,内容来源于极客时间《网络编程实战》。

你可能感兴趣的:(网络编程实战,tcp/ip,网络,网络协议)