计算机网络(三):数据链路层
参考引用
- 计算机网络微课堂-湖科大教书匠
- 计算机网络(第7版)-谢希仁
1. 数据链路层概述
1.1 数据链路层在网络体系结构中所处的地位
- 链路 (Link)
- 就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点
- 数据链路 (Data Link)
- 是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路
- 数据链路层以帧为单位传输和处理数据
1.2 数据链路层的三个重要问题
- 封装成帧
- 封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧
- 帧头和帧尾中包含有重要的控制信息
- 帧头和帧尾的作用之一就是帧定界
- 透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样
- 面向字节的物理链路使用字节填充 (或称字符填充) 的方法实现透明传输
- 面向比特的物理链路使用比特填充的方法实现透明传输
- 差错检测
- 根据帧尾中的检错码,检测帧中是否有误码
- 实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1 可能会变成 0,而 0 也可能变成 1,这称为比特差错
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER(Bit Error Rate)
- 可靠传输
- 尽管误码是不能完全避免的,但若能实现发送方发送什么接收方就能收到什么,就称为可靠传输
- 数据链路层向上层提供的服务类型
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
- 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么
- 一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理
- 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务
- 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输
2. 点对点协议 PPP
- 点对点协议 PPP(Point-to-Point Protocol) 是目前使用最广泛的点对点数据链路层协议
- PPP 协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成
- 对各种协议数据报的封装方法 (封装成帧)
- 链路控制协议 LCP:用于建立、配置以及测试数据链路的连接
- 一套网络控制协议 NCPs:其中的每一个协议支持不同的网络层协议
2.1 帧格式
- 标志 (Flag) 字段:PPP 的定界符,取值为 0x7E
- 地址 (Address) 字段:取值为 0xFF,预留 (目前没有什么作用)
- 控制 (Control) 字段:取值为 0x03,预留 (目前没有什么作用)
- 协议 (Protocol) 字段:指明帧的数据部分送交哪个协议处理
- 帧检验序列 (Frame Check Sequence) 字段:CRC 计算出的校验位
2.2 工作状态
3. MAC 地址、IP 地址及 ARP 协议
- MAC 地址是以太网的 MAC 子层所使用的地址(位于数据链路层)
- IP 地址是 TCP/IP 体系结构网际层所使用的地址
- ARP 协议属于 TCP/IP 体系结构的网际层,其作用是已知设备所分配到的 IP 地址,使用 ARP 协议可以通过该 IP 地址获取到设备的 MAC 地址
3.1 MAC 地址
共享信道要着重考虑的一个问题就是:如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制 MAC (Media Access Control)
-
当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址
-
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制 MAC,因此这类地址被称为 MAC 地址
- MAC 地址一般被固化在网卡 (网络适配器) 的电可擦可编程只读存储器 EEPROM 中,因此 MAC 地址也被称为硬件地址
- MAC 地址有时也被称为物理地址。请注意:这并不意味着 MAC 地址属于网络体系结构中的物理层
-
一般情况下,用户主机会包含两个网络适配器:有线局域网适配器 (有线网卡) 和无线局域网适配器 (无线网卡)
- 每个网络适配器都有一个全球唯一的 MAC 地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的 MAC 地址
- 综上所述,严格来说,MAC 地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识
-
IEEE 802 局域网的 MAC 地址格式
- IEEE 802 局域网的 MAC 地址发送顺序
- 字节发送顺序:第一字节 --> 第六字节
- 字节内的比特发送顺序:b0 --> b7
3.2 IP 地址
- IP 地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息
- 网络编号:标识因特网上数以百万计的网络
- 主机编号:标识同一网络上不同主机 (或路由器各接口)
-
之前介绍的 MAC 地址不具备区分不同网络的功能
- 如果只是一个单独的网络,不接入因特网,可以只使用 MAC 地址 (这不是一般用户的应用方式)
- 如果主机所在的网络要接入因特网,则 IP 地址和 MAC 地址都需要使用
-
数据包转发过程中 IP 地址与 MAC 地址的变化情况(H 为主机,R 为路由器)
- 数据包转发过程中源 IP 地址和目的 IP 地址保持不变
- 数据包转发过程中源 MAC 地址和目的 MAC 地址逐个链路 (或逐个网络) 改变
- H1 知道应该把数据包传给 R1,由 R1 帮其把数据包转发出去
- H1 知道 R1 相应接口的 IP 地址为 IP3,但不知道其对应的 MAC 地址是什么
3.3 ARP 协议
- 如何通过 IP 地址找到其相应的 MAC 地址?
- 通过 ARP 协议
- ARP 请求报文(广播)
- ARP 响应报文(单播)
- ARP 高速缓存
- ARP 协议只能在一段链路或一个网络上使用,不能跨网络使用
4. 集线器与交换机
以太网(Ethernet)是一种计算机局域网技术,是一种基于总线型拓扑结构的网络,使用分布式仲裁机制来解决冲突
4.1 集线器
-
使用双绞线和集线器 HUB 的星型以太网
-
使用集线器的以太网在逻辑上仍是一个总线网,各站共享总线资源,使用的还是 CSMA/CD 协议
-
集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测 (由各站的网卡检测)
-
集线器一般都有少量的容错能力和网络管理功能
- 例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网仍然能正常工作
-
使用集线器 HUB 在物理层扩展以太网
4.2 以太网交换机
- 以太网交换机通常都有多个接口
- 每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工方式
- 以太网交换机具有并行性
- 能同时连通多对接口,使多对主机能同时通信,无碰撞 (不使用CSMA/CD协议)
- 以太网交换机一般都具有多种速率的接口
- 例如:10Mb/s、100Mb/s、1Gb/s、10Gb/s 接口的多种组合
- 以太网交换机工作在数据链路层 (也包括物理层)
- 它收到帧后,在帧交换表中查找帧的目的 MAC 地址所对应的接口号,然后通过该接口转发帧
- 以太网交换机是一种即插即用设备
- 其内部的帧交换表是通过自学习算法自动地逐渐建立起来的
4.3 集线器与交换机的对比
5. 虚拟局域网 VLAN
以太网交换机工作在数据链路层 (也包括物理层),使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域,随着交换式以太网规模的扩大,广播域相应扩大,巨大的广播域会带来很多弊端
- 广播风暴:广播风暴会浪费网络资源和各主机的 CPU 资源
- 难以管理和维护
- 潜在的安全问题
5.1 网络中会频繁出现广播信息
- TCP/IP 协议栈中的很多协议都会使用广播
- 地址解析协议 ARP (已知 IP 地址,找出其相应的 MAC 地址)
- 路由信息协议 RIP (一种小型的内部路由协议)
- 动态主机配置协议DHCP (用于自动配置IP地址)
- NetBEUl:Widnows 下使用的广播型协议
- IPX/SPX:Novell 网络的协议栈
- Apple Talk:Apple 公司的网络协议栈
5.2 分割广播域的方法
-
使用路由器可以隔离广播域(路由器成本较高)
-
虚拟局域网 VLAN 技术
- 虚拟局域网 VLAN (Virtual Local Area Network) 是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求
- 虚拟局域网 VLAN (Virtual Local Area Network) 是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求
相关文章:

计算机网络(三):数据链路层
参考引用 计算机网络微课堂-湖科大教书匠计算机网络(第7版)-谢希仁 1. 数据链路层概述 1.1 数据链路层在网络体系结构中所处的地位 链路 (Link) 就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点 数据链路 (Data Link)…...

【计算机组成 课程笔记】7.2 DRAM和SRAM
课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 7 - 2 - 702-DRAM和SRAM(13-22--)_哔哩哔哩_bilibili 从【计算机组成 课程笔记】7.1 存储层次结构概况_Elaine_Bao的博客-CSDN博客中,我们了解到:SRAM比较快&#x…...

1802_在Linux系统上开发ARM单机片机嵌入式软件
全部学习汇总: GreyZhang/little_bits_of_linux: My notes on the trip of learning linux. (github.com) 1. 在Linux上也有嵌入式的开发环境,或许还有很多。不过,我现在接触到的大部分还是Windows居多。这一份文件介绍的是一个mbed platform…...

【计算机网络-自顶向下方法】应用层(HTTP、FTP)
目录 1. Principles of network applications创建一个网络应用1.1 网络应用架构1.1.1 客户-服务器架构1.1.2 P2P架构1.1.3 两种架构的比较 1.2 不同终端上的进程通信1.3 应用需要什么样的传输服务1.4 因特网能够提供的传输服务1.5 应用层协议1.6 小结 2. Web and HTTPWeb应用画…...
CSS文本超出显示小数点
目录 1、单行文本溢出 2、多行文本溢出 1、基于高度截断 2、基于行数截断 1、单行文本溢出 如果解决文本溢出显示省略号,需要满足的三个条件: 先强制一行内显示文本 white-space:nowrap;/*默认normal 自动换行*/ 超出的文本隐藏起来。 overflow:…...

