【计算机网络】数据链路层
本章要点
- 数据链路层通信方式的特点。
- 三个基本问题:封装成帧、透明传输、差错检测。
- 以太网 MAC 层的硬件地址。
- 数据链路层的常用设备。
摘要
- 路由器在转发分组时使用的协议栈只有下面的三层。
- 计算机的硬件地址——MAC 地址存储在适配器(网卡)的 ROM 中,计算机的软件地址——IP 地址存储在计算机的存储器中。
- MAC 地址实际上就是适配器地址。
数据链路层的工作步骤
- 发送端的数据链路层接收到网络层下发的数据时添加首部和尾部组成帧
- 把帧发送到链路上
- 接收端的数据链路层判断若收到的帧无差错则从收到的帧中提取出 IP 数据报上交给网络层,否则丢弃这个帧。
数据链路层的通信方式
点对点信道
帧
点对点信道的协议数据单元——数据链路层使用的协议——PPP
点对点协议(PPP,Point to Point Protocol)为在点对点连接上传输多协议数据包提供了一个标准。它规定了处理数据链路层的基本问题及其他问题的标准。
PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。
广播信道
广播信道可以进行一对多的通信。
局域网就是使用广播信道的网络。以太网现在在局域网市场占据绝对优势,现在以太网几乎成为了局域网的同义词。
数据链路层需要解决的三个基本问题
封装成帧
数据链路层在收到数据后在数据首部和尾部各加入特定的控制字符组成帧。
接收端数据链路层收到帧后根据控制字符来提取数据和判断帧是否完整。
首部控制字符:SOH(十六进制编码为 01) 尾部部控制字符:EOT(十六进制编码为 04)
透明传输
透明传输指的是传递双方不用关心数据链路层的内部实现,发送端发出的数据能完整的被接收端接收。
为了避免数据中出现控制字符而导致数据链路层不能正常提取数据,在封装帧时会在数据中出现的控制字符前加入转义字符,数据中出现的转义字符之前也会加入转义字符。
差错检测
物理传输过程中不可避免的会出现数据传输错误的情况,主要有以下几种:
- 比特差错:比特在传输的过程中产生差错
- 传输差错:帧丢失、帧重复、帧失序
检测比特差错的常用方式是循环冗余检测。具体做法是通过算法在数据后面加上冗余码,接收方收到帧后通过一定的算法判断数据是否有差错。
对于传输差错的处理通常分两种:对于通信质量不好的传输链路,数据链路层协议使用确认和重传机制,要求数据链路层向上提供可靠的传输服务;对于通信质量良好的传输链路,则不要求数据链路层提供可靠的传输服务,对数据的差错检测任务交给上层协议来完成。
以太网
以太网就是指符合以太网协议的网络(多指局域网)或者说是帧结构采用以太网帧结构的网络。
以太网提供的服务是尽最大努力的交付,即不可靠的交付。对有差错帧是否需要重传则需要高层决定。
适配器(网卡)
计算机与外界局域网通信需要使用适配器,这是一种被称为网络接口卡(NIC,Network Interface Card,简称网卡)的接口板,现在计算机主板通常都嵌入了网卡。
网卡上装有处理器和存储器(包括 RAM 和 ROM)。
适配器和局域网之间的通信时通过电缆或双绞线以串行方式进行的。适配器和计算机之间的通信是通过计算机主板上的 I/O 总线以并行方式进行的。适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。
主机的硬件地址(MAC 地址)存储在网卡的 ROM 中,它标识了该主机在当前局域网中的地址。在发送的数据帧头部加入指定 MAC 地址信息就能实现一对一通信。
集线器
集线器工作在物理层,它的每个接口只简单的转发比特,不进行碰撞检测。
从表面上看,使用集线器的局域网是一个星型网,但从逻辑上讲它仍然是一个总线网,各站共享逻辑上的总线,使用的还是 CSMA/CD 协议,并且同一时刻只允许一个主机发送数据。
网桥
网桥工作在数据链路层,和路由器的功能类似:网桥对收到的帧根据 MAC 帧的目的地址进行转发和过滤,当网桥收到一个帧时,并不是向所有接口都转发这个帧,而是根据此帧的 MAC 地址查找网桥中的地址表,然后确定将该帧转发到哪个接口或是应该丢弃。
交换机
即交换式集线器,也被称为第二层交换机,强调这种交换机工作在数据链路层。
交换机实质上就是一个多接口的网桥。
交换机的每一个接口都直接与一个主机或另一个交换机相连,并且一般都工作在全双工方式。
交换机内部的地址表是通过自学习算法逐渐建立起来的,不必手动配置地址表。
IEEE 的 802.1D 标准制定了一个生成树协议 STP,通过逻辑上切断某些链路使得从一个主机到所有其他主机的路径都是无环路的树状结构。
虚拟局域网(VLAN)
虚拟局域网是通过将同一局域网中的主机进行分组,在逻辑上形成多个网络,传输数据时在以太网帧中加入 VLAN 的标记标识这个帧要发送到哪个虚拟局域网,由交换机判断转发到哪个 VLAN。
名词释义
数据链路
当需要再一条线路上传送数据时,除了必须要有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。
把实现这些协议的硬件和软件加到链路上,就构成了数据链路。