计算机网络链路层
数据链路
链路是从一个节点到相邻节点之间的物理线路(有线或无线) 数据链路是指把实现协议的软件和硬件加到对应链路上。帧是点对点信道的数据链路层的协议数据单元。
点对点信道
通信的主要步骤:
- 节点a的数据链路层将网络层交下来的包添加首尾分装成帧。
- 节点a将封好的帧发送给节点b的数据链路层。
- 若节点b收到的帧无差错则从收到的帧中提取出数据,否则将该帧丢弃。
广播信道
局域网的优点:
- 具有广播功能。
- 便于系统的扩展和演变。
- 提高了系统的可靠性、可用性、生存性。
静态划分信道、动态媒体接入控制。
以太网的两个主要标准。
三个基本问题
封装成帧
封装成帧就是在一段数据的前后分别加上首部和尾部。首部和尾部的一个重要作用就是帧定界。每一种链路协议都规定了所传输的帧的数据部分的最大长度——最大传输单元MTU。
透明传输
透明传送数据:不管什么样的比特组合的数据,都能按照原样没有差错的通过数据链路层。
“透明”表示某个存在的事物看起来好像不存在一样。
当传输文件为非ASCII的文本文件时如果数据中的某个字节的二级制代码恰好为控制字符,数据链路层就会错误的把部分帧收下。
解决透明传输的问题是:发送端数据链路层在数据中出现控制字符“SOC”和"EOT"时在SOC和EOT前插入一个转义字符“ESC”,接收端的数据链路层把数据送往网络层之前删除这个转义字符,这叫字符填充或字节填充。
差错检测
在传输过程中可能产生比特差错,即0变成1,1变成0 。传输错误的比特占所有传输的比特总数的比率称之为误码率BER。误码率与信噪比有很大关系。
循环冗余检验CRC
生成步骤
(1)、将x的最高次幂为R的生成多项式G(x)转换成对应的R+1位二进制数。
(2)、将信息码左移R位,相当于对应的信息多项式C(x)*x的R次方。
(3)、用生成多项式(二进制数)对信息码做除,得到R位的余数即冗余码。
(4)、将余数拼到信息码左移后空出的位置,得到完整的CRC码。
循环冗余检验CRC和帧检验序列FCS并不是同一概念。CRC是检错方法,FCS是冗余码。
接收方:冗余码除以除数,余数不为零则该帧有差错丢弃该帧,余数为零可能出错但出错概率小。
缺点:这一种检测方法不知道哪个比特出错。
无比特差错与无传输差错
- 比特差错:帧内部比特位出现错误,可以通过帧的FCS(方法:CRC检验)序列保证无比特差错。
- 传输差错:帧丢失、帧重复、帧失序。
- 在数据链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。(来自CSDN)
点对点协议PPP
特点:
- 简单
- 封装成帧
- 透明性
- 多种网络层协议
- 多种类型链路
- 差错检测
- 检测连接状态
- 最大传送单元
- 网络层地址协商
- 数据压缩协商
不需要的功能
- 纠错
- 序号
- 流量控制
多点线路:只支持点对点链路通信
半双工或单工链路:只支持全双工链路
三个组成部分:
- 一个将IP数据报封装到串行链路的方法。
- 一个链路控制协议。
- 一套网络控制协议。
帧格式
首部和尾部分别为4个字段和两个字段。

首部:
首部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的开始。
首部中的地址字段A规定为0xFF(即11111111)。
首部中的控制字段C规定为0x03(即00000011)。
尾部:
尾部中的第一个字段(2个字节)是使用CRC的帧检验序列FCS。
尾部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的结束。
注:标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果连续出现两个标志字段,就表示这是一个空帧,应当丢弃。(来自CSDN)
为点对点信道的透明传输提供的解决方案
异步传输
当PPP使用异步传输时,它把转移符定义为0x7D,并使用字节填充。
RFC1662规定了如下填充方法:
- 把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
- 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。
- 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。
由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在接收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。
同步传输
当PPP使用同步传输时,使用零比特填充。
零比特填充的具体方法:
- 在发送端先扫描整个信息字段(通常使用硬件实现,但也可以用软件实现,但是会慢一些)。
- 只要发现有5个连续的1,则立即填入一个0。
- 接收端在收到一个帧时,先找到标志字段F以确定帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把5个连续1后的一个0删除,以还原成原来的信息比特流。
因此通过这种零比特填充后的数据,就可以保证在信息字段中不会出现连续6个1。
(来自CSDN)

