(计算机网络)第3章:数据链路层

本篇博客将讲解我在计算机网络课程上学到的相关概念以及总结理解,今天将介绍数据链路层方面的知识,希望能帮助大家理解计算机网络中的一些概念

首先看一下我们第一章讲过的五层协议体系结构,想了解第一章的博客可以戳这里 ,本系列的博客也将按照这五层的顺序进行介绍

1. 数据链路层的基本概念

数据链路层在物理层提供服务的基础上向网络层提供服务 ,其最基本的服务是将源自网络层来的数据可靠地传输到相邻结点的网络层

数据链路层的主要作用:

加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

数据链路

链路 (link) 是一条点到点的物理线路段,中间没有任何其他的交换结点(指网络中的主机、路由器等。)。一条链路只是一条通路的一个组成部分

数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

物理链路就是上面所说的链路,即物理线路段。

逻辑链路就是上面的数据链路,是物理链路加上必要的通信协议

数据链路层的协议数据单元,封装网络层的数据报

数据链路层不必考虑物理层如何实现比特传输的细节。甚至还可以更简单地设想是沿着两个数据链路层之间的水平方向把帧直接发送到对方。

2. 三个基本问题

数据链路层协议有许多种,但有三个基本问题则是共同的

封装成帧

在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。首部和尾部包含了许多的控制信息。

帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。

透明传输

不管所传数据是什么样的比特组合,都能够在链路上传送。因此,链路层应该 "看不见" 有什么妨碍数据传输的东西。

解决方案

字符计数法,在帧首部使用计数字段来表明帧内字符数。但缺点是一错全部都会错

字符填充法:加入转义字符

差错检测

在传输过程中可能会产生差错,传输中的差错都是由于噪声引起的

全局性噪声:由于线路本身的电气特性所产生的随机噪声,是信道固有的,随机存在的。 解决办法:提高信噪比来减少或避免干扰。

局部性噪声:外界特定的短暂原因造成的冲击噪声,是产生差错的主要原因。 解决办法:通常利用编码技术来解决

差错类型包括:

