数据链路层和传输层

时间:2012-06-07 19:30:27

标签: networking tcp data-link-layer

当传输层提供错误控制时,数据链路层的错误控制需求是什么?两个错误控件之间有什么区别?

6 个答案:

答案 0 :(得分:6)

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

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

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

如果数据包在switch1switch2之间丢失,则switch2 Host2链接上不会记录任何错误,但相应的传输层流会损坏

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

答案 1 :(得分: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=why%20error%20detection%20and%20correction%20both%20in%20transport%20and%20link%20layer%20%3F&f=false

答案 2 :(得分:1)

这实际上取决于协议而不是层,但假设您的意思是TCP ......

TCP的错误检测是最小的,并且设计为完整性检查,而不是任何可靠的错误检测。您没有看到这种做法的原因是,以太网,PPP,帧中继等数据链路层具有很多 更强大的错误检测算法,因此几乎没有传输错误用于TCP协议检测。

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

请注意,由于ram毛刺等原因,错误可能会在传输层上面蔓延,所以如果数据确实存在,真的重要,那么你应该包含错误检查你的申请。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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

最后,链路层不仅在其有效载荷中承载TCP和其他传输层协议。因此,对于没有内置可靠性的协议而言,内置可靠性是合适的,这样就不会有错误的有效载荷上升。

答案 5 :(得分:-1)

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

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