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

据我所知, 数据链路层 运输层 都许诺了实现“差错控制”,那他们之间有什么区别呢?重复了吗?相信我举个例子之后,你就明了了。

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怎么没有发?在给老子发一遍“

呵呵,原创。
参看:
参看:
摘自:计算机网络-谢希仁
  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值