MAC层的硬件地址

在局域网中,硬件地址又称为物理地址或者MAC地址(因为这种地址用在MAC帧中)

IEEE 802标准为局域网规定了一种48位(6字节)的全球地址,固化在适配器的ROM中。

如果计算机中或者路由器有多个适配器,那么这样的主机或者路由器就有多个“地址”,更准确的说,这种48位“地址”应当是某个接口的标识符。

IEEE的注册管理结构RA是局域网全球地址的法定管理机构,它负责分配地址字段6个字节中的前三个字节。世界上凡是要生产局域网适配器的厂家都必须向IEEE注册管理结构购买由这三个字节构成的号(地址块),这个号的正式名称为组织唯一标识符OUI,通常也叫公司标标识符。

以太网适配器还可以设置为一种特殊的工作方式,即混杂模式,工作在混杂模式的适配器只要“听到”有帧在以太网上就可以悄悄传输接收下来,而不管帧发送到哪里。

MAC帧格式

常用的以太网MAC帧格式有两种,一种是DIX Ethernet V2标准(以太网V2标准),另一种是IEEE的802.3标准。这里介绍使用最多的以太网V2的MAC帧格式(图3-22)。图中假定网络层使用的是IP协议。

以太网V2的MAC帧比较简单,由5个字段组成。前两个字段分别为6字节长的目的地址源地址字段。第三个字段为2字节的类型字段,用来标识上一层(例如网络层)使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。例如,当协议字段为0x0800代表上层网络层使用的是IP数据报;若类型为0x8137表示的是上层是从Novell IPX发过来的。第四个字段是数据字段,其长度为46-1500字节之间(最小长度64字节减去首部和尾部以及类型的长度18)。第五个字段为4字节的帧检验序列FCS(使用CRC校验)

MAC层怎么知道从从接收到的以太网帧取出多少字节交付给上一次层呢?这时候我们需要说一下曼彻斯特编码,曼彻斯特编码的重要一个特点是:在曼彻斯特编码的每一个码元的正中间一定有一次电压转换(由高到低或者由低到高)。当发送方把一个以太网帧发送完毕后,就不再发送其它码元了(既不发送0,也不发送1)。因此,发送方的网络适配器上的接口上的电压就不会发生变化了。这样,接收方就可以很容易找到以太网帧的结束位置。在这个位置上往前移4字节(FCS校验4字节),就能确定数据字段的结束位置。

当数据字段的长度小于46字节时候,MAC子层就会在数据字段加入一个整数字段进行填充,以保证以太网的帧不小于64字节。

从图3-22还可以看出,在传输媒体上实际传送的要比MAC帧还多8个字节,这是因为当一个站在刚开始接收MAC帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC帧的最前面的若干位就无法接收,结果使得整个MAC帧成为无用的帧。为了接收端迅速的实现位同步,从MAC层向下物理层还要帧的前面插入8字节(由硬件生成),它由两个字段构成。第一个字段时7字节的前同步码(1和0交替码),它的作用是使接收端的适配器在接收MAC帧的时候能够迅速调整其时钟频率,使它和发送端的时钟同步,也就是实现位同步,第二个字段是**帧开始定界符,定义为10101011,它的前6位作用和前同步码一样,最后两个连续的1就是告诉接收端适配器:“MAC帧信息就要来了,请适配器注意接收”。

在以太网上传送数据时是以位单位传送的。以太网在传送帧时,各帧之间还必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就属于同一个MAC帧。可见以太网不需要使用帧结束定界符。

扩展的以太网

扩展的以太网再网络层看起来仍然是一个网络

在物理层扩展以太网

以太网上的主机之间的距离不能太远,否则主机发送的信号经过铜线传输就会衰减到CSMA/CD协议无法正常工作。

现在,扩展主机和集线器之间的距离的一种办法就是使用光纤和一堆光纤调制解调器。如图3-23:所示:

光纤调制解调器的作用是进行电信号与光信号的转换。由于光纤带来的时延很小,并且带宽很宽,因此使用这种方法可以很容易的使主机从几千公里以外的集线器相连。

在数据链路层扩展以太网

