当前位置: 首页 > news >正文

数据链路层——计算机网络学习笔记三

  • 使用点对点信道的数据链路层

    • 前言:

      • 1.数据链路层的重要性:网络中的主机、路由器都必须实现数据连输层; 2.数据链路层中使用的信道: 点对点信道:这种信道是一对一的通信方式; 广播信道:使用一对多的通信方式

    • 数据链路和帧(解释基本概念)

      • 链路(也称:物理链路):一条无源的点到点的物理线路段,中间没有其他交换节点,是一条通路的一个组成部分

      • 数据链路:数据传输除了要有物理线路,还需要通信协议来控制。把实现这些协议的硬件和软件加到链路上,就构成了数据链路层。现在一般常用网卡(适配器)来实现这些功能,适配器上包括了数据链路层和物理层这两次功能。

      • 所谓帧,就是在数据链路层上传输的数据单元

    • 三个基本问题

      • 如何封装成帧?

        • 所谓“封装成帧”就是在一段数据的前后分别添加首部和尾部。这样做的一个作用就是用来进行帧定界,表示这是一帧的开始和节数,通常把控制字符SOH放在最前面,表示帧的首部开始,EOT放在最后面,表示帧的结束

      • 如何实现透明传输?

        • 所谓“透明”,就是某一实际存在的事物看起来却显示不存在一样。例如:当发生数据是非ASCII码的文件时,数据中的某个字节的二进制可能恰好和SOH,EOT这样的控制字符一样,我们要让它不被识别为帧边界,顺利的通过数据链路层。换句话说:无论什么样的比特组合的数据,都能按照原样没有差错地通过数据链路层,此时数据链路层对这些数据来说就是透明的,而这样的传输就是透明传输

        • 当出现上述问题的解决方法:数据中的“SOH‘或;EOT”前面插入一个转义字符“ESC”,如果转义字符也在数据里,那就在转义字符前面再插入一个转义字符。这就是所谓“字节填充”的方法

      • 如何实现差错控制?

        • 循环冗余检验CRC

          • 计算方法: 1.在数M后面添n个0; 2.得到的数,除以实现选好的除数P(除的方法是进行模二运算,相同为0,相异为0),得到的余数R为n位; 3.将余数作为冗余码拼接在数据M后面一起发出去。

          • 检验:如果接收端得到的数除以P,得到的余数是0,就代表这个帧没有差错;如果≠0,就判定这帧有差错,就丢弃。

        • 帧检验序列FCS:在数据后面添加冗余码的方法称为帧检验序列FCS。CRC是FCS中的一种方法。

  • 点对点协议PPP(Point-to-Point Protocol)

    • PPP协议的应满足的需求

    • 组成

      • 1.将IP数据包封装到串行链路发方法;

      • 2.链路控制协议LCP

      • 3.网络控制协议NCP

    • PPP协议的帧格式

      • F:标志字段; A(不重要) C:控制字段

    • 透明传输问题

      • 异步传输——字符填充法(将某个字节转变为2字节序列)

      • 同步传输——比特填充法(发送端,5个连续的1,就填入一个0,接受段,5个连续的1,就把后面的0删除)

    • PPP协议的工作状态

  • 使用广播信道的数据链路层

    • 局域网的数据链路层

      • 局域网的特点:网络为一个单位所有,且地理范围和站带你数目均有限

      • 局域网的拓扑结构

      • 由于局限在较小的范围,网络节点较少,局域网使用共享信道的方式进行通信。但是共享信道带也存在着一个问题——若多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败,后面介绍的以太网技术就是解决这个问题的一种技术。

      • 数据链路层的两个子层:局域网的数据链路层可以拆分成两个子层:逻辑链路控制LLC层(已经不重要了)和媒体接入控制MAC层(与接入到传输媒体的内容有关)

      • 上面我们提到过,计算机与外界局域网的连接是通过适配器来完成的,通过这张图,我们来跟深入的看看计算机是如何通过适配器与局域网进行通信的

    • CSMA/CD协议

      • 问题的由来:最初的以太网是将许多的计算机都连接到一根总线上,以1便于实现广播通信,,但是当多台计算机或多个站点同时发送时,会产生发送碰撞或冲突,导致发送失败,为了避免同时发送产生的碰撞,于是就诞生了CSMA/CD协议

      • CSMA/CD:载波监听多点接入/碰撞检测

        • 载波监听:每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有就暂时不发送数据,以免发送碰撞。

        • 碰撞检测:计算机边发送数据边检测信道上的信号电压的大小,当检测到信道电压的摆动值超过某一个门限值时,就认为总线上至少有两个站同时在发送数据。 之所以除了载波监听,还需要碰撞检测,是因为当信道空闲时,有可能有多个计算机同时发送数据,这是就有可能发送碰撞,所以需要碰撞检测

        • 基本概念

          • 争用期:最先发送数据帧的站,在发送数据帧后至多经过时间2τ(2倍端到端往返时延)就可以知道发送数据是否遭受碰撞。我们把2τ成为争用期。 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发送碰撞。

          • 最短有效帧长:10Mbit/s以太网,在争用期可以发送512bit,即64字节,这意味这发送数据数若前64字节没有发生冲突,则后续的数据就不会发送冲突。也意味着凡是小于64字节的帧都是由于冲突而异常终止的无效帧。因此规定74字节为最短有效帧长

        • 退避算法:发送碰撞的站在停止发送数据,要推迟一个随机时间才能再次发送数据。时间=2τ*r;r是从集合中随机取出的一个数,

    • 使用集线器的星型拓扑

      • 上述的是传统的总线型以太网,下面讲述的星型以太网 其中特别要注意的一点就是在星型的中心增加了一种可靠性很高的设备——集线器(Hub)。使用集线器的以太网在逻辑上仍然是一个总线网,各工作站之间使用的还是CSMA/CD协议,并共享逻辑上的总线。 这种 10 Mbit/s 速率的无屏蔽双绞线星形网的出现,既降低了成本又提高了可靠性。 具有很高的性价比。从此以太网的拓扑就从总线形变为更加方便的星形网络,而以太网也就在局域网中占据了统治地位。

    • 以太网的信道利用率

      • 这里主要介绍两个参数,同时通过回顾上面的内容探讨,什么对信道的利用率产生了影响。 通过上面的探讨,我们知道了,当多个站在以太网同时工作就会发生碰撞。而一旦发生碰撞,这段时间的信道资源就是被浪费了(因为没有一个站完整地发送了一帧数据)。 假设帧长为L,数据发送速率为C,则帧发送时间为T0=L/C,那么一个帧成功发射的事件就是T=T0+τ。 可以看到,要提高以太网的信道利用率,就需要减小τ和T0之比。

      • 在以太网中定义了参数α=τ/T0,当α趋近于0时,就表示一发生碰撞就可以立即检测出发,并停止发送,因而信道利用率高

      • 信道利用率的最大值

    • 以太网的MAC层

      • MAC层的硬件地址

        • 在局域网中,硬件地址有被称为物理地址,或MAC地址,而所谓的地址,其实就是每一个站的“名字”或者说标识符。在接受数据的时候,我们通过确认目的地址是不是本站的标识符来核对这是否是本站的数据。

        • MAC层有6个字节,48位的地址。通过图可以看到,我们把6个字节分成两部分,前面是IEEE想厂家分配的称为组织唯一标识符,后面3字节是厂家自行指派的。 第一个字节的最低位是I/G为,它用来表示这个地址是单站地址、组地址还是广播地址;当I/G位=0,表示一个单站地址,当I/G=1,表示组地址,用来进行多播(一对多);当所有48位都是1时,为广播地址(一对所有)。 第一字节的倒数第二位是G/L位,G/L=0,是全球管理;G/L=1,是本地管理,用户可任意分配网络上的地址。

      • MAC帧的格式

        • 以太网有两种MAC帧格式,一种是DIX Ethernet V2标准;一种是IEEE的802.3标准。最常用的事以太网V2格式,下面主要介绍V2格式。

        • 可以看到,前面6个字节是目的地址字段,第二个6个自己是源地址字段; 第3个部分,表示类型字段,用来标志上一层使用的是什么协议,以便收到的MAC帧的数据交给上一层协议 第4部分就是数据,数据字段的最小长度=有效帧长64-18字节的首部尾部=46字节。当数据字段的长度小于46字节是,就会在数据字段加上整数字节的填充字段,以保证帧长不小于64字节。

        • 在以太网的传输中,还有帧间最小间隔的概念,帧间最小间隔为9.6us,它的含义是:一个站在检测到总线开始空闲后,还要等待9.6us才能再次发送数据。 这样做事为了使刚刚收到数据帧的站有时间来清理接受缓存,为接受下一帧做好准备。

  • 拓展的以太网

    • 在物理层拓展以太网

      • 之前我们一直在谈及“以太网”这么一个概念,但是一直都没有给出关于它的清楚的解释,下面给出一种关于以太网的介绍: 以太网(Ethernet)是一种常见的局域网(LAN)技术,用于在局域网中传输数据。 它基于共享介质的方式进行数据传输,通常使用双绞线、光纤或无线信道作为物理传输介质。 以太网采用CSMA/CD协议来控制数据的传输,允许多个计算机和设备连接在同一个局域网中,并通过唯一的物理地址(MAC地址)来标识和寻址每个节点。 数据在以太网中以数据帧的形式进行传输,支持不同的速率,包括10 Mbps、100 Mbps、1 Gbps甚至更高的速率。 总之,以太网是一种简单、可靠、成本效益高的局域网技术,被广泛用于各种应用场景,为用户提供了高效、快速、可靠的数据通信服务。

      • 基本概念:

        • 碰撞域:网络中一个站点发出的帧回遇其他站点发出的帧发生碰撞的那部分网络

      • 在物理层拓展以太网有两种方案,一种是使用光纤拓展,还有一种就是使用集线器拓展

        • 优点:原本属于不同碰撞域的以太网的计算机能够进行跨碰撞域的通信,同时扩大了以太网覆盖的地理范围; 缺点:碰撞域增大了,但总的吞吐量并未提高;如果不同碰撞域的数据率不同,就不能用集线器将他们相连。

    • 在数据链路层拓展以太网

      • 这一部分出现的基本概念:

        • 广播域:它指的是这样一部分网络,其中任何一台设备发出的广播通信都能被改部分网络中的其他设备所接受。

        • 网桥:一种网络设备,用于连接两个或多个局域网(LAN),并在它们之间传输数据。 网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发和过滤——当网桥收到一个帧时,先检查这个帧的目的MAC地址,然后再确定将该帧转发到哪一个接口或丢弃。

        • 交换机:实质就是一个多接口的网桥,一般都工作在全双工方式,能同时连通多对接口,使多对主机能同时通信。

      • 在数据链路层拓展以太网再起使用网桥,现在多使用交换机,下面主要介绍关于交换机的内容

        • 交换机的特点: 1.接口有存储器,能在输出口繁忙时把到来的帧进行缓存; 2.它是一种即插即用的设备,内部用于转发地址的“帧交换表”是通过自学习算法自动地逐渐地建立起来的; 采用以太网交换机的星型以太网,其每个接口都处于独立的碰撞域,但所有计算机都处于同一个广播域。

        • 优点:用户独享带宽,增加了总容量;具有多种速率的接口,方便接入各种不同情况的用户。

        • 自学习算法: 1.开始时,表是空的; 2.首先A先B发送一帧,改帧从接口1进入交换机,交换机收到改帧后,先查找交换表,没有查到应从哪个接口转发就先把这个帧的源地址A和接口1写入交换表 3.向除接口1以外的所有接口广播这个帧,等待目的地址B向A发送一个帧,然后查找表A,发送给接口1.之后把源地址B和接口3也写入交换表

        • 考虑到有时要在交换机的接口更换主机,或者其他可能需要更改交换表中项目的操作,交换表中每个项目都设有一定的有效时间,过期的项目就自动删除。

    • 虚拟局域网

      • 虚拟局域网的定义:虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求,每一个VLAN的帧都有明确的标识符,指明发送这个帧的计算机属于哪一个VLAN。 进一步的理解:VLAN就是用户和网络资源的逻辑组合,可以按照需要将有关资源和设备重新组合,使用户从不同的服务器或数据库中存取所需的资源

      • 划分虚拟局域网的方法(这里不过多的介绍,理解上面的基本的概念和原理就行了,等用到的时候再去学习划分方法会更有效率)

      • 虚拟局域网使用的以太网帧格式:在原来的帧格式中插入4字节的标识符VLAN tag,用来指明该帧属于哪一个虚拟局域网。这样插入VLAN标记的帧成为802.1Q帧

  • 高速以太网

    • 最后这一部分主要就是很浅地,简要地介绍一下下面的各种技术,不用过度深究,真的用到这不分内容再学就行

    • 100BASE-T以太网

    • 吉比特以太网

    • 10吉比特和更快的以太网

    • 使用以太网进行宽带接入

