链路层总览
基本概念及基本问题
数据链路层的功能
数据链路层使用物理层提供的服务在通信信道上发送和接收比特。
功能包括:
(1)向网络层提供一个定义良好的接口
(2)处理传输错误
(3)调节数据流,确保慢速的接收方不会被快速的发送方淹没
提供的服务:
(1)无确认的无连接服务 (局域网)
(2)有确认的无连接服务 (无线通信)
(3)有确认的有连接服务 (电话)
基本概念
数据链路层的简单模型
数据链路层的信道类型
数据链路层使用的信道主要有以下两种类型:
1、点对点信道:这种信道使用一对一的点对点通信方式
2、广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
链路与数据链路
1、链路是一条点到点的物理线路段,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分。
2、数据链路除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现今最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。
帧
说明:网络层中传递过来的数据报加上帧头和帧尾以及校验之后就变为数据帧了。数据链路层就像一个数字管道,所以常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位就是帧。
三个基本问题
封装成帧
将网络层交付下来的ip数据报的前后添加首部和尾部,封装成帧。首部和尾部的重要作用是进行帧定界。为了提高传输效率,需要尽量增大数据部分的长度,但是每个链路层协议都规定了帧数据部分的长度上限,最大传输单元MTU(Maximum Transfer Unit)。当数据是可打印的ASCII码,帧定界可以用特殊的帧定界符SOH(Start of Header)(00000001)和EOT(End of Transmission)(00000100)
1、封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
2、首部和尾部的一个重要作用就是进行帧定界。
透明传输
传输的数据中任何8比特的组合不允许和帧定界的控制字符比特一样,否则会出现帧定界错误。文本文件不会产生这样的问题,可以实现透明传输。但是如果是二进制文件,可能会找到错误的帧边界。
字节填充法
在SOH和EOT的前面加上转义字符ESC(1B),如果数据中存在转义字符,就在转义字符前插入个转义字符。零比特填充法
比特填充法是采用一特定的比特组合01111110来标志帧的边界,也就是一个标志字节。这种方法既允许数据帧包含任意长度的字符,也允许每个字符有任意长度的位。为了避免在传送的数据信息中心出现相同比特组合被误认为是帧的首、尾标志,必须对其进行比特填充(bit stuffing),即使用“零比特插入、删除”技术
零比特填充法的具体做法是:在发送端,当一串比特流尚未加上标志字段时,先用硬件扫描整个帧。只要发现5个连续1,则立即填入一个0。因此经过这种零比特填充后的数据,就可以保证不会出现6个连续1。在接收一个帧时,先找到F字段以确定帧的边界。接着再用硬件对其中的比特流进行扫描。每当发现5个连续1时,就将这5个连续1后的一个0删除,以还原成原来的比特流。这样就保证了在所传送的比特流中,不管出现什么样的比特组合,也不至于引起帧边界的判断错误。
流量控制和可靠传输
差错控制
传输过程中可能会产生比特差错:1可能会变成0,而0也可能变成1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。误码率与信噪比有很大关系。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。数据链路层中如果发现数据有误会直接将其扔掉,而是否需要重发是由传输层来决定。
- 奇偶校验法
- CRC循环冗余检测
介质访问控制
传输数据的两种链路
点到点链路
两个相邻节点通过一个链路相连,没有第三者。应用:PPP协议,常用于广域网广播式链路
所有主机共享通信介质。应用:早期的总线以太网、无线局域网,常用于局域网。
广域网使用的链路协议
点对点协议PPP(Point-to-Point Protocol)
PPP协议功能
(1) 简单:在同一条物理链路上进行点对点的数据传输,对数据链路层的帧不进行纠错,不需要序号,不需要流量控制。
(2) 封装成帧:加入帧界定符。
(3) 透明性:字节填充法。
(4) 多种网络层协议:在同一条物理链路上同时支持多种网络层协议(如IP和IPX等)的运行。
(5) 多种链路类型:PPP必须能够在多种类型的链路上运行,例如串行或并行链路。
(6) 差错检测:接收方收到一个帧后进行CRC检验,若正确就收下这个帧,反之则丢弃。
(7) 检测连接状态:自动检测链路是否处于正常工作状态。不具备的功能
(1) 纠错
(2) 流量控制
(3) 序号
(4) 多点线路
(5) 半双工或单工链路PPP协议组成
(1) 提供一个将IP数据报封装到串行链路的方法。IP数据报在PPP帧中就是信息部分,长度受最大传送单元MTU的限制。PPP支持异步链路(无奇偶校验的8比特数据)和面向比特的同步链路。
(2) 链路控制协议LCP(Link Control Protocol)
当线路不再需要时,挑出这些线路,测试它们,商议选择,并仔细地再次释放链路控制协议。
(3) 一套网络控制协议NCP(Network Control Protocol)
其中每一个协议支持不同的网络层协议,如IP、OSI的网络层等。
(4) 认证协议
最常用的包括口令验证协议PAP(Password Authentication Protocol)和挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol)。PPP协议的透明传输(字节填充)
1.字节填充
将信息字段中出现的每个0x7E字节变成2字节序列(0x7D,0x5E)。
若信息字段中出现一个0x7D的字节,则将其转变为2字节序列(0x7D,0x5D)。
若信息字段中出现ASCII码的控制字符(数值小于0x20的字符),则在该字符前加入一个0x7D字节,同时将该字符的编码加以改变。
2.零比特填充PPP帧格式
字段 | 长度 | 说明 |
---|---|---|
F | 1字节 | 标志字段F,固定为0x7E,标志一个帧的开始或结束。连续2个帧之间只需要一个标志字段,如果出现连续两个标志字段,表示这是一个空帧。 |
A | 1字节 | 地址字段A是固定不变的,为0xFF。 |
C | 1字节 | 控制字段C是固定不变的,为 0x03。 |
协议 | 2字节 | 协议字段不同,后面信息部分表示的数据类型不同。 0x0021——信息字段是IP数据报 0xC021——信息字段是链路控制数据LCP 0x8021——信息字段是网络控制数据NCP 0xC023——信息字段是安全性认证PAP 0xC025——信息字段是LQR 0xC223——信息字段是安全性认证CHAP |
链路层设备
- 网卡
网卡又称为网络适配器,涉及帧的发送与接收、帧的封装与拆分、数据的编码与解码等功能。MAC地址是用十六进制表示的,总共48位,前24位用来表示厂商编号,后24位用来表示设备序列号。 - 网桥
网桥(Bridge)是一种存储转发设备,可以隔离冲突域,意思就是当网桥已经学习到目标MAC地址是在某个端口上的,那么它就一定不会转发给另一个端口;只有当网桥不知道目标MAC地址在哪个端口上时才会广播。网桥通常只有两个端口,因此其具有两个冲突域和一个广播域。 - 交换机
交换机(Switch)维护着一张MAC地址表,最初MAC地址表示空的,随着慢慢地学习来丰富自己的MAC地址表。
对于上图Cisco Packet Tracer中交换机的MAC地址表的变化过程是这样的:
交换机工作过程:根据源MAC地址学习,目标MAC地址转发。
具体表现为:- 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器连在哪个端口上的;
- 再去读取包头中的目的MAC地址,并在地址表中查找相应的端口;
- 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;
- 如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。
不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址。
交换机通常具有8、12、16、24个,甚至是48个端口,那么它有几个端口,就有几个冲突域,但是其广播域还是只有一个。
- 网桥和交换机的区别
(1)交换机的端口多于网桥;
(2)交换机的数据传输速率高于网桥;
(3)网桥是使用软件进行转发,而交换机是使用硬件进行转发,所以交换机的造价更低。