博主在学习数据链路层才知道,原来上层的数据最终都封装成数据链路层的帧数据。而数据链路层有CRC校验,ARQ重传等协议来做差错控制,可以保证数据的可靠性。那为什么UDP时不可靠的呢?与TCP的差错控制是否重复了呢?
路由器功能
为什么传输层和数据链路层都要求重传呢?
(1) 数据链路层通过ARQ保证路由器接收帧正确,但是拆开帧后发现IP的路径错误(或者TCP校验错误),这个时候要求ARQ重传就没有用了(因为数据链路层的工作已经做好了),需要发ICMP到源端口进行重传(或TCP源端超时重传)。
(2) 这是由于传输层的环境是两个主机以整个子网为通信信道进行通信,而数据链路层的环境是两个分组交换结点直接通过一条物理信道进行通信。如果路由器在拆包组包过程中出错,数据链路层无法纠错。
为什么不一步到位,在传输层做重传呢?
(1)早期网络信道误码率高,如果在传输过程中能够按节点一步步纠错,相比到了终端才发现错误再要求重传,效率会高得多。另外,数据链路层不仅有ARQ协议,也有FEC协议,不会与上层的重传产生重复。
总结:传输层和数据链路层的重传是互补的而不是重复的。