計算機網絡(第7版)——謝希仁 課後習題3-26

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  %失敗的重傳次數,從115都有可能,既然是發送成功前的重傳次數,第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

運行結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章