第三章 直接连接的网络

3.1 链路层概述

直接连接的网络:用某种传输媒体连接所有主机

  • 涉及数据链路层技术
  • 为大型网络提供某"一跳"的底层通信支撑

主机H1向H2发送数据(它们沿着端到端路径上的各单段链路进行传输)


链路层的任务:将网络层交付的PDU通过单段链路从一个结点传输到相邻结点


  • 要实现通过单段链路,点到点传送上层PDU,必须有链路层协议的控制.
  • 链路层协议定义了:单段链路的两端结点之间交互的帧格式,以及这些结点在发送和接收帧时所采取的操作。

结点间的链路主要有以下两种类型:

  • 点对点链路。是由链路一端的单个发送结点和链路另一端的单个接收结点组成。许多链路层协议是为点到点链路设计的,比如PPP、HDLC协议;
  • 广播链路。能够让多个发送结点和接收结点都连接到单一的、共享的广播信道上。(必须使用专用的共享信道协议来协调这些结点的数据发送。) 以太网和无线局域网都采用了广播链路

直接连接的网络使用点到点通信协议广播多路访问协议

链路层环境的重要特点

  • 一条端到端路径上的不同单段链路可运行不同的链路层协议
  • 每种链路层协议提供的服务可能不同 提供可靠交付/不可靠交付
  • 通信环境较为简单

直接连接的网络中的机制和设备


网络适配器

每个结点通过网络适配器(Network Adapter)与网络相连,又称为通信适配器或网络接口卡NIC(Network Interface Card),或"网卡"。


绝大多数链路层的功能在网络适配器中实现

适配器的作用

  • 进行串行/并行转换
  • 对帧进行缓存
  • 帧的发送与接收
  • 帧的封装与解封
  • 差错检测
  • 实现链路层协议

3.2 成帧

封装成帧


成帧

  • 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。首部和尾部的一个重要作用就是进行帧定界
  • 每种数据链路层协议都要对帧的首部和尾部的格式有明确的规定。
  • 帧的数据部分长度应尽可能地大于首部和尾部的长度,以提高帧的传输效率。
  • 每种数据链路层协议都规定了帧的数据部分的长度上限---最大传送单元MTU(Maximum Transfer Unit)。

成帧举例---点对点链路协议

  • 通信线路差的时代,数据链路层采用可靠协议,能实现可靠传输的高级数据链路控制HDLC(High-level Data Link Control)当时比较流行。
  • 目前使用最广泛的数据链路层协议是点对点协议PPP(Point-to-Point Protocol)。
  • 1992年制订了PPP协议。经过1993年和1994年的修订,现在的PPP协议在1994年已成为因特网的正式标准[RFC 1661]。

成帧举例---PPP协议

  • PPP协议有IETF开发,是为点对点串行线路上传送网络层分组而设计的数据链路层协议。
  • PPP是用户计算机和ISP进行通信时所使用的数据链路层协议。

    PPP的优点是协议简单、具备用户认证能力以及支持动态IP地址分配等,家庭拨号上网就是通过PPP在用户端和运营商的接入服务器之间建立通信链路。

    在宽带接入技术日新月异的今天,PPP也衍生出新的应用。典型的应用是在ADSL(非对称数据用户环线,Asymmetrical Digital Subscriber Loop)接入方式当中,PPP与其他的协议共同派生出了符合宽带接入要求的新的协议,如PPPoE(PPP over Ethernet):利用以太网资源,在以太网上运行PPP来进行用户认证接入的方式称为PPPoE。

成帧举例---PPP协议的帧格式

(1)字段的意义:


标志字段说明:

  • "01111110"表示一个帧的开始与结束,是PPP帧的定界符。
  • 如果出现连续两个标志字段,就表示这是一个空帧,应该丢弃。

地址字段和控制字段说明:

  • 地址字段A只置为0xFF(11111111)。
  • 控制字段C通常置为0x03(00000011)。
  • 最初层考虑以后再对这两个字段的值进行定义,但至今没有给出。

协议字段(2个字节)说明:

  • 当协议字段为0x0021时,PPP帧的数据部分就是IP数据报。
  • 若为0xC021,则数据部分是LCP数据。
  • 若为0x8021,则表示这是NCP数据。

数据部分说明:

  • 长度可变,不超过1500字节。

FCS说明:

  • 用于检测经过传输的可能存在的比特差错。PPP采用CRC冗余检验码。

透明传输


问题:


解决:

  • 发送端的数据链路层在数据中出现控制字符"SOH"或"EOT"的前面插入一个转义字符"ESC"(其十六进制编码是1B)。
  • 字节填充(byte stuffing)或字符填充(character stuffing)---接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
  • 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

透明传输举例---PPP协议

为保证透明传输,不同类型的协议采用不同的方法:

  • 面向字节的协议采用字节填充 例如:IBM的BISYNC协议,以及当PPP用在异步传输时,就使用一种特殊的字节填充法。
  • 面向比特的协议采用零比特填充 例如:OSI的HDLC协议,以及当PPP用在同步传输链路SONET/SDH时,协议规定采用硬件来完成比特填充。

(1)透明传输:PPP的字节填充

  • 将数据部分中出现的每一个标志字段0x7E字节转变成为2字节序列(0x7D,0x5E)。
  • 若数据部分中出现一个转义字符0x7D的字节,则将其转变为2字节序列(0x7D,0x5D)。
  • 若数据部分中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。
  • 接收方收到数据后进行与发送方相反的变换以正确恢复原来的信息。