扩展以太网更常用的方法是在数据链路层上进行。最初人们使用的是网桥,网桥对接收到的帧根据其目的MCA地址进行转发过滤

在1990年出现了以太网交换机

以太网交换机实质上就是一个多接口的网桥,以太网交换机的每个接口都直接与一台计算机或者另一台以太网交换机相连。并且一般都是工作在全双工方式,以太网交换机还具有并行性,即能同时联通多对接口,使多对主机能同时通信(而网桥只能一次分析和转发一个帧),相互通信的主机都是独占传输媒体,无碰撞的传输数据

以太网的接口还有存储器,能在输出端口繁忙时把到来的帧进行缓存。因此,如果以太网交换机上的两台主机,同时向另一台主机发送帧,那么当这台主机上的接口繁忙时,发送帧的这两台主机的接口会把收到的帧暂存一下,以后再发送出去。

以太网交换机是一种即插即用的设备,其内部的帧交换表(又称地址表)是通过自学习算法自动逐渐建立起来的。以太网交换机由于使用了专门的交换结构芯片,用硬件转发,其转发速率往往比要使用软件转发快得多。

以太网交换机的自学习功能

使用一个简单的例子说明交换机是怎样进行学习的。

假定在图3-25中以太网有4个接口,各连接一台计算机,其MAC地址分别为A,B,C,D。一开始交换机里面的交换表使空的。(图3-25(a))

A向B发送一帧,从端口1进入到交换机,交换机在接收到帧后,先查找交换表,没有查到应从哪个接口转发这个帧(在MAC地址这列中,找不到目的地址为B的主机)。接着,交换机把这个帧的源地址A和接口2写入到交换表中,并向除接口1以外的所有接口广播这个帧。

C,D丢弃掉这个帧,因为目的地址不对,只有B收下这个帧,这也称之为过滤

从新写入交换表的项目(A,1)可以看出,以后不管从哪一个接口收到帧,只要其目的地址是A,就应当把收到的帧从接口1转发出去。这样做的依据是:既然A发出的帧是从接口1进入到交换机的,那么从交换机的接口1转发出去的帧也应当可以到达A。经过一段时间后,交换表中的项目就齐全了。

有时候交换机上的接口更换主机,或者主机更换了网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间,过期的项目就会被自动删除,用这样的方法保证交换表中的数据都符合当前网络的实际情况。

以太网交换机的这种自学方法不需要人工进行配置,非常的方便。

但有时候为了增加网络的可靠性,在使用以太网交换机组件网络的时候,往往会增加一些冗余的链路。在这种情况下,自学习的过程就可能导致以太网帧在网络的某一个环路中无限制的兜圈子,白白消耗了网络资源,如图3-26:

为了解决兜圈子问题,IEEE的802.1D标准制定了一个生成树协议STP,其要点的协议是不改变网络的实际拓扑,但在逻辑上切断某些链路。使得从一台主机到其他主机的路径是无环路的树状结构,从而避免广播风暴大量占用交换机的资源。

生成树STP协议原理:任意一交换机中如果到达根网桥有两条或者两条以上的链路,生成树协议都根据算法把其中一条切断,仅保留一条,从而保证任意两个交换机之间只有一条单一的活动链路。因为这种生成的拓扑结构,很像是以根交换机为树干的树形结构,故为生成树协议。

总线以太网使用了CSMA/CD协议,以半双工进行通信,但是以太网交换机采用的是全双工通信,并不是使用CSMA/CD协议,为什么还叫以太网?原因是它的帧结构未发生变化,仍然采用以太网的帧结构

虚拟局域网

利用以太网交换机可以很方便的实现虚拟局域网(VLAN),在IEEE802.1Q标准中,对虚拟局域网是这样定义的:虚拟局域网是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网络具有某些共同的需求,每一个VLAN帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个VLAN。

