计算机网络 第三章 数据链路层
同栏目的其他内容:
数据链路层使用的信道主要有点对点信道、广播信道。本章节主要的内容是两种信道的特点与协议、数据链路层的帧、透明传输、差错检测、MAC、适配器、转发器、集线器、网桥、以太网交换机等。
3.1. 数据链路层的几个共同问题
3.1.1. 数据链路和帧
数据链路不是所谓的链路,不仅仅指从一个节点到相邻节点的物理路线,还必须有一些必要的通信协议来控制这些数据的传输。早期的数据通信协议被叫做通信规程,所以规程和协议是一个东西。
- 帧:数据链路层把网络层交下来的数据构成帧,发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。帧是点对点信道的数据链路层的协议数据单元。
点对点信道的数据链路层在进行通信时的主要步骤有:
- 节点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。
- 节点A把封装好的帧发送给节点B的数据链路层。
- 若节点B的数据链路层收到的帧无差错,则从收到的帧中取出IP数据报交给上面的网络层,否则丢弃这个帧。
3.1.2. 三个基本问题
数据链路层三个基本问题就是:封装成帧、透明传输和差错检测。
- 封装成帧:封装成帧就是在一段数据的前后分别添加首部SOH和尾部EOT,这样就跟构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
- 一个帧的帧长等于帧的数据部分加上帧的首部和尾部的长度。
- 首部和尾部的一个重要作用就是帧定界(即确定帧的界限)。
- 每一种数据链路层协议对帧的首部和尾部的格式有明确的规定。
- 每一种数据链路层协议都规定了所能传送的帧的数据部分长度上限,即最大传送单元MTU。
- 帧定界符大多使用ASCII中不可打印的控制字符。
- 透明传输:由于帧的开始和结束有专门的控制字符,所以在传输的数据部分中不允许出现和用作帧定界的控制字符。
- 当传输的帧的内容是从键盘直接输入的(可打印字符),显然不会出现像SOH和EOT的字符。所以不管任何字符都可以在这样的帧中传输过,这样的传输叫做透明传输。
- 当数据部分是非ASCII文件时(计算机程序或图像),数据链路层可能会错误地找到帧的边界,这样会把剩余部分给丢弃掉。
- 为了解决这一问题就必须使数据中可能出现的控制字符SOH和EOT在接收端不被解释为控制字符。就必须在数据中出现的SOH和EOT前面插入一个转义字符ESC。而在接收端的数据链路层将数据发送到网络层之前会删除这个转义字符。这种方法叫做字符填充。如果转义字符也在数据中,那么也仍是插入一个转义字符。
- 差错检测:传输错误的比特所占传输比特总数的比率称为误码率BER。数据链路层广泛采用循环冗余检验CRC的检错技术。数据链路层还可以选用确定和重传机制。
差错检测原理:
- 在发送端,先把数据划分为组,每个组有k个比特,在比特后面添加冗余码
- 先假定要传送的数据M=101001(k=6)。
- CRC运算就是在数据M后面添加差错检测的n位冗余码。
- n位冗余码得出方法,在M后面添加n个零,得到k+n个数除以是先商定好的n+1位除数P,得出商是Q,余数是R
- 除数是P=1101,经过模2除法(不从高位取数)运算得出余数为001,这个余数就是冗余码。
- 冗余码也称为帧检测序列FCS
- 发送的帧就是M加上后面的0,算术加上冗余码。得到101001001
- 如果传输过程中没有差错,那么经过检测之后得到的余数肯定是0
3.2. 点对点协议PPP
互联网用户通常都需要连接某个ISP才能接入互联网,PPP协议就是用户计算机和ISP通信所使用的数据链路层协议。
3.2.1. PPP协议的特点
- 简单:不需要纠错、不需要序号、不需要流量控制。
- 封装成帧:PPP协议规定了特殊的字符作为帧定界符。
- 透明性:数据中如果碰巧有帧定界符一样的组合时,有措施来解决这个问题。
- 多层网络协议:PPP协议必须在同一条物理链路上同时支持多种网络层协议
- 多种类型链路:PPP还能够在多种类型的链路上运行。
- 差错检测、检测连接状态、最大传送单元(指的是数据部分)、网络层地址协商、数据压缩协商。
3.2.2. PPP协议的帧格式
首部字段分为四个部分:
- 标志字段F:用来表示一个帧的开始和结束。为0x7E
- 地址字段A:规定为0xFF
- 控制字段C:规定为0x03
- 协议字段:0x0021是IP数据报;0xC021为PPP链路控制协议LCP的数据;0x8021是网络层的控制数据。
尾部字段分为两个部分:
- 第一个字段是使用CRC的帧检测序列FCS(冗余码)
- 最后的是标志字段F
字节填充:当信息字段中出现与标志字段一样的比特时,当使用异步传输时会添加转义字符,如果数据内容中出现了原文的转移字符,那么会在加一个转义字符。当使用同步传输时,会使用零比特填充,在发送端只要发现数据部分出现5个连续的1,则立即填入一个0。
3.2.3. PPP协议的工作状态
当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接,这时个人电脑向ISP发送一系列的链路控制协议LCP分组,以便建立LCP连接。接着还要进行网络层的配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址。当用户通信完毕之后,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接,最后释放的是物理层的连接。
LCP协商的配置选项,即发送LCP的配置请求帧,这是一个PPP帧:
- 配置确认帧:所有选项都接收。
- 配置否认帧:所有选项都理解但不能接收。
- 配置拒绝帧:选项有的无法识别或不能接收,需要协商。
3.3. 使用广播信道的数据链路层
广播信道可以进行一对多的通信。
3.3.1. 局域网的数据链路层
局域网的特点:网络为一个单位所拥有,且地理范围和站点数目有限。
局域网的优点:具有广播功能;便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变;提高了系统的可靠性、可用性、生存性。
局域网可以按照网络拓扑进行分类:
共享信道要考虑的就是如何合理共享通信媒体资源
- 静态划分信道:频分复用、时分复用、统计时分复用、码分复用等。
- 动态媒体接入控制,特点是并非在用户通信时固定分配给用户。
- 随机接入:随机接入地特点是用户可随机发送消息,这会产生碰撞,所以要有解决碰撞地网络协议。
- 受控接入:用户不能随机地发送消息而必须服从一定地控制。
3.3.2. CSMA/CD协议
采用较为灵活的无连接工作方式,即不必先建立连接就可以发送数据。适配器对发送的数据不进行编号,也不要求对方发回请求。当目的站收到有差错帧时就把帧丢弃,是否需要重新传由高层决定。
解决同一时间只能允许一台计算机发送数据可以采用CSMA/CD、曼彻斯特编码。
CSMA/CD协议的要点:
- 多点接入:说明这是总线型网络,许多计算机;以多点接入的方式连接在一根总线上。
- 载波监听:不管在想要发送数据之前还是在发送数据之后,每个站都必须不停的检测信道。在发送前就是为了避免碰撞;在发送中就是在碰撞检测。
- 碰撞检测:当两个及以上的站同时发送数据时,总线上的信号电压变化幅度会增大,站根据这个原理进行碰撞检测。
电磁波在1km电缆的传输时延约为5μs,所以会存在碰撞的可能性。在局域网的分析中,常把总线上的单程端到端传播时延记为τ ,那么最迟要经过多长时间才能知道自己发送的数据与其他站发送的数据有碰撞?
因此以太网端到端往返时间2τ 为争用期,又称为碰撞窗口,只有经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
以太网采用截断二进制指数退避算法来确定碰撞后重传的时机,这个退避算法有如下规定:
- 基本的退避时间为争用期2τ ,具体的争用期时间是51.2μs
- 从整数集合[0,1,…,(2^k-1)]中随机取出一个数,记为r,重传所需的时延=r×基本退避时间。
- k=Min[重传次数,10]
- 当重传次数达到16次仍不成功则丢弃帧,并向高层汇报。
对于10Mbit/s的以太网,在争用期内可发送512bit,即64字节,这意味着以太网在发送数据时,若前64字节没有发生冲突,则后后续的数据就不会发生冲突。以太网的最大端到端的时延必须小于争用期的一半,所以最大端到端的长度约为5km。
强化碰撞:当发送数据的站一旦知道了发生碰撞之后,除了立即停止发送数据之外,还会继续发送32比特或48比特的认为干扰信号,以便让所有用户都知道已经发生了碰撞。
归纳:
3.3.3. 使用集线器的星形拓扑
- 采用双绞线的以太网采用星形拓扑结构。
- 在星型的中心添加了集线器,使用的是CSMA/CD协议,工作在物理层,每个端口仅仅转发比特,不进行碰撞检测。
3.3.4. 以太网的信道利用率
要提高以太网信道利用率,就必须减少τ和To的比,在以太网中定义了参数a,表示以太网单程端到端时延τ与帧的发送时间之比:a=τ/To,所以a的值要小一些,即分子小些,分母大些。同时以太网的帧长不能太小。
假设以太网各站发送数据不会碰撞,并且非常好地利用网络资源,这样计算出极限信道利用率为,
只有当参数a远小于1才能得到尽可能高的极限信道利用率
3.3.5. 以太网地MAC层
在局域网中,硬件地址又称为物理地址或MAC地址(因为这种地址用在MAC帧中)
在48位的MAC地址中,IEEE机构负责前3个字节,厂商负责后三个字节。
IEEE规定字段的第一字节的最低位为I/G位
- 单站地址:I/G位=0
- 组地址:I/G位=1。组地址用来进行多播
- 广播地址:所有48位都为1,只能作为目的地址使用。
IEEE规定把地址地段第一字节的最低第二位规定为G/L
适配器具有过滤功能:每收到一个 MAC ,先用硬件检查中的 MAC 地址如果是发往本站的帧则收下,然后再进行其他的处理否则就将此帧丢弃,不再进行其他的处理。
MAC帧的格式:
数据字段的长度与长度字段的值不一致;
帧的长度不是整数个字节;
用收到的帧检验序列FCS查出有差错;
数据字段的长度不在46 ~ 1500字节之间。
有效的MAC帧长度为*64 ~ 1518字节之间。
3.4. 扩展的以太网
3.4.1. 在物理层扩展以太网
- 优点:使原来属于不同碰撞域(冲突域)的计算机能够跨碰撞域通信;扩大了以太网覆盖的地理范围。
- 缺点:碰撞域增大了,总的吞吐量未提高;如果使用的不同的以太网技术(数据率不同)那么就不可以这样做。
3.4.2. 在数据链路层扩展以太网
以太网交换机的特点:
- 实质就是一个多端口的网桥,采用的是全双工方式,具有并行性。相互通信的主机都独占传输媒体,无碰撞的传输数据,具有N个端口个以太网交换机具有N个碰撞域。
- 工作在数据链路层
- 以太网交换机具有存储器,能在输出端口繁忙时把到来的帧存起来。
- 内部具有交换表(地址表),通过自学方法建立起来的。
- 每个端口都独享带宽,增加了总容量。
在两个交换机连接在一起的情况下,为了避免回路,定义了生成树协议STP,使得从一台主机到所有其他的主机的路径是五环路的树状结构。
3.4.3. 虚拟局域网
以太网交换机的缺点:在一个主机数量很大的以太网上传播广播帧,必然会消耗很多资源;如果网络配置错误,就会形成广播风暴,使整个网络瘫痪。不安全等问题。
使用虚拟局域网VLAN技术可以把一个较大的局域网分割成为较小的局域网。
虚拟局域网是一种服务,并不是一种新的局域网。
3.5. 总结
- 链路是从一个节点到相邻节点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)。
- 数据链路层使用的信道主要有点对点信道和广播信道两种。
- 数据链路层传送的协议数据单元是帧。数据链路层的三个基本问题是:封装成帧、透明传输和差错检测。
- 循环冗余检验 CRC是一种检错方法,而帧检验序列FCS 是添加在数据后面的冗余码。
- 点对点协议 PPP 是数据链路层使用最多的一种协议,它的特点是:简单:只检测差错,而不是纠正差错:不使用序号,也不进行流量控制;可同时支持多种网络层协议。
- PPPOE 是为宽带上网的主机使用的链路层协议。
- 局域网的优点是:具有广播功能,从一个站点可很方便地访问全网;便于系统的扩展和逐渐演变:提高了系统的可靠性、可用性和生存性。
- 共享通信媒体资源的方法有二:一是静态划分信道(各种复用技术),二是动态媒体接入控制,又称为多点接入(随机接入或受控接入)。
- 计算机与外界局域网的通信要通过网络适配器,它又称为网络接口卡或网卡。计算机的硬件地址就在适配器的 ROM 中。
- 以太网采用无连接的工作方式,对发送的数据帧不进行编号,也不要求对方发回确认。目的站收到有差错帧就把它丢弃,其他什么也不做。
- 以太网采用的协议是具有冲突检测的载波监听多点接入 CSMA/CD。协议的要点是发送前先监听,边发送边监听,一旦发现总线上出现了碰撞,就立即停止发送。然后按照退避算法等待一段随机时间后再次发送。因此,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。以太网上各站点都平等地争用以太网信道。
- 传统的总线以太网基本上都是使用集线器的双绞线以太网。这种以太网在物理上是星形网,但在逻辑上则是总线网。集线器工作在物理层,它的每个端口仅仅简单地转发比特,不进行碰撞检测。
- 以太网的硬件地址,即 MAC 地址实际上就是适配器地址或适配器标识符,与主机所在的地点无关。源地址和目的地址都是 48 位长。
- 以太网的适配器有过滤功能,它只接收单播帧、广播帧或多播帧。
- 使用集线器可以在物理层扩展以太网(扩展后的以太网仍然是一个网络)。
- 交换式集线器常称为以太网交换机或第二层交换机,工作在数据链路层,他就是一个多端口的网桥,而每个端口都直接与某台单主机或另一个集线器相连,且工作采用全双工方式,以太网交换机使得每一台相互通信的主句都独占通信资源,无碰撞的传输数据。