day06|计算机网络重难点之 TCP连接如何确保可靠性、拥塞控制如何实现、TCP流量控制如何实现、UDP如何实现可靠传输
- 14.TCP连接如何确保可靠性
- 15.既然提到了拥塞控制,那你能说说说拥塞控制是怎么实现的吗
- 16.TCP流量控制是怎么实现的?
- 17.UDP怎么实现可靠传输
14.TCP连接如何确保可靠性
TCP 通过 拥塞控制、超时重传、差错控制(序列号、确认应答、数据校验)、流量控制等机制,确保了数据传输的 效率和可靠性
- 第一个是 拥塞控制:TCP 通过 慢启动、拥塞避免、快速重传和快速恢复等算法,,来控制数据传输的速率,防止网络拥塞
- 第二个是 确认应答 和 超时重传:接收方 发送ACK 确认收到的数据,而发送发会设置一个 定时器,如果 在定时器超时之前 没有收到确认,发送方会 重传数据
- 第三个是 序列号:每个 TCP段 都有一个 序列号,确保 数据报的顺序正确
- 第四个是 数据校验:TCP 使用 校验和 来检测数据在传输过程中是否出现错误。如果出错,则接收方 丢弃该数据报,等待重传
- 第五个是 流量控制:TCP 通过 滑动窗口 机制进行 流量控制,确保 接收方 能够处理 发送发发送的数据量
15.既然提到了拥塞控制,那你能说说说拥塞控制是怎么实现的吗
TCP 拥塞控制 可以在网络出现拥塞时 调整数据传输速率,防止网络过载。主要包括以下几个方面:
-
第一个是 慢启动:初始阶段,发送方 会以较小的 发送窗口 传输数据。随着每次 成功收到 确认,发送方会以 指数级 增加 发送窗口的大小,这称为 慢启动。慢启动有助于 在网络刚开始传输时 谨慎地 逐步增加速率,防止引发拥塞
-
第二个是 拥塞避免:一旦 发送窗口 达到慢启动的阈值,就会进入拥塞避免阶段。在这个时期,发送方 改为 以线性增加 的方式 增加发送窗口的大小,而不再是 指数级的增长。这有助于控制发送速率,防止引发拥塞
-
第三个是 快速重传:如果发送方 连续收到 相同的确认,它会认为存在数据报的丢失,并快速重传 未确认的数据报,而且不需要等待超时。快速重传 有助于 更快地 恢复因网络拥塞导致的 数据报的丢失
-
第四个是 快速恢复:在快速重传之后,TCP 进入 快速恢复 阶段。在这个时期,发送方不会回到 慢启动 阶段,而是将 慢启动的阈值 设置成 当前窗口的一半 ,并且 把 拥塞窗口大小 设置成 慢启动的阈值+已经确认但是没有被快速重传的数据报的数量 。这个过程有助于更快从拥塞中恢复
16.TCP流量控制是怎么实现的?
流量控制其实就是 让发送方 发送速率不要太快,让接收方来得及处理。流量控制可以利用 滑动窗口机制 来实现,主要就是 动态调整 发送方 和 接收方 之间的 数据传输速率,包括以下几个方面:
-
第一个是 发送方窗口大小:每个TCP报文段 都包含 一个窗口字段,该字段 表明了 发送方 可以发送多少字节的数据而不用等待确认。这个窗口是动态调整的
-
第二个是 接收方窗口大小:接收方 通过 窗口字段 告知 发送方 自己当前的可接受窗口大小,也就是 接收方缓冲区 还有多少可用空间
-
第三个是 流量控制的目标:流量控制的目标是 确保发送方 不要 发送超过 接收方缓冲区容量的数据。如果接收方 缓冲区满了,它会减小窗口大小,告知发送方暂停发送,防止溢出
-
第四个是 动态调整:发送方 会根据 接收方窗口的大小 动态调整 数据传输的速率。如果 接收方的窗口大小增加,发送方则会加速发送数据;反之则减小发送速率
-
第五个是 确认机制:接收方 会定期发送ACK报文,告知发送方 数据已经成功接收,也可用通过 ACK报文中的 窗口字段 来告知发送方 它当前窗口的大小
17.UDP怎么实现可靠传输
UDP不是面向连接的协议,所以 它消耗资源更少,处理速度更快。通常音频、视频和普通数据更多使用UDP,因为它们偶尔丢失一两个数据报,对结果也不会造成很大影响。
UDP的可靠传输可用通过 应用层来实现,关键在于两点:
- 第一个是 提供 确认序列号,从而对 数据报进行确认和排序
- 第二个是 提供 超时重传 机制,避免数据报丢失
在发送端:
- 首先 在 在UDP数据报 定义一个首部,包含 确认序列号 和 时间戳,时间戳是用来数据报的往返时间,从而的推算出合适的重传的超时时间。
- 然后 在收到接收端的确认之后,才发送下一个数据报。如果时间超时,发送端则重传数据报,同时将重传的超时时间扩大为原来的2倍,重新计时。
在接收端:
- 接收到 一个数据报之后,首先取下该数据报首部的确认序列号和时间戳,并添加 接收端的确认数据报的首部后发送给发送端。
- 然后根据序列号,对已收到的数据报进行排序,并丢弃重复的数据报