14

当传输层提供差错控制时,数据链路层的差错控制需要什么?两种错误控制有什么区别?

4

6 回答 6

7

传输层数据可以分解为许多数据链路层帧/数据包。

因此,即使没有任何数据链路错误,传输层流/数据包也可能损坏。编辑:这是因为传输层路径通常由许多数据链路层点组成,例如:

Host1 <----> switch1 <----> switch2 <----> Host2

如果一个数据包丢失switch1switch2则链路上不会记录任何错误switch2 Host2,但相应的传输层流将被破坏。

另一方面,一旦遇到数据链路错误,就可以丢弃/重新启动传输层传输,而不会浪费资源。

于 2012-06-07T19:36:54.193 回答
4

这是因为数据链路层专门处理比特级纠错。它获取接收计算机已经拥有的数据包,并确定传输中是否发生错误以及数据是否完整或损坏。然而,需要有额外的控制来确保系统知道所有的数据包都到达了。这称为端到端错误控制,是传输层的职责。传输层不在乎有效载荷中的数据是好是坏。那是数据链路的工作。传输只关心它是否得到了它应该得到的每个数据包,以及是否以正确的顺序到达。

有关其他详细信息,请参阅

http://books.google.ca/books?id=9c1FpB8qZ8UC&pg=PA216&lpg=PA216&dq=why+error+detection+and+correction+both+in+transport+and+link+layer+?&source=bl&ots=RI7-DU8RO0&sig= 0U5Z9AmKkx3m3TA71WfIe1uTeW0&hl=en&sa=X&ei=LbqPUsahOtDEqQHyvIHQCw&ved=0CDUQ6AEwAQ#v=onepage&q=为什么%20error%20detection%20and%20correction%20both%20in%20transport%20and%20link%20&%20%3F

于 2013-11-22T20:26:33.120 回答
1

它真的取决于协议而不是层,但假设你的意思是 TCP ......

TCP 的错误检测是最小的,并且比任何类型的可靠错误检测更多地被设计为完整性检查。您看不到这是实践的原因是以太网、PPP、FrameRelay 等数据链路层具有非常强大的错误检测算法,因此 TCP 协议几乎没有传输错误要检测。

如果您有一个具有强大错误检测功能的不同传输层协议,那么您在较低级别就不会严格需要它。在堆栈中尽可能低地丢弃错误是有好处的,主要是性能和资源使用相关。

请注意,由于内存故障等,错误可能会蔓延到传输层之上,因此如果数据真的非常重要,那么您应该在您的应用程序中包含错误检查。

于 2012-10-04T13:13:49.207 回答
0

假设校验和是正确的,这个结果意味着数据在传输过程中被损坏。此外,损坏不是发生在传输链路上(它会被 CRC 捕获),而是一定发生在中间系统之一(路由器和网桥)或发送或接收主机中。

http://conferences.sigcomm.org/sigcomm/2000/conf/paper/sigcomm2000-9-1.pdf

于 2012-10-04T07:10:05.927 回答
0

首先,从端到端重新传输数据包是一项昂贵的任务,并且可能需要大量时间。在每条链路上进行这些检查会减少重新传输的数据包必须经过的“长度”。考虑端到端路径上存在容易出错的链接的情况。该链接可能会导致许多数据包丢失,因为它不可靠。如果没有任何链路层可靠性,则重传只能由传输层协议处理。因此,格式错误的数据包必须到达其目的地,发送 NACK(或等效),然后才能进行重传。另一方面,如果链路层具有内置的可靠性,则数据包将仅在不可靠的链路上立即重传。

其次,链路层的可靠性仅依赖于位检查,而传输层的可靠性还利用排序和确认。考虑传递到网络层的分段因为 MTU 太小而需要分段的情况。链路层可靠性只会检查每个单独片段的完整性。如果一个分片丢失,链路层可能不会发出警报。另一方面,传输层会因为它期望所有碎片数据包。

最后,链路层不仅在其有效载荷中承载 TCP 和其他传输层协议。因此,为没有内置可靠性的协议内置可靠性是合适的,这样格式错误的有效载荷就不会进入堆栈。

于 2018-05-27T17:00:13.087 回答
-1

在误码率高的噪声信道中,如无线网络,纠错是在数据链路层完成的。

在错误率低的健壮网络中,如 LAN,纠错是在传输层完成的,因此重传成本最小化。

于 2016-08-23T03:41:05.690 回答