1.连续ARQ协议
【5-21】 假定使用连续ARQ 协议,发送窗口大小是3,而序号范围是[0,15],而传输媒
体保证在接收方能够按序收到分组。在某一时刻,在接收方,下一个期望收到的 序号是5。试问:
(1)在发送方的发送窗口中可能出现的序号组合有哪些?
(2)接收方已经发送出的、但仍滞留在网络中(即还未到达发送方)的确认分
组可能有哪些?说明这些确认分组是用来确认哪些序号的分组。
解 答:分别回答如下:
(1)在接收方,下一个期望收到的序号是5。这表明序号到4为止的分组都已收到。若这 些确认都已到达发送方,则发送窗口最靠前,其范围是[5,7]。假定所有的确认都丢失了,发送方都没有收到这些确认。这时,发送窗口最靠后,应为[2, 4]。因此,发送窗口可以是[2,4],[3,5],[4,6],[5,7]中的任何一个。
(2)接收方期望收到序号5的分组,说明序号为2,3,4的分组都已收到,并且发送了确认。 对序号为1的分组的确认肯定被发送方收到了,否则发送方不可能发送4号分组。可见,对序 号为2,3,4的分组的确认有可能仍滞留在网络中。这些确认是用来确认序号为2,3,4的分组的。
2.报文段和确认号
【5-23】 主 机A 向主机B 连续发送了两个TCP 报文段,其序号分别是70和100。试问:
(1)第一个报文段携带了多少字节的数据?
(2)主机B 收到第一个报文段后发回的确认中的确认号应当是多少?
(3)如果B 收到第二个报文段后发回的确认中的确认号是180,试问A 发送的 第二个报文段中的数据有多少字节?
(4)如果A 发送的第一个报文段丢失了,但第二个报文段到达了B 。B 在第二 个报文段到达后向A 发送确认。试问这个确认号应为多少?
解答:
(1)第一个报文段的数据序号是70到99,共30字节的数据。
100B-70B=30B
(2)B 期望收到下一个报文段的第一个数据字节的序号是100,因此确认号应为100。
(3)A 发送的第二个报文段中的数据的字节数是180-100=80字节。
(4)A 发送的第一个报文段丢失了,但第二个报文段到达了B 。也就是说100这个确认号已经收到了,其实就是在问,下一波B期待收到什么,期待收到的是丢失的第一个报文段,所以确认号应为70。
3.TCP可靠运输--超时重传时间RTO
【5-33】假定TCP 在开始建立连接时,发送方设定超时重传时间RTO=6s。
(1)当发送方收到对方的连接确认报文段时,测量出RTT 样本值为1.5s。试 计 算现在的RTO 值。
(2)当发送方发送数据报文段并收到确认时,测量出RTT 样本值为2.5s。试 计 算现在的RTO 值。
解答:RTO 值计算如下:
(1)当第一次测量到RTT 样本时,RTTs 值就取为这个测量到的RTT 样本值。 因 此 ,RTTs=1.5s。
根据RFC 2988的建议,当第一次测量时,RTTp 值取为测量到的RTT 样本值的一半。
因 此 ,RTTp=(1/2)×1.5s=0.75s
根据式子,RTO=RTTs+4×RTTp
=1.5s+4×0.75s=4.5s
(2)新的RTT 样本=2 . 5s
根据RFC推荐,α值为1/8,β值为1/4
根据式子,新的RTTs=(1-α) × (旧的RTTs)+α × (新的RTT 样本)
=(1-1/8) × 1.5s+1/8×2.5s=1.625 s