一、定義
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-tw/n/134682.html
微信掃一掃
支付寶掃一掃