TCP重传机制、滑动窗口、流量控制、拥塞控制

一、重传机制

  • 超时重传
  • 快速重传
  • SACK(选择性确认)
  • Duplicate SACK
    TCP重传机制、滑动窗口、流量控制、拥塞控制_第1张图片

二、滑动窗口

TCP重传机制、滑动窗口、流量控制、拥塞控制_第2张图片
TCP重传机制、滑动窗口、流量控制、拥塞控制_第3张图片

三、流量控制

发送方不能无脑的发送数据,应该考虑接收方的处理能力。
TCP 提供一种机制可以让「发送方」根据「接收方」的实际接收能力控制发送的数据量,这就是所谓的流量控制。

操作系统缓冲区和滑动窗口的区别
先收缩窗口,在减少缓冲区,防止数据丢失。

窗口关闭
当接收窗口大小为0时,会停止接收数据,当接收窗口重新有空间时,会给发送方发一个窗口非0 的ACK报文,但是此报文可能会丢失。为了防止此现象发送方会定时进行窗口探测

糊涂窗口综合征
当接收窗口很小的时候,为了避免为发生大车拉小物的情况,所以设定一个窗口最小阈值。当「窗口大小」小于 min( MSS,缓存空间/2 ) ,也就是小于 MSS 与 1/2 缓存大小中的最小值时,就会向发送方通告窗口为 0,也就阻止了发送方再发数据过来。
另外也可以设定发送方当有小数量数据时先停止发送,等后面攒多了在一块发送(伺机使用)。
可以在 Socket 设置 TCP_NODELAY 选项来关闭这个算法(关闭 Nagle 算法没有全局参数,需要根据每个应用自己的特点来关闭)

setsockopt(sock_fd, IPPROTO_TCP, TCP_NODELAY, (char *)&value, sizeof(int));

四、拥塞控制

  • 慢启动
  • 拥塞避免
  • 拥塞发生(超时重传、快速重传)
  • 快速恢复
    -TCP重传机制、滑动窗口、流量控制、拥塞控制_第4张图片

你可能感兴趣的:(计算机网络,tcp/ip,网络,网络协议)