计算机网络基础 - 链路层(3)
计算机网络基础
- 链路层和局域网
- 交换局域网
- 链路层寻址
- 地址解析协议 ARP
- 以太网
- 物理拓扑
- 以太网帧结构
- 以太网提供的服务
- 以太网标准
- 链路层交换机
- 交换机转发和过滤
- 自学习
- 交换机优点
- 交换机和路由器比较
大家好呀!我是小笙,本章我主要分享计算机网络基础 - 链路层(3)学习总结,希望内容对你有所帮助!!
链路层和局域网
交换局域网
链路层寻址
事实上,并不是主机或路由器具有链路层地址,而是它们的适配器具有链路层地址
MAC(LAN/物理/以太网)地址
用于使帧从一个网卡传递到与其物理连接的另一个网卡(在同一个物理网络中)
- 48bit MAC地址固化在适配器的ROM,有时也可以通过软件设定(通常用十六进制 表示法 1A-2F-BB-76-09-AD)
- 理论上全球任何2个网卡的MAC地址都不相同
不同公司如何在生产适配器的时候,控制使用不同 MAC 地址?
答案是 IEEE在管理着该MAC地址空间。当一个公司要生产适配器时,它支付象征性的费用购买组成24个地址的一块地址空间。IEEE分配这块24个地址的方式是固定一个MAC地址的前24比特,让公司自己为每个适配器生成后24比特的唯一组合
IP地址和MAC地址的作用区别
IP地址具有分层的结构(即一个网络部分和一个主机部分)
- 当主机移动时,主机的 IP地址需要改变,即改变它所连接到的网络
- 主要用于IP地址网络到网络的交付
适配器的MAC地址具有扁平结构
- 网卡在生产时不知道被用于哪个网络,因此给网卡一个唯一的标示,用于区分一个网络内部不同的网卡即可(不论适配器到哪里用都不会变化)
- 主要用于一个物理网络内部的节点到节点的数据交付
网络地址如果和 MAC 地址进行捆绑,可能存在的问题
- 局域网是为任意网络层协议而设计的,而不只是用于 IP 和因特网
- 每次上电都要重新写入网卡 IP地址
- 在适配器中不使用任何地址,让每个适配器将它收到的每帧数据,沿协议栈向上传递到网络层才能够核对网络地址层是否匹配,这将会导致主机将被局域网上发送的每个帧中断
地址解析协议 ARP
ARP 协议主要用于网络层地址和链路层地址之间的转换(需要在同一个子网中)
每台主机或路由器在其内存中具有一个ARP表,这张表包含IP地址到MAC地址的映射关系(该ARP表也包含一个寿命 TTL 值,它指示了从表中删除每个映射的时间,通常的过期时间是20分钟)
寻址过程
- A 要发送帧 给 B(B的IP地址已知) 但 B 的MAC地址不在 A 的ARP表中
- A 广播包含 B 的IP地址的ARP查询包
- LAN上的所有节点都会收到该查询包
- B 接收到ARP包,回复 A 关于自己的MAC地址 (单播)
- A 在自己的ARP表中,缓存 IP - MAC地址映射关系,直到信息超时 (软状态: 靠定期刷新维持的系统状态 )
- ARP是即插即用的
- 节点自己创建ARP的表项
- 无需网络管理员的干预
以太网
- 日前最主流的LAN技术:98%占有率
- 100Mbps 以太网只需要30元RMB ,比令牌网和ATM网络简单、廉价
- 技术带宽不断提升:10M,100M,1G,10G
物理拓扑
总线(在上个世纪80年代很流行)
- 一次只允许一个节点发送
- 可靠性差,如果介质破损,截面形成信号的反射,发送节点误认为是冲突,总是冲突
星型(目前最主流)
- 连接选择:集线器 hub或者交换机 switch (现在一般是交换机在中心)
- 交换机:每个节点以及相连的交换机端口使用(独立的)以太网协议(不会和其他节点的发送产生碰撞)
以太网帧结构
发送方适配器在以太网帧中封装 IP数据报,或其他网络层协议数据单元

