ARQ是Automatic Repeat reQquest,即自动请求重传。之前写过一篇介绍数据链路层的3种ARQ的文章,有兴趣的朋友可以参考:http://blog.csdn.net/todd911/article/details/9203167。在ARQ中用到了“滑动窗口”的概念,TCP在进行流量控制的时候,也采用了“滑动窗口”的方法。
问题1,既然,数据链路层采用了可靠的ARQ,可以重传,为什么在TCP又有可靠传输这一说呢?
答:链路层实现了ARQ协议,那链路层保证的可靠传输也是在“链路层”是可靠的。比如有传输如下:A ->B ->C ->D。如果链路层实现了ARQ协议,那至多也就保证中间的一个链路传输可靠。如A ->B是是可靠的。如果B是路由器的话,当B负载太大的话,也许它就在网络层把数据报丢掉了。这时, 对于A来说,它已经通过链路层可靠的将数据报发到B上,但当网络拥塞的时候,当这个数据包在B的等待队列是时候,有可能被B丢掉。这时就要靠传输层TCP的可靠传输了。总之,在链路层实现可靠(即采用ACK,重传)的办法,至多也就保证在“一段链路两个节点间可靠。”只有在传输层实现的可靠传输,才能保证“整条链路”的畅通。
问题2,这两个协议采用的滑动窗口有啥区别呢?
答:数据链路层的滑动窗口是“个数固定”的。而TCP的滑动窗口是“个数可变”的,可以由接收端设置。
问题3,传输层的流量控制和数据链路层的流量控制区别在哪?
答:数据链路层的流量控制是指相邻节点间的流量控制.而传输层的流量控制是指主机端到主机端的传输层连接的流量控制。