相关文章:

数据链路层——计算机网络学习笔记三

使用点对点信道的数据链路层 前言: 1.数据链路层的重要性:网络中的主机、路由器都必须实现数据连输层; 2.数据链路层中使用的信道: 点对点信道:这种信道是一对一的通信方式; 广播信道:使用一对多…...

leetcode——反转链表

206. 反转链表 - 力扣(LeetCode) 思路:创建三个指针n1,n2,n3,遍历原链表,通过三者之间的关系将链表反转。下面给出图示: 下面给出题解代码: typedef struct ListNode ListNode; struct List…...

类加载机制(双亲委派机制)

文章目录 JVM的作用是什么双亲委派机制加载流程 JVM的作用是什么 我们运行Java程序时,要安装JDK,JDK包含JVM,不同环境的JDK都是不同的。 Java 代码在编译后会形成 class 的字节码文件,该字节码文件通过 JVM 解释器,生…...

nss刷题(2)

1、[NSSCTF 2022 Spring Recruit]ezgame 打开题目是一个游戏界面 发现是有分数的,猜测分数达到某个之后可以获得flag,查看源码看一下 看到末尾显示分数超过65后显示flag 在js中找到了一个score,将他的值改为大于65的数后随意玩一次就可以得到flag同时&a…...

2024 年“泰迪杯”A 题:生产线的故障自动识别与人员配置--第四题(用遗传算法解决生产线排班问题--matlab代码)