前同步码(8字节)
以太网帧以一个8字节的前同步码字段开始,该前同步码的前7字节的值都是10101010;第八个字节是10101011
前同步码字段的前7字节用于“唤醒”接收适配器,并且将它们的时钟和发送方的时钟同步;前同步码的第8个字节的最后两个比特(出现的两个连续的1)警告适配器需要接收的数据就要到了
目的地址(6字节)
这个字段包含目的适配器的MAC地址,即 XX-XX-XX-XX-XX-XX
当适配器B收到一个以太网帧,帧的目的地址无论是 XX-XX-XX-XX-XX-XX,还是MAC广播地址,它都将该帧的数据字段的内容传递给网络层;如果它收到了任何其他MAC地址的帧,则丢弃之
类型(2字节)
指出高层协(大多情况下是IP,但也支持其它网络层协议Novell IPX和Apple Talk)
数据字段(46~1500字节)
这个字段承载了IP数据报,数据大小必须在 46字节 - 1500字节之间,数据过大需要分片,数据过小需要补齐(网络层使用IP数据报首部中的长度字段来去除填充部分)
CRC(4字节)
CRC(循环冗余检测)字段的目的是使得接收适配器检测帧中是否引入了差错
以太网提供的服务
采用二进制退避的CSMA/CD介质访问控制形式
- 无连接:帧传输前,发送方和接收方之间没有握手
- 不可靠:接收方适配器不发送 ACKs或 NAKs给发送方
- 如果由于丢弃了以太网帧而存在间隙,接收主机上的应用也会看见这个间隙吗?
- 如果应用使用的是 UDP,则接收主机中的应用的确会看到数据中的间隙
- 如果应用使用的是TCP,则接收主机中的TCP将不会确认包含在丢弃帧中的数据,从而引起发送主机的TCP重传
以太网标准
很多不同的以太网标准
- 相同的MAC协议(介质访问控制)和帧结构
- 不同的速率:2Mbps、10Mbps、100Mbps、1Gbps、10Gbps
- 不同的物理层标准
- 不同的物理层媒介:光纤,同轴电缆和双绞线

名称解读,比如 100BASE-T2 表示的是 100Mbps + 基带以太网 + 物理媒介类型
链路层交换机
交换机转发和过滤
-
过滤是决定一个帧应该转发到某个接口还是应当将其丢弃的功能
-
转发是决定一个帧应该被导向哪个接口,并把该帧移动到那些接口的功能
-
交换机的过滤和转发借助于交换机表(switch table)完成(交换机表的一部分)
举例:假定目的地址为DD-DD-DD-DD-DD-DD的帧从交换机接口x到达。交换机用MAC地址DD-DD-DD-DD-DD-DD索引它的表,有3种可能的情况
- 表中没有对于DD-DD-DD-DD-DD-DD的表项。在这种情况下,交换机向除接口x外的所有接口前面的输出缓存转发该帧的副本。(换句话说就是没有对于目的地址的表项,交换机广播该帧)
- 表中有一个表项将DD-DD-DD-DD-DD-DD与接口x联系起来。在这种情况下,该帧从包括适配器DD-DD-DD-DD-DD-DD的局域网网段到来。无须将该帧转发到任何其他接口,交换机通过丢弃该帧执行过滤功能即可(说明目的接口和到来的接口是同一个,只需要过滤即可)
- 表中有一个表项将DD-DD-DD-DD-DD-DD与接口y≠x联系起来。在这种情况下,该帧需要被转发到与接口y相连的局域网网段。交换机通过将该帧放到接口y前面的输出缓存完成转发功能
自学习
交换机是即插即用设备,它们不需要网络管理员或用户干预
自学习过程
- 交换机表初始为空
- 对于在每个接口接收到的每个入帧,该交换机在其表中存储:①在该帧源地址字段中的MAC地址;②该帧到达的接口;③当前时间(如果在局域网上的每个主机最终都发送了一个帧,则每个主机最终将在这张表中留有记录)
- 如果在一段时间后,交换机没有接收到以该地址作为源地址的帧,就在表中删除这个地址
交换机优点
- 消除碰撞,在使用交换机(不使用集线器)构建的局域网中,没有因碰撞而浪费的带宽
- 异质的链路,交换机将链路彼此隔离,因此局域网中的不同链路能够以不同的速率运行并且能够在不同的媒体上运行
- 管理,除了提供强化的安全性,交换机也易于进行网络管理
交换机和路由器比较
- 都是存储转发设备,但层次不同
- 交换机:链路层设备(检查链路层头部)
- 路由器:网络层设备(检查网络层的头部)
- 都有转发表
- 交换机维护交换表,按照MAC地址转发
- 路由器维护路由表,执行路由算法
相关文章:

计算机网络基础 - 链路层(3)
计算机网络基础 链路层和局域网交换局域网链路层寻址地址解析协议 ARP以太网物理拓扑以太网帧结构以太网提供的服务以太网标准 链路层交换机交换机转发和过滤自学习交换机优点交换机和路由器比较 大家好呀!我是小笙,本章我主要分享计算机网络基础 - 链路…...

