我想在C#中創建類似於應用程序的teamviewer。就性能而言,哪種協議更好的TCP或UDP?爲遠程桌面應用選擇網絡協議TCP或UDP?
回答
UDP只是發送網絡消息而不執行命令,例如,他們可能無序進來,並且不檢查消息是否已經通過。
TCP強制執行數據包排序,並且有一個檢查實際通過的消息的方法。所以它更可靠。在吞吐量方面 - 例如,在特定時間內傳輸的數據量 - 實際上它們大致相同。
UDP的優點是延遲較低。因爲它不檢查訂購或確認收到數據包 - 您的程序在到達時收到數據包。沒有等待確認。
當低延遲非常重要且消息很小時,您希望使用UDP,並且您的程序可以容忍丟失數據包和無序數據包。我只見過它用於視頻遊戲(如射手)發送用戶輸入。
「teamviewer」對我來說意味着視頻 - 大量的數據 - 所以使用TCP。
以犧牲可靠性爲代價,UDP幾乎總能提供比TCP更好的性能。
UDP nowdays的「可靠性」問題基本上是一個形式,它總是會通過,除非你從字面上有連接問題。在類似Teamviewer的應用程序中,丟失數據包不會產生太大影響,因爲它發送的所有內容都是來自一側的輸入和來自另一側的「圖片」。
但是根據RDP協議,它使用TCP協議。而在Windows 8中,他們已經在UDP協議上啓動了RDP協議。我認爲還有其他原因。 – 2013-05-08 13:54:58
在不同路徑上遍歷的邏輯上不同的UDP數據包。所以TCP會變得更慢,因爲TCP網絡路由路徑已經建立。如果我是正確的,那麼UDP如何能夠提供更多的性能,然後TCP。 – 2013-05-08 13:56:32
@RajdipPatel即使在TCP中,每個數據包也可能使用不同的路由路徑。 – glglgl 2013-05-21 12:03:03
Teamviewer使用UDP作爲其主要協議來建立與遠程計算機的連接。他們只在UDP失敗時才使用TCP ......並且我們沒有發現他們的UDP連接在可訪問性方面存在任何問題。如果UDP有任何問題,他們將不會將其作爲主協議。我們需要什麼找到他們是如何設法優化他們的UDP連接的。
- 1. 網絡協議TCP/UDP/ICMP之間的區別
- 2. http協議,網絡,Web應用程序
- 3. TCP/IP協議和網絡拓撲
- 4. 什麼是不同的tcp/ip協議和UDP協議在網絡編程中進行通信
- 5. 從外部網絡遠程桌面
- 6. C++(UDP或TCP)的網絡框架?
- 7. VBScript/JScript網絡:連接UDP或TCP
- 8. 轉換自印UDP協議TCP
- 9. LDAP是TCP還是UDP協議?
- 10. 用於遠程桌面協議的Mozilla插件
- 11. 是否有任何協議規範允許使用TCP或UDP?
- 12. 以編程方式確定遠程桌面協議版本?
- 13. 互聯網協議端口vs TCP端口vs UDP端口
- 14. 選擇用於桌面應用程序
- 15. wcf +桌面應用程序或網站?
- 16. WCF TCP協議
- 17. 封裝網絡協議
- 18. Kaa網絡和協議
- 19. 網絡協議測試
- 20. 網絡協議的實現
- 21. Windows 8協議從現代應用程序激活桌面應用程序
- 22. 使用XMPP協議桌面共享
- 23. JavaFX網絡支持(TCP,UDP,SSH)?
- 24. 儲存影像 - 網絡桌面應用
- 25. 訂閱網絡/桌面應用[PYTHON]
- 26. 協議的選擇?
- 27. 使用UDP協議的例子最初跟在TCP之後
- 28. JMETER使用Microsoft遠程桌面協議記錄包含呼叫的方案
- 29. 什麼是一些不使用TCP或UDP等端口的基於IP協議?
- 30. 爲什麼我的網絡TCP/UDP實現不起作用?
感謝您的回覆。 – 2013-05-08 16:13:46
默認情況下,窗口的RDP使用UDP。如果客戶端和服務器在網絡拓撲中足夠接近,則數據包大小可能無關緊要。 – jpaugh 2017-01-12 21:05:09