计网第五章(运输层)(四)(TCP的流量控制)

2023-09-15 17:17:04

一、基本概念

流量控制就是指让发送方的发送速率不要太快,使得接收方来得及接收。可以使用滑动窗口机制在TCP连接上实现对发送方的流量控制。

注意:之前在讨论可靠传输时,讨论过选择重传协议和回退N帧协议都是基于滑动窗口的机制上进行实现的。

二、具体实现

接收方通过向发送方发送带有自己接收窗口值的报文段来控制发送方的发送窗口。注意:TCP的窗口单位是字节(这里也进一步体现了TCP是面向字节的)。

你妈(发送方)给你(接收方)盛了三碗米饭(发送窗口的值),你吃完了感觉只能再吃一碗,就告诉你妈你再吃一碗(设置接收窗口的值),于是你妈就再给你盛了一碗饭(实现流量控制)

如图:假设A和B已经完成TCP连接,A向B发送数据,在连接建立时B告诉A自己的窗口值。设B的接收窗口值为400。

(1)A发送的每个TCP数据报文段可携带100字节数据,因为B的窗口值为400,所以A将自己的发送窗口值也设置为400。开始时,A先将序号1到100的数据封装成一个报文段中发送出去,此时发送窗口内还可以发送300字节。seq是TCP报文段首部中的序号字段,表示数据载荷的第一个字节的序号,这里应该为1,DATA表示TCP数据报文段。

(2)A又向B发送序号101到200,还能再发送200字节。这里seq=101。

(3)A又向B发送序号201到300 ,但是该报文段在传输过程中发生丢失。

(4)B向A发送收到的201号之前的数据的累积确认 ,并将接收窗口改为300,对A进行流量控制。其中,ACK是TCP报文段首部中的标志位,取值为1表示该报文段是一个确认报文段。ack是TCP报文段首部中的确认号字段,表示201号之前的数据都已正确接收,希望收到201及之后的数据。rwnd是TCP报文段首部中的窗口字段,表示接收窗口为300。

(5)主机A收到累积确认后,让发送窗口向前滑动 ,并将自己的发送窗口值调整为300。虽然A之前发送了201-300的数据,但是没有收到该段数据的累计确认,于是该段数据不能移出窗口。

(6)201到300号数据在超时重传计时器到时后会进行重传, 这中间会将新落入发送窗口内的数据发送出去。当发送完序号401到500后,A暂时不再发送数据,超时重传到时后只将201-300的数据重新发送,而不发送新数据。之后B对A发送累计确认,在该确认报文段还可以封装新设置的接收窗口值来对A进行流量控制,这些过程和上面类似,不再做演示。

这里还有一个特别的地方:假设B向A发送的累积确认中,B将窗口值改为了0,也就是说B不再接收数据。相应地,A也会把自己的发送窗口值改为0,A不会再发送一般的报文段。

后来B又有一些缓存空间,又向A发送一个接收窗口值为300的报文段。但是发生丢失,这时候如果不采取措施就会陷入这种死锁局面。

于是,经典的重传计时器措施再次出现,当发送方收到窗口值为0的通知时,就会启动该持续计时器,当计时器到时后,A就发送一个携带1字节数据的零窗口探测报文(前面故意将一般两个字标红,也就意味着这个零窗口探测报文不是一般的报文段,即便接收方的接收窗口值为0,也得接收该报文段)。

B确认这个报文段时,给出自己现在的接收窗口的值,如果还为0,那么就A收到后,重启该计时器。

这时候可能有人会想到,那要是这个零窗口探测报文段也丢失了呢?

那就给这个零窗口报文段也加一个计时器,如果计时器超时就重发该报文段。

注意:TCP的发送窗口实际为min{发送方自身的拥塞窗口值,接收方的接收窗口值}。

但是拥塞窗口值涉及到拥塞控制,所以这里不做详细概述。

三、示例

1、主机A向主机B连续发送了2个TCP报文段,其序号分别是80和220
(1)第1个报文段携带了多少字节的数据?主机B收到第1个报文段后发回的确认中的确认号是多少?
(2)若主机B收到第二个报文段后发回的确认号300,则A发送的第二个报文段至少携带了多少字节的数据?
(3)如果在情况(2)中A的第二个报文段中实际携带了100字节的数据,而B返回的窗口值为100字节,那么主机A接下多最多可以发送多少字节的数据,这些数据的起止编号分别是多少?

解:

(1)

