some_wga9nq0rhrm4g2q9

最后修改于

CRC 检验方法

// CRC 提供一定的纠错能力,但实际只使用了其检错能力 
// k 位待校验数据 M 
// CRC 生成多项式 P,位数位 n

// 发送过程
func Send(k int, M []byte,n int, P []byte){
    dividend = M << n 
    FCS = Mod2Rest(dividend, P)
    DataSend(M << n + FCS)
}
// 接收过程
func Recv() {
    Data = Recive() 
    // X==0 接收,否则丢弃
    if Mod2Rest(Data, P) != 0 {
        return error
    }
    return postProcess(Data)
}

CSMA / CD 截断二进制指数退避算法
基本退避时间t=争用期=2τt=争用期=2\tau

func A(retryCnt *int,t Duration) error {
    if retryCnt == 16 {
        return error.New("向上层报错")
    }
    k=min(retryCnt, 10)
    r=RandomInt(0 range 2**k)    // 不包括2**k
    sleep(r*t.toInt())
    retryCnt++
    return null
}