(2)透明传输:零比特填充

  • PPP协议用在SONET/SDH链路时,是使用同步传输(一连串的比特连续传送)。这时PPP协议采用零比特填充方法来实现透明传输。
  • 在发送端,只要发现有5个连续1,则立即填入一个0.
  • 接收端对帧中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除。

3.3 差错检测和纠正技术

差错检测

  • 在传输过程中可能会产生比特差错:1可能会变成0而0也可能会变成1.
  • 误信率(Bit Error Rate,BER),又称误比特率。误比特率=错误比特数/传输总比特数(对于二进制而言,误比特率等于误码率)。
  • 误码率与信噪比有很大的关系。
  • 检错重传:接收方检测报文受损,就通知发送方重传该报文的副本。
  • 前向纠错(FEC):纠错通过"预先"发送额外的信息进行的,而不是等待发生差错后通过重传来处理。

两种方法的特点:

  • 检测重传:当发生差错时才需要发送较多的比特,适用于链路差错率低的场合。
  • 前向纠错却始终需要发送更多的比特,适合于对时间要求很高的场合(航天、实时控制等)。

任何差错检测方案的基本思想都是在帧中加入冗余信息来确定是否存在差错。

  • 现代计算机网络普遍在数据链路层使用硬件芯片实现了基于循环冗余检验CRC的差错检测技术。
  • 假设发送方待传送的一组数据M=101001(现在长度k=6)。我们在M的后面在添加供差错检测用的n位冗余码一起发送。

CRC循环冗余检验

CRC检验采用多项式编码方法。将要发送的比特序列(长度为n)看作是一个n项的二进制多项式(若设k=n-1,k次幂多项式),每个比特值为多项式中每一项的系数:


如:一个8位二进制数10110101可以表示为:



  • CRC检验可以100%地检测出长度小于等于k(k为G(x)的阶数)的突发错误。
  • 所以CRC的生成多项式的阶数越高,那么误判的概率就越小。

CRC检验码的编码实现

1)设待发送的数据块是n位的二进制多项式M(x),生成多项式为k阶的G(x)(长度为k+1 bit)。在数据块的末尾添加k个0,数据块的长度增加到n+k位,对应的二进制多项式为x^kM(x)

2)用生成多项式G(x)去除x^kM(x),求得余数长度为k,阶数为k-1的二进制多项式R(x)。此二进制多项式R(x)就是M(x)经过生成多项式G(x)编码的CRC校验码

3)用以模2的方式减去R(x),得到二进制多项式,就是包含了冗余码的待发送数据(长度为n+k)。

注意:模2减,与模2加一样,和逻辑异或运算结果一致。

如果用一个校验码生成多项式G(x)去除代码多项式M(x),得到的商假定为Q(x),余式为R(x),则可写成




  • 在数据后面添加上的冗余码称为帧检验序列FCS(Frame Check Sequence)。
  • 循环冗余检验CRC和帧检验序列FCS并不等同。CRC是一种常用的检错方法,而FCS是添加在数据后面的冗余码FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一方法。


  • 仅用循环荣誉检验CRC差错检测技术只能做到无差错接受(accept)。
  • "无差错接受"是指:"凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错"。
  • 也就是说:"凡是接收端数据链路层接受的帧都没有传输差错"(有差错的帧就丢弃而不接收)。

但是,这能实现"可靠传输"吗?

  • 可靠传输:无差错、不丢失、无重复、不失序。
  • 要做到"可靠传输"(即发送什么就收到什么)就必须再加上确认和重传机制)

3.4 可靠数据传输原理

可靠传输

理想的数据传输条件:

假定1:理想的信道传输质量,既不会出差错也不会丢失数据。

假定2:缓冲足够大不管发方以多快的速率发送数据,收放总来得及接受并上交。

    当满足上面两个基本条件时,可以不使用任何控制手段就能够保证可靠数据传输,即不丢失、无差错、不重复、不乱序。

可靠传输指将物理上不可靠的信道变成了逻辑上可靠的信道。有了可靠传输的支持,向上层交付的数据都可以认为是无差错、不丢失、无重复、不失序的。


停止等待(stop-and-wait,SW)协议


问题1:实际环境主机处理速度不匹配将导致缓冲溢出!

解决思路:引入确认采用反馈机制调节发送速度


问题2:实际信道质量不能保证,数据有可能出错


问题3实际信道质量不能保证,数据有可能丢失


修改前面的问题2的解决


总结:

    引入超时重传定时器后,在两种情况下,接收方不会发送任何信息:

(1)分组到达后检测出有比特差错

(2)分组丢失

问题4:"确认"丢失导致分组的重复接收


问题5"确认"迟到导致"确认"的重复接收





  • 这种可靠传输协议常称为自动重传请求(Automatic Repeat reQuest,ARQ)。
  • ARQ表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。

设计可靠数据传输协议机制:

差错检测、接收方确认(肯定/否定)、重传、定时器和序号(数据和确认)

  • 使用上述机制,我们就可以在不可靠的信道或链路上实现可靠的数据通信

停止等待协议信道利用率

停止等待协议的优点是简单,但缺点是信道利用率太低。


  • 一般情况:由于确认数据很短,可以忽略确认的发送时延Ta,则信道利用率为(L/R)/(L/R+RTT)=L/(L+RTT*R)
  • 结论:传播时延大,信道带宽高,数据短时,信道利用率低。

解决方法:

  • 大数据,但由于信道的误码率,不能太大
  • 允许同时传输多个数据

流水线传输

  • 在发送完一个分组后,不是停下来等待确认,而是可以连续再发送多个分组。
  • 如果在发送过程中收到接收方的肯定确认,可以继续发送数据;
  • 由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。
  • 若其中某一个数据的确认超时,则从该数据开始的后续数据全部重发。

