数据链路层的连续ARQ协议和TCP都采用“滑动窗口”,有什么区别呢

数据链路层的连续ARQ协议和TCP都采用“滑动窗口”,有什么区别呢?

2008-03-27 01:23

ARQ是Automatic Repeat reQquest,即自动请求重传。连续ARQ又称Go-back-N ARQ,意思是当出现差错必须重传时,要回走N个帧,然后在重传。这是个数据链路层的协议。它用到了“滑动窗口”的概念。

TCP在进行流量控制的时候,也采用了“滑动窗口”的方法。

问题1,既然,数据链路层采用了可靠的ARQ,可以重传,为什么在TCP又有可靠传输这一说呢?

答:我觉得TCP/IP是个通用的协议,它可能面对的“不同的数据链路层协议”,如HDLC,PPP等。但这些链路层协议未必都有实现ARQ协议(具体哪些没有我也不知道)。

      就算有链路层实现了连续ARQ协议,那链路层保证的可靠传输也是在“链路层”是可靠的。比如有传输如下:A =》B =》C =》D。如果链路层实现了连续ARQ协议,那至多也就保证中间的一个链路传输可靠。如A=>B是是可靠的。如果B是路由器的话,当B负载太大的话,也许它就在网络层把数据报丢掉了。

     这是, 对于A来说,它已经通过链路层可靠的将数据报发到B上,但当网络拥塞的时候,当这个数据包在B的等待队列是时候,有可能被B丢掉。这是就要靠传输层TCP的可靠传输了。

    总之,在链路层实现可靠(即采用ACK,重传)的办法,至多也就保证在“一段链路两个节点间可靠。”只有在传输层实现的可靠传输,才能保证“整条链路”的畅通。

问题2,这两个协议采用的滑动窗口有啥区别呢?

答:数据链路层的滑动窗口是“个数固定”的。而TCP的滑动窗口是“个数可变”的,可以由接收端设置WIN字段来修改。

—By 汤普金斯:以前自己也doubt过,为什么每层都要差错检测呢?其实就像上面答案说的一样,每一层的关注点不同,“端到端”的定义也不同,链路层是到路由器/交换机,而传输层是到接收端。


此条目发表在精彩转帖分类目录。将固定链接加入收藏夹。

留下评论