2017-07-18 27 views
0

我正在使用java.net包中的Java套接字。 我讀到他們使用TCP,所以我很想知道默認實現了哪個ARQ(自動重複請求)協議。 我查看了文檔,但找不到關於此的任何信息。默認情況下,Java套接字實現的ARQ協議是什麼?

我知道有三種主要的ARQ算法:停止和等待,回退n和選擇性重複。 Java套接字使用哪一個?

+1

大概無論底層操作系統的TCP堆棧如何實現。 –

+2

你的意思是什麼類型的Java Socket? 'Socket'或'DatagramSocket'?前者使用TCP協議,因此您應該檢查TCP使用的是哪種ARQ,而不是由套接字使用的ARQ。 DatagramSocket使用不自動重複的UDP。 ARQ上的維基百科頁面已經回答了您有關TCP的問題:「傳輸控制協議使用Go-Back-N ARQ的變體來確保可靠地通過因特網協議傳輸數據,但不提供數據包的有保證的傳輸;使用選擇性確認(SACK),它使用選擇性重複ARQ。「你是否先搜索互聯網? –

+0

我的不好。我認爲,根據具體的實施情況,TCP可以基本上使用任何ARQ,因此我在這個(錯誤的)前提下進行了研究。 –

回答

2

Java Socket API通常是操作系統套接字API的包裝。 java API只是簡單地指示操作系統創建/綁定/關閉套接字並從中讀取或寫入數據。套接字的內部行爲取決於操作系統的實現。 Sou需要查看您使用的操作系統(Windows/Linux/MacOS /等)使用的是否可配置。

相關問題