Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103541
  • 博文数量: 35
  • 博客积分: 1845
  • 博客等级: 上尉
  • 技术积分: 394
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-17 17:06
文章分类

全部博文(35)

文章存档

2013年(2)

2012年(2)

2011年(24)

2010年(3)

2009年(4)

我的朋友

分类:

2011-05-24 19:32:42

第二篇

MAC(媒介访问控制子层)
    Mac对象模拟媒介访问协议,由于网络中的发送和接收机制大部分与Mac层紧密联系,所以Mac对象必须是双工的。在发送端,Mac对象把数据包加上Mac头后传送到物理层(Channel)。在接受端,Mac对象从物理层异步接收数据包,在Mac协议处理之后,它把数据包传递给链路层(LL)。Mac层的示意图如下:

当一个Mac对象通过recv方法接收到一个数据包后,它检查这个数据包是收到的还是要发送的,如果是收到的传给sendUp,如果是发送的传给sendDown。注意相应的Mac协议如802.11,TDMA,CDMA等,如果要实现,应该放在sendDown函数中实现。
     Mac中,共用体MacState中存放了Mac层的状态,通过它可以知道Mac当前的状态;Channel指针指出了Mac连接着的Channel对象;Phy,Tap,LL指针分别指出了与Mac相关的物理层接口,tap,逻辑链路控制子层。

LL(逻辑链路控制子层)
    LL对象负责模拟数据链路协议。许多协议都在这层得到了实现,比如数据包分组和重组,可靠的链路协议。LL的另一个重要功能是设置数据包MAC头部的Mac目的地址。这个任务可以分解为:找下一跳节点的IP地址(路由),把这个IP地址解析成正确的Mac地址(ARP)。
先来看看一个叫连接器的构件,它的示意图如下所示:
LL的示意图如下:

上图所示,macDA_目标节点的Mac地址,ARPTable是此LL连接的ARP对象,它实现了IP地址到Mac地址的转换。LL和Mac之间还有一个接口队列(上图中的Queue指向这个队列),接口队列是由优先级队列组成的,它通过将分组插入到队首位置以优先处理路由协议分组。它可以对所有队列中的分组进行过滤。
Mac、接口队列和LL就组成了我们通常说的数据链路层。

阅读(328) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~