TCP协议为什么要累积确认,报文段的单独确认不是更高效,可以减少冗余发送???

Kevin00000000 2012-12-11 09:34:59
如题
比如依次三个数据报 A B C,当前接收端收到了A和C,但是都到C时由于使用累积确认,ack是B的首字节序号,所以发送端不知道C已经被成功接收,如果超时,C也会重发,造成了发送冗余。但是单独确认就不会有这个问题,个中缘由还请高手给解释一下!!!
...全文
1342 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
纯属为了扯淡 2012-12-14
  • 打赏
  • 举报
回复
ack是用于丢包检测,并且提供拥塞信息的,最开始只有rto超时重传的机制并不会累积ack,后面改良增加了快速重传机制,当收到3条同样的ack,注意是同样的,此时就认为发生丢包,不用等到rto就可以直接重传了,效率提高了一点。 累积ack3条就是为了快速重传和恢复
Kevin00000000 2012-12-14
  • 打赏
  • 举报
回复
引用 2 楼 HANRUI90 的回复:
SACK应该更节省资源吧,如果发送端有很多包等待确认的话,SACK能成批确认,(确认操作是要在缓冲队列重查询的)效率更高些。但是丢包的确是个问题,没仔细想过。楼主说的GBN和SR全称是?
参见《计算机网络---自顶向下方法》 3.4节
henrystark90 2012-12-13
  • 打赏
  • 举报
回复
SACK应该更节省资源吧,如果发送端有很多包等待确认的话,SACK能成批确认,(确认操作是要在缓冲队列重查询的)效率更高些。但是丢包的确是个问题,没仔细想过。楼主说的GBN和SR全称是?
Kevin00000000 2012-12-11
  • 打赏
  • 举报
回复
我明白了,TCP还不是完全用的GBN协议,GBN协议是定时器到时或者多个冗余ack到达的话,所有未被确认的数据报(比如上例B和C)都会重传,而tcp是如果定时器到时只重传第一个未被确认的数据报,这样就没有了冗余的数据报发送。所以TCP使用的既不是GBN协议,也不是SR协议,是两者的结合体,却达到了SR协议的效果。是这样不?求指点。

4,387

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