数据链路层使用的信道主要有以下两种类型
- 点对点信道
这种信道使用一对一的点对点通信方式 - 广播信道
这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送
数据链路层的简单模型->从层次上看数据的流动
数据链路层的简单模型->从层次上看数据的流动.png
数据链路层的简单模型->仅从数据链路层观察帧的流动
数据链路层的简单模型->仅从数据链路层观察帧的流动.png
实用点对点信道的数据链路层
数据链路和帧
-
链路(link)是一条无源的物理线路段,中间没有其他的交换结点。
- 一条链路只是一条通路的一个组成部分
-
数据链路(data link)除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路
- 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件
- 一般的适配器都包括了数据链路层和物理层这两层的功能
数据链路层传送的是帧
模型.png图a为三层模型的简化模型, b为只考虑数据链路层
三个基本问题
数据链路层协议有许多中,但有三个基本问题是共同的,分别问封装成帧、透明传输、差错检验
- 封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限,首部和尾部的一个重要作用就是进行帧定界
封装成帧.png
每一种链路层协议都规定了所能传送的帧的数据部分长度上限-最大传送单元MTU(Maximum Transfer Unit)
帧.png- SOH (start of header)
- EOT(end of transmission)
当数据在传输中出现差错时,帧定界符的作用更加明显,假定发送端尚未发送完一个帧时突然出现了故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,在接收端就知道前面收到的数据是个不完整的帧(只有首部没有尾部),必须丢弃。而后面收到的数据有明确的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下
- 透明传输(在数据部分出现了首部和尾部的字符)
透明传输.png
解决透明传输问题
透明是一个很重要的术语,他表示:某一个实际存在的事物看起来却是好像不存在一样,在数据链路层透明传输数据表示无论什么样的比特组合的数据都能够通过这个数据链路层,因此对所传送的数据来说,这些数据就“看不见”数据链路层有什么妨碍数据传输的东西。或者说,数据链路层对这些数据来说是透明的。
为了解决透明传输,就必须设法使数据中可能出现的控制字符SOH,EOT在接收端不被解释为控制字符- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1b)
- 字节填充(byte stuffing)或字符填充(character stuffing) -- 接收端的数据链路层在将数据送往网络层之间删除插入的转义字符。
-
如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符,就删除前面的一个。
字节填充.png
- 差错检测
在传输过程中可能会产生比特差错:1可能会变成0而0也可能变成1,在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate),误码率与信噪比有很大的关系,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。在数据链路层传送的帧中,广泛使用了循环冗余检验CRC(Cyclic Redundancy Check)的检错技术- 在发送端,先把数据划分为组。假定每组k个比特
- 假设待传送的一组数据M = 101001(现在k = 6)。我们在M的后面再添加供差错检测用的n位冗余码一起发送。
冗余码的计算 - 用二进制的模2运算进行2^n * M运算,这相当于在M后面添加n个0
- 得到的(k+n)位的数除以事先选定好的长度为(n+1)位的除数P,得出商是Q而余数是R,余数R比除数P少1位,而R是n位。
冗余码计算举例 - 假设k = 6,M = 101001
- 假定除数P = 1101(即n=3)
- 被除数是2^n * M = 101001000(M后面添加n个0)
- 模2运算的结果是商Q = 110101 余数R = 001(即检验序列FCS Frame Check Sequence)
- 把余数作为冗余码添加在数据M的后面发送出去,即101001001
原理说明.png
注意p71的生成多项式
顺便说下,循环冗余检验CRC和帧检验序列FCS并不是同一个概念。CRC是一种检错方法,而FCS是添加在数据后面的冗余码,在检错方法上可以选用CRC,但是也可以不选用CRC。
接收端把接收到的数据以帧为单位进行CRC检验:把收到的每一帧都除以同样的除数P(模2运算),然后检查得到的余数R 若R = 0,则判定这个帧没有差错,就接受,若R ≠ 0,则判定这个帧有差错,就丢弃,这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错,只要经过严格挑选,并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小
应当注意 - 仅用循环冗余检验CRC差错检验技术只能做到无差错接受
- 无差错接受是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”
- 也就是说“凡是接收数据链路层接受的帧都没有传输差错(有差错的帧就丢弃而不接受)”
- 要做到“可靠传输(即发送什么就收到什么)”就必须加上确认和重传机制
点对点协议PPP
PPP协议的特点
现在全世界使用得最多的数据链路层协议是点对点协议PPP(Point-to-Point Protocol),用户使用电话线接入因特网时,一般都是使用PPP协议。
用户到ISP的链路使用PPP协议
用户到ISP的链路使用PPP协议.pngPPP协议应满足的需求
- 简单
IEFT在设计因特网体系结构时,把最复杂的部分放在TCP协议中,而网际协议IP则相对比较简单,它提供的是不可靠的数据报服务,在这种情况下,数据链路层没有必要提供比IP协议更多的功能。因此对数据链路层的帧,不需要纠错,不需要流量控制,把简单作为首要的需求
简单的设计可以使协议在实现时不容易出错,从而使不同厂商在协议的不同实现上其互操作性提高了,我们知道,协议标准化的一个主要目的就是提高协议的互操作性。
总之,这种数据链路层的协议非常简单:接收方每收到一个帧,就进行CRC检验,正确就收下这个帧;反之就丢弃这个帧,其他什么也不做。 - 封装成帧
- 透明性
- 多种网络层协议
PPP协议必须能够在同一条物理链路上同时支持多种网络协议(如ip和ipx)的运行。当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。 - 多种类型链路
除了要支持多种网络层的协议外,PPP还必须能够在多种类型的链路上运行。例如,串行的(一次只发送一个比特)或并行的(一次并行的发送多个比特),同步的或异步的,低速的或高速的,电的或光的,交换的(动态的)或非交换的(静态的)点对点链路。 - 差错检验
- 检测连接状态
- 最大传输单元
PPP必须对每一种类型的点对点链路设置最大传输单元MTU的标准默认值,这样是为了促进各种实现之间的互操作性。如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。需要强调的是,MTU是数据链路层的帧可以载荷的数据部分,而不是帧的总长度 - 网络层地址协商
- 数据压缩协商
PPP协议的组成
1992年制定了PPP协议,经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准
PPP协议有三个组成部分
- 一个将ip数据报封装到串行链路的方法
- 链路控制协议LCP(Link Control Protocol)
- 网络控制协议NCP(Network Control Protocol)
PPP协议的帧格式
- 标志字段F = 0x7E(符号“0x”表示后面的字符是用十六进制表示)
- 地址字段A只置位0xFF,地址字段实际上并不其作用。
- 控制字段C通常置位0x03
- PPP是面向字节的,所有的PPP帧的长度都是整数字节
透明传输问题
- 当PPP用在同步传输链路时,协议规定采用硬件来完成比特填充(和HDLC的做法一样)
- 当PPP用在异步传输时,就使用一种特殊的字符填充法
字节填充
- 将信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)
- 若信息字段中出现一个0x7D的字节,则将其转变成为2字节序列(0x7D,0x5D)
- 若信息字段中出现ASC||码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变
零比特填充
- PPP协议用SONET/SDH链路时,是使用同步传输(一连串的比特连续传送)。这时PPP协议采用零比特填充方法来实现透明传输。
- 在发送端,只要发现有5个连续1,则立即填入一个0。接收端对帧中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除。
不提供使用序号和确认的可靠传输
PPP协议之所以不使用序号和确认机制是出于以下的考虑
- 在数据链路层出现差错的概率不大时,使用比较简单的PPP协议较为合理
- 在因特网环境下,PPP的信息字段放入的数据报是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
- 帧检验序列FCS字段可保证无差错接受
PPP协议的工作状态
当用户拨号接入ISP时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。PC机向路由器发送一系列的LCP分组(封装成多个PPP帧)。这些分组及其响应选择一些PPP参数,和进行网络层配置,NCP给新接入的PC机分配一个临时的IP地址,使PC机称为因特网上的一个主机。通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接。
PPP协议的工作状态.png使用广播信道的数据链路层
局域网的数据链路层
局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。
局域网具有如下的一些主要优点:
- 具有广播功能,从一个站点可很方便地访问全网,局域网上的主机可共享连接局域网上的各种硬件和软件资源
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和生存性。
局域网的拓扑
局域网的拓扑.png媒体共享技术
静态划分信道
- 频分复用
- 时分复用
- 波分复用
- 码分复用
静态划分信道的方法代价比较高,不适合于局域网使用
动态媒体接入控制(多点接入)
- 随机接入
随机接入的特点是所有的用户可以随机的发送信息,但如果恰巧有两个或者更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞(即发生了冲突),使得这些用户的发送都失败。因此,必须有解决碰撞的网络协议。 - 受控接入
特点是用户不能随机地发送信息而必须服从一定的控制。这类的典型代表有分散控制的令牌换局域网和集中控制的多点线路探寻(polling),或称为轮询。
属于随机接入的以太网将被重点讨论,以太网已经在局域网市场中占据了绝对优势,现在以太网几乎成为了局域网的同义词
以太网的两个标准
- DIX Ethernet V2是世界上第一个局域网产品(以太网)的规约。
- IEEE的802.3标准
- DIX Ethernet V2标准与IEEE的802.3标准只有很小的差别,因此可以将802.3局域网简称为“以太网”。
- 严格说来,“以太网”应当是符合DIX Ethernet V2标准的局域网。
数据链路层的两个子层
为了使数据链路层能更好地适应多种局域网标准,802委员会就将局域网的数据链路层拆成两个子层:
- 逻辑链路控制LLC(Logical Link Control) 子层
- 媒体接入控制MAC(Medium Access Control )子层
与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种协议的局域网对LLC子层来说都是透明的。
局域网对LLC子层是透明的.png以后一般不考虑LLC子层
- 由于TCP/IP体系经常使用的局域网是DIX Ethernet V2而不是802.3标准中的几种局域网,因此现在802委员会制定的逻辑链路子层LLC(即802.2标准)的作用已经不大了
- 很多厂商生产的适配器上就仅装有MAC协议而没有LLC协议
适配器的作用
计算机与外界的局域网连接是通过通信适配器(adapter),适配器本来是在主机箱内插入的一块网络接口板,这种接口板又称网络接口卡NIC(NetWork Interface Card)或简称网卡,适配器也是一个小型计算机,有ROM和RAM
作用
- 进行串行/并行转换
适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的,因此适配器要进行数据串行和并行的转换 - 对数据进行缓存
网络上的数据率与计算机总线上的数据率不同,所有要缓存 - 在计算机的操作系统安装设备驱动程序
在主板上插入适配器时,要把驱动装入操作系统 - 实现以太网协议
适配器所实现的功能包含了数据链路层和物理层这两层次的功能
计算机通过适配器和局域网进行通信.pngCSMA/CD协议
最初的以太网是将许多计算机都连接到一根总线上,当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件(那个时代认为有源器件不可靠(内部有电源的))
总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据,这就是广播通信方式。但我们并不总是要在局域网上进行一对多的广播通信,为了在总线上实现一对一的通信,可以使每一台计算机的适配器拥有一个与其他适配器都不同的地址,在发送数据帧时,在帧首部写明接收站的地址,仅当数据帧中的目的地址与适配器ROM中的存放的硬件地址一致时,该适配器才能接收这个帧,对于不是发送给自己的就丢弃,就实现了一对一通信
人们也常把局域网上的计算机称为“主机”,“工作站”,“站点”或“站”。
为了通信的简便,以太网采取了两种重要的措施
采用较为灵活的无连接的工作方式,即不必建立连接就可以直接发送数据,适配器对发送的数据帧不进行编号,也不要求对方发回确认,这样做可以使以太网工作起来非常简单,而局域网信道的质量很好,因通信质量不好产生差错的概率是很小的。因此,以太网提供的服务是尽最大努力的交付,即不可靠的交付,当目的站收到有差错的帧(CRC查出差错),就把帧抛弃,其他什么也不做。对有差错的帧是否需要重传则由高层决定。例如,如果高层使用TCP协议,那么TCP就会发现丢失了一些数据。于是经过一定时间后,TCP就把这些数据重新给以太网进行重传。但以太网并不知道这是帧重传,而是当做新的数据帧来发送的
总线上只要有一台计算机在发送数据,总线的传输资源就被占用。因此,在同一时间只能允许一台计算机发送数据。
以太网采用最简单随机接入,但也有很好的协议来减少冲突的发生的概率,这就是载波监听多点接入/碰撞检测(CSMA/CD)
- 多点接入表示许多计算机以多点接入的方式连接在一条总线上。
- 载波监听是指每一个站在发送数据前要先检测一下总线上是否有其他计算机在发送数据,以免发生碰撞。总线上并没有什么“载波”,因此“载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
- 碰撞检测,计算机边发送数据边检测信道上的信号电压大小,当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加),当一个站检测到的信号电压摆动值超过一定门限时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,所谓碰撞就是发生了冲突。因此碰撞检测也称为冲突检测,在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来;每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
以太网发送的数据都使用曼彻斯特(Manchester)编码的信号,我们知道,二进制基带数字信号通常就是高低电压交替出现的信号,使用这种信号的最大问题就是当出现一长串的连1或者连0时,接收端就无法从收到的比特流中提取比特同步信号,而曼彻斯特编码方法就是把每一个码元再分成两个相等的间隔。码元1是在前一个间隔为低电压而后一个为高电压,码元0正相反(也可采用相反的约定),但是曼彻斯特编码也有缺点,就是所占的频带宽度比原始的基带信号增加了一倍(每秒传送的码元数加倍了)
曼彻斯特(Manchester)编码.png电磁波在总线上的有限传输速率的影响
既然每一个站在发送数据之前已经监听到信道为空闲,那么为什么还会出现数据在总线上的碰撞呢?这是因为电磁波在总线上总是以有限的速率传播的。**这和我们开会时类似,一听见会场安静,我们就都立即发言,但偶尔也会发生几个人同时抢着发言而产生冲突的情况。
传播时延对载波监听的影响
电磁波在1km电缆的传播时延约为5μs,
//这里还有很多, 先跳过
使用广播信道的以太网
使用集线器的星形拓扑
传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。这种以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备(使用了大规模集成电路芯片所以可靠),叫做集线器(hub),双绞线以太网总是和集线器配合使用的。每个站需要用两对无屏蔽双绞线(放在一根电缆内),分别用于发送和接收
使用集线器的双绞线以太网.png集线器的一些特点
- 集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍像一根传统的以太网那样运行。
- 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是CSMA/CD协议,并共享逻辑上的总线。
- 集线器很像一个多接口的转发器,工作在物理层。
以太网的信道利用率
// 这里还没看 p77
以太网的MAC层
在局域网中,硬件地址又称物理地址,或MAC地址。802标准所说的地址严格地讲应当是每一个站的名字或标识符,但鉴于大家早已习惯了将这种48位的名字称为地址,所以本书也采用这种习惯用法,尽管这种说法并不太严格。
48位的MAC地址
IEEE的注册管理机构RA负责向厂家分配地址字段的前三个字节(即高位24位),地址字段中的后三个字节(地位24位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址。一个地址块可以生成2^24个不同的地址。这种48位地址称为MAC-48,它的通用名称是EUI-48。MAC地址实际上就是适配器地址或适配器标识符EUI-48。
适配器检查MAC地址
适配器从网络上每收到一个MAC帧就首先用硬件检测MAC帧中的MAC地址
- 如果是发往本站的帧则收下,然后再进行其他的处理
- 否则就将此帧丢弃,不再进行其他处理
发往本站的帧包括三种
- 单播(unicast)帧 一对一
- 广播(broadcast)帧 一对全体
- 多播(multicast)帧 一对多
MAC帧的格式
常用的以太网MAC帧格式有两种标准:
- DIX Ethernet V2 (即以太网V2标准)标准
- IEEE的802.3 标准
最常用的MAC帧是以太网V2的格式,如图,假设网络层使用IP协议
MAC帧格式.png类型字段用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。FCS是帧检验序列。
在这里要指出,在帧首部并没有一个帧长度,那么MAC子层又怎样知道从接收到的以太网帧中取出多少字节的数据交付上一层协议呢?曼彻斯特编码的一个重要特点就是:在曼彻斯特编码的每一个码元(不管码元是0还是1)的正中间一定有一次电压的转换,当发送方把一个以太网帧发送完毕后,就不再发送其他码元了。因此,发送方网络适配器的接口上的电压也就不再变化了,这样接收方就可以很容易地找到以太网帧的结束位置,在这个位置往前数4字节(FCS),就能确定数据字段的结束位置。
当数据字段的长度小于46字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的MAC帧长度不少于64字节,我们应当注意到,MAC帧的首部并没有指出数据字段的长度是多少。在有填充字段的情况下,接收端的MAC子层在剥去首部和尾部后就把数据字段和填充字段一起交给上层协议。现在的问题是上层协议如何知道填充字段的长度呢?(IP协议应当丢弃没有用处的填充字段)。可见,上层协议必须具有识别有效的数据长度的功能。我们知道,上层使用IP协议时,其首部有一个总长度字段,因此总长度加上填充字段的长度,应当等于MAC数据帧数据字段的长度。例如,当IP数据报的总长度为42字节时,填充字段共有4字节。当MAC帧把46字节的数据上交给IP层后,IP层就把其中最后4字节的填充字段丢弃。
从上面的MAC帧图片看出,在传输媒体上实际传输的要比MAC帧还多8个字节。这是因为当一个站在刚开始接收MAC帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC帧最前面的若干位就无法接收,结果使整个MAC帧变成无用的帧。为了接收端迅速实现位同步,由MAC子层向下传到物理层时还要在帧的前面插入8字节(由硬件生成),它由两个字段构成。第一个字段是7个字节的前同步码,用来迅速实现MAC帧的比特同步,第二个字段是帧开始定界符,表示后面的信息就是MAC帧
MAC帧的FCS字段的检验范围不包括前同步码和帧开始界定符,顺便指出,在使用SONET/SDH(同步光纤网)进行同步传输时,则不需要前同步码,因为在同步传输时收发双方的位同步总是一直保持着的。
还需注意,在以太网上传送数据时是以帧为单位传输,以太网在传输帧时,各帧之间还必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个MAC帧。可见以太网不需要使用帧结束定界符,也不需要使用字节插入来保证透明传输。
IEEE规定凡是出现下列情况之一的即为无效的MAC帧
- 帧的长度不是整数个字节
- 用收到的帧检验序列FCS查出有差错
- 数据字段的长度不在46 - 1500字节之间(有效的MAC帧长度为64 - 1518字节之间)
对于检查出的无效MAC帧就简单地丢弃,以太网不负责重传丢弃的帧。
帧间最小间隔
- 帧间最小间隔为9.6μs,相当于96bit的发送时间
- 一个站在检测到总线开始空闲后还要等待9.6μs才能再次发送数据
- 这样是为了使刚刚收到数据帧的站的接受缓存来得及清理,做好接受下一帧的准备
扩展的以太网
(PS 以太网已经是局域网的代名词,在这里讨论以太网)
在很多情况下,我们希望把以太网的覆盖范围扩展,本节先讨论在物理层把以太网扩展,这种扩展的以太网在网络层看来仍然是一个网络
在物理层扩展以太网
过去采用转发器来扩展以太网的地理覆盖范围,现在随着双绞线以太网称为以太网的主流类型,扩展以太网的覆盖范围已经很少使用转发器了。
现在,扩展主机和集线器之间的距离的一种简单方法就是使用光纤和一对光纤调制解调器(进行光信号和电信号的转换),由于光纤带来的时延很小,而且带宽很高,因此使用这种方法可以很容易地使主机和几公里以外的集线器相连接。
光纤/光纤调制解调器.png如果使用多个集线器,就可以连接成覆盖范围更大的多级星型结构的以太网
例如,某大学有三个系,各自有一个局域网,可以通过一个主干集线器把各系的以太网连接起来,成为一个更大的以太网
用集线器扩展局域网
优点
- 使原来不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信
- 扩大的局域网覆盖的地理范围
缺点
- 碰撞域增大了,但总的吞吐量并未提高
- 如果不同的碰撞域使用不同的数据率,那么就不用集线器将它们互联起来
在数据链路层扩展以太网
- 在数据链路层扩展局域网是使用网桥
- 网桥工作时在数据链路层,它根据MAC帧的目地址对收到的帧进行转发
- 网桥具有过滤帧的功能,当网桥收到一个帧时,并不是向所有接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口
网桥的内部结构
网桥的内部结构.png
最简单的网桥有两个接口,复杂些的网桥可以有更多的接口,两个以太网通过网桥连接起来后,就成为一个覆盖范围更大的以太网,而原来的每个以太网就可以称为一个网段。
网桥依靠转发表来转发帧,转发表也叫作转发数据库或路由目录。一个转发的例子在课本P95
使用网桥带来的好处
-
过滤通信量,增大吞吐量
过滤通信量在书中的含义:可以使以太网各网段成为隔开的碰撞区(个人理解)
假如A与C进行通信,这时这两个网段上就不能再有其他站点进行通信(但是EF还可以通信)(要是采用集线器或者转发器,那么整个网络还是一个碰撞区),假设三个网段的数据率都是10mb/s,那么合起来的最大吞吐量就变成30mb/s但是集线器或者转发器还是10mb/s。
三个网段.png - 扩大了物理范围
- 提高了可靠性
网络出现故障时,一般只影响个别网段 - 可互连不同的物理层、不同MAC子层和不同速率的局域网
使用网桥带来的缺点
- 存储转发增加了时延(查表)
- 在MAC子层并没有流量控制功能
当网络上负荷很重时,网桥中的缓存的存储空间可能不够而发生溢出,以致产生帧丢失的现象 - 具有不同MAC子层的网段桥接在一起时时延更大
- 网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。
有时在两个网桥之间,还可以使用一段点到点链路
网桥使用一段点到点链路.png网桥在转发帧时不改变帧的源地址
网桥和集线器(转发器)的不同
- 集线器在转发帧时,不对媒体进行检测
- 网桥在转发帧之前必须执行CSMA/CD算法,在发送过程中出现碰撞,就必须停止发送和进行退避。
透明网桥
目前使用得最多的网桥是透明网桥,透明指得是局域网上的站点并不知道所发送的帧将经过哪几个网桥,因为网桥对各站来说是看不见的。透明网桥是一种即插即用设备,其标准是IEEE 802.1D。
当网桥刚刚连接到以太网时,其转发表是空的,所以网桥按照自学习算法处理收到的帧和建立转发表。
这种自学习算法的原理:
- 若从A发出的帧从接口x进入了某网桥,那么从这个接口出发沿相反方向一定可把一个帧传送到A
- 网桥每收到一个帧,就记下其源地址和进入网桥的接口,作为转发表中的一个项目
- 在建立转发表时是把帧首部中的源地址写在地址这一栏的下面
- 在转发帧时,则是根据收到的帧首部中的目的地址来转发的。这时就把地址栏下面已经记下的源地址当作目的地址,而把记下的进入接口当作转发接口
转发表中的地址在自学习和转发的时候扮演的角色不同
转发表的建立过程举例.png网桥在转发表中登记以下三个信息
在网桥的转发表中写入的信息除了地址和接口外,还有帧进入该网桥的时间。这是因为以太网的拓扑可能会发生变化,站点也可能会更换适配器(这样就改变了站点的地址)。另外,以太网上的工作站并非总是接通电源的,把每个帧到达网桥的时间登记下来,就可以在转发表中国只保留网络拓扑的最新状态信息。这样就使得网桥中的转发表能反映当前网络的最新拓扑状态。
网桥自学习和转发帧的步骤归纳
网桥收到一帧后先进行自学习。查找转发表中与收到帧的源地址有无匹配的项目。如没有,就在转发表中增加一个项目(源地址,接入的接口和时间)。如有,则把原有的项目进行更新。
转发帧,查找转发表中与收到帧的目的地址有无匹配的项目。
- 如没有,则通过所有其他接口(但进入网桥的接口除外)按进行转发
- 如有,则按转发表中给出的接口进行转发
- 若转发表中给出的接口就是该帧进入网桥的接口,则应丢弃这个帧(因为此时不需要经过网桥进行转发)
透明网桥使用了生成树算法
为了避免产生转发的帧在网络中不断地兜圈子
兜圈子的情况.png生成树的得出
- 互连在一起的网桥在彼此通信后,就能找出原来的网络拓扑的一个子集。在这个子集里,整个联通的网络中不存在回路,即在任何两个站之间只有一条路径
- 为了避免产生转发的帧在网络中不断地兜圈子
- 为了得出能够反映网络拓扑发生变化时的生成树,在生成树上的根网桥每隔一段时间还要对生成树的拓扑进行更新
源路由网桥
透明网桥容易安装,但网络资源的利用不充分。 p100
源路由(source route)网桥发送帧时将详细的路由信息放在帧的首部中,源站以广播方式向欲通信的目的站发送一个发现帧(作为探测使用),每个发现帧都记录所经过的路由。
发现帧到达目的站时就沿各自的路由返回源站,源站在得知这些路由后,从所有可能的路由中选择一个最佳路由。凡从该源站向目的站发送的帧的首部,都必须携带源站所确定的这一路由信息。
多接口网桥 - 以太网交换机
- 1990年问世的交换式集线器(switching hub),可明显地提高局域网的性能。
- 交换式集线器称为以太网交换机或第二层交换机(表明此交换机工作在数据链路层)
- 以太网交换机通常都有十几个接口。因此,以太网交换机实质上就是一个多接口的网桥,可见交换机工作在数据链路层。
以太网交换机的特点
- 以太网交换机的每个接口都直接与主机相连,并且一般都工作在全双工方式
- 交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,进行无碰撞地传输数据
- 以太网交换机由于使用了专用的交换结构芯片,其交换速率就较高
许多以太网交换机对收到的帧采用存储转发方式进行转发,但是也有一部分采用直通的交换方式。直通交换不必把整个数据帧先缓存后再进行处理,而是在接收数据帧的同时按数据帧的目的MAC地址觉得该帧的转发接口,因而提高了帧的转发速度。如果在这种交换机的内部采用基于硬件的交叉矩阵交换时延就非常小。直通交换机一个缺点就是它不检查差错就直接将帧转发出去,因此有可能也将一些无效帧转发给其他的站。在某些情况下,仍需要采用基于软件的存储转发方式进行交换,例如,当需要进行线路速率匹配、协议转换或差错检测时。现在有的厂商已经生产出能支持两种交换方式的交换机。
独占传输媒体的带宽
- 对于普通10Mb/s的共享式以太网,若有N个用户,则每个用户的平均带宽只有10Mb/s的N分之一。
- 使用以太网交换机时,虽然在每个接口到主机的带宽还是10Mb/s,但由于一个用户在通信时是独占而不是和其他用户共享传输媒体的带宽,因此对于拥有N对接口的交换机的总容量为N*10Mb/s。这正是交换机的最大优点。
以太网交换机一般都具有多种速率的接口,大大方便了各种不同情况的用户。
以太网交换机实现虚拟局域网
- 虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组。
- 这些网段具有某些共同的需求。
- 每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN。
- 虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。
使用以太网交换机很方便的将这10个工作站划分为三个虚拟局域网
当 B1 向 VLAN2 工作组内成员发送数据时,工作站 B2 和 B3 将会收到广播的信息。
B1 发送数据时,工作站 A1, A2 和 C1都不会收到 B1 发出的广播信息。
虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息(即“广播风暴”)而引起性能恶化。
虚拟局域网使用以太网帧格式
虚拟局域网协议允许在以太网的帧格式中插入一个 4 字节的标识符,称为 VLAN 标记(tag),用来指明发送该帧的工作站属于哪一个虚拟局域网。
虚拟局域网使用以太网帧格式.png高速以太网
//这部分不打算看
网友评论