查缺补漏----三次握手与四次挥手

server/2024/10/19 7:11:01/

注意事项:

① 如果是和FTP服务器建立连接,那么要建立两个TCP连接。一个是控制连接一个是数据连接。

② SYN报文段不能携带数据。三次握手的最后一个报文段可以捎带数据,但是如果不携带数据,那么就不消耗序号

③ 在断开连接过程中,如果FIN=1,那么这个报文段就算不携带数据,也需要消耗序号。

④ 每收到一个对新报文段的确认后,将拥塞窗口加1。所以我们所说的慢开始阶段,拥塞窗口从1-->2-->4变化的过程不是从“2”直接到“4”,中间还要经历 接收一个确认报文段:2-->3-->4

2023最后一道题:

(1)控制连接持久连接,数据连接非持久连接,H登录服务器时,建立的TCP连接是控制连接。

对于2,3:

① TCP建立数据连接,发送SYN请求报文段时,需要消耗一个序号。

② 第三次握手时,起始的序号为101,并且捎带了1000B的数据,接收方收到了1000B的数据,并且发送ack=1101,表示101~1100都收到了,下次期待接收1101序号的报文段。

由于题目中提到了“拥塞控制的初始阈值”,所以我们要考虑“慢开始”:

① 收到1个报文段确认后,发送方可以发送两个报文段,一个起始序号为”1101“,一个起始序号为“2101”。

② 当收到ack=2101的确认报文时,表示起始序号为“1101”的报文正确接收。所以拥塞窗口+1=3MSS。

当拥塞窗口=4时,发送方可以发送4个报文段,当收到对发送报文段的确认后,即ack=7101。进入拥塞避免阶段,也就是说“即使收到了4个确认报文段”,拥塞窗口只+1。

此时,cwnd=5MSS。

发送完18000B数据,即发送方的最后一个报文段起始序号“17101”序号的报文段,就可以开始断开连接(也就是断开数据连接)

断开连接时,seq=18101是因为发送方最后一个发送的报文起始序号是"17101",并且携带了1000B的数据,所以就是17101~18100,FIN报文段没有携带数据,但要消耗一个序号,即seq=18101。

ack=v,这个v,是主机H收到的最后一个报文段的最后一个字节的序号+1。

那么服务器段发送的seq=18102,就是对这个报文段的确认。

(6)总共经历6个RTT,平均发送速率18000B/60ms=2.4Mb/s

本题不写详细过程当然也能做,只是要清楚整个发送的流程:

(2) 第二次挥手ACK的确认报文段:由于主机发送18000B数据,并且数据传送是从序号101开始的,所以发送的最后一个报文段最后一个字节肯定是18100。第一次挥手18101,第二次挥手18102。

(3) 从序号101开始发送,每个报文段携带1000B数据,那么收到的确认报文段应该是1101,2101,3101....,刚开始拥塞窗口是1MSS,收到1101,2101,窗口值+2=3MSS。

收到7101,说明发送方发送了7000B的数据,拥塞窗口1-->2-->4,1+2+4=7MSS=7000B,收到7101,由于阈值为4MSS,虽然收到4个报文段的确认,但是拥塞窗口+1。

(4) 发送18000B,拥塞窗口的变化1-->2-->4-->5-->6,1+2+4+5+6=18MSS=18000B

所以收到确认后,拥塞窗口大小变为7,也就是1-->2-->4-->5-->6-->7,这里5个RTT,别忘了建立数据连接还有个RTT,总共6个RTT。

还有些题目没有明显提示你要考虑"慢开始""拥塞避免",但是有MSS,就要小心:

2022第40题:

由于题目没有阈值等信息,所以一直使用慢开始算法就可以,注意这里是服务器发送文件,服务器使用慢开始算法:

2017年最后一道题:

注意:

① 由于数据帧序号为3bit,所以数据帧序号是0~7。

② 由于使用GBN协议,所以发送窗口最大值为2^3-1=7

(1) 正确接收的数据帧为S0,0 S1,0 S2,0

(2) 由于0,1,2收到确认,所以滑动窗口向后移动,但是3,4未收到,所以还可以发送5个数据帧。主机甲对主机乙发送数据帧并捎带数据时,只能对按序到达的最后一个数据帧进行确认。

所以第一个数据帧为S5,2,表示期待接收对方下一帧序号为2。最后一个数据帧S1,2

(3) 由于S2,0超时,所以主机甲将2号数据帧,及序号位于其后的所发送的所有数据帧全部重传。

 由于主机乙最后发送的数据帧发送序号为2,所以主机甲发送的数据帧确认序号为3,表示已收到2,期待收到3。所以重发的数据帧为S2,3,S3,3,S4,3

(4)从一个数据帧发送,到收到该数据帧的确认中间,发送方可以发送多个数据帧,考虑最大信道利用率,就是刚好传了7个数据帧:

直接用公式:

不太会算可以看看:查缺补漏----信道利用率与数据传输速率(计算题)-CSDN博客


http://www.ppmy.cn/server/132980.html

相关文章

jmeter在beanshell中使用props.put()方法的注意事项

在jmeter中,通常使用beanshell去处理一些属性的设置和获取的操作,而这些操作也是有一定的规则的。 1. 设置属性时,在属性名上要加双引号,这代表它不是一个需要用var去声明的变量 这种设置属性的方式才是有效可行的,在…

Parameter-Efficient Fine-Tuning for Large Models: A Comprehensive Survey阅读笔记

Parameter-Efficient Fine-Tuning for Large Models: A Comprehensive Survey 综述阅读笔记 仅记录个人比较感兴趣的部分 基本知识 PEFT的三种分类:additive, selective, reparameterized, and hybrid fine-tuning selective fine-tuning 不需要任何额外的参数&am…

线性代数基础知识

行列式基础知识 一、行列式的定义 行列式是一个函数,其定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A |。行列式可以看作是一般欧氏空间中有向面积或体积概念的推广。在n维欧氏空间中,行列式描述了一个线性变换对“体积”…

本地部署 Milvus

本地部署 Milvus 1. Install Milvus in Docker2. Install Attu, an open-source GUI tool 1. Install Milvus in Docker curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.shbash standalone_embed.sh …

TemporalBench:一个专注于细粒度时间理解的多模态视频理解的新基准。

2024-10-15,由威斯康星大学麦迪逊分校、微软研究院雷德蒙德等机构联合创建了TemporalBench,它通过大约10K个视频问答对,提供了一个独特的测试平台,用以评估各种时间理解和推理能力,如动作频率、运动幅度、事件顺序等。…

jmeter 从多个固定字符串中随机取一个值的方法

1、先新增用户参数,将固定值设置为不同的变量 2、使用下面的函数,调用这写变量 ${__RandomFromMultipleVars(noticeType1|noticeType2|noticeType3|noticeType4|noticeType5)} 3、每次请求就是随机取的值了

安卓冻屏bug案例作业分享-千里马学员wms+input实战作业

背景: 近期有学员反馈在aosp14高版本上有了一个新窗口TaskBar,这个但是有需求就是对这个TaskBar进行隐藏,所以有一个需要对这个TaskBar进行进行隐藏需求 隐藏TaskBar需求做了之后发现有如下bug: 问题复现步骤: 因…

Error BackPropagation(误差逆传播)

误差逆传播(反向传播,BP算法) 引言E 误差逆传播算法(Error BackPropagation,BP)是神经网络中常用的传播算法(又叫做反向传播)。BP算法可以应用于多层前馈神经网络(FFN)以及其他类型的网络,如训练递归神经…