广播信道的多路访问协议与链路层服务详解

需积分: 0 9 下载量 122 浏览量 更新于2024-08-21 收藏 2.34MB PPT 举报
第5章着重于计算机网络中的广播信道及其相关的多路访问问题。在传统广播电视系统中,信息是单向流动的,但计算机网络中的广播信道则支持双向通信,每个节点都能发送和接收数据。这就带来了多路访问问题,即如何有效地管理多个节点同时使用同一广播信道,避免数据包冲突或碰撞。 多路访问协议是解决这一问题的关键技术,它确保了每个节点按照一定的规则获取发送权限,从而实现有序的数据传输。这些协议包括但不限于CSMA/CD(载波监听多路访问/冲突检测),CSMA/CA(载波监听多路访问/冲突避免)以及令牌环等,它们在局域网(LAN)、无线局域网(WLAN)、卫星网和混合接入网中广泛应用。 链路层是网络通信的基础,它负责数据报的封装和解封装,将网络层的数据报转换为链路层的帧进行传输。这个层次关注的主要问题是差错检测和纠正、数据的可靠传输、地址识别、以及不同链路间的兼容性,例如点对点链路通常相对简单,而广播链路则需要更复杂的媒体访问控制来协调多个节点。 具体到链路层的服务,它提供了数据帧的传输、错误处理、流量控制和随机访问机制。常见的链路层协议有以太网(通过MAC地址寻址)、802.11无线标准、令牌环协议、PPP(点到点协议)以及ATM(同步传输模式),它们各自有其适用场景和特点。 网络层与链路层的关系密切,网络层主要负责数据报的端到端传输,而链路层则负责将这些数据报分割成适合各段链路的帧,通过介质进行实际的物理传输。异构链路的兼容性是网络设计中的重要考量,确保不同类型的链路层协议能够协同工作,无缝对接。 本章内容涵盖了链路层的多个子主题,包括服务概述、差错检测和纠错技术、多路访问协议的介绍、链路层地址分配、以太网和其设备如集线器和交换机的使用,以及PPP和ATM等链路虚拟化技术。通过深入理解这些内容,读者能更好地掌握计算机网络中的链路层通信机制和问题解决策略。

Q = np.zeros((n,N)) # MbitsW数据队列矩阵 Y = np.zeros((n,N)) # mJ的虚拟能量队列,用于存储初始化为零的二维数值数据 Obj = np.zeros(n) # 在解决问题26之后的目标值,初始化为零 energy = np.zeros((n,N)) # 能源消耗数组矩阵 rate = np.zeros((n,N)) # 实现的计算速率 for i in range(n): if i % (n//10) == 0: print("%0.1f"%(i/n))#每当完成总任务的10%输出 if i> 0 and i % Delta == 0: # 索引从零开始计数 if Delta > 1: max_k = max(np.array(k_idx_his[-Delta:-1])%K) +1 else: max_k = k_idx_his[-1] +1 K = min(max_k +1, N)#根据历史记录动态调整K的值,以使其能够适应数据流的变化。如果数据流的变化比较平稳,则K的值不会经常变化,这样可以避免频繁的参数更新。如果数据流的变化比较剧烈,则K的值会相应地进行调整,以更好地适应新的数据分布 i_idx = i # 实时信道生成 h_tmp = racian_mec(h0,0.3)#使用Rician衰落模型后的增益值 # 将h0增长到1,以便更好的训练; 这是深度学习中广泛采用的一种技巧 h = h_tmp*CHFACT channel[i,:] = h #变量h_tmp乘以常数CHFACT,然后将结果存储到变量h中。接着,将h赋值给二维数组channel的第i行,获取信道增益值 # 实时到达生成 dataA[i,:] = np.random.exponential(arrival_lambda) # 4) LyDROO的排队模型 if i_idx > 0: # 更新队列 Q[i_idx,:] = Q[i_idx-1,:] + dataA[i_idx-1,:] - rate[i_idx-1,:] # 当前队列 # 由于浮点错误,断言Q是正的 Q[i_idx,Q[i_idx,:]<0] =0 Y[i_idx,:] = np.maximum(Y[i_idx-1,:] + (energy[i_idx-1,:]- energy_thresh)*nu,0) # 当前能量队列 # 由于浮点错误,断言Y是正的 Y[i_idx,Y[i_idx,:]<0] =0#防止浮点错误 # 缩放Q和Y到接近1;深度学习技巧 nn_input =np.concatenate( (h, Q[i_idx,:]/10000,Y[i_idx,:]/10000)) # Actor module m_list = mem.decode(nn_input, K, decoder_mode),怎么修改算法使算法不考虑队伍积压问题

2023-05-24 上传

for i in range(n): if i % (n//10) == 0: print("%0.1f"%(i/n))#每当完成总任务的10%输出 if i> 0 and i % Delta == 0: # 索引从零开始计数 if Delta > 1: max_k = max(np.array(k_idx_his[-Delta:-1])%K) +1 else: max_k = k_idx_his[-1] +1 K = min(max_k +1, N)#根据历史记录动态调整K的值,以使其能够适应数据流的变化。如果数据流的变化比较平稳,则K的值不会经常变化,这样可以避免频繁的参数更新。如果数据流的变化比较剧烈,则K的值会相应地进行调整,以更好地适应新的数据分布 i_idx = i # 实时信道生成 h_tmp = racian_mec(h0,0.3)#使用Rician衰落模型后的增益值 # 将h0增长到1,以便更好的训练; 这是深度学习中广泛采用的一种技巧 h = h_tmp*CHFACT channel[i,:] = h #变量h_tmp乘以常数CHFACT,然后将结果存储到变量h中。接着,将h赋值给二维数组channel的第i行,获取信道增益值 # 实时到达生成 dataA[i,:] = np.random.exponential(arrival_lambda) # 4) LyDROO的排队模型 if i_idx > 0: # 更新队列 Q[i_idx,:] = Q[i_idx-1,:] + dataA[i_idx-1,:] - rate[i_idx-1,:] # 当前队列 # 由于浮点错误,断言Q是正的 Q[i_idx,Q[i_idx,:]<0] =0 Y[i_idx,:] = np.maximum(Y[i_idx-1,:] + (energy[i_idx-1,:]- energy_thresh)*nu,0) # 当前能量队列 # 由于浮点错误,断言Y是正的 Y[i_idx,Y[i_idx,:]<0] =0#防止浮点错误 # 缩放Q和Y到接近1;深度学习技巧 nn_input =np.concatenate( (h, Q[i_idx,:]/10000,Y[i_idx,:]/10000)) # Actor module m_list = mem.decode(nn_input, K, decoder_mode) r_list = [] # 所有候选卸载模式的结果 v_list = [] # 候选卸载模式的目标值 for m in m_list: # Critic module # 为保存在m_list中的所有生成的卸载模式分配资源 r_list.append(Algo1_NUM(m,h,w,Q[i_idx,:],Y[i_idx,:],V)) v_list.append(r_list[-1][0]) # 记录最大奖励指数 k_idx_his.append(np.argmax(v_list)) # Policy update module # 编码最大奖励模式 mem.encode(nn_input, m_list[k_idx_his[-1]]) mode_his.append(m_list[k_idx_his[-1]])#将m_list最后一条历史消息添加到历史消息列表中。,在这个算法中取消对队列积压的考虑该怎么修改

2023-05-24 上传