计算机网络5-23的思考

《计算机网络》中第五章“运输层”中5-23题的思考

关于《计算机网络(第七版)》(谢希仁编著)中第245页,5-23题的思考

@Author: Kai

@Time: 2024.5.22

原题

主机A向主机B连续发送了两个TCP报文段,其序号分别是70和100。试问:

(1)第一个报文段携带了多少字节的数据?

(2)主机B收到一个报文段后发回的确认中的确认号应当是多少?

(3)如果B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第二个报文段中的数据有多少字节?

(4)如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段达到后向A发送确认。试问这个确认号应为多少?

第一种解法

按照作者意图,编号70和编号100是连续的两个报文段,70和100是数据编号。报文段A是7099的字节数据,共30个字节数据;报文段B是100179(以第三问为例)的字节数据,共80个字节数据。那么下一个连续的报文段C的编号是180,是180~'未知’的字节数据。

那么(即使各小问间没有关联),

(1)第一个报文段携带了30个字节的数据;

(2)主机B收到一个报文段后发回的确认中的确认号应当是多少?这里既可以”选择确认SACK“,也可以是”逐段确认”,但是题目没有说明前面有缺失的段,我们就只能认为是下一个连续段:报文段B,所以主机B收到一个报文段后发回的确认中的确认号应当是100;(但按照第四问,“选择确认SACK”应该在第二个报文达到后被使用,就算各题间没有关联,此处”选择确认SACK“也不一定被使用,按作者意图,我们应该当它被使用)

(3)报文段B中的数据有80字节;

(4)按照作者意图,这里应当是支持”选择确认SACK“,所以确认号是缺失的数据段A,确认号是70;

第二种解法

这道题有些疑问,报文段也可以是这样编号(也可能不是):

报文的一种编号

按照”逐段确认“的机制,主机B两次向主机A确认,需要编号70的报文段A和编号100的报文段B,或者是“选择确认SACK”机制,需要报文段A和报文段B,或者是编号70的报文段A和编号100的报文段B没有被确认,需要重传。我们可以认为71~99的报文段都已被成功接收。那么报文段70可能是第一个报文段,数据长度为1字节;报文段B可能是最后一个字节,那么数据长度未知;而且70~100是为了传送连续数据的数据段。我们假设数据段70~数据段100都是传输数据的中间几个报文段,那么他们的数据长度可以为”最大报文段长度MSS”。

MSS的介绍可以看这篇《最大报文段长度——MSS》

这么看来的话,

(1)第一个报文段携带了MSS字节的数据;

(2)主机B收到一个报文段后发回的确认中的确认号应当是100,因为71~99的报文段都已被接受,主机B不会给出71的确认码,而是给出其继续需要的报文段。(这里有问题,难道主机A需要两次发送报文B吗,如果是“逐段确认SACK”机制就不会有这个问题,但是题目这里显然是“逐段确认”)

(3)A发送的第二个报文段中的数据有MSS个字节;

(4)在“选择确认SACK”机制下,确认号应当是70;“逐段确认”机制下,确认号应当是101或者更后面的报文段编号,而报文段A在主机A没有收到确认后超时进行重传。

现在默认认为使用“选择确认SACK”。

其他

个人才疏学浅,欢迎指正。

  • 25
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值