TCP/IP协议族(五)

本文介绍了TCP滑动窗口的工作原理,包括其与数据链路层的区别、窗口的操作方式,以及TCP如何结合回退N帧协议和选择性重复ARQ的特点。此外,还详细解释了TCP拥塞控制的三个阶段:慢速启动、拥塞避免和拥塞检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCP滑动窗口与回退N帧协议以及拥塞控制

滑动窗口
我们知道在数据链路层中也有一个滑动窗口,其实滑动窗口指的就是发送方和接收方所关心的序列号范围。在发送滑动窗口中,滑动窗口包含已经发送出去的序列号和可以发送的序列号。在接收滑动窗口中,滑动窗口包含了将要接收的序列号。

回退N帧
数据链路层的接收滑动窗口大小始终为1,也就是说在当前允许到达的序列号到达之前窗口不会发生滑动。如果接收方所期待的序列号为2,发送方已经将2,3,4号发出,但是由于传输原因2号丢失,那么发送窗口就需要从2号开始重新发送。

选择性重复ARQ

选择性重复ARQ的接收窗口大小是大于等于1的,他可以接收多个序列号,当其中有一个序列号丢失的时候,不需要从丢失的序列号开始全部重新发送,只需要重新发送丢失的序列号即可。

介绍完这三个基本概念我们来看看TCP的滑动窗口和回退N帧协议。
TCP的滑动窗口与数据链路层不同的一点是,数据链路层的滑动窗口是面向帧的,TCP的滑动窗口是面向字节的,而且数据链路层的窗口大小是固定的,TCP的窗口大小是可变的。
那什么是可变的呢?窗口是张开的,合拢的,收缩的。窗口张开是指右边沿向右移动,也就是允许缓存更新符合条件的字节。窗口合拢是指左边沿向右移动,也就是有些字节已经被确认。窗口收缩指的是右边沿向左移动,也就是废除了某些满足条件的发送(因为这样的操作有可能造成已经发送的字节失效,所以现实中不建议这样使用)。

TCP的回退N帧和数据链路层的有所不同,TCP中的回退N帧是数据链路层中回退N帧和选择性重复ARQ的结合体。
因为他没有NAK所以看起来像回退N帧,但是接收方会保存失序的段直到丢失的段到达,所以看起来也像选择重发。

TCP拥塞控制

TCP的拥塞控制大致分为三个阶段:慢速启动,拥塞避免,拥塞检测。

慢速启动:指数增长。在最开始时将窗口设置为一个最大段长度,随着接受到的确认个数的增加,窗口大小按照指数增长。直到达到窗口的阈值。

拥塞避免:加性增加。为了避免拥塞,当窗口到达阈值之后,随着确认个数的增加,窗口不再沿着指数增长,而是每次加1。

拥塞检测:乘性减少。发送方推测出发送拥塞现象的唯一方法就是通过重传的要求。也就是在发送方接收到三个ACK之后或者计时器到时。

如果是计时器到时,那么意味着存在严重拥塞的可能性,在这种情况下TCP会做出强烈的反应:
1、将阈值设为当前窗口的额一半
2、将拥塞窗口设置为一个最大段的长度
3、启动慢速启动阶段

如果是接收到三个ACK,那么意味着存在轻度拥塞的可能性,这种情况下TCP会做出轻度的反应:
1、将阈值设为当前窗口的一半
2、将拥塞窗口设置为阈值
3、启动拥塞避免阶段。

(像我们平时在下载东西的时候,可能下着下着下载速度就变慢了,如果我们暂停之后重新开始就会发现速度又重新变快了,那么大概就是TCP的拥塞控制的结果了。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值