问题背景: 问题四:根据实际情况,现需要扩大生产规模,将生产线每天的运行时间从 8 小时增加 到 24 小时不间断生产,考虑生产线与操作人员的搭配,制定最佳的操作人员排班方案,要求满足以下条件&am…...

资产公物仓管理系统|实现国有资产智能化管理

1、项目背景 资产公物仓管理系统(智仓库DW-S201)是一套成熟系统,依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 项目设计原则 方案对公物仓资…...

实用的 Google Chrome 命令

以下是一些实用的 Google Chrome 命令: chrome://version - 显示 Chrome 浏览器的详细信息,包括版本号、用户代理和命令行参数等。 chrome://flags - 打开 Chrome 实验性功能页面,可以启用或禁用各种实验性功能。请注意,这些功能…...

动态规划算法:⼦数组、⼦串系列(数组中连续的⼀段)

例题一 解法(动态规划): 算法思路: 1. 状态表⽰: 对于线性 dp ,我们可以⽤「经验 题⽬要求」来定义状态表⽰: i. 以某个位置为结尾,巴拉巴拉; ii. 以某个位置…...

2010年认证杯SPSSPRO杯数学建模D题(第一阶段)服务网点的分布全过程文档及程序

2010年认证杯SPSSPRO杯数学建模 D题 服务网点的分布 原题再现: 服务网点、通讯基站的设置,都存在如何设置较少的站点,获得较大效益的问题。通讯基站的覆盖范围一般是圆形的,而消防、快餐、快递服务则受到道路情况和到达时间的限…...