ray.rllib 入门实践-5: 训练算法
前面的博客介绍了ray.rllib中算法的配置和构建,也包含了算法训练的代码。 但是rllib中实现算法训练的方式不止一种,本博客对此进行介绍。很多教程使用 PPOTrainer 进行训练,但是 PPOTrainer 在最近的 ray 版本中已经取消了。 环境配置&#x…...

FPGA 使用 CLOCK_LOW_FANOUT 约束
使用 CLOCK_LOW_FANOUT 约束 您可以使用 CLOCK_LOW_FANOUT 约束在单个时钟区域中包含时钟缓存负载。在由全局时钟缓存直接驱动的时钟网段 上对 CLOCK_LOW_FANOUT 进行设置,而且全局时钟缓存扇出必须低于 2000 个负载。 注释: 当与其他时钟约束配合…...

选择的阶段性质疑
条条大路通罗马,每个人选择的道路,方向并不一样,但不妨碍都可以到达终点,而往往大家会更推崇自己走过的路径。 自己靠什么走向成功,自己用了什么方法,奉行什么原则或者理念,也会尽可能传播这种&…...

固有频率与模态分析
目录 引言 1. 固有频率:物体的“天生节奏” 1.1 定义 1.2 关键特点 1.3 实际意义 2. 有限元中的模态分析:给结构“体检振动” 2.1 模态分析的意义 2.2 实际案例 2.2.1 桥梁模态分析 2.2.2 飞机机翼模态分析 2.2.3 具体事例 3. 模态分析的工具…...

数科OFD证照生成原理剖析与平替方案实现
一、 引言 近年来,随着电子发票的普及,OFD格式作为我国电子发票的标准格式,其应用范围日益广泛。然而,由于不同软件生成的OFD文件存在差异,以及用户对OFD文件处理需求的多样化,OFD套餐转换工具应运而生。本…...

CAN总线数据采集与分析
CAN总线数据采集与分析 目录 CAN总线数据采集与分析1. 引言2. 数据采集2.1 数据采集简介2.2 数据采集实现3. 数据分析3.1 数据分析简介3.2 数据分析实现4. 数据可视化4.1 数据可视化简介4.2 数据可视化实现5. 案例说明5.1 案例1:数据采集实现5.2 案例2:数据分析实现5.3 案例3…...

SpringSecurity:There is no PasswordEncoder mapped for the id “null“
文章目录 一、情景说明二、分析三、解决 一、情景说明 在整合SpringSecurity功能的时候 我先是去实现认证功能 也就是,去数据库比对用户名和密码 相关的类: UserDetailsServiceImpl implements UserDetailsService 用于SpringSecurity查询数据库 Logi…...

ResNet 残差网络
目录 网络结构 残差块(Residual Block) ResNet网络结构示意图 残差块(Residual Block)细节 基本残差块(ResNet-18/34) Bottleneck残差块(ResNet-50/101/152) 残差连接类型对比 变体网…...

CAPL编程常见问题与解决方案深度解析
CAPL编程常见问题与解决方案深度解析 目录 CAPL编程常见问题与解决方案深度解析引言1. CAPL编程核心难点剖析1.1 典型问题分类2. 六大典型问题场景解析案例1:定时器资源竞争导致逻辑错乱2.1.1 问题现象2.1.2 根因分析2.1.3 解决方案案例2:大数据量报文处理引发性能瓶颈2.2.1 …...

信号处理以及队列
下面是一个使用C和POSIX信号处理以及队列的简单示例。这个示例展示了如何使用信号处理程序将信号放入队列中,并在主循环中处理这些信号。 #include <iostream> #include <csignal> #include <queue> #include <mutex> #include <thread…...

Linux pkill 命令使用详解
简介 pkill 命令用于根据进程名称、用户、组或其他属性终止进程。它是 procps-ng 包的一部分,通常比 kill 更受欢迎,因为它无需查找进程 ID (PID)。 常用选项 -<signal>, --signal <signal>:定义要发送给每个匹配进程的信号&am…...

react注意事项
1.状态的定义以及修改 2.排序用lodash进行排序 import _ from lodassh 3.利用className插件进行动态类名的使用 4.表单使用 5.react中获取dom...

【开源免费】基于SpringBoot+Vue.JS在线考试学习交流网页平台(JAVA毕业设计)
本文项目编号 T 158 ,文末自助获取源码 \color{red}{T158,文末自助获取源码} T158,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

怎样在PPT中启用演讲者视图功能?
怎样在PPT中启用演讲者视图功能? 如果你曾经参加过重要的会议或者演讲,你就会知道,演讲者视图(Presenter View)对PPT展示至关重要。它不仅能帮助演讲者更好地掌控演讲节奏,还能提供额外的提示和支持&#…...