根据前面所述,序号是每个报文段的第一个字节的序号,也就是说第一个报文段的序号应该是80到219,共140个字节。B收到后返回的确认号应该为220。(返回的确认号是已经收到x-1及之前的,想要x及之后的。

(2)

299-220+1=80,所以第二个报文段至少携带了80个字节。

(3)

实际携带了100个字节,但是B的确认号是300,也就是80个字节。并且B的接收窗口现在为100。

那么A的发送窗口也要改为100,并且A的发送窗口向前移动80个字节。但是之前发送过的20字节完全不知道什么情况(题目并没有明确说这20个字节超时,我们目前只能知道没有收到这20个字节的确认),所以A接下来可以发送新落入发送窗口内的数据,共80字节,起止编号为320和399。

更多推荐

二叉树经典OJ题——【数据结构】

W...Y的主页😊代码仓库分享💕今天我们来进行二叉树的OJ练习,就是利用二叉树的前序、中序、后续以及晨序遍历的特性进行OJ训练。话不多说,来看我们的第一道题。【leetcode965.单值二叉树】OJ链接如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返

Wireshark把DDoS照原形

1前言MTU、传输速度、拥塞控制,还是各种重传,TCP传输相关的核心概念:学习了RFC规范和具体的Linux实现通过案例,把这些知识灵活运用了起来这种种还是在协议规范这大框架内的讨论,默认前提就是通信两端是遵照TCP规定工作,都是君子协定。若不遵TCP规范,甚至找漏洞攻击,这种小人行为也很常见,如DDoS攻击。2NTP

正则表达式元字符

正则表达式元字符-详细说明字符说明\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n"匹配字符"n”。“\n"匹配换行符。序列”\\“匹配”\“,”\(“匹配”("。^匹配输入字符串开始的位置。如果设置了RegExp对象的Multiline属性,^还会与"\n"或"\r"之后的位置匹配。$匹配输入字符

如何用Stable Diffusion模型生成个人专属创意名片?

目录1什么是二维码?2什么是扩散模型?3StableDiffusion环境搭建4开始制作创意名片结语1什么是二维码?二维码是一种用于存储和传输信息的方便而广泛使用的图像编码技术。它是由黑色方块和白色空白区域组成的二维图形,可以通过扫描设备(如智能手机)进行解码。二维码基于特定的编码标准和解码算法——其中包括错误检测和纠

如何通过简历展示自己的执行力和动力?

导语:简历是求职过程中的重要工具,通过合适的展示方式能够有效地展示自己的执行力和动力。本文将分享一些技巧,帮助您在简历中突出这两个关键能力。突出成就和项目经历:在简历中详细描述您曾经完成的项目或工作,并着重强调其中的具体成果。指出您所负责的任务,并描述您是如何通过积极的执行力完成这些任务的。例如,提及您成功地完成了某个

RHCSA_Linux 从命令行管理文件

目录一、文件命令规范:二、创建链接文件1、创建软链接文件2、创建硬链接文件三、目录操作命令1、创建目录--mkdir2、统计目录及文件的空间占用情况--du3、删除目录文件四、创建、删除普通文件1、创建普通文件2、删除普通文件五、数据流和重定向1、数据流2、重定向操作符3、输出重定向案例标准输出重定向:1>或>、1>>

2023华为OD统一考试(B卷)题库清单(持续收录中)以及考点说明

目录专栏导读2023B卷“新加题”(100分值)2023Q2100分2023Q2200分2023Q1100分2023Q1200分2022Q4100分2022Q4200分牛客练习题专栏导读本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测

初识Spring(一)IOC

Spring框架是一个开源的Java平台,它最初是由RodJohnson编写的,并且于2003年6月首次在Apache2.0许可下发布。Spring框架的核心特性是可以用于开发任何Java应用程序,但是在JavaEE平台上构建web应用程序是需要扩展的。Spring框架的目标是使J2EE开发变得更容易使用,通过启用基于

【简单教程】利用Net2FTP构建免费个人网盘,实现便捷的文件管理

文章目录1.前言2.Net2FTP网站搭建2.1.Net2FTP下载和安装2.2.Net2FTP网页测试3.cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置4.公网访问测试5.结语1.前言文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人存储文件资料,还是商业文件

SQL语句学习系列(1)

目录查询语句1.查询所有列的所有行:2.查询指定列的所有行:3.查询满足条件的行:4.查询满足多个条件的行:6.查询满足条件的行数:7.查询满足条件的唯一值:8.查询满足条件的分组统计:9.查询满足条件的平均值:10.查询满足条件的最大值:11.查询满足条件的最小值:12.查询满足条件的总和:13.查询多个表中的数据:

科技评估分类

声明本文是学习GB-T42776-2023科技评估分类.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件确立了科技评估的分类原则,描述了分类方法,规定了编码方法、分类与代码。本文件适用于科技评估的规划、设计、委托、组织、实施、管理、研究、培训和信息化等相关活动。2规范性引用文件下列文件中

热文推荐