1.数据链路层概述
链路:就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
数据链路以帧为单位传输和处理数据。
2.封装成帧
封装成帧:是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成帧。
帧头和帧尾中包含有重要的控制信息。
帧头和帧尾的作用之一就是帧定界。
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
面向比特的物理链路使用比特填充的方法实现透明传输。(像零比特填充法)
为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。
考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU。
3.差错检测
实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这称为比特差错。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER。
使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。
奇偶校验
在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加到校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)。
如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;
如果有偶数个位发生无码,则奇偶性不发生变化,不能检查出误码(漏检)。
循环冗余校验CRC
收发双方约定好一个生成多项式G(x);
发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
接收方通过生成多项式来计算收到的数据是否产生了误码。
4.可靠传输
基本概念
数据链路层向上层提供的服务类型:
不可靠传输服务:仅仅丢弃有误码的帧,其他什么都不做;
可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。
一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上层提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上提供可靠传输服务。
比特差错只是传输差错中的一种。
从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复。
分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。
可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。
可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。
实现机制
停止-等待协议SW
接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。
为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1。
为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于”从发送方到接收方的平均往返时间“
在数据链路层点对点的往返时间是比较确定的,重传时间比较好设定。
然而在运输层,由于端到端往返时间非常不稳定,设置合适的重传时间有时并不容易。
当往返时延RTT远大于数据帧发送时延Td时(例如使用卫星链路),信道利用率非常低。
若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。
为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即后退N帧协议GBN和选择重传协议SR。
回退N帧协议GBN
回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议。
在协议的工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又称为滑动窗口协议。
由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比停止-等待协议高。
选择重传协议SR
5.点对点协议PPP
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
对各种协议数据报的封装方法(封装成帧)
链路控制协议LCP 用于建立、配置以及测试数据链路的连接
一套网络控制协议NCPs 其中的每一个协议支持不同的网络层协议
PPP帧的透明传输
面向字节的异步链路使用字节填充法(插入转义字符)
面向比特的同步链路使用比特填充法(零比特填充)
6.媒体接入控制
基本概念
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)
随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
媒体接入控制——静态划分信道
码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA。CDM的每一个用户可以在同样的时间使用同样的频带进行通信。由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
复用与多址的概念可简单理解如下:
复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)。
随机接入——CSMA/CD协议
CSMA/CD协议的工作原理:
多点接入MA:多个主机连接在一条总线上,竞争使用总线。
载波监听CS:发送帧前先检测总线,若总线空闲96比特时间,则立即发送;若总线忙,则持续检测总线直到总线空闲96比特时间后再重新发送;
碰撞检测CD:边发送边检测碰撞,若检测到碰撞,则立即停止发送,退避一段随机时间后再重新发送。
上述过程可比喻为:先听后说,边听边说;一旦冲突,立即停说;等待时机,重新再说。
随机接入——CSMA/CA协议
802.11无线局域网在MAC层使用CSMA/CA协议,以尽量减小碰撞发送的概率。不能使用CSMA/CD协议的原因是在无线局域网中无法实现碰撞检测。在使用CSMA/CA协议的同时,还使用停止-等待协议来实现可靠传输。
为了尽可能地避免各种可能的碰撞,CSMA/CA协议采用了一种不同于CSMA/CD协议的退避算法。当要发送帧的站点检测到信道从忙态转为空闲时,都要执行退避算法。
802.11标准规定,所有的站在完成发送后,必须再等待一段帧间间隔时间才能发送下一帧。帧间间隔的长短取决于该站要发送的帧的优先级。
在802.11无线局域网的MAC帧首部中有一个持续期字段,用来填入在本帧结束后还要占用信道多久时间,其他站点通过该字段可实现虚拟载波监听。
802.11标准允许要发送数据的站点对信道进行预约,即在发送数据帧之前先发送请求发送RTS帧。在收到响应允许发送CTS帧后,就可发送数据帧。
7.MAC地址、IP地址以及ARP协议
MAC地址
当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一 的标识,即一个数据链路层地址;
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址;
MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
MAC地址有时也被称为物理地址。请注意:这并不意味着MAC地址属于网络体系结构中的物理层!
一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
IP地址
IP地址是因特网 (Internet) 上的主机和路由器所使用的地址,用于标识两部分信息:
网络编号:标识因特网上数以百万计的网络
主机编号:标识同一网络上不同主机(或路由器)
很显然,之前介绍的MAC地址不具备区分不同网络的功能。
如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式) 。
如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。
数据包转发过程中IP地址与MAC地址的变化情况:
源IP地址和目的IP地址保持不变;
源MAC地址和目的MAC地址逐个链路(或逐个网络)改变。
ARP协议
源主机在自己的ARP高速缓存表中查找目的主机的IP地址所对应的MAC地址,若找到了,则可以封装MAC帧进行发送;若找不到,则发送ARP请求(封装在广播MAC帧中) ;
目的主机收到ARP请求后, 将源主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后给源主机发送ARP响应(封装在单播MAC帧中),ARP响应中包含有目的主机的IP地址和MAC地址;
源主机收到ARP响应后, 将目的主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后就可以封装之前想发送的MAC帧并发送给目的主机;
ARP的作用范围:逐段链路或逐个网络使用;
除ARP请求和响应外,ARP还有其他类型的报文(例如用于检查IP地址冲突的“无故ARP、免费ARP(Gratuitous ARP)" ) ;
ARP没有安全验证机制, 存在ARP欺骗(攻击)问题。
8.集线器与交换机的区别
集线器HUB
早期以太网的互连设备
工作在OSI体系结构的物理层
对接收到的信号进行放大、转发
使用集线器作为互连设备的以太网仍然属于共享总线式以太网。集线器互连起来的所有主机共享总线带宽,属于同一个碰撞域和广播域。
交换机SWITCH
目前以太网中使用最广泛的互连设备
工作在OSI体系结构的数据链路层(也包括物理层)
根据MAC地址对帧进行转发
使用交换机作为互连设备的以太网,称为交换式以太网。交换机可以根据MAC地址过滤帧,即隔离碰撞域。
交换机的每个接口是一个独立的碰撞域
交换机隔离碰撞域但不隔离广播域(VLAN除外)
9.以太网交换机自学习和转发帧的流程
以太网交换机工作在数据链路层(也包括物理层)
以太网交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表。
以太网交换机自学习和转发帧的流程:
收到帧后进行登记。 登记的内容为帧的源MAC地址及进入交换机的接口号;
根据帧的目的MAC地址和交换机的帧交换表对帧进行转发,有以下三种情况:
明确转发:交换机知道应当从哪个(或哪些)接口转发该帧(单播,多播,广播)
盲目转发:交换机不知道应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发(也称为泛洪)。
明确丢弃:交换机知道不应该转发该帧,将其丢弃。
帧交换表中的每条记录都有自己的有效时间,到期删除。原因如下:
交换机的接口改接了另一台主机;
主机更换了网卡。
10.以太网交换机生成树协议STP
网络环路会带来以下问题:
广播风暴:
大量消耗网络资源,使得网络无法正常转发其他数据帧
主机收到重复的广播帧:
大量消耗主机资源
交换机的帧交换表震荡(漂移)
以太网交换机使用生成树协议STP(Spanning Tree Protocol),可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题:
不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路) ;
最终生成的树型逻辑拓扑要确保连通整个网络;
当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树的重新计算。
11.虚拟局域网VLAN
概述
以太网交换机工作在数据链路层(也包括物理层)
使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域。
随着交换式以太网规模的扩大,广播域相应扩大。
巨大的广播域会带来很多弊端:广播风暴 难以管理和维护潜在的安全问题
网络中会频繁出现广播信息(TCP/IP协议栈中很多协议都会使用广播,例如ARP、RIP、 DHCP等)
分割广播域的方法:使用路由器可以隔离广播域,但路由器成本较高,虚拟局域网VLAN技术应运而生。
虚拟局域网VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。