2013-07-15 40 views
7

爲什麼我們無法在瀏覽器和服務器之間建立udp連接?爲什麼TCP連接可能(網絡套接字),但不是udp?爲什麼沒有通過瀏覽器連接到HTML5的UDP連接呢?

+0

因爲websockets建立在TCP之上。 –

+0

Chrome打包的應用程序可以訪問UDP io的API。 – dandavis

+0

你能解釋更多,所以我可以谷歌嗎?這個API是什麼?你在談論webRTC嗎? –

回答

5

HTML5不允許任意的TCP連接。

相反,網絡套接字是建立在TCP上的一種特殊的新協議,它允許雙向通信。

同樣,WebRTC是一種特殊的新型協議,它建立在允許點對點通信的UDP上。

允許任意套接字連接將是主要安全漏洞。

+0

確實,但即使websocket是TCP,也沒有UDP –

+0

@Cgraphics:允許UDP網絡套接字沒有任何意義。 Web套接字依賴於TCP的屬性,如訂購和保證交付。 – SLaks

+0

注意:WebRTC僅在Firefox的UDP之上實現。 –

1

您可以使用WebRTC訪問UDP,WebRTC可用於最新版本的Chrome和Firefox。這使您可以直接瀏覽器 - 瀏覽器連接,而無需通過服務器等等。

+0

我們可以在瀏覽器與服務器之間建立UDP連接嗎?我猜對了? –

+1

實際上,RTC仍然需要一個服務器來握手,這是從所示的文本中不清楚的... – dandavis

+0

我相信這是可能的,是的。您需要有WebRTC協議的服務器端實現。我聽說過這樣的事情正在被討論,但我不知道任何實際的實施。 – rjmunro

-1

很久以前,http是一個爲紙張或雜誌等文本和html運輸而設計的協議。這些信息必須完整可靠,所以http基於TCP而不是UDP。

後來人們想通過瀏覽器顯示多個媒體。某些應用程序(如閃存和Windows媒體播放器)潛入瀏覽器並作爲插件在後臺運行。他們可以使用UDP和瀏覽器播放視頻,從不介意。

現在,我們需要更多的東西,甚至顯示股指或聊天室,這些實時的情況,這是不適合http。最後,web套接字被導入。

您會發現,由於歷史原因,瀏覽器不需要UDP。視頻可以通過那些現有的插件來滿足。

+0

這太愚蠢了。在實時視頻流媒體周邊有特定的用途,可以大大減少網絡擁塞。有線電視是多播的強有力的例子。一般情況下,實時視頻可能會丟失一些幀,如果延遲較低,則可以提供更好的用戶體驗。 –

+0

HTML5視頻仍然無法播放實時視頻流。最近只有在某些瀏覽器中使用Media Source Extensions纔有可能。即使這樣它通常通過TCP提供WebSockets,我很確定UPD仍然會更好。 – protometa

+0

@protometa感謝您的評論,我發現WebRTC和這篇文章http:// stackoverflow。com/questions/13040752/websockets-udp-and-benchmarks – Anderson