docker-compose 安装ZLMediaKit,ffmpeg、VLC实现推流并播放

1、目录(创建conf文件夹,777权限) 二、docker-compose.yml version: "3.9"services:zlmediakit:image: zlmediakit/zlmediakit:mastercontainer_name: zlmediakitprivileged: true# 指定加载配置# command: /opt/media/bin/MediaS…...

|Python新手小白中级教程|第二十八章:面向对象编程(类定义语法私有属性类的继承与多态)(4)

文章目录 前言一、类定义语法二、私有方法和私有属性1.私有属性2.私有方法 三、类“继承”1.初识继承2.使用super函数调用父类中构造的东西 四、类“多态”1.多态基础2.子类不同形态3.使用isinstance函数与多态结合判断类型 总结 前言 大家好,我是BoBo仔吖&#xf…...

vue项目基于WebRTC实现一对一音视频通话

效果 前端代码 <template><div class"flex items-center flex-col text-center p-12 h-screen"><div class"relative h-full mb-4 fBox"><video id"localVideo"></video><video id"remoteVideo">…...

web 基础之 HTTP 请求

web 基础 网上冲浪 就是在互联网(internet)上获取各种信息&#xff0c;进行工作&#xff0c;或者娱乐&#xff0c;他的英文表示surfing the Internet&#xff0c;因 “surfing”d的意思是冲浪&#xff0c;即成为网上冲浪&#xff0c;这是一种形象说法&#xff0c; 也是一个非…...

