TCP发送窗口拥塞窗口试题分析

简介: 考研试题分析

题目一:

来源2015年408计算机综合


试题链接:经过 4 个 RTT 后,甲的发送窗口是()。__牛客网

 

主机甲和主机乙新建一个TCP 连接,甲的拥塞控制初始阈值为 32KB,甲向乙始终以 MSS=1KB 大小的段发送数据,并一直有数据发送;乙为该连接分配 16KB 接收缓存,并对每个数据段进行确认, 忽略段传输延迟。若乙收到的数据全部存入缓存,不被取走,则甲从连接建立成功时刻起,未发送超时 的情况下,经过 4 个 RTT 后,甲的发送窗口是(A)。

A.1KB

B.8KB

C.16KB

D.32KB


发送窗口大小取决于min(rwnd,cwnd).

其中rwnd是接收缓存的空余大小,表示接收方还能接收多少。

cwnd就是我们常常画慢增长曲线,拥塞避免曲线等等分析的纵轴数值。

这里,其实很明确的告诉我们接收缓存只进不出,因此在不断减小。可是我们有一个思维惯性是喜欢思考有趣的部分,画cwnd的变化,自以为这个分析好了问题就手到擒来了,切不可忽视rwnd。这里就是个例子。


cwnd从1MSS = 1KB开始,一个RTT后变为2KB,两个RTT后变为4KB,3RTT后变为8KB,4个RTT后变为16KB


同时呢,接收缓由16KB→15KB→13KB→9KB→1KB16KB→15KB→13KB→9KB→1KB


通知窗口值,代表接收缓存剩余值(KB) 拥塞窗口大小(KB) 发送窗口大小(KB)
初始          16           1                1
经过第一个RTT        16-1=15           2           min(15, 2)=2
经过第二个RTT        15-2=13           4           min(13,4)=4
经过第三个RTT        13-4=9           8           min(9,8)=8
经过第四个RTT         9-8=1          16  通知接收缓存只有1KB了,发送窗口取min(1, 16)=1KB


经过一个RTT,第二次发送时,rwnd = 15KB,cwnd = 2KB,发送窗口取较小值:2KB


经过两个RTT,第三次发送时,rwnd = 13KB,cwnd = 4KB,发送窗口取较小值:4KB


经过三个RTT,第四次发送时,rwnd = 9KB,cwnd = 8KB,发送窗口取较小值:8KB


经过四个RTT,第五次发送时,rwnd = 1KB,cwnd = 16KB,发送窗口取较小值:1KB


当然第五次发送之后接受窗口就满了,主机甲就会周期性的只发送一个字节数据的报文段,一旦主机乙的缓存有空,确认报文段就会出现非0的通知窗口值,当然这里是题目要求,主机乙的数据不被取走,仅仅为了计算,并非实际情况。


再来看一题:

题目二:

来源为2014年408计算机综合

链接:从t时刻起,不再发生超时的情况下,经过10个RTT后,甲的发__牛客网

 

主机甲和乙已建立了TCP连接,甲始终以MSS=1KB大小的段发送数据,并一直有数据发送;乙每收到一个数据段都会发出一个接收窗口为10KB的确认段。若甲在t时刻发生超时时拥塞窗口为8KB,则从t时刻起,不再发生超时的情况下,经过10个RTT后,甲的发送窗口是 (A)

A.10KB

B.12KB

C.14KB

D.15KB

分析:


当t时刻发生超时,TCP拥塞控制,拥塞窗口发生乘性减,把ssthresh设为8的一半,即为4,且拥塞窗口设为1KB。然后经历10个RTT后,拥塞窗口的大小依次为1(t时刻初始)、2(第一个RTT后)、4(第二个RTT后)、5、6、7、8、9、10、11、12(第10个RTT后),而发送窗口取当时的拥塞窗口和接收窗口的最小值,而接收窗口始终为10KB,所以选A。其中,1、2、4为慢启动,到达了阈值后开始加性增->5,6,7,8,9,10,11,12.


试题三:

题目来源:北京航空航天大学-2015-961_计算机学科专业基础综合

链接:主机甲中的应用程序使用TCP协议向主机乙发送20KB的数据__牛客网

 

主机甲中的应用程序使用TCP协议向主机乙发送20KB的数据。在建立TCP连接后,主机甲按照慢启动(慢开始)和拥塞避免机制发送数据,其拥塞窗口初始值为1,慢启动门限值ssthresh为8,且每次发送TCP报文段均搭载1KB的用户数据。


1. 如传输过程中未发生确认超时,且不考虑流量控制,则主机甲到第几轮次时能够完成题中所述20KB数据的发送?各轮次的拥塞窗口宽度是多少?


2. 如传输过程中未发生确认超时,主机乙返回的确认报文段中“窗口(Window size)”字段值始终为6KB,则主机甲到第几轮次时能够完成题中所述20KB数据的发送?


分析

1.题目说了不考虑流量控制,而流量控制是TCP接收方针对TCP发送方采取的措施,能够消除发送方使接收方缓存溢出的可能性。

也就是说,这里接收方接收缓存无限大。而发送窗口=min(接收缓存的通知值,拥塞窗口大小)。所以这里发送窗口=拥塞窗口。