应用流水线技术对实现可靠数据传输协议有如下要求:

  • 必须增加序号范围
  • 发送方和/或接收方必须缓存多个分组

1.停等协议处理差错时,需要多种机制。

2.当流水线差错时,对所需序号范围和缓冲的要求取决于数据传输协议处理丢失、损坏及时延过大分组的方式。

3.处理流水线差错的两种基本方法

  • 回退N步(Go-Back-N,GBN)
  • 选择重传(Selective Repeat,SR)

GBN协议

上图中可以看出:

    当出现差错必须重传时,要向回走N个数据,然后在开始重传。GBN协议又称为连续ARQ协议

上图存在的两个问题:

(1)当未被确认的数据的数目太多时,只要有一数据出了差错,就可能有很多的数据需要重发,白白浪费了时间,增大了开销。

    因此,信道误码率大时,这种协议不一定优于停等ARQ

(2)为了对所发送出去的大量数据编号,每个数据的发送序号要占用较多的比特数,又增加不必要的开销。

解决思路:

(1)在GBN协议中,必须对可以连续发出的最多数据个数(已发出但未确认的数据)作限制。

(2)循环重复使用有限的数据序号。

滑动窗口

  • 发送端设定发送窗口
  • 发送窗口的大小Ws代表在还没有收到对方确认信息的情况下发送端最多可以连续发送的数据个数。

  • 接收端设定接收窗口
  • 接收窗口大小WR代表可以连续接收的最多数据个数,窗内是当前欲接收的数据的发送序号。
  • 只有当收到的数据的序号与接收窗口中的序号一致时才能接收该数据。

  • 只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动,即接收窗口驱动发送窗口的滑动;

序号与窗口的关系:

  • 序号需要在分组中传递,因此不允许无限增大
  • 序号位数=k bit时,接收窗口和发送窗口的最大值=?
  1. Ws+Wr=2^k,Ws、Wr>=1;
  2. k=1;序号可用值在[0,1] (停等协议)
  3. k>1;序号可用值在[0,2^k-1] (GBN协议)
  • GBN协议中,Wr=1,Ws的最大值=2^k-1

滑动窗口协议的发送窗口最大值

问题:已知Wr=1,n=3,则Ws=8可以吗?


那么:用3个比特可编出8个不同的序号,当Ws=7可以吗?


GBN协议 小结:

  • GBN协议的接受窗口的长度为1;
  • 接收方根据滑动窗口的序号按序接收分组;
  • 窗口中失序分组及后面将被丢弃;
  • 发送方采用超时机制来重传丢失或差错的分组
  • 接收方采用累积确认的方式,可以不一一确认

选择重传协议

    在GBN协议中,由于Wr=1,造成回退N步的问题:出错分组及其后续的分组都要重传,而不管这些后续分组是否传输正确。

    问题:有没有办法只重传出现问题(差错或丢失)的数据?


解决方法:

  • 接收窗口Wr>1,先收下发送序号不连续但仍处在接收窗口的那些数据。等到所缺失序号的数据收到后再一并送交主机。
  • 选择重传协议可避免重复传送那些本来已经正确到达接收端的数据。
  • 但付出的代价是在接收端要设置具有相当容量的缓存空间。

SR:窗口长度问题

对于选择重传协议,若用k比特进行编号,窗口长度小于等于序号长度的一半:Wr<=2^k/2


3.5 多路访问协议

多路访问技术

多路访问:多个发送/接收结点同时使用广播信道进行通信。局域网环境,密集端系统通常使用多路访问方式

特征:

    结点:N个

    单一信道:为N个结点共用

带来的问题:

    碰撞:如果两个结点同时发送帧,信号会叠加纠缠,无法分清。

什么是多路访问协议?

    决定结点怎样共享信道的分布式算法,如决定何时结点能够传输?出现碰撞时如何解决?

理想的多路访问应该具有两个特性:

速率Rbps的广播信道

(1)当广播信道中只有一个活跃结点时,能够以速率R发送。

(2)当广播信道中有N个活跃结点时,每个能以平均速率R/N发送。

三种类型:信道划分协议、轮流协议、随机接入协议

  • 信道划分协议:频分复用(FDM),时分协议(TDM),波分复用(WDM),码分多址(CDMA)

  • 特点:
  1. 信道在用户通信时固定分配给用户,用户只要得到了信道就不会和别的用户发生碰撞.(静态分配)
  2. 消除了碰撞,非常公平,每个结点得到了R/N的传输速率(无论其他结点是否发送数据)。
  • 适用场合:存在大量需要频繁访问信道的结点,信道划分协议可以公平地为每个结点分配固定的信道资源。
  • 但不适合局域网,因为工作站对带宽的需求是无法预见的
  • 轮流协议:令牌传递协议(token-passing protocol) 轮询协议(polling protocol)

  • 适用场合:希望共享信道,但却无法预测访问结点数量的场景



  • 随机接入协议:ALOHA,时隙ALOHA CSMA,CSMA/CD,CSMA/CA

  • 特点:
  1. 信道资源动态分配给用户
  2. 每个结点总是以信道全部速率R发送帧,随机发送。
  3. 有碰撞(小概率),涉及碰撞的结点将会反复重发它的帧,直到发送成功。
  • 适合场合:大量结点仅以较小概率向共享信道发送帧的场景。
三种类型---小结
  • 信道划分协议:将信道划分为较小的"段"(时隙,频率,编码);为每个结点分配一部分专用;
  • 轮流协议:从中心站点轮询,令牌传递;结点轮流,信息较多的轮流发送的时间较长;
  • 随机接入协议:不划分信道,允许碰撞;设法从"碰撞"恢复

