计算机网络中数据链路层常见的知识点,你还记得吗?(春招面试)

简介: 之前曾经写过一些计算机网络的基本知识点,还有对物理层进行了介绍,这篇文章主要是对数据链路层进行讲解,数据链路层的知识点不管是面试还是你期末考试,就开始变得比较多了。如果你之前学过正好回顾一下。

一、数据链路层基础知识


1、概念


相信我们已经知道物理层考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。它尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。就好比我们使用的是双绞线又或者是其他的物理设备,这些都不重要,物理层站的比较高,他定义了一些规则,双绞线这些物理设备按照这些规则实现就好了。


但是我们又该如何理解数据链路层的作用呢?链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。

v2-3edf52c0f8b96629c268f85b8ec81dd8_1440w.jpg这里面出现了两个概念:


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


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


2、分类


数据链路层使用的信道主要有以下两种类型:


(1)点对点信道。这种信道使用一对一的点对点通信方式。


(2)广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发


3、解决三个基本问题


(1)封装成帧


封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。

v2-b762b2bbd7a76830e95eea417ce758da_1440w.jpg

(2)透明传输


封装好了之后就开始传输,透明传输是遇到的第一个问题。

v2-7729efbc0622467efa48862b699d83fb_1440w.jpg

这时候怎么办呢?总得有解决办法吧,


解决办法:字符填充


字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

v2-c6faf750368c079d38ed049dc34e3144_1440w.jpg

这就是解决办法,当然只是出现了一个错误,如果出现了下面的错误呢?


(3)差错检测


在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER 。为了保证数据传输的可靠性,必须采用各种差错检测措施。


解决办法,就是那个赫赫有名的循环冗余校验码。因为我在很多个地方都学习了他,不只是计算机网络。怎么去计算,我在这里就不说了,但是需要注意一点循环冗余检验 CRC只是实现了差错检验,并不纠正错误。


下面我们根据两种信道类型分开来讲讲。


二、点对点通信


现在全世界使用得最多的数据链路层协议是点对点协议 PPP。PPP 协议有三个组成部分


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

(2)链路控制协议 LCP (Link Control Protocol)。

(3)网络控制协议 NCP (Network Control Protocol)。

v2-d13268c2e85466c11634c0fe139076f2_1440w.jpg

由于 TCP/IP 体系经常使用的局域网是 DIX Ethernet V2 而不是 802.3 标准中的几种局域网,因此现在 802 委员会制定的逻辑链路控制子层 LLC(即 802.2 标准)的作用已经不大了。一般不考虑 LLC 子层


1、PPP协议的帧格式

v2-89fca20ead4563ce79f72a8b073f87c0_1440w.jpg

(1)标志字段 F = 0x7E

(2)地址字段 A 只置为 0xFF。地址字段实际上并不起作用。因为点对点通信,地址是确定的。

(3)控制字段 C 通常置为 0x03。

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

(5)当协议字段为 0x0021 时,PPP 帧的信息字段就是IP 数据报。若为 0xC021, 则信息字段是 PPP 链路控制数据。若为 0x8021,则表示这是网络控制数据。


2、透明传输问题


PPP帧出现了透明传输问题之后有两个解决办法:


1)字符填充

(2)零比特填充


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

v2-390111f4b7d87e77c218c75c59633dea_1440w.jpg

这是一个常见的面试题。


3、不提供使用序号和确认的可靠传输


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


(1)在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。

(2)在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。

(3)帧检验序列 FCS 字段可保证无差错接受。

PPP协议的主要内容就这么多。


三、广播信道


1、局域网


局域网是一种典型的广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。主要有以太网、令牌环网、FDDI 和 ATM 等局域网技术,目前以太网占领着有线局域网市场。下面说的局域网都是以太网。


以太网提供的服务是不可靠的交付,即尽最大努力的交付。当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。


2、适配器的作用


网络接口板又称为通信适配器(adapter)或网络接口卡 NIC (Network Interface Card),或“网卡”。

v2-baf3aff6a03c576802381c8e10e2c3c3_1440w.jpg

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


(1)“多点接入”表示许多计算机以多点接入的方式连接在一根总线上。


(2)“载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。


(3)“碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。

出现碰撞的原因有很多。比如传播时延对载波监听的影响

v2-3ae75046439f045eeda6885296ed2a85_1440w.jpg

因此使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信。这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。


最先发送数据帧的站,在发送数据帧后至多经过时间 2t(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。以太网的端到端往返时延 2t称为争用期,或碰撞窗口。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。因此出现了二进制指数类型退避算法,尽可能的避免碰撞。


4、集线器


以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器,注意的是集线器其实是工作在物理层,千万不要看到这里介绍到了,就误以为工作在数据链路层。


目前以太网使用交换机替代了集线器,交换机是一种链路层设备,它不会发生碰撞,能根据 MAC 地址进行存储转发。


5、以太网的 MAC 层


在局域网中,硬件地址又称为物理地址,或 MAC 地址。一个地址块可以生成224个不同的地址。这种 48 位地址称为 MAC-48,它的通用名称是EUI-48。


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

v2-be7126dbf8edef4f8a3ed1b316faa1f3_1440w (1).jpg

6、 扩展局域网


1)物理层扩展局域网:用集线器扩展局域网