UE AController
定义和功能 AController是一种特定于游戏的控制器,在UE框架中用于定义玩家和AI的控制逻辑。AController负责处理玩家输入,并根据这些输入驱动游戏中的角色或其他实体的行为。设计理念 AController设计用于分离控制逻辑与游戏角色,增强游戏设计…...

H264原始码流格式分析
1.H264码流结构组成 H.264裸码流(Raw Bitstream)数据主要由一系列的NALU(网络抽象层单元)组成。每个NALU包含一个NAL头和一个RBSP(原始字节序列载荷)。 1.1 H.264码流层次 H.264码流的结构可以分为两个层…...

JAVA 接口、抽象类的关系和用处 详细解析
接口 - Java教程 - 廖雪峰的官方网站 一个 抽象类 如果实现了一个接口,可以只选择实现接口中的 部分方法(所有的方法都要有,可以一部分已经写具体,另一部分继续保留抽象),原因在于: 抽象类本身…...

反向代理模块b
1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…...

Nuitka打包python脚本
Python脚本打包 Python是解释执行语言,需要解释器才能运行代码,这就导致在开发机上编写的代码在别的电脑上无法直接运行,除非目标机器上也安装了Python解释器,有时候还需要额外安装Python第三方包,相当麻烦。 事实上P…...

pytorch线性回归模型预测房价例子
import torch import torch.nn as nn import torch.optim as optim import numpy as np# 1. 创建线性回归模型类 class LinearRegressionModel(nn.Module):def __init__(self):super(LinearRegressionModel, self).__init__()self.linear nn.Linear(1, 1) # 1个输入特征&…...

练习题 - DRF 3.x Caching 缓存使用示例和配置方法
在构建现代化的 Web 应用程序时,性能优化是一个非常重要的环节。尤其是在使用 Django Rest Framework (DRF) 开发 API 服务时,合理地利用缓存技术可以显著提高应用的响应速度和减轻数据库的负担。DRF 提供了多种缓存机制,包括基于内存、文件系统、数据库以及第三方缓存服务(…...

如何解压7z文件?8种方法(Win/Mac/手机/网页端)
7z 文件是一种高效的压缩文件格式,由 7 - Zip 软件开发者所采用。它运用独特的压缩算法,能显著缩小文件体积,便于存储与传输各类数据,像软件安装包、大型资料集等。但要使用其中内容,就必须解压,因为处于压…...

python学opencv|读取图像(五十)使用addWeighted()函数实现图像加权叠加效果
【1】引言 前序学习进程中,学习了图像互相叠加的不同操作方法,包括add()函数直接叠加BGR值和使用bitwise()函数对BGR值进行按位计算叠加等,相关文章链接包括且不限于: python学opencv|读取图像(四十二)使…...

window中80端口被占用问题
1,查看报错信息 可以看到在启动项目的时候,8081端口被占用了,导致项目无法启动。 2,查看被占用端口的pid #语法 netstat -aon|findstr :被占用端口#示例 netstat -aon|findstr :8080 3,杀死进程 #语法 taikkill /pid…...

06-机器学习-数据预处理
数据清洗 数据清洗是数据预处理的核心步骤,旨在修正或移除数据集中的错误、不完整、重复或不一致的部分,为后续分析和建模提供可靠基础。以下是数据清洗的详细流程、方法和实战示例: 一、数据清洗的核心任务 问题类型表现示例影响缺失值数值…...

电梯系统的UML文档12
5.2.1 DoorControl 的状态图 图 19: DoorControl 的状态图 5.2.2 DriveControl 的状态图 图 20: DriveControl 的状态图 5.2.3 LanternControl 的状态图 图 21: LanternControl 的状态图 5.2.4 HallButtonControl 的状态图 图 22: HallButtonControl 的状态图 5.2.5 CarB…...

萌新学 Python 之运算符
Python 中运算符包括:算术运算符、比较运算符、逻辑运算符、赋值运算符、位运算符、海象运算符 算术运算符:加 减 - 乘 * 除 / 取整 // 求余 % 求幂 ** 注意:取整时,一正一负整除,向下取整 比如 5 // …...

嵌入式知识点总结 Linux驱动 (五)-linux内核
针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。 目录 1.内核镜像格式有几种?分别有什么区别? 2.内核中申请内存有哪几个函数?有什么区别? 3.什么是内核空间,用户空间&…...

zabbix7 配置字体 解决中文乱码问题(随手记)
目录 问题网传的方法(无效)正确的修改方式步骤 问题 zabbix 最新数据 中,图标的中文显示不出。 网传的方法(无效) 网传有一个方法:上传字体文件到/usr/share/zabbix/assets/fonts;修改/usr/…...