信道划分协议不适合局域网,因为工作站对带宽的需求是无法预见的。而后两种协议可以用于局域网。

流行的局域网技术 20世纪80年代和90年代中期

  • 基于令牌传递协议的令牌环
  • 基于随机接入协议的以太网

3.6 以太网

什么是以太网

    美国施乐(Xerox)公司研究中心以曾将在历史上表示传播电磁波的以太来命名基带总线局域网,以太网Ethernet的译名。


直到20世纪90年代,总线拓扑一直比较流行,后来,星型拓扑流行,可靠性提高。



数据链路层的两个子层

  • 为了使数据链路层能更好的适应多种局域网标准,802委员会就将局域网的数据链路层拆成两个子层:
  1. 逻辑链路控制LLC(Logical Link Control)子层。
  2. 媒体接入控制MAC(Medium Access Control)子层。
  • 与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关。不管采用何种传输媒体和MAC子层的局域网对LLC子层来说都是透明的。

以太网的多路访问协议---CSMA/CD

最初的以太网是将许多计算机都连接到一根总线上。

问题:如何在具有广播特性上实现了一对一的通信?


为了通信的简便,以太网采取了两种重要的措施:

第一个措施

  • 无连接的工作方式,即不必先建立连接就可以直接发送数据。
  • 以太网对发送的数据帧不进行编号,也不要求对方发回确认。
  • 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。
这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。

第二个措施

    以太网发送的数据都使用曼彻斯特(Manchester)编码

载波监听多点接入协议CSMA(Carrier Sense Multiple Access)

  • "多点接入"表示许多计算机以多点接入的方式连接在一根总线上。
  • "载波监听"是指每一个站在发送帧之前先要检测一下总线上是否有其他站点正在发送帧,如果有,则暂时不要发送数据,以免发生碰撞。如果没有,则发送。

CSMA载波监听策略:

  • 非坚持CSMA:一旦监听到信道忙,就不再监听;延迟一个随机时间后再次监听。
  • 坚持CSMA:监听到信道忙时,仍继续监听,直到信道空闲。
  1. 1-坚持CSMA:一听到信道空闲就立即发送数据
  2. P-坚持CSMA:听到信道空闲时,以概率p发送数据(以概率1-P延迟一段时间后再发送)

非坚持CSMA

  • 信道监听
  1. 如果信道忙,等待一个随机时间,然后再次对信道进行监听。
  2. 如果信道空闲,立即发送。

1-坚持CSMA

  • 信道监听:如果信道忙,继续监听信道,一旦发现信道空闲,立即发送。
  • 之所以称为"1-坚持",原因是主机一发现信道空闲,百分之百(即概率为1)肯定发送。

问题:CSMA技术不能解决发送中出现的冲突现象。

  • 待碰撞检测的载波监听多点接入CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 发送前先监听信道是否空闲,若空闲则立即发送数据。在发送时,边发边继续监听。若监听到碰撞,则立即停止发送。等待一段随机时间(称为退避)以后,再重新尝试。

载波监听:目的:降低碰撞次数

冲突检测:目的:降低碰撞的影响,使信道在碰撞发生后可以尽快恢复使用;


CSMA/CD可归结为四句话:

发前先侦听,空闲即发送,

边发边检测,碰撞时退避。

争用期



重要特性

  • 可以看出,最先发送数据的A站,在发送数据帧后,至多经过2T(&->0)就可知道所发送的数据是否遭受了碰撞。因此争用期取值为以太网的端到端往返传播时延2T。
  • 争用期的意义:发送数据帧期间,刚刚开始的一段时间是危险期,即争用期这段时间,如果争用期内没有发现碰撞,可以肯定这次发送能够顺利结束,不会发生碰撞。

争用期之以太网最小帧

  • 根据争用期的含义,可以得到如下结论:发送时延>=争用期
  • 以太网取51.2us为争用期
  • 10Mb/s以太网最小帧长

推出:(正常)帧长>=10Mb/sx51.2us=512bit,即64字节

残帧(<64字节的帧)

  • 如果发生碰撞,就一定是在发送的前64字节之内。
  • 由于一检测到碰撞就立即中止发送,这时已经发送出去的数据一定小于64字节。
  • 以太网规定了最短有效帧长为64字节,凡长度小于64字节的帧都是由于碰撞而异常中止的无效帧。

强化碰撞

    当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送48比特的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生了碰撞。


截断二进制指数退避算法

算法让发生碰撞的站在停止发送数据后,不是等待信道空闲后立即再发送数据,而是要推迟(退避)一个随机的时间。

目的:为了使用重传时再次发生碰撞的概率减小。

具体算法:

  1. 取基本退避时间为争用期2T
  2. 设重传参数n(n<=10),n=Min[重传次数,10]
  3. 从整数集合[0,1,...,(2^n-1)]中随机取一个数,计为k,重传所需时间为kx2T
  4. 当重传达16次仍不能成功时,则丢弃该帧,并向高层报告。

10Mbps以太网访问控制流程


我们假定:

  • 总线上共有N个站,每个站发送帧的概率都是p
  • 争用期长度为2T,即端到端传播时延的两倍。检测到碰撞后不发送干扰信号。
  • 帧长为L(bit),数据发送速率为C(b/s),因而帧的发送时延为T0=L/C(s)。
  • 一个帧从开始发送,经碰撞后再重传数次,到发送成功且信道转为空闲(即再经过时间T使得信道上无信号在传播)时为止,共需平均时间为Tav

