2017-10-06 171 views
-1

如果我通過網絡發送兩個數據包,一個是UDP數據包,另一個是TCP數據包,哪個數據包更可能到達目的地?我被告知TCP協議更安全,但是這是因爲它是「故障安全」機制。但是這是否也意味着UDP數據包更有可能陷入困境?udp vs tcp數據包丟失

我認爲它與特定的路由器實現有關,因爲一方面如果一個UDP數據包消失了,那麼雙方可能知道它可能發生並且可能承受失去一個或兩個數據包,但另一方面如果TCP數據包消失那麼通過它的「故障安全」機制,它會發送另一個,問題就解決了,而TCP數據包則重了很多。 我想爲這個問題提供更多可靠的答案,因爲我覺得這個主題很有趣。

+0

你已經自相矛盾。 TCP具有可靠性功能,那麼爲什麼它要實現路由器呢? – EJP

回答

0

如果您決定使用哪種協議來處理您的應用程序,那麼您確實需要更詳細地瞭解這兩種協議。以下只是一個概述。

TCP是一個流協議,它提供了幾種機制,可以實現:按順序保證數據交付。它將控制數據發送的速率(它將開始緩慢傳輸,然後提高速度,直到達到對等可持續的速率)。它將重新發送在另一端未收到的任何數據。要做到這一點,你需要付出代價(例如慢啓動,需要確認收到的所有數據等)。

另一方面,UDP是「數據塊」(數據報)協議,並且不提供任何檢查完整性/費率/訂單。它可以(可能)更快地「補償」:在極端情況下以全網速度,儘可能快地抽出數據,另一端接收任何能夠捕獲的數據。不保證交付或數據訂單到達另一端。他們要麼收到整個數據報,要麼沒有收到。

任何決議,通常使無關與可能性數據丟失或沒有,但失去它的任何的臨界。視頻流通過UDP多次完成,因爲丟失偶爾的數據報比保持流暢的圖像更不重要。文件傳輸不能承擔任何數據丟失或數據塊的倒置,因此TCP是自然選擇。

除了這個問題,請記住,網絡協議只是你問題的一半。另一半是提出你的應用程序協議interprest你正在接受的字節...