2012-06-07 81 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

很少有數據鏈路協議可以進行任何糾錯。大多數人會進行錯誤檢測,並且會丟棄任何有錯誤的幀,但是他們不會糾正錯誤。 –