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 截断二进制指数退避算法
基本退避时间
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
}