怎么把图片压缩小一点?4个简单的压缩办法
怎么把图片压缩小一点?因为图片太大而带来的不良影响可说是非常的多,例如因为图片体积太大导致电脑中的存储空间越来越小,使得电脑使用起来越来越慢;当我们打开一张体积非常大的图片时无法开,甚至一度让电脑卡死&#…...
react嵌套路由
react嵌套页面 先从路由身上导出 import { HashRouter, Routes, Route, Navigate } from react-router-dom; //引入页面; import Home from ./view/Home; import About from ./view/About; import Integrated from ./view/Integrated; import Sidebar from ./vie…...
代码随想录 单调栈 Ⅰ
739. 每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替 思路&#…...
C++返回引用
在本文中,您将学习如何在函数中通过引用返回值,以及如何在程序中有效地使用它。 在C 编程中,不仅可以通过引用将值传递给函数,还可以通过引用返回值。 示例:通过引用返回 #include <iostream> int c; int add…...

010:连续跌3天,同时这三天收盘价都在20日均线下,第四天上涨的概率--以京泉华为例
对于《连续跌三天,压第四天上涨的盈利计算》,我们可以继续优化这个策略,增加条件:同时三天都收盘在20日均线下。 因为我们上一篇《获取20日均线数据到excel表中》获得了20日均线数据,我们可以利用均线数据来编写新的脚…...

MATLAB与Python:优势与挑战
本文旨在探讨MATLAB与Python在特定领域内的使用情况,并分析两者之间的优势和挑战。 MATLAB和Python都是流行的编程语言,广泛应用于科学计算、数据分析和机器学习等领域。在某些领域,如航空航天工程、自动化和电子工程嵌入式系统开发等&#…...

CSP-J第二轮试题-2019年-1、2题
文章目录 参考:总结 [CSP-J2019] 数字游戏题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案答案2 [CSP-J 2019] 公交换乘题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示…...

深入理解 python 虚拟机:原来虚拟机是这么实现闭包的
深入理解 python 虚拟机:原来虚拟机是这么实现闭包的 在本篇文章当中主要从虚拟机层面讨论函数闭包是如何实现的,当能够从设计者的层面去理解闭包就再也不用死记硬背一些闭包的概念了,因为如果你理解闭包的设计原理之后,这些都是…...

【数据结构-哈希表 一】【原地哈希】:缺失的第一个正整数
废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【原地哈希】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…...

【C++设计模式之迭代器模式】分析及示例
简介 迭代器模式是一种行为型设计模式,它提供了一种顺序访问聚合对象元素的方法,而又不需要暴露聚合对象的内部结构。迭代器模式通过将遍历算法封装在迭代器对象中,可以使得遍历过程更简洁、灵活,并且符合开闭原则。 描述 迭代…...

【代码随想录】LC 27. 移除元素
文章目录 前言一、题目1、原题链接2、题目描述 二、解题报告1、思路分析2、时间复杂度3、代码详解 三、知识风暴 前言 本专栏文章为《代码随想录》书籍的刷题题解以及读书笔记,如有侵权,立即删除。 一、题目 1、原题链接 27. 移除元素 2、题目描述 二、…...
crash工具分析dma设备内存踩踏(一)
背景介绍 我们的客户在利用我们提供的SDK参考方案开发相关产品时,在产品方案上进行一些基础老化测试时,极低概率出现kernel随机panic问题,由于场景复杂,无法单独针对特定模块或功能进行拆解来进行实验排查,只能基于已…...

C#上位机——根据命令发送
C#上位机——根据命令发送 第一步:设置窗口的布局 第二步:设置各个属性 第三步:编写各个模块之间的关系...
BEVFormer代码跑通
1 环境配置 1.1 环境安装 # 1 拉取源码 github加速代理https://ghproxy.com/ git clone https://github.com/fundamentalvision/BEVFormer.git# 2 创建虚拟环境 conda create -n bev python3.8 -y# 3 激活虚拟环境 conda activate bev# 4.1 安装torch,torchvision,torchaud…...

kafka安装
kafka安装 1 kafka概念 1.1 kafka介绍 kafka是最初有Linkedin公司开发的,是一个分布式,分区,多副本,多生产者,多订阅者,基于zookeeper协调的分布式日志系统。具有高吞吐量,可扩展性和可容错性…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

前端开发者常用网站
Can I use网站:一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use:Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站:MDN JavaScript权威网站:JavaScript | MDN...
简单介绍C++中 string与wstring
在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位)…...