本章重要的概念

  • 链路是从一个节点到相邻节点的一段物理层线路,数据链路是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)。

  • 数据链路层使用的信道主要是点对点信道和广播信道两种。

  • 数据链路层传送的协议数据单元是帧。数据链路层的三个基本问题是:封装成帧,透明传输,差错检测。

  • 循环冗余检验CRC是一种检错方法,而帧检测序列FCS是添加在数据后面的冗余码。

  • 点对点协议PPP是数据链路层使用最多的一个协议,它的特点是:简单,只检测差错,而不是纠正错误,不使用序列号,也不进行流量控制。可同时支持多种网络协议。

  • PPoE是为宽带上网的主机使用的链路层协议。

  • 局域网的优点是:

    • 具有广播功能,从一个站点可以很方便的访问全国。
    • 便于系统的扩展和演变。
    • 提高了系统的可靠性,可用性和生存性。
  • 计算机与外界局域网的通信要通过通信适配器(或网络适配器),它又称为网络接口卡或网卡。计算机的硬件地址就在适配器的ROM中。

  • 以太网采用无连接的工作方式,对发送的数据帧不进行编号,也不要求对方发回确

    认。目的站收到有差错帧就把它丢弃,其他什么也不做。

  • 以太网采用的协议是具有冲突检测的载波监听多点接入 CSMA/CD。协议的要点是:发送前先监听,边发送边监听,一旦发现总线上出现了碰撞,就立即停止发送。然后按照退避算法等待一段随机时间后再次发送。因此,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。以太网上各站点都平等地争用以太网信道。

  • 传统的总线以太网基本上都是使用集线器的双绞线以太网。这种以太网在物理上是星形网,但在逻辑上则是总线形网。集线器工作在物理层,它的每个接口仅仅简单地转发比特,不进行碰撞检测。

  • 以太网的硬件地址,即MAC地址实际上就是适配器地址或适配器标识符,与主机

    所在的地点无关。源地址和目的地址都是48位长。

  • 以太网的适配器有过滤功能,它只接受单播帧,广播帧和多播帧。

  • 使用集线器在物理层上扩展以太网(扩展后的以太网仍然是一个网络)。

  • 交换式集线器常称为以太网交换机或第二层交换机(工作在数据链路层)。它就是

    个多接口的网桥,而每个接口都直接与某台单主机或另一个集线器相连,且工作

    在全双工方式。以太网交换机能同时连通许多对的接口,使每一对相互通信的主机

    都能像独占通信媒体那样,无碰撞地传输数据。

