一、定義
Besteffort是一種網絡傳輸服務模式,是對數據傳輸的一種承諾,指保證網絡儘可能的傳遞要求的數據,但不保證能夠穩定地進行,也不保證能夠及時到達。採用Besteffort服務模式的網絡,數據傳輸的優先級相同,不受流量控制,所有的數據包以相同的方式被傳遞,也不對數據包的正確性進行保證。
二、Besteffort的特點
1、無優先級的數據傳輸
Besteffort服務模式中,數據傳輸的優先級相同,不區分數據的重要性。無法保證數據傳輸的可靠性,也不會採取任何方式必須將數據包傳遞到目的地,可能會導致部分數據包丟失或延遲到達。
2、無擁塞控制機制
Besteffort服務模式下,網絡傳輸沒有擁塞控制機制,所有流量以相同的方式傳輸,沒有針對特定流量的限制控制,可能會出現網絡擁塞造成的數據傳輸問題。
3、適用於非關鍵性應用場合
由於Besteffort服務模式下數據傳輸無法保證穩定性及數據完整性,因此適用於非關鍵性應用場合,如視頻流媒體傳輸、遊戲數據傳輸等等。
三、Besteffort的應用場景
1、遊戲數據傳輸
在遊戲的過程中,有很多次遊戲數據的傳輸,如小球運動軌跡、玩家移動順序等等,這些數據並不是很重要,可以採用Besteffort服務模式進行傳輸,因為這類數據不保證傳輸成功或及時到達,對遊戲本身並沒有影響,但是卻可以提高遊戲的流暢度。
2、VoIP語音和視頻傳輸
VoIP語音和視頻通話在傳輸過程中使用Besteffort服務模式可以簡化網絡維護和成本,並且適合于于網絡擁堵較小的網絡。通過不強制分配預算和帶寬,最大化的利用網絡資源,以達到降低其運營成本的目的。
3、流媒體傳輸
Besteffort服務模式的特性使其適用於音頻和視頻數據傳輸,這種傳輸不強制數據包的到達時間,而是試圖傳遞儘可能多的數據來滿足視頻或音頻流的請求。用於視頻和音頻流傳輸時,需要保證發送端發送數據速度與接受端處理數據速度儘可能相同,這樣可以確保傳輸效率和質量。
四、Besteffort的示例代碼
//使用Besteffort服務模式傳輸視頻流數據 public class BesteffortVideoStreaming { public static void main(String[] args) { Socket socket = null; InputStream inputStream = null; OutputStream outputStream = null; try { socket = new Socket("192.168.0.223", 8189); inputStream = socket.getInputStream(); outputStream = socket.getOutputStream(); byte[] data = new byte[1000]; int len; while (true) { len = inputStream.read(data); if (len == -1) { break; } outputStream.write(data, 0, len); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } if (socket != null) { socket.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
五、總結
Besteffort服務模式是一種數據傳輸方式,為數據交付提供最大化的努力。它的特點是無優先級數據傳輸、無擁塞控制機制、適用於非關鍵性應用場合。在諸多應用場景中,其應用範圍廣泛,如遊戲數據傳輸、VoIP語音和視頻傳輸、流媒體傳輸等等。
原創文章,作者:XIZS,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/134682.html