计算机网络 - 数据链路层

单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思,而且数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层

主要了解在同一局域网,分组怎么从一台主机传送到另一台主机,但不经过路由器转发,把局域网放在数据链路层讨论而不放在网络层讨论
在这里插入图片描述
上图主机H1向主机H2发生信息,中间经过三个路由器R1,R2,R3;所经过的网络可以有很多,如电话网,局域网,广域网;
在路由器和路由器转发分组的时候只使用协议栈的下面三层
在这里插入图片描述

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

1.1 为什么需要数据链路层

数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接受到的帧中的数据取出上交到网路层(IP数据报)

  • 对于物理层: 物理层的线路由传输介质与通信设备组成,比特流在传输介质上传输时一定会存在误差,而设置数据链路层目的就是为了在存在差错的物理层的基础上,采用差错检测,差错控制和流量控制等方法,将有差错的物理线路改进为无差错的数据链路,向网络层提供高质量的数据传输服务

  • 对于网络层: 由于数据链路层的存在,网络层不需要知道物理层具体采用了哪种传输介质与通信设备的,是采用模拟通信方法,还是采用数字通信方法。只要接口关系与功能不变,物理层所采用的传输介质与通信设备的变化对网络层不会产生影响。

1.2 数据链路层使用的信道

点对点通信: 使用一对一的点对点通信方式(两个主机直接相连)
广播信道: 一对多的广播通信方式(两个主机之间有集线器等东西)

1.3 链路和数据链路

链路:(link) 无源的点到点物理线路段,中间没有任何其他的交换节点,一条链路只是一条通路的一个组成部分

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

  • 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
  • 一般的适配器都包括了数据链路层和物理层这两层的功能。

1.3 帧

数据链路层传输的是帧
在这里插入图片描述
① 节点A的数据链路层把网络层交下来的IP数据报添加头部和尾部封装成帧
② 节点A把封装好的帧发送给B的数据链路层
③ 若节点B的数据链路层收到的帧无差错,则从帧中提取IP数据报交给上面的网络

1.4 数据链路层要解决的三个基本问题

1.4.1 封装成帧

封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
首部和尾部的一个重要作用就是进行帧定界
在这里插入图片描述
也就是说计算机在接收帧的时候只有接受到有开头结尾的才保存下来,其他的都不是完整的帧会被丢弃

显然为了提高效率,帧的数据部分长度应当尽可能大于首部和尾部的长度,但是,每一种链路层协议都规定了所能传输的帧的数据部分的长度上线最大传输单元(MTU: Maximum Transfer nit)

1.4.2 透明传输

在这里插入图片描述
为了避免在帧的数据备部分出现了头和尾结束的字符,那么计算机就会理解错误
字节填充/字符填充
为了防止开始字符和结束字符出现在数据部分造成计算机的理解错误,发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”

注意:这里的SOH,EOT是控制字符的名称,而不是SOH这三个字符

在这里插入图片描述
接收端的数据链路层在将数据送往网络层之前删除插入的转义字符
发送者和接收者并不知道在传输过程中进行了字符填充,所以叫透明传输

1.4.3 差错控制

在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施(循环冗余检验 CRC 的检错技术)

循环冗余检验 CRC 的检错技术
CRC

保证了无差接收: CRC 差错检测技术只能做到无差错接受(accept),也就是说,凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错(有差错的帧就丢弃而不接受);

无法保证可靠传输: 而不是无传输差错的检测机制,要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制,由上层的应用程序实现

现在的通信线路的质量已经得到了大大的提高,由于通信链路质量不好所引起的差错概率已经大大的降低了,所以在通信质量良好的有线传输链路,链路层不需要使用确认和重传机制,认识由上层来完成;但是对于质量较差的无线传输链路,还是需要这些机制的,这里先不讨论

2. 两种情况下的数据链路层

2.1 点对点链路

2.1.1 高级数据链路控制协议HDLC

在通信线路较差的年代,在数据链路层使用可靠传输协议是一个好办法,因此,能实现可靠传输的高级数据链路控制协议HDLC在当时比较流行,但是现在对于点对点链路,简单的PPP协议使用更为广泛

2.1.2 点到点PPP协议

现在全世界使用得最多的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
用户使用拨号电话线接入因特网时,也就是和ISP进行通信的时候,一般都是使用 PPP 协议作为链路层协议
在这里插入图片描述

2.1.2.1 PPP协议的要求

简单 对于链路层的帧,无需纠缠,无需序号,无需流量控制。

封装成帧 规定特殊的字符作为帧定界符

透明传输 与帧定界符一样比特组合的数据应该如何处理:异步线路用字节填充,同步线路用比特填充。

多种网络层协议 封装的IP数据报可采用多种协议。

多种类型链路 串行/并行,同步/异步,电/光…

差错检测 接收端检测帧,出错丢弃

检测连接状态 链路是否正常工作

最大传送单元 对每一种类型的点对点链路设置数据部分最大长度MTU≤1500B

网络层地址协商 知道通信双方的网络层地址