相关文章:
计算机网络链路层
数据链路 链路是从一个节点到相邻节点之间的物理线路(有线或无线) 数据链路是指把实现协议的软件和硬件加到对应链路上。帧是点对点信道的数据链路层的协议数据单元。 点对点信道 通信的主要步骤: 节点a的数据链路层将网络层交下来的包添…...
VUE3——reactive对比ref
从定义数据角度对比: 。ref用来定义:基本类型数据 。reactive用来定义:对象(或数组)类型数据。 。备注:ref也可以用来定义对象(或数组)类型数据,它内部会自动通过 reactive 转为代理对象。 从原理角度对比: 。ref通过 object.defineProperty()的 get 与set 来实现响应式(数据劫…...
广场舞团系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)
本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssmvue等技术项目合集) 目录 1. 系…...
经典永不过时 Wordpress模板主题
经得住时间考验的模板,才是经典模板,带得来客户的网站,才叫NB网站。 https://www.jianzhanpress.com/?p2484...
QT布局管理和空间提升为和空间间隔
QHBoxLayout:按照水平方向从左到右布局; QVBoxLayout:按照竖直方向从上到下布局; QGridLayout:在一个网格中进行布局,类似于HTML的table; 基本布局管理类包括:QBoxLayout、QGridL…...
Yolo 自制数据集dect训练改进
上一文请看 Yolo自制detect训练-CSDN博客 简介 如下图: 首先看一下每个图的含义 loss loss分为cls_loss, box_loss, obj_loss三部分。 cls_loss用于监督类别分类,计算锚框与对应的标定分类是否正确。 box_loss用于监督检测框的回归,预测框…...
vlan间单臂路由
【项目实践4】 --vlan间单臂路由 一、实验背景 实验的目的是在一个有限的网络环境中实现VLAN间的通信。网络环境包括两个交换机和一个路由器,交换机之间通过Trunk链路相连,路由器则连接到这两个交换机的Trunk端口上。 二、案例分析 在网络工程中&#…...
day4 linux上部署第一个nest项目(java转ts全栈/3R教室)
背景:上一篇吧nest-vben-admin项目,再开发环境上跑通了,并且build出来了dist文件,接下来再部署到linux试试吧 dist文件夹是干嘛的? 一个pnpn install 直接生成了两个dist文件夹,前端admin项目一个…...
学会这几点,是搭建产品知识库的关键
现如今,企业都特别看重产品知识库,因为有了它,企业就能更好地管理产品信息,提升客户服务水平,还能帮企业做决策。但是,搭建一个好用、高效的产品知识库,也难倒了不少人。下面,我们一…...
MySql 常用的聚合函数总结
MySQL 中的聚合函数用于对一组数据进行计算,并返回单个值作为结果。以下是常用的 MySQL 聚合函数的总结及其功能描述: 1. COUNT() 功能:用于计算指定列或表中的行数。 语法: COUNT(*) COUNT(expression) 示例: SELECT …...
Charles for Mac 强大的网络调试工具
Charles for Mac是一款功能强大的网络调试工具,可以帮助开发人员和测试人员更轻松地进行网络通信测试和调试。以下是一些Charles for Mac的主要特点: 软件下载:Charles for Mac 4.6.6注册激活版 流量截获:Charles可以截获和分析通…...
【数据结构】优先级队列——堆
🧧🧧🧧🧧🧧个人主页🎈🎈🎈🎈🎈 🧧🧧🧧🧧🧧数据结构专栏🎈🎈🎈&…...
【力扣】45.跳跃游戏Ⅱ
45.跳跃游戏Ⅱ 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j < n 返回到达 n…...
containerd使用了解
containerd使用了解 yum安装 [rootvm ~]# curl -o /etc/yum.repos.d/docker.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [rootvm ~]# yum list | grep containerd containerd.io.x86_64 1.6.28-3.1.el7 doc…...
gateway 分发时若两个服务的路由地址一样,怎么指定访问想要的服务下的地址
1.思路 在使用Spring Cloud Gateway时,如果两个服务的路由地址相同,可以通过Predicate(断言)和Filter(过滤器)的组合来实现根据请求的不同条件将请求分发到不同的服务下的地址。 使用Predicate进行路由条件…...
【LeetCode】三月题解
文章目录 [2369. 检查数组是否存在有效划分](https://leetcode.cn/problems/check-if-there-is-a-valid-partition-for-the-array/)思路:代码: [1976. 到达目的地的方案数](https://leetcode.cn/problems/number-of-ways-to-arrive-at-destination/) 思路…...
云手机:实现便携与安全的双赢
随着5G时代的到来,云手机在各大游戏、直播和新媒体营销中扮演越来越重要的角色。它不仅节约了成本,提高了效率,而且在边缘计算和云技术逐渐成熟的背景下,展现出了更大的发展机遇。 云手机的便携性如何? 云手机的便携性…...
fast_bev学习笔记
目录 一. 简述二. 输入输出三. github资源四. 复现推理过程4.1 cuda tensorrt 版 一. 简述 原文:Fast-BEV: A Fast and Strong Bird’s-Eye View Perception Baseline FAST BEV是一种高性能、快速推理和部署友好的解决方案,专为自动驾驶车载芯片设计。该框架主要包…...
Collection与数据结构链表与LinkedList(三):链表精选OJ例题(下)
1. 分割链表 OJ链接 class Solution {public ListNode partition(ListNode head, int x) {if(head null){return null;//空链表的情况}ListNode cur head;ListNode formerhead null;ListNode formerend null;ListNode latterhead null;ListNode latterend null;//定义…...
05 | Swoole 源码分析之 WebSocket 模块
首发原文链接:Swoole 源码分析之 WebSocket 模块 大家好,我是码农先森。 引言 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时数据传输。 与传统的 HTTP 请求-响应模型不同,WebSocket 可以保持…...
Java 25并发模型重构实战:用StructuredTaskScope替代CompletableFuture组合的4种高危写法(附JFR火焰图对比)
第一章:Java 25结构化并发演进全景图Java 25正式将结构化并发(Structured Concurrency)从孵化阶段(JEP 428、437、444)升级为标准特性,标志着JVM平台在并发模型抽象上完成关键跃迁。该机制通过作用域&#…...
MAX30102传感器寄存器深度解析与实战配置指南
1. MAX30102传感器核心功能解析 MAX30102是一款集成了红光和红外光LED的光学传感器,专门用于非侵入式心率监测和血氧饱和度(SpO2)测量。这个火柴盒大小的芯片内部藏着精密的模拟前端和数字信号处理单元,能够捕捉到人体脉搏带来的微弱光信号变化。 我第一…...
保姆级教程:STM32F103开发第一步,搞定Keil5安装、激活与芯片包(附资源包)
STM32F103开发环境搭建全指南:从Keil5安装到芯片包配置 引言:为什么选择Keil MDK进行STM32开发 对于刚接触STM32微控制器的新手来说,开发环境搭建往往是第一个"拦路虎"。Keil MDK(Microcontroller Development Kit&…...
贾子公理体系全场景应用白皮书——从底层逻辑根服务器到数字政府、金融、AI等十大领域落地
GG3M贾子公理体系:一套底层公理贯通十大全场景应用落地副标题: 贾子公理体系全场景应用白皮书——从底层逻辑根服务器到数字政府、金融、AI等十大领域落地摘要: 贾子公理体系是GG3M项目的底层逻辑根服务器,以自洽可演绎的公理系统…...
别再写重复代码了!手把手教你用StringRedisTemplate搞定Shop-Type缓存(附完整代码)
告别重复劳动:基于StringRedisTemplate的Shop-Type缓存通用方案设计 在电商系统开发中,店铺分类(Shop-Type)这类基础数据的缓存处理几乎每个项目都会遇到。许多开发者习惯在每个Service中重复编写相似的缓存逻辑——序列化、反序列化、缓存判空、数据库回…...
DanKoe 视频笔记:阅读:改变你生活的简单习惯:概述与引言
https://github.com/OpenDocCN/wealth-notes-zh/raw/master/docs/dankoe/img22971bb5176092c90f7464d7a7aa6e45.png 在本节课中,我们将学习如何通过培养阅读习惯来深刻地改变你的生活。我们将探讨阅读的重要性、如何选择书籍、如何有效阅读,以及如何将阅…...
SMUDebugTool硬件调试工具全解析:从问题定位到安全实践
SMUDebugTool硬件调试工具全解析:从问题定位到安全实践 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…...
BGE Reranker-v2-m3开发者案例:为LangChain添加本地重排序节点的5步集成法
BGE Reranker-v2-m3开发者案例:为LangChain添加本地重排序节点的5步集成法 1. 项目背景与核心价值 在构建检索增强生成(RAG)系统时,文本相关性排序是决定最终效果的关键环节。传统的基于向量相似度的检索往往无法准确捕捉查询与…...
CAN FD通信中,如何用AUTOSAR配置搞定TDC和SSP?一个80% Offset的实战案例
CAN FD通信中AUTOSAR配置实战:TDC与SSP的80% Offset实现 在汽车电子领域,CAN FD(Controller Area Network Flexible Data-rate)正逐步取代传统CAN总线,成为车载网络的主流选择。随着数据传输速率提升至2Mbps甚至更高&a…...
如何突破抖音内容保存限制?开源工具douyin-downloader的创新解决方案
如何突破抖音内容保存限制?开源工具douyin-downloader的创新解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容爆炸的时代,抖音已成为知识传播与创意展示的重要平台。…...
