2013-05-08 4603 views

回答

5

UDP只是發送網絡消息而不執行命令,例如,他們可能無序進來,並且不檢查消息是否已經通過。

TCP強制執行數據包排序,並且有一個檢查實際通過的消息的方法。所以它更可靠。在吞吐量方面 - 例如,在特定時間內傳輸的數據量 - 實際上它們大致相同。

UDP的優點是延遲較低。因爲它不檢查訂購或確認收到數據包 - 您的程序在到達時收到數據包。沒有等待確認。

當低延遲非常重要且消息很小時,您希望使用UDP,並且您的程序可以容忍丟失數據包和無序數據包。我只見過它用於視頻遊戲(如射手)發送用戶輸入。

「teamviewer」對我來說意味着視頻 - 大量的數據 - 所以使用TCP。

+0

感謝您的回覆。 – 2013-05-08 16:13:46

+0

默認情況下,窗口的RDP使用UDP。如果客戶端和服務器在網絡拓撲中足夠接近,則數據包大小可能無關緊要。 – jpaugh 2017-01-12 21:05:09

2

以犧牲可靠性爲代價,UDP幾乎總能提供比TCP更好的性能。


UDP nowdays的「可靠性」問題基本上是一個形式,它總是會通過,除非你從字面上有連接問題。在類似Teamviewer的應用程序中,丟失數據包不會產生太大影響,因爲它發送的所有內容都是來自一側的輸入和來自另一側的「圖片」。

+0

但是根據RDP協議,它使用TCP協議。而在Windows 8中,他們已經在UDP協議上啓動了RDP協議。我認爲還有其他原因。 – 2013-05-08 13:54:58

+0

在不同路徑上遍歷的邏輯上不同的UDP數據包。所以TCP會變得更慢,因爲TCP網絡路由路徑已經建立。如果我是正確的,那麼UDP如何能夠提供更多的性能,然後TCP。 – 2013-05-08 13:56:32

+1

@RajdipPatel即使在TCP中,每個數據包也可能使用不同的路由路徑。 – glglgl 2013-05-21 12:03:03

0

Teamviewer使用UDP作爲其主要協議來建立與遠程計算機的連接。他們只在UDP失敗時才使用TCP ......並且我們沒有發現他們的UDP連接在可訪問性方面存在任何問題。如果UDP有任何問題,他們將不會將其作爲主協議。我們需要什麼找到他們是如何設法優化他們的UDP連接的。