首先,我们要提出一个问题,为什么在数据链路层已经提供差错控制的情况下,传输层还需要提供差错控制。第二,为什么链路层能够实现无差错的传输,而端到端的传输也会出现问题?
在这里,关于链路层以及传输层差错控制的基础性原理就不展开说明了,读者可自行查阅相关资料。
对于链路层的差错控制,现在的绝大部分情况是用来保证帧的“无比特差错”,就是保证一个帧里面的比特不会发生因噪声或一些其他的外界干扰因素而发生改变,使得接收端的帧和发送端的帧是同一个一摸一样的帧包。
而传输层的差错控制主要是为了保证接收数据包的有序以及无丢失,但是这些都属于保证数据包的传输无差错,但对于数据包里面的数据是否发生变化,就不得而知(这个看情况,有的端到端差错检测也会对数据包内容进行,这个的话,看官老爷自己注意一下)。
搞懂了这两者的区别,自然就知道为什么需要两层差错检测
可以参考一下这个文章:数据链路层和传输层提供的可靠传输问题