嵌入式 - GPIO编程简介

An Introduction to GPIO Programming By Jeff Tranter Wednesday, June 12, 2019 编者按&#xff1a;本 2019 年博客系列是 ICS 最受欢迎的系列之一&#xff0c;现已更新&#xff08;2022 年 12 月&#xff09;&#xff0c;以确保内容仍然准确、相关和有用。 本博客是 Integr…...

8种区块链开发者必须知道的顶级编程语言!

我来问你一个问题&#xff1a;请说出一种技术&#xff0c;它以去中心化、不可篡改和透明性等核心特征席卷了全球。 这个问题的答案是&#xff0c;当然是区块链&#xff0c;它在近些年进入大家的视野并颠覆了工商业&#xff0c;没有任何其他技术能够做到这一点。 预计从2020年…...

十三、Redis哨兵模式--Sentinel

上一篇介绍了Redis中的主从复制。我们知道Redis主从中一般只有主节点对外提供写操作&#xff0c;如果主节点发生故障&#xff0c;为了保证Redis的可用性&#xff0c;这时就要在可用的slave节点中&#xff0c;挑选一个作为主节点。这种切换操作如果是人为的操作&#xff0c;那么…...

[力扣题解]1005. K 次取反后最大化的数组和

题目&#xff1a;1005. K 次取反后最大化的数组和 思路 贪心法&#xff1b; 用绝对值大小排序&#xff0c;自己写一个比较函数&#xff0c; static bool compare(int a, int b) {return abs(a) > abs(b); }注意这样写出来是降序排列&#xff1b; 代码 class Solution {…...

Web UI自动化测试--PO模式

没有PO实现的测试用例的问题: 重用性低:登录功能重复可维护性差:数据和代码混合可读性差:元素定位方法杂乱(id、xpath、css混杂)可读性差:不易识别操作的含义(特别是css和xpath语法)可维护性差:如果某个元素的属性改了,你要更改多次PO(Page Object Model)页面对象模型…...

