原创-“差错控制”在数据链路层和运输层中的区别(不同)

来源:互联网 发布:西安网络电视台 编辑:程序博客网 时间:2024/05/29 04:57
据我所知,数据链路层运输层都许诺了实现“差错控制”,那他们之间有什么区别呢?重复了吗?相信我举个例子之后,你就明了了。

1.条件
   要传送如下数据:
       数据a:1000 
       数据b:1100
       数据c:1110

   传送情况:
       发送端S发送: 1000 1100      1110
   接受端R接收: 1010   [未收到] 1110

2.数据链路层的“差错控制”

   此时数据链路层的反应是这样的:
       (1) 对于发送端S发送的“数据a 1000 ”,接受端R接收到的却是“1010”,显然,左数第三位的0由于某种原因变为1了,晕,太可怕了吧,好在数据链路层的差错控制可以发现这个(具体参看数据链路层),所以我们得知接受的数据a是错误的,扔掉即可(猜测)。
       (2) 对于发送端S发送的“数据b 1100 ”,接受端R未收到任何数据,数据链路层的“差错控制”在此也无能为力了
       (3) 对于发送端S发送的“数据c 1110”,接受端R接收到“1110”,经数据链路层的“差错控制”方法-CRC检验,发现无误,正常接受。

        由此可见, 仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)。即“凡是接收端数据链路层接受的帧都是正确的”。


3.运输层的“差错控制”
   先啰嗦一句,数据链路层之上是网络层,在之上是运输层。所以,传送的数据是想经过数据链路层处理后在给运输层的,即运输层收到的信号绝不存在”0变为1,1变为0的情况“(这正是数据链路层的差错控制所做的)。现在,在让我们看看运输层的反应吧。

       (1) 对于发送端S发送的“数据a 1000 ”,由于数据链路层发现该数据有误,所以就把它仍丢了。这对运输层而言,就是未收到,所以要求发送端S重传……
       (2) 对于发送端S发送的“数据b 1100 ”,运输层仍未收到,所以要求发送端S重传……
       (3) 对于发送端S发送的“数据c 1110”,经数据链路层处理后交与运输层,运输层先发送端S返回确认帧,表示已经收到。

4.总结
   对于数据链路层而言,只保证接受到的数据没问题,至于中间丢失的数据压根不管。而运输层则对中途丢失的数据也做管理,它会通知发送端说:“数据b怎么没有发?在给老子发一遍“

呵呵,原创。
参看:
参看:
摘自:计算机网络-谢希仁
原创粉丝点击