帧错:

  1. 丢失:收到[#1]-[#3]
  2. 重复:收到[#1]-[#2]-[#2]-[#3]
  3. 乱序:收到[#1]-[#3]-[#2]

通过编号可以解决这个问题
位错: 比特位出错

解决方案看下文

奇偶校验

奇偶校验要求传输的数据中包含奇数个1。为了实现奇校验,发射方要确保传输的数据中有奇数个1,而接收方在接收到数据后检查其中的1的个数,如果是偶数个则说明出现了错误。

循环冗余校验

在发送端,先把数据划分为组。在每组后面再添加供差错检测用的 n 位冗余码,然后一起发送出去。

循环冗余码的计算:

要发送的数据是1010 01,采用CRC校验,生成多项式是1101,那么最终发送的数据是?

  • 第一步:加0 假设生成的多项式G(x)的阶为r,则加r个0, 1101表示为多项式为X3+X2+X0,阶为3
  • 第二步:模2除法 发送的数据加0后除以多项式,余数就是冗余码 1010 01 000 / 1101

3. 点对点协议PPP

(不需要的功能、帧格式、建立过程)

协议特点

  • 对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP
  • 协议主要用于广域网(多个城市多个国家的因特网)

需要的功能

封装成帧

透明传输

差错检测

多种网络层协议 ------ 在同一条物理链路上同时支持多种网络层协议,即封装的IP数据报可以采用多种协议(IP、OSI)。

多种类型链路 ------ 能够在多种类型的链路上运行(如串行/并行,同步/异步,电/光)。

检测连接状态 ------ 能够及时自动检测出链路是否处于正常工作状态。

组成

  • 一个将 IP 数据报封装到串行链路的方法。
  • 链路控制协议 LCP (Link Control Protocol)。 ------身份验证,建立并维护数据链路连接。
  • 网络控制协议 NCP (Network Control Protocol)。 ------PPP可以兼容多种网络层协议。每个不同的网络层协议都要有相应NCP来配置,为网络层协议建立和配置逻辑连接。

帧格式

PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。

PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。

4. 局域网的数据链路层

局域网的特点

  • 网络为一个单位所拥有
  • 地理范围和站点数目均有限

局域网的拓扑

以太网

以太网是指符合 DIX Ethernet V2 标准的局域网

以太网把数据链路层分成了LLC子层和MAC子层,其中LCC层负责识别网络协议,然后对它们进封装。LCC报头告诉数据链路层一旦帧被收到了,应该对数据报做处理。MAC层负责帧的封装/卸装,帧的寻址和识别,帧的接收和发送,链路的管理、帧的差错控制等。

以太网采取的两种重要措施

  1. 采用较为灵活的无连接的工作方式
  2. 以太网发送的数据都使用曼彻斯特 (Manchester) 编码(高频、自同步)

曼彻斯特编码的缺点:它所占的频带宽度比原始的基带信号增加了一倍。

共享信道

使用一对多的广播通信方式,但这会带来一些问题,若多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败。

CSMA/CD协议

载波监听多点接入 / 碰撞检测 (Carrier Sense Multiple Access with Collision Detection) 。

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

协议工作流程

集线器的星形拓扑

传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。而用双绞线的以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器 (hub)

集线器的特点

  • 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线。
  • 集线器很像一个多接口的转发器,工作在物理层。

以太网的信道利用率

以太网的MAC层

MAC 层的硬件地址

在局域网中,硬件地址又称为物理地址,或 MAC 地址(全球唯一)。

适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址。 如果是发往本站的帧则收下,然后再进行其他的处理。 否则就将此帧丢弃,不再进行其他的处理。

发往本站的帧 包括以下三种帧:

  • 单播帧(一对一)
  • 广播帧(一对全体)
  • 多播帧(一对多)

MAC帧格式

在帧的前面插入(硬件生成)的 8 字节中,第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC 帧的比特同步。第二个字段 1 个字节是帧开始定界符,表示后面的信息就是 MAC 帧。

无效的MAC帧

  • 帧的长度不是整数个字节;
  • 用收到的帧检验序列 FCS 查出有差错;
  • 数据字段的长度不在 46 ~ 1500 字节之间。
  • 有效的 MAC 帧长度为 64 ~ 1518 字节之间。

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

5. 在物理层扩展以太网、在数据链路层扩展以太网、虚拟局域网

在物理层扩展以太网

使用光纤扩展

使用集线器扩展

将多个以太网段连成更大的、多级星形结构的以太网。

使用集线器的优缺点

优点

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

缺点

碰撞域增大了。 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。

碰撞域(collision domain)又称为冲突域,是指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络。

在数据链路层扩展以太网

扩展以太网更常用的方法是在数据链路层进行。 早期使用网桥,现在使用以太网交换机。

网桥/交换机工作在数据链路层。 它们根据 MAC 帧的目的地址对收到的帧进行转发和过滤。 当网桥/交换机收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口,或把它丢弃。

以太网交换机的特点:

  • 以太网交换机的每个接口是一个碰撞域
  • 以太网交换机的接口有存储器,能在输出端口繁忙时把到来的帧进行缓存
  • 以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。
  • 以太网交换机的作用远远大于普通的集线器,而且价格并不贵。

以太网交换机的自学习功能:

虚拟局域网

由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN。

划分VLAN方法

  • 基于交换机端口
  • 基于计算机网卡的MAC地址
  • 基于协议类型
  • 基于IP子网地址
  • 基于高层应用或服务
相关推荐
不要秃头啊2 分钟前
别再谈提效了:AI 时代的开发范式本质变了
前端·后端·程序员
青青家的小灰灰3 分钟前
深入理解事件循环:异步编程的基石
前端·javascript·面试
jonjia1 小时前
引入新维度化解权衡难题
程序员
jonjia1 小时前
优秀的工程师如何打破规则
程序员
jonjia1 小时前
在大厂交付大型项目的策略
程序员
jonjia1 小时前
RFC 与设计文档
程序员
jonjia1 小时前
为什么你(或任何人)应该成为一名研发经理?
程序员
jonjia1 小时前
管理技术质量 (Manage Technical Quality)
程序员
jonjia1 小时前
大厂软件工程师职业发展路径
程序员
jonjia1 小时前
关于工程师与影响力
程序员