计算机网络(第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

运行结果
在这里插入图片描述

发布了26 篇原创文章 · 获赞 32 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Clover_pofu/article/details/105061957