从上图中可以看出,要提高以太网效率,就必须减小T与T0之比。在以太网中定义了参数a,它是以太网单程端到端传播时延T与帧的发送时间T0之比:


  • a->0表示一发生碰撞就立即可以检测出来(不考虑传播时延),从而立即停止发送,因而信道利用率很高。
  • a越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。


参数a可以很容易地和时延带宽积联系起来:

  • 考虑到T0是帧长L与数据的发送速率C之比,于是参数a可写为:

  • 上式的分子正是时延带宽积,或以比特为单位的信道长度,而分母是以比特为单位的帧长。


  • 理想化的情况下,以太网上的各站发送数据都不会产生碰撞,即总线一旦空闲就有某一个站立即发送数据。
  • 发送一帧占用线路的时间是T0+T,而帧本身的发送时间是T0。于是我们可计算出理想情况下的极限效率Smax为:

参数a远小于1才能得到尽可能高的效率。

MAC地址

  • IEEE802标准为每个DTE规定了一个48位的全局地址,它是站点的全球唯一的标识符,与其物理位置无关---MAC地址
  • MAC地址为6Byte(48位)。这种48位地址称为MAC-48,它的通用名名称是EUI-48(EUI表示扩展的唯一标识符).
  • 网卡的MAC地址可以认为就是该网卡所在站点的MAC地址。

MAC地址的前3个字节(高24位)由IEEE的注册管理机构RA统一分配给厂商(前三个字节称为组织唯一标识符OUI),低24位由厂商分配给每一块网卡(后三个字节称为扩展标识符)。


  • MAC地址字段可以采用两种形式之一:6B全球范围/2B局部范围
  • 适配器的MAC地址具有扁平(没有层次)结构,不论移动到哪里都保持不变。

  • 地址类型标识:地址字段的第一个字节的最低位I/G(40) (Individual/Group) 0--单个站地址 1--组地址
  • 地址范围标识:地址字段的第一字节的最低第二位G/L(41) (Global/Local) 0--局部管理 1--全局管理
  • 我们知道,常用的以太网MAC帧格式有两种标准:
  1. DIX Ethernet V2标准
  2. IEEE的802.3标准
  • 最常用的MAC帧是以太网V2的格式





帧间最小间隔


  • 帧间最小间隔为9.6us,相当于96bit(12Byte)的发送时间。适配器只要检测出超过12B没有电流,就知道一个帧结束了。
  • 一个站在检测总线开始空闲后,还要等待9.6us才能再次发送数据。
  • 这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

无效的MAC帧

  • 数据字段的长度与长度字段的值不一致;(针对802.3)
  • 帧的长度不是整数个字节。
  • 用收到的帧检验序列FCS查出有差错;
  • 数据字段的长度不再46-1500字节之间;
  • 帧长度不在64-1518字节之间。

对于检查出的无效MAC帧就简单地丢弃。以太网不负责重传丢弃的帧。

以太网标准

最早期的以太网标准:

  • 10BASE-5
  • 10BASE-2
  • 10BASE-T

以上称传统以太网。



后来出现的高速以太网

  • 100兆
  • 1000兆(吉比特)
  • 10吉比特

100BaseT(IEEE802.3u)

    100BaseT又称为快速以太网(Fast Ethernet,FE)是在双绞线上传送100Mb/s基带信号的星型拓扑以太网,仍使用IEEE802.3的CSMA/CD协议。

    IEEE802.3u位包括对同轴电缆的支持,这意味着从细缆以太网升级到快速以太网的用户必须重新布线 。

与传统以太网比较:

  • 拓扑结构和媒体布线方法几乎完全一样;
  • 可在全双工方式下工作而无冲突发生。因此,可不使用CSMA/CD协议。但半双工方式工作时使用802.3CSMA/CD协议。
  • MAC帧格式仍然是802.3标准规定的。
  • 帧间最小间隔改为0.96us,争用期改为5.12us,都是10Mb/s以太网的1/10。

根据信令方式和介质的不同,分为3种不同的物理层标准:



吉比特以太网

即:千兆以太网(Gigabit Etherent,GE)

  • 允许在1Gb/s下全双工和半双工两种方式工作。
  • 使用802.3协议规定的帧格式
  • 在半双工方式下使用CSMA/CD协议(全双工方式不需要使用CSMA/CD协议)。
  • 与10BASE-T和100BASE-T技术向后兼容。
  • 1000BASE-X(IEEE802.3z标准) 基于光纤通道的物理层:
  1. 1000BASE-SX SX表示短波长(使用850nm激光器)
  2. 1000BASE-LX LX表示长波长(使用1300nm激光器)
  3. 1000BASE-CX CX表示铜线(屏蔽双绞线)
  • 1000BASE-T(IEEE 802.3ab标准)
  1. 使用4对5类线UTP

10吉比特以太网

  • 10吉比特以太网与10Mb/s,100Mb/s和1Gb/s以太网的帧格式完全相同。
  • 10吉比特以太网还保留了802.3标准规定的以太网最小和最大帧长,便于升级。
  • 10吉比特以太网不再使用铜线而只使用光纤作为传输媒体。
  • 10吉比特以太网只工作在全双工方式,因此没有争用问题,也不使用CSMA/CD协议。

有许多不同的以太网标准

  • 共同的MAC协议和帧格式
  • 不同的速率:2Mbps,10Mbps,100Mbps,1Gbps,10Gbps
  • 不同的物理层媒体

3.7 链路层交换

在物理层扩展局域网


用多个集线器可连成更大的局域网


采用转发器和集线器

优点:

  • 使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信
  • 扩大了局域网覆盖的地理范围

缺点

  • 碰撞域增大了,但总的吞吐量并未提高。
  • 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。

在数据链路层扩展以太网


网桥使各网段称为隔离开的碰撞域


