2012-06-07 52 views

回答

5

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

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

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

如果一个分组被switch1switch2之间丢失然后就没有记录错误在switch2Host2链接上,但相应的传输层流将被破坏。

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

+0

你能详细说明这可能吗? 如果每个数据包都到达无错误消息,整个消息如何包含错误? – Shookie

+0

@Shookie看看编辑的答案为可能的情况说明这 – wroniasty

+0

谢谢!但是你给出的例子与丢失数据包有关。我以为你意味着所有的数据包都可以到达目的地,并且仍然是腐败的(通过数据链路层之后)。 – Shookie

1

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

TCP的错误检测是最小的,并且设计了作为比任何一种可靠的错误的完整性检查检测。您没有看到这一点的原因是,数据链路层(如以太网,PPP,FrameRelay等)具有很多更强健的错误检测算法,因此TCP协议几乎没有传输错误,检测。

如果你有一个不同的传输层协议与强大的错误检测,那么你就不会严格需要它在较低的水平。相关的益处主要是性能和资源使用,以尽可能低地丢弃错误。

注意,错误可以在蠕变上述由于冲压毛刺等传输层,因此,如果数据真的,真的重要那么你应该包括错误在你的申请权检查。

3

这是因为数据链路层专门处理比特级纠错。它需要接收计算机已拥有的数据包,并确定传输中是否发生错误以及数据是否完整或损坏。但是,需要进行额外的控制以确保系统知道所有数据包都到达。这被称为端到端错误控制,并且是传输层的责任。传输层可以不关心负载中的数据是好还是坏。这是数据链接的工作。传输只关心它是否获取了它应该包含的每个数据包,以及是否以正确的顺序到达。传输层在数据链路层到达数据链路层之前检测数据包是否缺失或发送端发生数据包损坏。

有关详细信息,请参阅

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

-1

在噪声信道,其中所述误码率是高的,如无线网络,误差校正是在数据链路层完成。

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

+0

很少有数据链路协议可以进行任何纠错。大多数人会进行错误检测,并且会丢弃任何有错误的帧,但是他们不会纠正错误。 –