计算机网络(三):数据链路层
参考引用
- 计算机网络微课堂-湖科大教书匠
- 计算机网络(第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协调的分布式日志系统。具有高吞吐量,可扩展性和可容错性…...
Mac上安装Java的JDK多版本管理软件jEnv
JDK的多版本管理软件主要有以下三种: jEnv jEnv 是一个命令行工具,可以帮助您管理和切换不同版本的 Java 环境。它可以让您在不同的项目之间轻松切换 Java 版本。您可以使用 jenv global 命令设置全局 Java 版本,也可以使用 jenv local 命令…...
linux常见命令以及jdk,tomcat环境搭建
目录 Is pwd cd touch cat echo vim 复制粘贴 mkdir rm cp jdk部署 1. yum list | grep jdk进行查找编辑 2.安装编辑 3.再次确认 4.判断是否安装成功 tomcat安装 1.下载压缩包,把压缩包上传至linux(可能需要yum install lrzsz) 2.解压缩unzip 压缩包名&…...
将表情存入数据库
概念: 表情是一种比较特殊的字符串,为unicode编码,unicode编码要存入数据库一般情况下,是存不了的,有两种解决方式,一种将数据表编码方式改为unicode编码方式,但是这种情况适用于功能刚开始设计…...
H桥级联型五电平三相逆变器Simulink仿真模型
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
后端解决跨域(极速版)
header(Access-Control-Allow-Origin: *); header(Access-Control-Allow-Methods:*); 代表接收全部的请求,"POST,GET"//允许访问的方式 指定域,如http://172.20.0.206//宝塔的域名,注意不是:http://wang.jingyi.icu等…...
数据结构与算法-前缀树
数据结构与算法-前缀树详解 1 何为前缀树 2 前缀树的代码表示及相关操作 1 何为前缀树 前缀树 又称之为字典树,是一种多路查找树,多路树形结构,是哈希树的变种,和hash效率有一拼,是一种用于快速检索的多叉树结构。 性质:不同字符串的相同…...
DirectX12_Windows_GameDevelop_3:Direct3D的初始化
引言 查看龙书时发现,第四章介绍预备知识的代码不太利于学习。因为它不像是LearnOpenGL那样从头开始一步一步教你敲代码,导致你没有一种整体感。如果你把它当作某一块的代码进行学习,你跟着敲会发现,总有几个变量是没有定义的。这…...
基于粒子群优化算法、鲸鱼算法、改进的淘沙骆驼模型算法(PSO/SSA/tGSSA)的微电网优化调度(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
数据分析篇-数据认知分析
一简介 数据认知分析,实际是对数据的整体结构和分布特征进行分析,是对整个数据外在的认识,也是数据分析的第一步。对于数据认知的分析,一般会考虑分散性、位置特性、变量的相关性等,一般会考虑平均数、方差、极差、峰…...
【力扣-每日一题】714. 买卖股票的最佳时机含手续费
class Solution { public:int maxProfit(vector<int>& prices, int fee) {//[i][0]-不持有 [i][1]-持有int mprices.size();vector<vector<int>> dp(m,vector<int>(2));dp[0][0]0; //初始状态dp[0][1]-prices[0];for(int i1;i<m;i){dp[i]…...
港口建设申报网站/网络营销seo优化
做好笔记,打好基础,往高处走。供自己参考,同时欢迎大家指正。1、在官网下载好新版的免安装文件,我的是5.7.20。解压到自定义目录。2、配置环境变量:右键计算机-->属性-->高级系统设置-->环境变量 在path里最…...
扫wordpress后台/怎样申请网站
使用SpringJPA,今天在进行一个业务处理的时候发现一个方法已经设置事物超时时间为3秒,但是到达3秒的时候程序一直不返回,处于hold状态.使用org.springframework.orm.jpa.JpaTransactionManager事务管理器:下面方法的执行时间一定是超多事务设置的3秒的,但是并没有触发事务的超时…...
网站优化关键词是怎么做的/我国网络营销现状分析
在以太网和xDSL接入网设计中,经常会碰到诸如24AWG、26AWG等等表示电缆直径的方法。其实AWG(American Wire Gauge)是美制电线标准的简称,AWG值是导线厚度(以英寸计)的函数。下表是AWG与公制、英制单位的对照表。其中,4/…...
做网站优化两年遇到的SEO常态/武汉百度搜索优化
一个人如果在乎太多也许什么都得不到,人生总是存在意外,不如意是正常,良好的心态能帮你度过灰色的时间,空间,帮你看到明日的太阳。 有时候想人生在世到底是为什么,有人也许为了理想,为了金钱&am…...
哈尔滨市公共资源交易中心/seo博客推广
什么是 Git? Git 是 Linux 的创始人 Linus Torvalds 开源的一款分布式版本控制系统,以帮助开发者更好的对项目进行版本管理。每一个优秀的开发者在进行项目开发时都会第一时间给自己的项目加上 Git,以便能更好的追踪代码修改,进行…...
潍坊点睛做网站怎么样/goole官网
在上一篇文章中我们了解到颜色在甘特图中也有不同的作用。其中颜色在甘特图中扮演着三个角色,才能使甘特图对用户有意义。 颜色决定甘特图的外观。颜色还可以用来定义甘特图的语义。因此,它们帮助用户更快地理解甘特图所呈现的完整且常常复杂的现实。颜…...