目录
数据链路层使用的信道主要有以下两种类型:
(1)点对点信道。这种信道使用一对一的点对点通信方式。
(2)广播信道。这种信道使用一对多的广播通信方式,过程较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
局域网虽然是个网络,但并不把局域网放在网络层讨论。因为在网络层要讨论的问题是多个网络互连的问题,是讨论分组怎样从一个网络,通过路由器,转发到另一个网络。本章研究的是在一个局域网中,分组怎样从一台主机传送到另一台主机,但并不经过路由器转发。从整个互联网来看,局域网仍属于数据链路层的范围。
(1)数据链路层的点对点信道和广播的特点,以及两种信道所使用的协议(PPP协议以及CSMA/CD协议)特点。
(2)数据链路层的三个基本问题:封装成帧、透明传输、差错检测
(3)以太网MAC层的硬件地址
(4)适配器、转发器、集线器、网桥、以太网交换机的作用及使用场合。
两台主机通过互联网进行通信时数据链路层所处的低位:
从协议层次看,数据流动如图b所示。主机H1和H2有完整的5层协议栈,但路由器在转发分组时使用的协议栈只有下面3层。数据进入路由器后要先从物理层上到网络层,在转发表中找到下一条地址后,再下到物理层转发出去。
然而专门研究数据链路层的问题时,许多情况下只关心在协议栈中水平方向的各种数据链路层。于是,当主机H1向H2发送数据时,可以想象数据就是在数据链路层从左向右沿水平方向传送,如下图:
这四段不同的链路层可能采用不同的数据链路层协议。
一、数据链路层的几个共同问题
1. 数据链路和帧
"链路"和“数据链路”不是一回事。
链路是从一个节点到相邻节点的一段物理线路(有线/无线),而中间没有任何其他的交换节点。进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。链路只是一条路径的组成部分。
数据链路是另一个概念。因为需要在一条线路上传送数据时,除了一条必须物理线路外,还要有一些通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器(既有硬件,也有软件)来实现这些协议。一般的适配器都包括了数据链路层和物理层这两层功能。
早期的数据通信协议叫作规程。以你为在数据链路层,规程和协议是同义语。
点对点信道的数据链路层的协议数据单元-帧。
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在互联网中,网络层协议数据单元就是IP数据报(或称为数据报、分组、包)。
在点对点信道的数据链路层协议上,可采用下图a所示的3层模型。这种3层模型中,不管在那一段链路上的通信(主机和路由器之间、两个路由器之间),都看成是节点和节点的通信,而每个节点只有三层-网络层、数据链路层、物理层.
点对点信道的数据链路层进行通信时的主要步骤:
(1)节点A的数据链路层把网络层交下来的IP数据包添加首部和尾部封装成帧。
(2)节点A把封装好的帧发送给节点B的数据链路层。
(3)若节点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层;否则丢弃这个帧。
数据链路层不必考虑物理层比特传输细节。可简单设想成好像是沿着两个数据链路层之间的水平方向把帧直接发送给对方,如图b所示。
2. 三个基本问题
数据链路层协议有许多种,但有三个基本问题是共同的:封装成帧、透明传输、差错检测。
1. 封装成帧
封装成帧是一段数据的前后分别添加首部和尾部,就构成了一个帧。
接收端在收到物理层上交的比特流后,根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。下图表示用帧首部和帧尾部封装成帧的一般概念。
分组交换的一个重要概念:所有在互联网上传送的数据都以分组(即IP数据包)为传送单位。
网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面添加首部和尾部,就构成一个完整的帧。这样的帧就是数据链路层的数据传送单元。一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。首部和尾部的一个重要作用就是进行帧定界(确定帧的界限)。首部和尾部还包括许多必要控制信息。发送帧时,是从帧首部开始发送的。
为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部地长度。但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限-最大传送单元MTU。下图给出了帧的首部、尾部、数据部和MTU的关系:
当数据是由可打印的ASCLL码组成的文本文件时,帧定界可以使用特殊的帧定界符。ASCLL码是7位编码,可组成128个不同的ASCLL码,其中可打印的有95个,不可打印的有33个。
下图的例子可说明帧定界的概念。控制字符SOH放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT表示帧的结束。注意,SOH和EOT都是控制字符的名称。它们的十六进制编码分别是01和04。SOH(EOT)并不是三个字符。
数据在传输中出差错时,帧定界符很有用。假定发送端在尚未发送完一个帧时突然故障,中断了发送。但随后又恢复正常,于是重头开始发送刚才未发送完的帧。由于使用了帧定界符,接收端就知道前面收到的数据是个不完整的帧(只有首部SOH,没有尾部EOT),必须丢弃。后面收到完整的SOH、EOT,应当手下这个完整的帧。
2. 透明传输
由于帧的开始和结束的标记使用专门指明的控制字符,因此,传输的数据中任何8比特的组合一定不允许和用作帧定界控制字符一样的比特编码。
传送的帧是用文本文件组成的帧时,数据部分出现不会像SOH或EOT这样的控制字符。不管从键盘上输入什么字符都可以放在这样的帧中传输过去,这样的传输就是透明传输。
但当数据部分是非ASCLL码的文本文件时(如图像),情况就不同了。如果数据部分恰好和SOH和EOT一样,数据链路层就会错误地“找到帧的边界”。
上图的帧不是透明传输。”透明“表示:某一个实际存在的事物看起来却好像不存在一样。无论什么样的比特组合的数据,都能够原样无差错通过数据链路层,就好像看不见数据链路层有什么数据妨碍传输一样。数据链路层对这些数据来说是透明的。
为解决这个问题,必须设法使数据中可能出现的字符SOH和EOT在接收端不被解释为控制字符。方法:发送端的数据链路层在数据中出现控制字符“SOH”或"EOT“的前面插入一个转义字符”ESC“(其十六进制编码是1B)。在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充或字符填充。如果转义字符也出现在数据当中,解决办法仍然是在转义字符前插一个转义字符。因此,接收端收到连续的两个转义字符时,就删除其中前面的一个。如下图:
3. 差错检测
现实的通信链路不是理想的。比特在传输过程可能有差错:1可能变0,0可能变1。这就是比特差错。比特差错是传输差错的一种。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER。例如,误码率为时,表示平均每传送
个比特就会出现一个比特的差错。误码率和信噪比有关。提高信噪比,误码率可减小。实际通信链路并非理想,不可能使误码率降到零。因此采用各种差错检测措施。目前数据链路广泛使用了循环冗余校验CRC的检错技术。
例如,在发送端,把数据划分为组,假定每组k个比特。假定传送的数据M=101001(k=6)。CRC运算就是在数据M的后面添加差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。在所要发送的数据后面增加n位的冗余码,增加了开销,但这个代价值得,减少了差错。
二、点对点协议PPP
在通信线路质量较差的年代,在数据链路层使用可靠传输的高级数据链路控制HDLC,但现在很少使用了。目前点对点协议PPP是最广泛的数据链路层协议。
1. PPP协议的特点
互联网用户通常都要连接到某个ISP才能接入互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议,如下图。
1. PPP协议应满足的需求
(1)简单
IETF设计互联网体系结构时,把最复杂的部分放在TCP协议中,而网际协议IP相对简单,它提供的是不可靠的数据报服务。
简单的设计可使协议在实现时不容易出错,从而使不同厂商在协议的不同实现上的互操作性提高了,协议标准化的一个目的就是提高协议的互操作性。
这种数据链路层的协议很简单:接收方每收到一个帧,就进行CRC检验。如果CRC检验正确,就收下这个帧;反之,丢弃这个帧。其他什么也不做。
(2)封装成帧
PPP协议必须规定特殊的字符作为帧定界符(帧的开始和结束字符)。
(3)透明性
PPP协议必须保证数据传输的透明性。如果数据中出现了和帧界定符一样的比特组合时,采用有效措施解决这个问题。
(4)多种网络层协议
PPP协议必须能够在同一条物理链路上同时支持多种网络层协议(如IP和IPX等)的运行。当点对点链路所连接的时局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。
(5)多种类型链路
PPP还必须支持在多种类型的链路上运行。例如,串行的或并行的,同步的或异步的,低速的或高速的,电的或光的点对点链路。
1999年公布的在以太网上运行的PPP,即PPP over Ethernet,PPPoE。这是PPP协议能够适应多种类型链路的一个典型例子。PPPoE是为宽带上网的主机使用的链路层协议。这个协议把PPP帧再封装在以太网帧中。宽带上网时由于数据传输速率较高,可以让多个连接在以太网上的用户共享一条到ISP的宽带链路。现在,即使只有一个用户利用ADSL进行宽带上网,也是使用PPPoE协议
(6)差错检测
PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
(7)检测连接状态
PPP协议必须具有一种机制能够及时自动检测链路是否处于正常工作。出现故障的链路隔一段时间又恢复正常工作。
(8)最大传送单元
PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值。促进各种实现之间的互操作性。MTU是数据链路层的帧的可以载荷的数据部分的最大长度,不是帧的总长度。
(9)网络层地址协商
PPP协议必须提供一种机制使通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层协议地址。
(10)数据压缩协商
PPP协议必须提供一种方法来协商使用数据压缩算法。但PPP协议并不要求数据压缩算法进行标准化。
在TCP/IP协议族中,可靠传输由运输层的TCP协议负责,因此数据链路层的PPP协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。PPP协议不支持多点线路,只支持点对点的链路通信。PPP协议支持全双工链路。
2. PPP协议的帧格式
1. 各个字段的意义
PPP的帧格式如下图所示,首部和尾部分别为4个字段和两个字段。
首部的第一个字段和尾部的第二个字段都是标志字段F(Flag)规定为0x7E。标志字段表示一个帧的开始或结束。因此标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。
首部中的地址字段A规定为0xFF,控制字段C为0x03。这两个字段没有携带PPP帧的信息。
PPP首部的第四个字段是2字节的协议字段。当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制协议LCP的数据,而0x8021表示这是网络层的控制数据。
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。
2. 字节填充
信息字段出现和标志字段一样的比特(0x7E)组合时,必须采取一些措施让其不出现。
当PPP使用异步传输时,它把转义符定义为0x7D,并使用字节填充,RFC1662规定了下述填充方法:
(1)把信息字段出现的每一个0x7E字节转为2字节(0x7D,0x5E)。
(2)若信息字段中出现一个0x7D的字节,则把0x7D转为2字节序列(0x7D,0x5D)。
(3)若信息字段中出现ASCLL码的控制字符,则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03就把它转为2字节序列(0x7D,0x23)。
由于在发送端进行了字节填充,所以在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在收到数据后再进行与发送端填充相反的变换,就可以正确恢复出原来的信息。
3. 零比特填充
PPP协议应用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送)。这种情况下,PPP协议采用零比特填充方法实现透明传输。
零布特填充的具体方法是:在发送端,先扫描整个信息字段。只要发现有5个连续1,则立即填入一个0。因此经过这种零比特填充后的数据,就可以保证在信息字段中不会出现6个连续1。接收端收到一个帧时,先找到标志字段F确定一个帧的边界,接着再用硬件对比特流扫描。每当发现5个连续1时,就把5个连续1后的一个0删除,还原比特流。保证了透明传输。
3. PPP协议的工作状态
PPP链路怎样被初始化,当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。接着还要进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址。
用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放物理层的连接。如下图所示。
PPP链路的起始和终止状态永远是下图中的“链路静止”状态,这时在用户个人电脑和ISP的路由器之间并不存在物理层的连接。
当用户个人电脑通过调制解调器呼叫路由器时,路由器就能检测到调制解调器发出的载波信号。在双方建立了物理层连接后,PPP就进入“链路建立”状态,目的是建立链路层的LCP连接。
这时LCP开始协商一些配置选项,即发送LCP的配置请求帧。这是个PPP帧,协议字段置为LCP对应的代码,而信息字段包含特定的配置请求。链路的另一端可以发送以下几种响应中的一种:
(1)配置确认帧:所有选项都接受。
(2)配置否认帧:所有选项都理解但不能接受。
(3)配置拒绝帧:选项有的无法识别或不能接受,需要协商。
LCP配置选项包括链路上的最大帧长、所使用的鉴别协议的规约,以及不使用PPP帧中的地址和控制字段。
协商结束后双方就建立了LCP链路,接着进入“鉴别”状态。这一状态,只允许传送LCP协议的分组、鉴别协议的分组以及监测链路质量的分组。若使用口令鉴别协议PAP,则需要发起通信的一方发送身份标识符和口令。系统可允许用户重试若干次。如果需要更好的安全性,可使用复杂的口令握手鉴别协议CHAP。若鉴别身份失败,则转到“链路终止”状态。若鉴别成功,则进入“网络层协议”状态。
在“网络层协议”状态,PPP链路两端的网络控制协议NCP根据网络层的不同协议互相交换网络层特定的网络控制分组。这个步骤很重要,因为现在的路由器都能够同时支持多种网络层协议。总之,PPP协议两端的网络层可以运行不同的网络层协议,但仍可使用同一个PPP协议进行通信。
如果在PPP链路上运行的是IP协议,则对PPP链路的每一段配置IP协议模块时就要使用NCP中支持IP的协议-IP控制协议IPCP。IPCP分组也封装成PPP帧在PPP链路上传送。在低速链路上运行时,双方还可以协商使用压缩的TCP和IP首部,减少链路上发送的比特数。
当网络层配置完毕后,链路就进入可进行数据通信的“链路打开”状态。链路的两个PPP端点可以彼此向对方发送分组。两个PPP端点还可发送回送请求LCP分组和回送回答LCP分组,以检查链路的状态。
数据传输结束后,可以由链路的一端发出终止请求LCP分组请求终止链路连接,在收到对方发来的终止确认LCP分组后,转到“链路终止”状态。如果链路出现故障,也会从“链路打开”状态转到“链路终止”状态。当调制解调器的载波停止后,则回到“链路静止“状态。
上图右方是对PPP协议几个状态的说明。从设备之间无链路开始,到先建立物理链路,再建立链路控制协议LCP链路。经过鉴别后再建立网络控制协议NCP链路,然后才能交换数据。PPP协议已不是纯粹的数据链路层的协议,还包括物理层和网络层的内容。
三、使用广播信道的数据链路层
广播信道可以进行一对多的通信。
1. 局域网的数据链路层
局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。
局域网的优点:
(1)具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
(2)便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
(3)提高了系统的可靠性、可用性和生存性。
局域网可按网络拓扑进行分类。图a是星形网。由于集线器的出现和双绞线的大量用于局域网中。图b是环形网,图c是总线网,各站点直接连接在总线上。总线两端的匹配电阻吸收在总线上传播的电磁波信号的能量,避免在总线上产生有害的电磁波反射。总线网以传统以太网最为著名,但以太网后来又演变成了星形网。现在的以太网已成为局域网的同义词。
局域网可使用多种传输媒体。双绞线最便宜,是局域网最主流的传输媒体。当数据率更高时,需要使用光纤作为传输媒体。
局域网的工作层次跨越了数据链路层和物理层。
共享信道要考虑的一个问题是,如何使众多用户能够合理方便地共享通信媒体资源。技术上有两种方法:
(1)静态划分信道,如前面介绍的频分复用、时分复用、波分复用和码分复用等。用户只要分配到了信道就不会和其他用户发生冲突。但这个方法代价高,不适用于局域网使用。
(2)动态媒体接入控制,它又成为多点接入,特点是信道并非在用户通信时固定分配给用户。这里分为以下两类:
- 随机接入 随机接入特点是所有用户可随机地发送信息。但如果恰巧有两个或多个用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞。使得这些用户的发送都失败。因此,要解决碰撞的网络协议。
- 受控接入 受控接入的特点是用户不能随机的发送信息而必须服从一定的控制。这类的典型代表有分散控制和令牌环局域网和集中控制的多点线路探询,或称为轮询。
随机接入的以太网重点讨论,受控接入的局域网用的较少。
1. 以太网的两个主要标准
以太网是美国施乐Xerox公司的研究中心PARC研制成功的。那时,以太网是一种基带总线局域网,数据率为2.94Mbit/s。以太网用无源电缆作为总线传送数据帧,并以曾在历史上表示电磁波的以太命名。1976年,Metcalfe和Boggs发表以太网里程碑论文。DEC公司、英特尔公司和施乐公司联合提出了10Mbit/s以太网规约的第一个版本DIX V1。1982年有修改为第二版规约(最后的版本),即DIX Ethernet V2,成为世界上第一个局域网产品的规约。
此基础上,IEEE 802委员会的802.3工作组于1983年制定了第一个IEEE的以太网标准IEEE 802.3,数据率为10Mbit/s。802.3局域网对以太网标准中的帧格式做了一点小改动,但允许基于这两种标准的硬件实现可以在同一个局域网上互操作。以太网的两个标准DIX Ethernet V2与IEEE的802.3标准差距很小。因此,很多人也常把802.3局域网简称为”以太网“。
出于有关厂商在商业的激烈竞争,IEEE802委员会当初未能形成一个统一、”最佳“的局域网标准,而是被迫制定了几个不同的局域网标准,如802.4令牌总线网、802.5令牌环网等。为了使数据链路层更好地适应多种局域网标准,IEEE802委员会就把局域网的数据链路层拆成两个子层,即逻辑链路控制LLC子层和媒体接入控制MAC子层。与介入到传输媒体有关的内容到放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种传输媒体和MAC子层的局域网对LLC子层来说都是透明的,如下图。
然后后面,激烈的局域网竞争市场逐渐明朗。以太网取得了垄断地位,几乎成为了局域网的代名词。目前使用最多的局域网只剩下DIX Ethernet V2(以太网),而不是IEEE 802委员会指定的几种局域网。IEEE 802委员会指定的逻辑链路控制子层LLC的作用已消失,很多厂商生产的适配器就仅装有MAC协议而没有LLC协议。
2. 适配器的作用
从一般概念讨论计算机是怎样连接到互联网上的。
计算机与外界局域网连接是通过适配器。适配器本来是主机箱内插入的一块网络接口板。这种接口板又称为网络接口卡NIC(网卡)。由于现在计算机主板上都已经嵌入了这种适配器,不再使用单独的网卡了,因此使用适配器更为准确。在这种通信适配器上面装有处理器和存储器(RAM和ROM)。适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此,适配器的一个重要功能就是进行数据串行传输和并行传输的转换。由于网络上的数据率和计算机总线上的数据率不相同,因此在适配器种必须装有对数据进行缓存的存储芯片。在主板上插入适配器时,必须把管理该适配器的设备驱动程序安装在计算机操作系统中。这个驱动程序以后就告诉适配器,应当从存储器的什么位置把多长的数据块发送到局域网,或者应当在存储器什么位置把局域网传送来的数据块存储下来。适配器还要能够实现以太网协议。
适配器在接受/发送各种帧时,不使用计算机的CPU。当适配器收到有差错的帧时,把这个帧直接丢弃不必通知计算机。适配器收到正确的帧时,就使用中断来通知计算机,并交付协议栈中的网络层。当计算机发送IP数据报文时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。下图表示适配器的作用。注意,计算机的硬件地址就在适配器的ROM中,而计算机的软件地址-IP地址,则在计算机的存储器中。
2. CSMA/CD协议
最早的以太网将许多计算机连接到一根总线上。当初认为这个方法既简单有可靠。
总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。这种就是广播通信的方式。但并不总是要局域网上进行一对多的广播通信。为了在总线上实现一对一的通信,可以使每台计算机的适配器都拥有一个与其他适配器都不同的地址。在发送数据帧时,在帧的首部写明接收站的而地址。现在的电子技术可以做到:仅当数据帧中的目的地址与适配器ROM中存放的硬件地址一致时,该适配器才能接收这个数据帧。适配器对不是发送给自己的数据帧就丢弃。这样,具有广播特性的总线就实现了一对一的通信。
也常把局域网上的计算机称为”主机“”工作站“”站点“或“站”。
为了通信简便,以太网采取了以下两种措施:
(1)采用较为灵活的无连接的工作方式,即不必建立连接就可以直接发送数据。适配器对发送的数据帧不进行编号,也不要求对方发回确认。这样做可以使以太网工作起来简单,而局域网信道的质量很好,因通信质量不好产生差错的概率很小。因此,以太网提供的服务是尽最努力的交付,即不可靠的交付。当目的站收到有差错的数据帧时,就把帧丢弃,其他什么也不做。对有差错帧是否需要重传则由高层决定。例如,如果高层使用TCP协议,那么TCP就会发现丢失了一些数据。于是经过一定的时间后,TCP就把这些数据重新传递给以太网进行重传。但以太网不知道这是重传帧,而是当作新的数据帧来发送。
总线上只要有一台计算机在发送数据,总线的传输资源就被占用。因此,在同一时间只能允许一台计算机发送数据,否则各计算机之间就会互相干扰,使得所发送数据被破坏。因此,如何协调总线上各计算机的工作是以太网要解决的。以太网采用最简单的随机接入,但有很好的协议用来减少冲突发生的概率。这好比有一屋子的人,随时可以发言,但必须有个协议协调大家发言。如果你听见有人在发言,必须等他讲完再发言。如果碰巧两个或更多的人同时发言,那么都立即停止发言,等听到没有人发言了你再发言。以太网采用的协调方法跟这个很像,使用的协议是CSMA/CD,意思是载波监听多点接入/碰撞检测。
(2)以太网发送的数据都是用曼彻斯特编码的信号。二进制基带数字信号通常就是高、低压交替出现的信号。使用这种信号的最大问题是出现一长串连续的1或0时,接收端无法从收到的比特流中提取同步信号。如下图,曼彻斯特的编码方法是把一个码元再分成两个相等的间隔。码元1是前一个间隔为低电压而后一个间隔为高电压。码元0则相反(也可采用相反的约定)。这就保证了每一个比特的正中间出现一次电压的转换,而接收端就利用这种电压的转换翻遍地把同步信号提取出来。缺点:它所占地频带宽度比原始地基带信号增加了一倍(因为每秒传送的码元数加倍了)。
CSMA/CD协议的要点:
“多点接入”是说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质是“载波监听”和“碰撞检测”。
“载波监听”也就是“边发送边监听”。Carrier的标准译名是“载波”,但对于以太网,总线上没有“载波”,只是习惯了。载波监听就是不管在想要发送数据之前,还是发送数据之中,每个站都必须不停地检测信道。在发送前检测信道,是为了避免冲突。如果检测出已经有其他站在发送,则本站就暂时不要发送数据。在发送中检测信道,是为了及时发现如果有其他站也在发送,就立即中断本站的发送。这就称为碰撞检测。
“碰撞检测”是适配器便发送数据边检测信道上的信号电压的变化情况。当两个或几个站同时在总线上发送数据时,总线上的信号电压变化幅度回增大(互相叠加)。当
3. 使用集线器的星形拓扑
4. 以太网的信道利用率
5. 以太网的MAC层
1. MAC层的硬件地址
在局域网中,硬件地址又称为物理地址或MAC地址(因为这种地址用在MAC帧中)。
在所有计算机系统中,标识系统是一个和核心问题。标识系统中,地址是识别某个系统的重要标识符。讨论地址问题时,常常引用如下定义:“名字指出所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处”。
严格来说,名字应当与系统的所在地无关。为此IEEE802标准为局域网规定了一种48位的全球地址,这就是局域网上每一台计算机固化在适配器的ROM中的地址。注意以下两点:
(1)假定连接在局域网上的一台计算机的适配器坏了,而更换了一个新的适配器,那么这台计算机的局域网的”地址“也变了,计算机的地理位置不变,所接入的局域网没有变化。
(2)假定把位于A地方的计算机,放在B地方,该计算机的局域网”地址“和A地方的一样。
局域网的”地址“和地理位置无关,是每一个站的”名字“或标识符[PERL00]。
注意,如果连接在局域网上的主机或路由器安装有多个适配器,那么这样的主机或路由器就有多个”地址“。实际上,这种48位”地址“应当是某个接口的标识符。
现在的局域网适配器使用的都是6字节(48位)MAC地址。
现在IEEE的注册管理机构RA是局域网全球地址的法定管理机构,负责分配地址字段的6个字节中的前三个字节(即高位24位)。世界上但凡要生产局域网适配器的厂家都必须向IEEE购买这三个字节构成的这个号(地址块),这个号的正式名称是组织唯一标识符OUI,通常也叫做”公司标识符”。但注意,24位的OUI不能够单独用来标志一个公司,因为一个公司可能购买了多个OUI,也可能几个小公司一起购买了一个OUI。例如,华为购买了多个OUI,其中一个是A8-E5-44,地址字段后三个字段(24位,低位)由厂家自行指派,称为扩展标识符。购买了一个OUI,就可以生成6字节(48位)MAC地址,这种地址又称为EUI-48,EUI标识扩展的唯一标识符。EUI-48的适用范围并不局限于局域网的硬件地址,可用于软件接口。在生产适配器时,这种6字节的MAC地址已被固化在适配器的ROM中。因此,MAC地址也叫作硬件地址或物理地址。“MAC地址”实际上就是适配器地址或适配器标识符EUI-48。
IEEE规定地址字段的第一个字节的最低有效位为I/G位。I/G表示Individual/Group。当I/G位为0时,地址字段表示一个单个站地址。当I/G位为1时表示组地址,用来进行多播。地址记法有两种标准,第一种是,把每一字节的最低位写在最左边,IEEE802.3标准就是这种记法。例如,十进制数11的二进制是1011,最高位写在最左边。但若使用IEEE802.3标准,应当记为1101,把最低位写在最左边。第二种记法,是把每一字节的最高位写在最左边。发送数据时,两种记法都按照字节顺序发出,但每一个字节先发送哪一位则不同:第一种记法先发送最低位,第二种记法先发送最高位。
IEEE还考虑可能有人不愿意向IEEE的RA购买OUI。因此,IEEE把地址字段第一字节的最低第二位规定为G/L位,表示Glboal/Local。当G/L位为0时是全球管理,厂商向IEEE购买的OUI都是全球管理。当字段地址的G/L位为1时是本地管理,这时用户可任意分配网络上的地址。采用2字节地址字段时都是本地管理。但是,以太网不理会这个G/L位。
适配器有过滤功能。当适配器从网络上每收到一个MAC帧就先用硬件检查MAC帧中的目的地址。如果发往本站的帧则手下,然后再进行其他处理。否则将此帧丢弃,不进行其他处理。这里“发往本站的帧”包括以下三种帧:
(1)单播帧(一对一),收到的帧的MAC地址与本站的MAC地址相同。
(2)广播帧(一对全体),发送给本局域网上所有站点的帧(全1地址)。
(3)多播帧(一对多),即发送给本局域网上一部分站点的帧。
所有适配器都至少能识别前两种帧,有的适配器通过编程方法能识别多播帧。操作系统启动时,把适配器初始化,是适配器能识别某些多播帧。显然,只有目的地址才能使用广播地址和多播地址。
以太网适配器还可设置一种特殊工作方式,即混杂方式。工作在混杂方式的适配器只要“听到”有帧在以太网上传输就悄悄地接受下来,不管这些帧发往哪个站。这样做实际上是“窃听”其他站点的通信而不中断其他站点的通信。黑客常利用这种方法非法获取网上用户的口令。因此,以太网用户不太愿意网络上有工作在混杂方式的适配器。
但混杂方式有时很有用。例如,网络维护和管理人员需要用这种方式监视和分析以太网上的流量,找出提高网络性能的措施。有一种网络工具叫做嗅探器就用了设置为混杂方式的网络适配器。且可以帮助学习网络协议的工作原理。
2. MAC帧的格式
常用的以太网MAC帧格式有两种标准,一种是DIX EthernetV2标准(以太网V2标准),另一种是IEEE的802.3标准。这里只介绍用的多的以太网V2的MAC帧格式,如下图。图种假定网络层使用的是IP协议。实际上使用其他的协议也可以。
以太网V2的MAC帧较为简单,有五个字段组成。
前两个字段分别为6字节长的目的地址和源地址字段。
第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。例如,当类型字段的值是0x0800时,表示上层使用的是IP数据报。
第四个字段是数据字段,其长度在46到1500字节之间(46字节是这样得出的:最小长度64字节减去18字节的首部和尾部就得出数据字段的最小长度)。
最后一个字段是4字节的帧检验序列FCS(使用CRC检验)。FCS检验的范围就是整个的MAC帧,从目的地址开始到FCS为止的这五个字段,但不包括物理层插入的8字节的前同步码和帧开始定界符。
四、扩展的以太网
1. 在物理层扩展以太网
2. 在数据链路层扩展以太网
3. 虚拟局域网