数据压缩协商 必须提供一种方法来协商使用数据压缩算法

2.1.2.2 PPP协议不需要的功能

  • 纠错
  • 流量控制
  • 序号
  • 多点线路
  • 半双工或单工链路

PPP 协议之所以不使用序号和确认机制是出于以下的考虑:

  • 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
  • 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
  • 帧检验序列 FCS 字段可保证无差错接受

2.1.2.3 组成

(1)一个将IP数据报封装到串行链路的方法。

(2)一个链路控制协议(LCP),用于建立,配置和测试数据链路连接,并在不需要时将其释放。

(3)一套网络控制协议(NCP),PPP可支持多种网络层协议,每个不同的网络层协议都需要一个相应的NCP来配置,为网络层协议建立和配置逻辑逻辑。即其中每个协议支持不同的网络层协议,NCP用于建立和配置不同的网络层协议。

2.1.2.4 PPP协议的帧格式

在这里插入图片描述
地址字段A和控制字段C为规定值

2.1.2.5 PPP协议的透明传输

1. 字节填充
现在的PPP(异步传输) 是面向字节的,PPP 帧的长度都是整数字节,所以为了完成透明传输使用的是字节填充

  • 将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列(0x7D, 0x5E)。
  • 若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列(0x7D, 0x5D)。
  • 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变

2. 零比特填充
PPP 协议用在 SONET/SDH 链路时,是使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。

-在发送端,只要发现有 5 个连续 1,则立即填入一个 0。接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除

在这里插入图片描述

2.1.2.6 PPP 协议的工作状态

① 当用户拨号接入 ISP(实际上是我们和ISP的路由器先)时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。

② PC 机向路由器(实际上是路由器的调制解调器,也就是猫,现在路由器把路由器的路由功能和猫的调制解调功能组合在了一起)发送一系列的 LCP 分组(封装成多个 PPP 帧)。

③ 这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。

④ 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接
在这里插入图片描述

2.2 使用广播信道的数据链路层

1. PPP点对点主要是使用在两个网络节点之间建立连接,如用户端和运营商的接入服务器之间建立通信链路。

2. 广播信道可以进行一对多的通信,局域网使用的就是广播信道
在这里插入图片描述

2.2.1 局域网的数据链路层

局域网的优点:

  • 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的

  • 各种硬件和软件资源。

  • 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。

  • 提高了系统的可靠性、可用性和生存性

局域网的拓扑
在这里插入图片描述
其中总线网以传统的以太网最为著名

2.2.1.1 媒体共享技术

共享信道主要考虑的是如何使众多的用户能合理而方便的共享通信媒体的资源
1. 静态划分信道
(不适合现在的网络)

2. 动态媒体接入技术
信道并非在用户通信的时候固定分配给用户

① 随机接入:(以太网使用的是随机接入)所有的用户可以随机发送消息,但是如果恰巧有两个或更多的用户在同一时刻发送信息,那么会产生冲突,碰撞,使得用户的发送都失败,因此需要解决碰撞的网络协议(CSMA/CD)
在这里插入图片描述

② 受控接入:用户不能随即发送信息而是必须服从一定的控制

2.2.1.2 以太网的两个标准

以前有多种局域网标准,为了能让数据链路层更好的适应多种局域网标准,IEEE 802委员会把局域网的数据链路层拆成2个子层,逻辑链路控制子层LLC和媒体接入控制子层MAX,与接入传输媒体有关的内容都放在MAC层,LLC和传输媒体无关,后来以太网垄断了局域网,局域网只剩下了DIX Ethernet V2,所有现在LLC的作用已经消失了,只剩下了MAC子层
在这里插入图片描述
① DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约

② IEEE 的 802.3 标准

DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”
很多人把IEEE 802.3局域网简称为以太网,实际上以太网严格来说是指符合DIX Ethernet V2标准的局域网(我们也不用太在意严格的区分)

2.2.1.3 适配器

计算机通过适配器和局域网机械能通信,也就是以前所说的网卡,现在在计算机的主板上已经嵌入了这种适配器,不再使用单独的网卡
在这里插入图片描述
适配器用来实现以太网协议,适配器上也有处理器和存储器,接收和发送帧,不使用计算机的cpu,当适配器接受到真正确的帧,使用中断来通知计算机,并交付给协议栈中的网络层;

发送数据的时候,计算机把IP数据报下交给适配器,组装成帧发送到局域网

MAC地址在适配器的ROM中,IP地址在计算机的存储器中

2.2.1.4 CSMA/CD协议

在这里插入图片描述
1. 如何实现一对一传输
在局域网上,我们并不总是需要一对多的广播通信,当需要使用1对1的网络通信时,MAC地址就派上了用长

① 总线上的每一个工作的计算机都能检测到 B 发送的数据信号。
② 由于只有计算机 D 的地址与数据帧首部写入的地址一致,因此只有 D 才接收这个数据帧。
③ 其他所有的计算机(A, C 和 E)都检测到不是发送给它们的数据帧,因此就丢弃这个数据帧而不能够收下来。
④ 这也就实现了具有广播特性的总线上实现了一对一的通信

