当前位置: 首页 > news >正文

NS2源码图示---物理层 (转帖)

Channel(信道)
    信道在通信系统中算是比较底层的东西了,你可以把它看作是通信的介质(声音通过空气才可以传播,信道的作用类似于空气)。无线通信中的信道具体可以指频率或者CDMA中的码道。
    程序中的信道,我宁愿把它想像成管道之类的东西,毕竟它的作用就是连接通信的两端。言归正传,我们来看看NS2中的有线信道吧,对应代码在channel.h和channel.cc中,大致的结构如下图: 

 

它对外的主要接口是向上层发送sendUp和接受recv;
    我们再来看一下无线信道,对于的源码也在channel.{h,cc}中。大致的结构如下图:

 

主要的接口同上。Channel应该提供基础设施来支持Mac的载波侦听、竞争和冲突检测,不过ns2.29中,这部分代码都被注释掉了。说明:上图并未列出无线信道的所有属性,只是把主要属性和接口示意出来,下面的图示也是如此。

 

Phy (物理层)

     在介绍Phy之间,先介绍一个通用连接“上下”的连接器BiConnector,大致的示意图如下:

它起到了“承上启下”的连接作用,它是一个虚基类,所有有上下层次关系的构件都可以继承它,Phy就是其中之一。BiConnector拥有指向上和指向下的指针uptarget、downtarget,通过它们可以迅速的地找到“上面”和“下面”的构件。此外,它还有向上通信(发送)和向下通信(发送)的接口sendUp、sendDown,以及接收接口recv;
     Phy继承了BiConnector,自然具有BiConnector的所有属性和接口,但是它也有自身的一些特别重要的属性,请先看示意图:

 

为了突出重点,图中省略了一些从BiConnector继承的属性。注意图中的chnl_link_和node_link_都是结构体类型。chnl_link_的定义如下:
struct {                                                    
       Phy *le_next; /* next element */        
       Phy **le_prev;     /* address of previous next element */
}
chnl_link_的作用是把连在同一条信道(channel)上的Phy都串起来,
node_link_的作用是把连在同一个节点上的Phy都串起来。其它的两个属性node指向节点,channel指向信道。
物理层的主要作用是控制信道的访问,同时也能够设置带宽和计算传输时间等。
Channel和Phy合在一起可以看作我们通常所说的物理层,这样Channel就负责模拟数据包在物理层上的传输,Phy负责控制Channel传输。

 

原文地址:http://happywh583.blog.sohu.com/67413384.html

相关文章:

  • 火狐浏览器的一些常用设置
  • 代码行统计脚本.
  • Python property
  • 图的遍历(深度优先遍历)- 数据结构和算法59
  • 网页剪辑有道云笔记、印象笔记(evernote)哪个更好?
  • 定义类C++ primer目录
  • office365组同步问题
  • Tomcat配置数据池
  • 分享:avhttp简介
  • 基本输入输出函数以及其格式.
  • 由装箱引发的——Integer比较的来龙去脉
  • CIO管理札记
  • Centos6.0系统drbd+heartbeat+nfs实现高可用文件存储
  • NO.82 为需求分解任务
  • 插入容器STL学习笔记(八) 序列式容器 共性
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Apache Spark Streaming 使用实例
  • iOS 系统授权开发
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • mysql_config not found
  • MySQL主从复制读写分离及奇怪的问题
  • React系列之 Redux 架构模式
  • Redis学习笔记 - pipline(流水线、管道)
  • vue 个人积累(使用工具,组件)
  • 聊聊directory traversal attack
  • 盘点那些不知名却常用的 Git 操作
  • 前端相关框架总和
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 责任链模式的两种实现
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • #pragma pack(1)
  • $.each()与$(selector).each()
  • (C#)一个最简单的链表类
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (十)c52学习之旅-定时器实验
  • (十六)Flask之蓝图
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转) Android中ViewStub组件使用
  • (转)linux 命令大全
  • *2 echo、printf、mkdir命令的应用
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • /dev下添加设备节点的方法步骤(通过device_create)
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @RequestMapping 的作用是什么?
  • [C\C++]读入优化【技巧】
  • [Deep Learning] 神经网络基础
  • [HTML]Web前端开发技术7(HTML5、CSS3、JavaScript )CSS的定位机制——喵喵画网页
  • [Leetcode] Permutations II
  • [LeetCode]-225. 用队列实现栈
  • [LeetCode]-283. 移动零-1089. 复写零