Python进阶之-反射机制详解

✨前言&#xff1a; 什么是反射&#xff1f; Python中的“反射”是一个编程术语&#xff0c;它指的是程序在运行时能够检查和操作其自身状态的能力&#xff0c;特别是通过名称&#xff08;通常是字符串&#xff09;来访问对象的属性、方法和其他组成部分。这种机制允许代码动态…...

day05-面向对象内存原理和数组

day05 面向对象内存原理和数组 我们在之前已经学习过创建对象了,那么在底层中他是如何运行的。 1.对象内存图 1.1 Java 内存分配 Java 程序在运行时&#xff0c;需要在内存中分配空间。为了提高运算效率&#xff0c;就对空间进行了不同区域的划分&#xff0c;因为每一片区域…...

从头理解transformer,注意力机制(下)

交叉注意力 交叉注意力里面q和KV生成的数据不一样 自注意力机制就是闷头自学 解码器里面的每一层都会拿着编码器结果进行参考&#xff0c;然后比较相互之间的差异。每做一次注意力计算都需要校准一次 编码器和解码器是可以并行进行训练的 训练过程 好久不见输入到编码器&…...

ORA-609频繁出现在alert.log,如何解决?

ORA-609就alertlog中比较常见的一个报错&#xff0c;虽然并没有太大的影响&#xff0c;但是频繁的出现在alert log也是很让人厌烦的事情&#xff0c;本文介绍如何排查解决ORA-609问题。 1.ORA-609官方定义 could not attach to incoming connection Cause Oracle process cou…...

JVM 类加载机制

JVM 类加载机制分为五个部分&#xff1a;加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化&#xff0c;下面我们就分别来看一下这五个过程。 加载 加载是类加载过程中的一个阶段&#xff0c;这个阶段会在内存中生成一个代表这个类的 java.lang.class 对…...

亲测-wordpress文章实时同步发布修改删除多个站点的WP2WP插件

一款将wordpress文章同步到其他WordPress网站的插件&#xff0c;通过这款插件&#xff0c;可以保持不同博客之间文章发布、修改、删除的同步。 安装步骤&#xff1a; 主站和分站都要上传这个插件 1.把插件上传到wp-content\plugins解压出来wp2wp文件夹&#xff0c;然后启用插…...

npm无法安装node-sass 的问题

安装 node-sass 的问题呈现&#xff1a;4.9.0版本无法下载 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-72_binding.node Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-…...

springboot 引入第三方bean

如何进行第三方bean的定义 参数进行自动装配...

安装Nginx

如果没有gcc环境&#xff0c;需要安装gcc yum install gcc-c安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel工作目录 mkdir /opt/nginx && cd /opt/nginx下载安装包 wget http://nginx.org/download/nginx-1.32.1.tar.gz解压安装包…...

爬虫工具you-get

you-get是一个简单易上手的爬虫小工具&#xff0c;可以从网络中爬取多媒体信息&#xff0c;包括图片、音频和视频。you-get的github项目地址为&#xff1a;https://github.com/soimort/you-get 一、安装 以下为相关依赖&#xff0c;需要分别安装&#xff1a; Python 3 (必须…...

hal_stm32_RTC函数

1设置当前时间&#xff1a; 调用 HAL_RTC_SetTime 来设置小时、分钟、秒和亚秒。 调用 HAL_RTC_SetDate 来设置年、月、日和星期。 HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); HAL_StatusTypeDef HAL_RTC_SetDat…...

【大数据·Hadoop】从词频统计由浅入深介绍MapReduce分布式计算的设计思想和原理

一、引入&#xff1a;词频统计问题 假如我们有一亿份文档&#xff0c;需要统计这一亿份文档的词频。我们会怎么做&#xff0c;有以下思路 使用单台PC执行&#xff1a;能不能存的下不说&#xff0c;串行计算&#xff0c;一份一份文档读&#xff0c;然后进行词频统计&#xff0…...