2. 为了通信简单以太网采取的两种措施

① 采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。
以太网对发送的数据帧不进行编号,也不要求对方发回确认。这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。

② 以太网发送的数据都使用曼彻斯特(Manchester)编码

3. 载波监听多点接入/碰撞检测 CSMA/CD

CSMA/CD 表示 Carrier Sense Multiple Access with Collision Detection。

  • ① 多点接入:表示许多计算机以多点接入的方式连接在一根总线上。

  • ② 载波监听:是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
    在发送中也要进行监听,也就是所谓的碰撞检测,边发送,边监听(因为虽然大家都是在监听到信道空闲才发言,但是难免会出现抢着发言的情况)(检测信道上的信号电压大小,当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加))

在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。

就是因为要检查碰撞之类的操作,也可以看出来我们的以太网距离不能太长(不然发现冲突的时间太长)

2.2.1.5 以太网的MAC层

在局域网中,硬件地址又被称为MAC地址,也就是适配器地址

适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址:

  • 如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。

  • “发往本站的帧”包括以下三种帧:
    ① 单播(unicast)帧(一对一)
    ② 广播(broadcast)帧(一对全体)(全1)
    ③ 多播(multicast)帧(一对多)

2.2.1.6 MAC 帧的格式

常用的以太网MAC帧格式有两种标准 :
① DIX Ethernet V2 标准
② IEEE 的 802.3 标准
最常用的 MAC 帧是以太网 V2 的格式。
在这里插入图片描述
因为用到是曼特斯特编码,所以只需要有头就行了

2.2.2 扩展的以太网

直接使用光纤连接 —> 使用多个集线器 —> 网桥 —> 交换机

2.2.2.1 在物理层扩展局域网

1. 主机使用光纤和一对光纤调制解调器连接到集线器
在这里插入图片描述

2. 用多个集线器可连成更大的局域网
在这里插入图片描述

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

  • 缺点
    ① 碰撞域增大了,但总的吞吐量并未提高。
    ② 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。

2.2.2.2 在数据链路层扩展以太网

3. 网桥
网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。
网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口
在这里插入图片描述
网桥把冲突域分为了两个,效率变高了

  • 优点
    ① 过滤通信量。
    ② 扩大了物理范围。
    ③ 提高了可靠性。
    ④ 可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网
    在这里插入图片描述
  • 缺点
    ① 存储转发增加了时延。
    ② 在MAC 子层并没有流量控制功能。
    ③ 具有不同 MAC 子层的网段桥接在一起时时延更大。
    ④ 网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播⑤ 过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。

**4. 多接口网桥——以太网交换机 **
在这里插入图片描述
① 以太网交换机通常都有十几个接口。因此,以太网交换机实质上就是一个多接口的网桥,可见交换机工作在数据链路层。
② 以太网交换机的每个接口都直接与主机相连,并且一般都工作在全双工方式。
③ 交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,进行无碰撞地传输数据。
④ 以太网交换机由于使用了专用的交换结构芯片,其交换速率就较高。

2.2.3 星形以太网

以前很难使用廉价的方法造出以太网交换机,所以使用的是总线结构,现在都使用星形以太网的结构,同时也就没有了碰撞问题,所以就不再需要CSMA/CD协议,不再以半双工的方式工作而是以全双工的方式工作,因为他的每个端口有存储方式,来到消息多会排队,不会冲突(但是帧的结构没有变,还是以太网帧,所以还叫以太网)

CSMA/CD ,现在的交换式以太网还用吗?僭全双工,半双工与CSMA/CD的关系

2.2.4 虚拟局域网(VLAN)

VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组。
虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。

也就是说,假设我们现在有一个交换机接了4台机器PC0(接在交换机1号口),PC1(接在交换机2号口) ,PC2(接在交换机3号口),PC3(接在交换机4号口),现在他们是在同一局域网内可以互相通信,而我想把PC0,PC1单独划分为一个局域网,PC2,PC3单独划分为一个局域网,那么就是VLAN
在这里插入图片描述
也就是可以把交换机的1-12号口单独划分为一个虚拟局域网,13-24号口单独划分为一个虚拟局域网,这样就只有1-12号可以通信,13-24号可以通信
在这里插入图片描述
以上是最基本的VLAN
假设AB计算机和EF计算机在一台交换机上而CD计算机和GH计算机在一台交换机上,我们想让ABCD在一个VLAN,EFGH在一个VLAN,如下图,可以把两个交换机用一条干路链路连接起来
在这里插入图片描述
这样VLAN1中的A计算就发送数据给VLAN1的C计算机就往干道链路发送帧,帧中包含了VLAN1的标识发送到了第二个交换机,交换机2接收到了数据就只会发送到VLAN1的口,那么就实现了VLAN

在这里插入图片描述

虚拟局域网协议允许在以太网的帧格式中插入一个 4 字节的标识符,称为 VLAN 标记(tag),用来指明发送该帧的工作站属于哪一个虚拟局域网
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值