2015-09-27 72 views
0

我通過websocket從一臺PC到Web應用程序(javascript)(運行在其他機器/ pc/mobile上)流出噸字節。根據我的知識,有必要將數據拆分成包,以最大限度地提高網絡性能。我的問題是:計算最佳包裝大小(Optimal Payload)以最大限度地提高網絡速度

  1. 我如何獲得有效載荷大小(最佳大小)實時獲得最大速度!
  2. 這是不同的,如果我想使用WebRTC?

回答

1

您應該儘可能多地發送儘可能多的字節。這不僅可以優化網絡上的發送,還可以優化發送機器上的軟件堆棧。至於數據包的大小,你會發現在大多數系統和網絡上大約1300-1400字節是一個很好的大小,因爲它比「MTU」少一點。

+0

我的意思是幀大小。你確定嗎?據我所知,從網絡速度的角度來看,最好是發送小幀/包,而不是一次全部發送它們,我可以在這裏讀取MTU,這個靜態數字還是根據網絡帶寬? ,因爲我發現http://searchnetworking.techtarget.com/definition/maximum-transmission-unit:「如果數據包遇到無法處理大型數據包的路由器,則MTU大小過大可能意味着重新傳輸。 MTU大小意味着相對更多的頭部開銷和更多的確認信息必須發送和處理。「 – Joseph

+1

@Joseph您引用的文檔是關於TCP必須做什麼,而不是應用程序必須做什麼。這也是一個非規範性的參考。路徑MTU是路徑的屬性,路徑是動態的,因此它不能是靜態數字。 – EJP

+1

他不會找到有關數據包大小的任何信息,因爲他無法控制它。 TCP會。 – EJP

1

每我所知,有必要將數據分割成包,以最大限度地提高網絡性能

確實存在,但TCP層會替你。儘可能快地爲TCP提供儘可能多的數據,因此它有最大的選擇餘地。

我的問題是:1。我怎麼能在實時

你不能獲得有效負載大小(最佳規模)。

獲得最大速度?

你不行。

  1. 這是不同的,如果我想使用WebRTC?

+0

好的,但是如果我發送太大的包,而另一邊無法處理,那麼如果我讀取,那麼TCP將再次發送全部,「」如果數據包遇到路由器,MTU大小可能意味着重新傳輸不會處理那麼大的數據包。「 這意味着我要發送的每個幀/包,TCP將不得不發送/失敗,然後再次發送。我錯過了什麼嗎?如果沒有,那麼,這就是我在開始發送前尋找最佳尺寸的原因。 – Joseph

+0

@約瑟夫你不能。 TCP不會讓你。它有流量控制。你會阻止。關於發送/失敗/重發的內容是你想象力的一個方面。不要擔心。您發送的最佳尺寸是「儘可能多」。 – EJP

+0

我看到的問題是,如果我一直更改幀大小併發送4K,它會影響速度,然後發送8K(實際!),也許它的內存開銷/問題?! – Joseph