网桥互连


使用网桥带来的好处:

  • 过滤通信量。
  • 扩大了物理范围
  • 提高了可靠性
  • 可互连不同物理层、不同MAC子层和不同速率(如10Mb/s和100Mb/s以太网)的局域网。

网桥类型

  • 透明网桥(Transparency Bridge) IEEE802.1D
  • 源选径网桥(Source Routing Bridge)

透明网桥

  • 工作原理归纳为:学习源地址,转发异网帧,丢弃本网帧,广播未知帧。
  • 特点:由网桥实现路由选择,网桥和路由对站点透明。隔离了冲突域,但对广播域的大小没有影响。

交换机

  • 交换机实质上是个多端口透明网桥
  • 交换机和网桥一样,他将网络隔离为多个碰撞域。

交换机帧过滤转发算法

交换机收到帧:

1.记录与发送主机关联的链路(逆向自学习)

2.使用MAC目的地址索引交换机转发表

3.if 找到目的地项

      then{

         if 目的地位于帧入口的段(即本网段)

            then 丢弃帧(即过滤帧)

            else 在目的地址的接口转发该帧(即转发异网帧)

       }

       else 洪泛(向所有接口(除了该帧到达的入口)转发该帧)

  • 逆向学习源地址,广播未知帧




消除回路

交换网络设计通常有冗余链路和设备,这样的设计消除了一种可能性:一个点的失败导致整个网络功能丢失。

1.消除广播风暴

广播风暴可以由下面的时间引起的:

  • 当主机X发送一个广播帧时;(或者)
  • 一个数据帧的目的地址不再A和B的MAC地址表中。


2.消除重复非广播帧传输


在一个交换网络中如何发生多传播的情况?

主机X给路由器R发送一个单播帧。交换机A中的MAC地址表中没有路由器Y的地址。交换机B转发了这个帧,路由器收到同一个帧的副本。

3.消除转发表的不稳定

    当一个帧的多个副本到达交换机不同的端口时,导致转发表的不稳定。当帧第一次到达时,交换机B在"主机X的MAC地址与网段1的端口"间建立一个映射。

    一段时间后,该帧的副本通过交换机A传到,交换机B必须移去第一个表项,并且建立"主机X的MAC地址与网段2端口"的一个映射。


4.交换网络中的多回路

拥有多个路由器的大的交换网络会导致回路发生。可能会遇到多回路的情形:


生成树工作原理

  • 生成树协议(Spanning Tree Protocol,STP)是DEC创建的网桥到网桥协议。
  • DEC的生成树算法后由IEEE802委员会修正并以802.1d规范公布。Cisco使用IEEE802.1d的STP。
  • STP的目的是维护一个无回路的网络。当交换机发现一个拓扑回路时,它们会自动在逻辑上阻塞一个或多个冗余端口,从而获得无回路拓扑。

STP持续探测网络,当活动拓扑的一部分发生故障时,STP会重配交换机的端口,从而重新建立一个新的无环路的拓扑。这个过程应尽可能块,以减少中断用户无法访问网络资源的时间。

什么是BPDU?

    STP需要交换机互相交换消息来检测回路,交换机发送的用于构建无环路拓扑的消息称为网桥协议数据单元BPDU;

    运行生成树算法的交换机会定期(默认2秒)用BPDU与其他交换机交换配置信息。

什么是网桥ID?

  • 生成树要求每个网桥有唯一的标识(网桥ID),BPDU中包含网桥ID。
  • 网桥ID是由2字节的优先级加上6字节的MAC地址组成的。默认优先级是中间值32768.

什么是根网桥?

    网桥ID最小的网桥将作为根网桥。图中如果两个交换机都采用默认优先级,则具有较低的MAC地址的网桥作为根网桥。


注意:

    一开始,所有交换机都采用默认优先级,即优先级相同,随后MAC地址成为了确定哪个网桥能成为根网桥的决定因素。这会导致根网桥的选举无法预测。

    如果想要确保某个交换机被选举为跟,可以这样做:

    为该交换机选择较小的优先级,以确保它被选举为根。这样也可确保向网络添加新的交换机时,不会因选举新的根网桥而干扰网络通信。

    最低的网桥优先级意味着最低的网桥ID。

网络收敛时,每个网络都有一个生成树,生成树协议构造生成树要经历以下三个过程:

(1)选举根网桥。

(2)为每个非根网桥选出一个根端口。

(3)为每个网段确定一个指派网桥和指派端口。

(1)选举根网桥

    每个网桥(交换机)广播自己的网桥ID,ID最小的桥成为生成树的根;在给定广播域内只有一个网桥被标明为根网桥(root bridge)。根网桥所有端口都处在转发(一个端口可以发送、接收数据帧。)状态

下图中的交换机A被选为根网桥。


(2)为每个非根网桥选出一个根端口

    选出根网桥后,每个非根网桥都要选出一个根端口,这是通过比较非根网桥的每个端口到根网桥的根路径开销来实现的。具有最小根路径开销的端口被选作根端口;如果两个端口的根路径开销相同,则具有最小端口ID的端口被选作根端口。每一个网桥只能有一个根端口。

    根端口处于转发状态。


(3)为每个网段确定一个指派网桥和指派端口

    对于每一个网段,在所有连接到它的网桥端口中,选择一个到根网桥最近的端口,负责该网段与根网桥间的数据传递,这个端口就称作该网段的指派端口,则其他端口通常为非指派端口,非指派端口都处于阻塞状态(处于阻塞状态的端口,不转发流量)。

    指派端口处于转发状态,负责网段的转发通信量


若端口开销相同,则选择网桥ID小的为指派端口。