(2)数据链路层扩展局域网:


在数据链路层扩展局域网是使用网桥。网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口

v2-a5cf2cf906e22f1d45cb86c9cb50d7d1_1440w.jpg

网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。


集线器在转发帧时,不对传输媒体进行检测。网桥在转发帧之前必须执行 CSMA/CD 算法。若在发送过程中出现碰撞,就必须停止发送和进行退避。


7、虚拟局域网 VLAN


虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组。这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个 VLAN。虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。


下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。

v2-ab74191c9a0e5b1c5459b3b2f091f333_1440w.jpg

虚拟局域网使用的以太网帧格式

v2-b964a368e4f95023572d7f227c49b776_1440w.jpg

速率达到或超过 100 Mb/s 的以太网称为高速以太网。以太网已成功地把速率提高到 1 ~ 10 Gb/s ,所覆盖的地理范围也扩展到了城域网和广域网,因此现在人们正在尝试使用以太网进行宽带接入。


OK,这就是数据链路层基本的面试知识点。


相关文章
|
13天前
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
27 2
|
13天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
30 2
|
13天前
|
数据采集 消息中间件 监控
Flume数据采集系统设计与配置实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入探讨Apache Flume的数据采集系统设计,涵盖Flume Agent、Source、Channel、Sink的核心概念及其配置实战。通过实例展示了文件日志收集、网络数据接收、命令行实时数据捕获等场景。此外,还讨论了Flume与同类工具的对比、实际项目挑战及解决方案,以及未来发展趋势。提供配置示例帮助理解Flume在数据集成、日志收集中的应用,为面试准备提供扎实的理论与实践支持。
25 1
|
1月前
|
安全 前端开发 网络协议
网络安全入狱知识点
在面试时,网络安全也会被经常问到,至少要知道常见的攻击,以及防 御措施。在这里 Mark 下,不做深入分析。
|
3天前
|
SQL 存储 前端开发
< 今日份知识点:web常见的攻击方式(网络攻击)有哪些?如何预防?如何防御呢 ? >
网络安全威胁日益严重,2017年的永恒之蓝勒索病毒事件揭示了网络攻击的破坏力。为了防御Web攻击,了解攻击类型至关重要。Web攻击包括XSS、CSRF和SQL注入等,其中XSS分为存储型、反射型和DOM型,允许攻击者通过注入恶意代码窃取用户信息。防止XSS攻击的方法包括输入验证、内容转义和避免浏览器执行恶意代码。CSRF攻击则伪装成用户执行操作,防范措施包括同源策略和CSRF Token验证。SQL注入则通过恶意SQL语句获取数据,预防手段包括输入验证和使用预编译语句。面对网络威胁,加强安全意识和实施防御策略是必要的。
|
5天前
|
数据可视化 Python
Python模型评估与选择:面试必备知识点
【4月更文挑战第17天】本文深入探讨了Python模型评估与选择在面试中的关键点,包括性能度量、过拟合与欠拟合识别、模型比较与选择、模型融合和偏差-方差权衡。强调了避免混淆评估指标、忽视模型验证和盲目追求高复杂度模型的常见错误,并提供相关代码示例,如交叉验证、网格搜索和超参数调优。通过理解这些概念和技巧,可在面试中展示出色的数据科学能力。
31 12
|
13天前
|
机器学习/深度学习 分布式计算 BI
Flink实时流处理框架原理与应用:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Flink实时流处理框架的原理,包括运行时架构、数据流模型、状态管理和容错机制、资源调度与优化以及与外部系统的集成。此外,还介绍了Flink在实时数据管道、分析、数仓与BI、机器学习等领域的应用实践。同时,文章提供了面试经验与常见问题解析,如Flink与其他系统的对比、实际项目挑战及解决方案,并展望了Flink的未来发展趋势。附带Java DataStream API代码样例,为学习和面试准备提供了实用素材。
35 0
|
14天前
|
分布式计算 资源调度 监控
Hadoop生态系统深度剖析:面试经验与必备知识点解析
本文深入探讨了Hadoop生态系统的面试重点,涵盖Hadoop架构、HDFS、YARN和MapReduce。了解Hadoop的主从架构、HDFS的读写流程及高级特性,YARN的资源管理与调度,以及MapReduce编程模型。通过代码示例,如HDFS文件操作和WordCount程序,帮助读者巩固理解。此外,文章强调在面试中应结合个人经验、行业动态和技术进展展示技术实力。
|
16天前
|
存储 网络协议 Linux
|
17天前
|
缓存 NoSQL 定位技术
深入探索Redis:面试中必须掌握的关键知识点
深入探索Redis:面试中必须掌握的关键知识点