不是标答也不是参考答案
仅从个人理解出发去做题
1、(20分) 主机甲和主机乙之间已建立一个 TCP 连接,TCP 最大段长度为 1000 字节,若主机甲的当前拥塞窗口为 5000 字节,在主机甲向主机乙连接发送 2 个最大段后,成功收到主机乙发送的第一段的确认段,确认段中通告的接收窗口大小为 3000 字节,则此时主机甲还可以向主机乙发送的最大字节数是?
主机甲需要保证未被确认的数据量小于:
代入数值则有:
所以可以发送到的序号为:
可以发送的数据量为:4000-2000=2000B
只要记清楚第一个不等式就好了!
2、(20分) 主机甲和主机乙已建立 TCP 连接,甲始终以 MSS=1KB 大小的段发送数据,并一直有数据发送;乙每收到一个数据段都会发出一个接收窗口为 10KB 的确认段。若甲在 t 时刻发生超时,其拥塞窗口为 8KB 。则从 t 时刻开始,不再发生超时情况下,经过 10 个 RTT 后,甲的发送窗口是多少?
主机甲需要保证未被确认的数据量小于:
拥塞窗口的变化过程:
拥塞窗口:2,4,5,6,7,8,9,10,11,12
但是由于接收窗口为 10,因此最终发送窗口被限制为 10KB 。
3、(20分) 请描述 TCP 协议中标志位 ACK、SYN、FIN、RST 的含义,并叙述下 TCP 三次握手建立连接的过程。
标志位的含义:
- ACK:只有当 ACK=1 时确认号字段的内容才有效;当 ACK=0 时,确认号字段的内容无效。
- SYN:当 SYN=1 时,表示这是一个连接请求或连接接受报文。
- FIN:当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放运输连接。
- RST:当 RST=1 时,表明 TCP 连接中出现严重差错,必须释放连接,再重新建立。
三次握手建立连接的过程:
Step1:客户向服务器发送一个 SYN 报文:
- 不包含应用层数据
- SYN=1,ACK=0
- 客户的初始序号
Step2:服务器接收到 SYN 报文,为该 TCP 连接分配缓冲区和变量,响应一个 SYN/ACK 报文:
- 不包含应用层数据
- SYN=1,ACK=1
- 确认号:客户的初始序号+1
- 服务器的初始序号
Step3:客户接收到 SYN/ACK 报文,为该 TCP 连接分配缓冲区和变量,响应一个 ACK 报文:
- 可能包含应用层数据
- SYN=0,ACK=1
- 确认号:服务器的初始序号+1
4、(20分) 什么是多路复用?什么是多路分解?请分别说明二者概念同时叙述下运输层的多路复用与多路分解有哪几种?
① 多路复用:在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层。
② 多路分解:将传输层报文段中的数据交付到正确的套接字。
分为:无连接的多路复用和多路分解、面向连接的多路复用和多路分解。
5、(20分) TCP 和 UDP 的区别?
TCP 提供的服务:
- 连接控制
- 可靠数据传输
- 流量控制
- 拥塞控制
UDP 提供的服务:
- 无连接控制
- 不可靠数据传输
- 无流量控制
- 无拥塞控制
两者都没有时延保证和最小带宽保证。