并且收到的确认不超时,不考虑超时重传。

第一次:发送了1KB,收到确认之后拥塞窗口变为2KB,发送窗口也变为了2KB,此时共发送1KB

第二次:发送了2KB,收到确认之后拥塞窗口变为4KB,发送窗口变为了4KB,此时共发送3KB

第三次:发送了4KB,收到确认之后拥塞窗口变为8KB(准备开始加性增),发送窗口变为了8KB,此时共发送7KB

第四次:发送了8KB,收到确认之后拥塞窗口变为9KB,发送窗口变为9KB,此时共发送15KB

第五次:发送了9KB,收到确认之后拥塞窗口变为10KB,发送窗口变为10KB,此时共发送24KB

满足要求!到达第5次时,能够完成题中所述20KB数据的发送。



2.在TCP报文段结构中有一个接收窗口值,这里题目说明每次返回的报文中,接收窗口的值均为6KB,意味着接收窗口的通知值每次都是6KB,发送窗口值=min(6KB,拥塞窗口值)

第一次:发送了1KB,收到确认之后拥塞窗口变为2KB,发送窗口也变为了min(6KB, 2KB)=2KB,此时共发送1KB

第二次:发送了2KB,收到确认之后拥塞窗口变为4KB,发送窗口变为了min(6KB, 4KB)=4KB,此时共发送3KB

第三次:发送了4KB,收到确认之后拥塞窗口变为8KB(准备开始加性增),发送窗口变为了min(6KB, 8KB)=6KB,此时共发送7KB

第四次:收到确认发送了6KB,之后拥塞窗口变为9KB,发送窗口变为min(6KB, 9KB)=6KB,此时共发送13KB

第五次:收到确认发送了6KB,之后拥塞窗口变为10KB,发送窗口变为min(6KB, 10KB)=6KB,此时共发送19KB

第六次:收到确认发送了6KB,之后拥塞窗口变为11KB,发送窗口变为min(6KB, 11KB)=6KB,此时共发送25KB

综上分析:主机甲到第6次时能够完成题中所述20KB数据的发送。



===========================Talk is cheap, show me the code=======================


目录
相关文章
【计算机网络】第三章 数据链路层(可靠传输)
【计算机网络】第三章 数据链路层(可靠传输)
|
开发者
【面试题精讲】面向对象三大特征
【面试题精讲】面向对象三大特征
|
9月前
|
网络协议 算法 网络性能优化
第十一问:TCP的窗口机制是什么?
TCP的窗口机制是实现流量控制和拥塞控制的重要手段,主要包括滑动窗口、接收窗口(rwnd)和拥塞窗口(cwnd)。滑动窗口定义了发送方允许发送的数据范围,接收窗口控制接收方的缓冲区容量,拥塞窗口防止网络拥塞。这些窗口通过动态调整,确保数据传输的高效性和可靠性。
820 1
|
6月前
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用的算法是哈希槽分区算法。Redis集群中有16384个哈希槽(槽的范围是 0 -16383,哈希槽),将不同的哈希槽分布在不同的Redis节点上面进行管理,也就是说每个Redis节点只负责一部分的哈希槽。在对数据进行操作的时候,集群会对使用CRC16算法对key进行计算并对16384取模(slot = CRC16(key)%16383),得到的结果就是 Key-Value 所放入的槽,通过这个值,去找到对应的槽所对应的Redis节点,然后直接到这个对应的节点上进行存取操作
|
运维 Serverless 云计算
飞天技术观|云上开发新范式:Serverless的必然与应然
在2022年云栖大会上宣布核心产品全面Serverless化之前,阿里云在Serverless领域布局已经有六七年积累了,一直在打磨产品,夯实基础;从去年开始,阿里云进入到了Serverless的第二阶段,一路突飞猛进,相对应地,阿里云Serverless产品数量和丰富度都在快速增长,业务规模也在快速增长。
896 1
|
10月前
|
Java 应用服务中间件
Process exited with an error: 1 (Exit value: 1) 问题处理
本文介绍了在本地启动项目时遇到“Process exited with an error: 1”错误的解决过程。作者首先排除了配置文件修改的影响,通过分析错误信息,推测为端口占用问题,并使用 `netstat -ano` 命令检查端口占用情况,最终通过终止占用端口的进程解决了问题。
|
开发工具 git
git 清除已提交的记录
git 清除已提交的记录
172 3
CentOs8系统安装mailx发邮件
CentOs8系统安装mailx发邮件
160 1
|
弹性计算 对象存储 CDN
2023年阿里云流量计费标准价格表
2023年阿里云流量计费标准价格表,阿里云服务器公网带宽计费模式按固定带宽和按使用流量哪个划算?阿里云百科以北京地域为例,按固定带宽计费1M带宽一个月23元,按使用流量计费1GB流量0.8元,如果云服务器带宽使用率低于10%,那么首选按使用流量计费,如果带宽实际利用率较高的话,按固定带宽计费更划算一些
5093 0
2023年阿里云流量计费标准价格表
|
XML 前端开发 JavaScript
【Web 前端】href和src的区别?
【4月更文挑战第22天】【Web 前端】href和src的区别?