计算机网络-3-5-以太网MAC层及交换机的更多相关文章

  1. 网络协议学习笔记(二)物理层到MAC层,交换机和VLAN,ICMP与ping原理

    概述 之前网络学习笔记主要讲解了IP的诞生,或者说整个操作系统的诞生,一旦有了IP,就可以在网络的环境里和其他的机器展开沟通了.现在开始给大家讲解关于网络底层的相关知识. 从物理层到MAC层:如何在宿 ...

  2. 5(计算机网络)从物理层到MAC层

    故事就从我的大学宿舍开始讲起吧.作为一个八零后,我要暴露年龄了. 我们宿舍四个人,大一的时候学校不让上网,不给开通网络.但是,宿舍有一个人比较有钱,率先买了一台电脑.那买了电脑干什么呢? 首先,有单机 ...

  3. 以太网的 MAC 层

    一.MAC 层的硬件地址 在局域网中,主机的硬件地址又称为物理地址,或 MAC 地址.6个字节. IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位,组织唯一标识符O ...

  4. 以太网MAC地址组成与交换机基本知识

    以太网MAC地址 MAC地址由48位二进制组成,通常分为六段,用十六进制表示,工作在数据链路层. 数据链路层功能: 链路的建立,维护与拆除 帧包装,帧传输,帧同步 帧的差错恢复 简单的流量控制 第八位 ...

  5. 网络协议 3 - 从物理层到 MAC 层

        在上一篇博文中,我们见证了 IP 地址的诞生,机器一旦有了 IP,就可以在网络的环境里和其他的机器展开沟通了.     今天,我们来认识下 物理层 和 MAC 层.     日常生活中,身为 ...

  6. 网络协议 3 - 物理层 和 MAC 层

    在上一篇博文中,我们见证了 IP 地址的诞生,机器一旦有了 IP,就可以在网络的环境里和其他的机器展开沟通了.     今天,我们来认识下 物理层 和 MAC 层.     日常生活中,身为 90 后 ...

  7. MAC地址和交换机

    数据链路层主要关注三个问题: 这个包是发给谁的?谁应该接收? 大家都在发,会不会产生混乱?有没有谁先发.谁后发的规则? 如果发送的时候出现了错误,怎么办? 数据链路层也称为MAC(Medium Acc ...

  8. 第5讲 | 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?

    第一层(物理层) 水晶头要做交叉线,用的就是所谓的 1-3.2-6 交叉接法. 有一个叫做 Hub 的东西,也就是集线器.这种设备有多个口,可以将宿舍里的多台电脑连接起来.但是,和交换机不同,集线器没 ...

  9. 浅析Xilinx 三速以太网MAC IP核

    之前在使用Altera的三速以太网MAC IP的基础上,完成了UDP协议数据传输.此次为了将设计移植到xilinx FPGA上,需要用到xilinx的三速以太网MAC IP核,当然也可以自己用HDL编 ...

随机推荐

  1. [转载]linux上用PHP读取WORD文档

    在linux上用PHP读取WORD文档,其实是使用了 antiword程序把word文档转化为txt文档. 再使用php执行系统命令调用而已. 具体操作如下: 1.安装antiword 官方站:htt ...

  2. 鸿蒙内核源码分析(信号量篇) | 谁在负责解决任务的同步 | 百篇博客分析OpenHarmony源码 | v29.01

    百篇博客系列篇.本篇为: v29.xx 鸿蒙内核源码分析(信号量篇) | 谁在负责解决任务的同步 | 51.c.h .o 进程通讯相关篇为: v26.xx 鸿蒙内核源码分析(自旋锁篇) | 自旋锁当立 ...

  3. 鸿蒙内核源码分析(源码注释篇) | 鸿蒙必定成功,也必然成功 | 百篇博客分析OpenHarmony源码 | v13.02

    百篇博客系列篇.本篇为: v13.xx 鸿蒙内核源码分析(源码注释篇) | 鸿蒙必定成功,也必然成功 | 51.c.h .o 几点说明 kernel_liteos_a_note | 中文注解鸿蒙内核 ...

  4. Loj#6503-「雅礼集训 2018 Day4」Magic【分治NTT】

    正题 题目链接:https://loj.ac/p/6503 题目大意 \(n\)张卡\(m\)种,第\(i\)种卡有\(a_i\)张,求所有排列中有\(k\)对相邻且相同的卡牌. \(1\leq n\ ...

  5. 在windoes server2008部署kettle遇到的问题

    本机电脑是windows10,在部署ketle时一切顺利,但在windows server2008服务器上部署,各种报错,毕竟线上环境比较复杂-- 问题一:启动kettle的spoon.bat文件时, ...

  6. docker - compose 部署 Nginx

    主要介绍 docker 中 Nginx 的部署及项目目录挂载券的方法.docker 中部署一个服务,有三种方法,分别是 docker run.Dockerfile.docker-compose . 下 ...

  7. 【.Net vs Java? 】 先来看一下Java和C#的数据类型区别。

    新工作.Net和Java都要做,早期也做过一段Java的项目,但没有系统的深入学习过.一直觉得这两门语言估计是最相近的两门语言了,好多代码可以说直接拷过来都不带报错的,但仔细推敲还是有很多的不同. 1 ...

  8. SimpleDateFormat、Date和String互转

    今天在修改bug时遇到一个查询异常:根据时间段查询的时候,如果查询时间段含12点钟,那么能查到时间段之外的其他数据: 跟踪了数据流动发现,前同事写的程序中,有一处是讲前端传来时间字符串转为Date的一 ...

  9. 【数据结构与算法Python版学习笔记】基本数据结构——列表 List,链表实现

    无序表链表 定义 一种数据项按照相对位置存放的数据集 抽象数据类型无序列表 UnorderedList 方法 list() 创建一个新的空列表.它不需要参数,而返回一个空列表. add(item) 将 ...

  10. Coursera Deep Learning笔记 结构化机器学习项目 (下)

    参考:https://blog.csdn.net/red_stone1/article/details/78600255https://blog.csdn.net/red_stone1/article ...