注意事项:
① 如果是和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协议,所以发送窗口最大值为=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博客