端口角色:

非指派端口----阻塞状态

指派端口、根端口----转发状态

  • 重新计算生成树

    当由于网桥或链路故障导致拓扑结构改变时,生成树协议通过将阻塞端口变成转发状态来确保连接。

    如图,如果交换机A(根网桥)故障,相邻交换机在一个时段内没有收到新的BPDU,则会开始一新的生成树计算。


判断以下的正确性(都是正确的):

  • 根端口存在于非根网桥上。
  • 指派端口存在于根网桥和非根网桥上。
  • 每个交换机只能有一个根端口。
  • 一个网段只能有一个指派端口。
  • 生成树状态

生成树通过状态转换来维持一个无回路拓扑。有四种生成树状态:

阻塞、监听、学习、转发


  • 所有端口以阻塞状态启动以防止网桥回路。如果后来生成树确定另一个路径到根网桥开销较小时,这个端口停留在阻塞状态。
  • 在拓扑结构改变期间,端口暂时处于监听、学习状态。
  • 当一个端口处于学习状态时,它能将端口听到的MAC地址加入MAC地址转发表,但不能转发帧。
  • 当一个端口处于转发状态时,便可以转发数据。
  • 收敛后,端口处于转发或阻塞状态
  • 生成树协议中的收敛意味着一个状态,其中所有的交换机端口状态转变为转发或者阻塞。收敛前,交换机的端口不能发送通信量。
  • 快速端口

如果交换机端口仅仅与主机连接,没有与其他交换机连接,则可以在这些端口启用"快速端口(portfast)"特性,当该端口启动的时候,它就自动从阻塞状态进入转发状态

  • 构造生成树总结:

  1. 每个网桥(交换机)广播自己的桥编号,ID最小的桥成为生成树的根;
  2. 每个网桥计算自己到根的最短路径,构造出生成树,使得每个LAN和网桥到根的路径最短;
  3. 生成树构造完后,算法继续执行以便自动发现拓扑结构变化,更新生成树。即当某个LAN或网桥发生故障时,要重新计算生成树;
  • STP解决多个网桥产生回路的问题

交换机的各种转发方式:

1)存储转发方式

  • 转发前必须接收整个帧
  • 执行CRC检验
  • 支持不同速度的输入/输出端口间的交换
  • 通过交换机的延迟随数据帧长度而变换,相对而言延迟大。

2)直通方式

  • 一旦接收到帧头,就开始转发
  • 不提供错误检测能力
  • 不提供速度转换功能
  • 通过交换机的延迟与帧的长度无关,延迟小。

3)无碎片方式(改进的直通方式)

  • 在存储转发前交换机读入开始的64字节,因为通常冲突发生在帧开头地64字节内。滤掉小于64字节的帧,确认是有效帧才转发。
  • 不提供错误检测能力
  • 不提供速度转换功能
  • 通过交换机的延迟与帧的长度无关,延迟较小。

交换式以太网

  • 共享式以太网:
  1. 总线结构的网络,或者以集线器连接的星形结构的以太网。
  2. 特点:网络中站点数的增加将导致LAN的性能降低
  • 交换式以太网:
  1. 以交换机为主干的以太网,拓扑为星形结构。使用专用的交换结构芯片,交换速率较高。
  2. 特点:网络中站点数的增加不会导致LAN的性能降低
  • 为什么会有以上差异?
  1. 总线网络或基于集线器的网络:网络总带宽=10Mb/s,N个站点共享,每站点平均带宽(10/N)Mb/s;
  2. 基于以太网交换机的网络:允许多个信道同时传输信息,不受CSMA/CD的限制,网络总带宽=(N/2x10)Mb/s,每个连接的带宽为10Mb/s;

使用交换机后,可建立多个并发的通信。例如:8个端口最多可建立4个并发通信,总带宽=(8/2)x10Mbps=40Mbps

    在访问服务器的流量非常大的网络中,可在交换机上设置1-2个高速端口(100Mbps/1Gbps),把服务器与该高速端口相连,便可大大提高服务器访问的速度。这种连接服务器的方法又称为Big-Pipe。


虚拟局域网的概念

    由一些局域网网段构成的与物理位置无关的逻辑组。每一个VLAN都包含一组有着相同需求的计算机工作站,与物理上形成的LAN有着相同的属性。


  • VLAN是一个在物理网络上根据用途,工作组、应用等来逻辑划分的局域网络,与用户的物理位置没有关系。
  • VLAN中的成员处在同一个广播域中,在VLAN中的每一个工作站都可以听到同一个VLAN中的其它成员所发出的广播。
  • VLAN中的成员是通过交换机来通信的,一个VLAN中的成员看不到另一个VLAN中的成员

  • 一个VLAN=一个广播域=逻辑网段(子网)
  • 当B1向VLAN2工作组内成员发广播数据时,工作站B2和B3将会收到广播的信息。
  • B1广播数据时,工作站A1,A2和C1都不会收到B1发出的广播信息。
  • 虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息(即"广播风暴")而引起性能恶化。





Access and Trunk Links

  • 访问链路Access links:

    一条访问链路是指连接到交换机上的一条链路,它只属于一个VLAN,这条链路将某个设备与交换机的一个端口连接起来,但该设备完全没有察觉到一个VLAN的存在。

  • 干道链路Trunk link:

    干道链路与访问链路不同的是,干道链路可以支持多个VLAN,但它并不属于一个特定的VLAN。

    干道链路用于交换机与另一个交换机、或路由器、或服务器之间的连接。


  • 干道链路是承载多条逻辑链路的一条物理链路
  • 它是一条支持多个VLAN的点到点链路
  • 干道链路的目的是为了在两台实现VLAN的设备之间创建链路时节省端口


    一个交换机的任何端口都必须属于且只能属于某一个VLAN,但当端口配置成trunk干线后,该端口就失去了它自身的VLAN标识,可以为该交换机内的所有VLAN传输数据。

