概述
数据链路层的差错检测的目的是做到"无比特差错"。
运输层的差错检测的目的是做到"无传输差错"。即弥补帧丢失、帧重复、帧失序。
数据链路层的差错检测
在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接受。
产生差错的帧会被丢弃,然而过去OSI的观点是:必须让数据链路层向上提供“可靠”传输,所以在CRC检测基础上,增加了帧编号、确认和重传机制。收到正确的帧就要向发送端发送确认。发送端在一定的期限内若没有收到对方的确认,就认为出现了差错,因为就进行重传,直到收到对方的确认为止。但现在的通信线路的质量已经大大提高,由通信质量不好而产生差错的概率已经大大降低,所以互联网采取区别对待的方法:
1.对于通信质量良好的有线传输链路,数据链路层协议不采用确认和重传机制,不要求数据链路层向上提供可靠的传输,因为局域网信道质量很好,因此产生比特差错的概率是很小的,因此以太网提供的是尽最大努力的交付,是不可靠的交付。如果在数据链路层出现了差错就靠上层协议来完成改正差错的任务。例如,如果高层使用TCP协议,那么TCP发现丢失了一些数据的时,经过一段时间后,TCP就把这些数据重新传递给以太网进行重传。但以太网不知道这是重传帧,而是当做新的数据帧来发送。
2.对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠的传输服务。
以上虽然保证了比特的无差错传输,但事实上,这并不是向上提供了可靠传输 。
真正的可靠传输是:数据链路层的发送端发送什么。接收端就要接收到什么。不仅仅要提供比特无差错,还要保证帧无丢失、无乱序、无重复
可靠传输就要提及运输层的TCP的差错检测。
运输层的差错检测
最后
以上就是单纯马里奥为你收集整理的数据链路层和运输层的差错检测的区别的全部内容,希望文章能够帮你解决数据链路层和运输层的差错检测的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复