3-26
以太網上只有兩個站,它們同時發送數據,產生了碰撞。於是按截斷二進制指數退避算法進行重傳。重傳次數記爲i, i= 1,2,3, …試計算第1次重傳失敗的概率、第2次重傳失敗的概率、第3次重傳失敗的概率,以及一個站成功發送數據之前的平均重傳次數 I 。
-
在截斷二進制指數退避算法中,由於基本退避時間取的是一個爭用期,所以只要兩個站取不同的 r 值,預定的重發時間就相隔至少2τ,先重發的站就可以趕在另一個站重發之前把數據送到,避免再次碰撞。
-
換言之,如果再次碰撞了,說明兩個站取的 r 值是一樣的。於是有:
-
第一次重傳失敗,兩個站在{0,1}中都取了0或者都取了1,概率1/2.
第二次重傳失敗,兩個站在{0,1,2,3}中選了一樣的,概率爲1/4.
第三次重傳失敗,兩個站在{0,1,…,7}中選了一樣的,概率爲1/8.
…
第十次碰撞,兩個站在{0,1,…,1023}中選了一樣的,概率爲1/1024.
從第十一次開始,一直到第十六次,兩個站在{0,1,…,1023}中選了一樣的,概率爲1/1024. -
假設這個站前m次發送失敗,在第m+1次發送成功。即這個站成功發送數據之前的重傳m次失敗的概率爲:
-
平均重傳次數=重傳成功的1次+前面重傳失敗次數的平均值(這裏的計算我是用matlab算的,具體的代碼我放在文章最後):
matlab計算平均重傳失敗次數的代碼
%計算失敗的平均重傳次數
avg=0; %初始化爲0
for m=1:15 %失敗的重傳次數,從1到15都有可能,既然是發送成功前的重傳次數,第16次總得成功吧
P_failed_m=1; %重傳失敗的概率,初始化爲1
if (m<10)
for i=1:m %m<10,按次數來計算概率
P_failed_m=P_failed_m/2^i; %第m次失敗的概率
end
P_success=1-1/(2^(m+1)); %第m+1次成功的概率
else %m>=10,概率和10是一樣的
for j=1:m
if (i<10)
P_failed_m=P_failed_m/2^j;
else
P_failed_m=P_failed_m/2^10; %第10次及10次以後失敗的概率
end
end
P_success=1-1/(2^10);
end
avg = avg + m*P_success*P_failed_m; %加上第i次重傳失敗的概率加權
end
avg
運行結果