什么是VLAN帧识别?

在多台交换机构成的VLAN中,数据帧在发送到交换机之间的干道链路之前,帧会发生一些改变,以标记该帧属于那个VLAN。

方法有两种:ISL和802.1Q

1)ISL(Inter Switch Link)封装


  • ISL是Cisco特有的协议,用于多个交换机间交互连接和维护交换机间往来的VLAN信息。
  • ISL协议是通过在原始帧外围增加封装而在干道链路上多路复用VLAN的一种方法。
  • ISL有如用ISL头和新CRC将原数据帧整个包裹起来,因此也被称为"封装型VLAN(Encapsulated VLAN)".
1)ISL(Inter Switch Link)帧标识


DA:目的地址,是一个组播地址,总是相同的40位01000C0000,告诉接收方该帧是ISL格式封装的。

TYPE:指明所封装帧的类型,以太网0000、令牌环网0001、FDDI网0010、ATM 0011.

USER:用户自定义

SA:发送该ISL帧的交换机接口的48位MAC地址

LEN:ISL帧的长度

HSA:等价于SA域的前3个字节,目前必须为0x00000C,这是Cisco制造商ID

VLAN:VLAN的ID号

BPDU:标志位,用于标识被封装的分组是不是STP帧

INDX:发送帧设备的端口索引

RES:全0表示以太网

  • 原以太网帧的最大长度为1518字节,现在变为1548字节。
  • 主机网卡等标准网络设备不明白这个巨大的帧的含义,所以Cisco设备在将这个帧交给主机前会将ISL的封装去掉,即ISL帧不会出现在访问链路Access links上
ISL帧的转发


  1. 交换机Y接收到A的数据帧,识别出它是要到VLAN200的C去的;
  2. 交换机Y用标识着VLAN200的一个ISL头封装该数据帧,并在干道链路上通过中间交换机发送该数据帧。
  3. 交换机Z接收这个数据帧,去掉ISL头,然后将它转发到访问链路上。
2)IEEE802.1Q帧识别(IEEE标准方法)

IEEE802.1Q不是对原以太网帧进行封装,而是支持帧标记,即把VLAN识别信息插入到原以太网帧内。


  • IEEE802.1Q是以标准以太网帧的形式出现。
  • 如果要跨域cisco交换机和其他厂商的交换机来建立多个VLAN,必须使用802.1Q协议。

IEEE802.1Q帧的转发


  1. 交换机Y接收到A的数据帧,识别出它是要到VLAN200的C去;
  2. 交换机Y把标识着VLAN200的字段插入到原以太网帧内,并在干道链路上通过中间交换机发送该数据帧。
  3. 交换机Z接收这个数据帧,根据其中的VLAN ID在相应VLAN的成员端口中找到目标主机,将帧标识删除,然后将它转发到访问链路上。
VLAN的类型

通常设置VLAN的顺序是:

  1. 设置VLAN
  2. 设定访问连接(决定各端口属于哪一个VLAN)
  3. 设定访问链路的方法:
  • 可以是事先固定的,被称为"静态VLAN"
  • 也可以是根据所连的计算机而动态改变设定。被称为"动态VLAN"。
VLAN的类型之静态VLAN

静态VLAN又被称为基于端口的VLAN(Port Based VLAN)。

  • 这种划分VLAN的方法是根据以太网交换机的端口来划分,比如一个交换机的1-4端口为VLAN A,5-17为VLAN B,18-24为VLAN C。
  • 属于同一VLAN的端口可以不连续,如何配置由管理员决定,如果有多个交换机的话,例如可以指定交换机1的1-6端口和交换机2的1-4端口为同一VLAN,即同一VLAN可以跨越数个以太网交换机。

形成静态VLAN的过程就是将端口强制性的分配给VLAN的过程。



  • 每个逻辑的VLAN就像一个独立的物理桥
  • 交换机上的每一个端口都可以分配给不同的VLAN
  • 默认情况下,所有的端口都属于VLAN1(Cisco)

  • 同一个VLAN可以跨越多个交换机

根据端口划分是目前定义VLAN的最常用、简单的方法。

优点:定义VLAN成员时非常简单,只要将所有的端口都指定一下就可以了;

缺点:如果VLAN A的用户离开了原来的端口到了一个新的交换机的某个端口,那么就必须重新定义。

VLAN的类型之动态VLAN

动态VLAN则是根据每个端口所连的计算机随时改变端口所属的VLAN。这就可以避免上述的更改设定之类的操作。

动态VLAN可以大致分为3类:

  1. 基于MAC地址的VLAN(MAC Based VLAN)
  2. 基于子网的VLAN(Subnet Based VLAN)
  3. 基于用户的VLAN(User Based VLAN)

基于MAC地址的VLAN(MAC Based VLAN)

    这种划分VLAN的方法是根据每个主机的MAC地址来划分,即对每个MAC地址的主机都配置它属于哪个组。

优点:当用户物理位置移动时,即从一个交换机到其他的交换机时,VLAN不用重新配置。


缺点:

  • 初始化时所有的用户都必须进行配置;
  • 网卡的更换带来的问题。

总结VLAN的优点:

  • 减少移动和改变的代价
  • 建立的虚拟工作组,是一个动态的组织环境;
  • 限制广播包
  • 安全性


































猜你喜欢

转载自blog.csdn.net/yongchaocsdn/article/details/79896922