计算机网络(三) | 数据链路层 PPP协议、广播CSMA/CD协议、集线器、交换器、扩展and高速以太网

文章目录

  • 1 数据链路基本概念和问题
    • 1.1 基本概念
    • 1.2 基本问题
      • (1)封装成帧
      • (2)透明传输
      • (3)差错控制
  • 2.数据链路层协议
    • 2.1 点对点 PPP协议
      • 2.1.1 需要实现的
      • 2.1.2 PPP组成
      • 2.1.3 帧格式
      • 2.1.4 工作流程
    • 2.2 广播 CSMA/CD协议
      • 2.2.1 协议要点
    • 2.3 集线器,交换器
      • 集线器
      • MAC地址
      • MAC帧格式
  • 3 扩展以太网
    • 3.1 物理层扩展方式
    • 3.2 数据链路层扩展方式
      • 3.2.1 交换机的自学功能
    • 3.3 虚拟局域网
  • 4 高速以太网
    • 4.1 100BASE-T
    • 4.2 吉比特以太网

内容笔记来源于谢希任老师《计算机网络》

重点

理解MAC地址

理解交换机

理解VLAN

理解高速以太网

数据链路是计算机网络的底层

1 数据链路基本概念和问题

1.1 基本概念

链路 或者叫物理链路 是一段点到点的物理线段(有线或者无线)中间没有任何其他交换结点

一条链路只是一条通路的组成部分

数据链路 或者叫数据链路 在链路的基础上加上控制协议和实现协议的软件和硬件在这里插入图片描述

​ 现在最常用的是使用适配器(网卡)来实现这些协议的硬件和软件,一般的适配器都包括了数据链路层和物理层的功能

​ 数据链路使用的信道主要有以下两种类型

  1. 点对点信道,使用PPP协议
  2. 广播信道,使用CSMA/CD协议

1.2 基本问题

对于数据链路层而言,以下三个问题很重要

(1)封装成帧

我们知道,互联网上传输数据都以分组(即IP数据报)为传输单位进行传输,所以到了底层数据链路层也得保证不混淆不同的IP报

所以封装成帧就是在网络层的IP数据报上加上首部和尾部,构成帧

那么首部和尾部有什么作用呢?

最重要的

  • 我们首部和尾部的重要作用就是进行帧定界,通俗来讲就是 区分一个帧和另一个帧(核心目的就是为了不让IP数据报混淆)
  • 首部和尾部包含一些控制信息

所以综合来看,一个帧包括的内容有,我们要传输的数据,和首部尾部

那么为了提高传输效率,要尽可能使得传输数据部分长度大于首部尾部的长度,但每一种数据链路协议都规定了数据部分的长度上限——称为最大传输单元MTU

数据链路层传送的是 帧是传输数据的单位

解决方式 用控制字符进行

(2)透明传输

传播的数据部分出现控制字段,如开始和结束

如果不做处理的话,会导致接收方误以为提前结束,这个数据部分的EOS应该不被接收方看见

即应该被认为是透明的,所以叫他为透明传输

实现的方式是怎样的呢?

解决方式 通过字节填充解决.数据中出现控制字符的时候,前面加入一个转义字符“ESC” 十六进制编码1B

可能问题

就是IP层交付的数据和DL数据链路层实际传输的数据不一样

(3)差错控制

在传输过程中不可能一点都不出错,如0变成1,1变成0,这就叫做比特差错。对于差错我们的解决方式是

目前采用较多的是循环冗余检测方法CRC

发送端

原始数据M,进行n位冗余码,商定一个除数P(位数n+1),

1 原始数据M后面加n个零做被除数D

2 D除以P得到的余数(该余数又叫帧检验序列FCS)加在M后面

接收端

得到的信息除以除数P,余数为0,接受,否则丢弃

注意我们上面讲到的是比特差错,CRC仅能排查比特差错

实际上除了比特差错,还有其他差错,就是帧丢失,帧重复和帧失序

其中我们要注意的是仅仅排除比特差错是不够的,实现了无比特差错的传输叫做无差错传输

但是只有排除了所有错误,如帧丢失,帧重复和帧失序之后才能叫做可靠传输,即发送什么就收到什么

这些排除错误的方法(帧编号,确认和重传机制)是往往是更高层来实现的

2.数据链路层协议

2.1 点对点 PPP协议

使用最多的是点对点协议PPP

我们前面反复提到互联网用户如果想要连入互联网,必须连接到某个ISP,其中我们的PPP协议广泛应用于本地计算机和ISP的数据链路层的通信

2.1.1 需要实现的

PPP协议需要实现的一些功能

那么除了我们刚才讲到的 封装成帧,透明传输,差错检测这些基本问题,还实现了简单高效,支持多种网络层协议,支持多种类型链路,检测连接状态,数据压缩算法的协商

2.1.2 PPP组成

一个将IP数据报封装到串行链路的方法,是同步还是异步

一个链路控制协议LCP(建立,配置,和测试数据链路的连接

一套网络控制协议NCP(支持多种网络层协议)

2.1.3 帧格式

开始结束字段 F=0x7E 1字节

地址字段 A=0xFF 因为是点对点,所以设置就维持不变 1字节

控制字段 C=0x03 1字节

开始结束和地址字段,控制字段实际上没有携带什么信息。他是最初设计的时候考虑之后可能会用到,但目前为止也没有用到

协议字段 不同值代表不同协议 2字节

如0x0021时,是IP数据报,若为0xC021 ,则为LCP数据报

信息字段 要传输的IP数据报或,链路控制数据,网络控制数据等

检验字段 FCS

a

对于透明传输问题

异步传输方法是——字节填充法

​ 当信息字段中出现和标志字段一样的比特(0x7E)组合时,在前面添加转义字符0x7D,同时把0x7E变为0x5E传输。整体变为(0x7D,0x5E)传输

​ 当信息字段出现转义符(0x7D)的时候,在前面再添加一个转义字符0x7D,同时把0x7D变为0x5D传输。整体变为(0x7D,0x5D)传输

​ 当信息中出现ASCLL控制码时候,也同理

同步传输方法是——零比特填充法

发送端,先扫描整个信息字段(往往硬件实现)只要发现有5个连续的1,则立即填入一个0,因此经过这种比特的填充后,信息字段就不会出现6个1 的情况

接收端,首先找到标志字段F确定边界,然后用硬件对内部比特流扫描去掉0

2.1.4 工作流程

建立工作状态

  1. 用户拨号接入ISP后,建立了一条从用户个人电脑到ISP的物理连接
  2. 用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了一些将要选择的PPP参数
  3. 进行网络层配置,NCP给新接入的用户分配一个临时IP,正式接入互联网

通信完毕

  1. NCP释放网络层连接,收回去分配出去的IP
  2. LCP释放数据链路层连接
  3. 释放物理层连接

2.2 广播 CSMA/CD协议

接下来重点讨论局域网部分的一对多通信,其中以太网可以看成是一种实现局域网通信的技术标准(目前逐渐大家把它当作局域网的同义词。以太网的拓扑结构有环形的,星形的等等。局域网主要用双绞线,速率更高

开始之前,先探讨一个问题——我们本地的计算机是怎么连到局域网的?

其中一个关键部件是适配器(网卡)

适配器是什么

适配器

网络接口板子又称作通信适配器或者网卡

他的核心作用如下

适配器的功能

​ 进行串行并行转换

​ 对数据进行缓存

​ 在计算机的操作系统安装设备驱动程序

​ 实现以太网协议

计算机通过适配器和局域网进行通信

好的,我们已经了解了连接到局域网的关键设备,适配器

接下来一个重要问题就是,多用户如何共享信道资源,一般两种方式

  1. 静态划分信道——频分复用,时分复用,码分复用等代价价高, 不适合于这个局域网

  2. 动态媒体接入控制——又称为多点接入,信道并非在用户通信时固定分配给用户,这里又分为两类

  • 随机接入:即所有用户可以随机地发送信息,如果恰巧有两个用户在同一时刻发送信息,那么在共享媒体上就要发生碰撞,使得用户的发送都失败。因此,必须有解决碰撞的网络协议

  • 受控接入:用户不能随机的发送信息,而必须服从一定的控制,这类的典型代表有分散控制令牌环局域网和集中控制的多点线路探询,或轮询

由于局域网信道质量比较高(距离短),所以设计的时候要尽可能的简单

为此,局域网采取了如下的措施

  1. 以太网提供的是无连接(不必先建立连接就可以直接发送数据)的不可靠(对发送的数据帧不进行编号,不要求确认)服务,以太网采用CSMA/CD协议,意味着载波监听多点接入\碰撞检测

  2. 以太网的数据采用曼彻斯特编码

2.2.1 协议要点

半双工通信

多点接入 表示计算机以多点的方式连接在一根总线上

载波监听 每一个站点在发送数据前先检测一下总线上有没有其他计算机在发送数据

载波监听的问题

监听到空闲的其实并不一定是空闲的哦!所以需要碰撞检测

以太网端到端往返时延的两倍2t称为争用期或碰撞窗口,如果这段时间还没有检测到碰撞,这次发送就不会碰撞,当发送碰撞后,还会发送强化碰撞,即人为发送干扰信息,保证所有用户都知道已经发生了碰撞

碰撞检测 检测到碰撞后立即停止发送,继续发送人为干扰信号(以便让所有用户知道发生了碰撞)等待一段随机时间后发送。

那么这个随机时间如何计算呢? 随机时间计算

1 基本退避时间为争用期2t (以太网取51.2us为争用期)

2 从整数集合 [ 0 , 1 , 2 , . . . , ( 2 k − 1 ) ] [0,1,2,...,(2^k-1)] [0,1,2,...,(2k1)]中随机取出一个数记为r,k=min[重传次数,10]

3 重传时延就是r倍的基本退避时间

4 如果重传16次依然不能成功时丢弃帧,向高层报告

由于以太网取51.2us为争用期,对于10Mbit/s的网络而言,这期间可以发送512比特(64字节),如果发生冲突一定是在64节内,这会导致检测到冲突停止发送从而数据小于64节所以64字节为最短有效帧长

还有帧间最小间隔即96帧,方便刚刚收到数据帧的站接收缓存清理,做好接受下一帧的准备

总结来看

该协议的要点:

1 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部组成以太网帧。放入适配器的缓存中,发送之前检测信道

2 检测信道:若检测信道忙,则不停检测,一直等待信道转为空闲,且超过96帧后,发送过程中继续监测信道,如果超过争用期后还是未检测到碰撞,就认为发送成功,否则立刻停止发送,然后利用指数退避算法再次发送

接下来我们探讨一下局域网的信道利用率

参数a

T 0 = L / C T_0=L/C T0=L/C L是帧长 C是数据发送速率,T0是帧发送时间

a = t / T 0 a=t/T_0 a=t/T0 参数a等于以太网单端时延与帧的发送时间T_0的比

a接近0的时候,表示一发生碰撞就会被检测出来,信道利用率很高

a越大,争用期所占比例增大,发生一次碰撞就浪费许多资源

当数据率一定时候,以太网的连线长度受到限制,否则t数值就会太大,以太网帧长不能太短,否则会导致T0值太小,a太大

理想信道利用率

image-20231001144501740

上面式子告诉我们 a a a要远小于,才能提高这个利用率

2.3 集线器,交换器

使用接线器比起刚刚的无源的总线结构更靠谱一些

集线器

星形拓扑结构,中心叫集线器,目前使用双绞线或光纤

一个集线器有许多个端口

集线器工作在物理层,仅仅简单地做转发,不进行碰撞检测

前面我们讲到适配器,那么局域网的各个电脑如何区分要发送的目的地呢

就是通过适配器的MAC地址,他是固化在适配的ROM中,全球唯一

MAC地址

MAC地址又叫做硬件地址,物理地址

通常表示为48位, 6字节

表示的时候用12个16进制数,每2个16进制数之间用冒号隔开,如08:00:20:0A:8C:6D

地址段前三个字节由IEEE的注册管理机构RA向厂家分配,后三个字节由厂家自行分配

在这里插入图片描述

IEEE规定地址字段的第一字节的最低位为I/G位

I/G=0时候,地址字段表示一个单站地址

I/G=1时候,地址字段表示一个组地址,用来广播

当48位都为1时候,为广播地址,只能作为目的地址

IEEE规定地址字段的第一字节的最低第二位为G/L位

G/L位=0时候,是全球管理

IG/L位=1时候,是本地管理

当48位都为1时候,为广播地址,只能作为目的地址

MAC帧格式

常用以太网V2格式

在这里插入图片描述

源地址目标地址 上面讲到的MAC地址

类型 上一层使用的什么协议

数据字段

​ 最小长度=64-18字节的头尾=46

​ 最长1500

检测字段FCS

前同步码 8个字节,前7个实现MAC帧同步,第8个帧开始定界符

帧间最小间隔 9.6us

总结:

互联网=通过路由协议联通的N个局域网。

局域网=以太网+TCP/IP协议。

以太网=基于广播(MAC寻址)和碰撞检测机制 CSMA/CD 的网络。

( 以太网是一种计算机局域网技术

3 扩展以太网

我们知道,以太网的两台主机距离不能太远,但是往往比如校园内,一些主机的距离可能蛮远的

要实现这样距离较远的通信,我们就需要扩展以太网

所以我们要搞清楚拓展的核心目的

那么拓展主要有两种方式,物理层上扩展,和数据链路层扩展

3.1 物理层扩展方式

  1. 很早之前拓展是通过接转发器

  2. 而现在拓展的简单方法就是使用光纤,用到光纤调制解调器,能够到达几公里的范围

  3. 还有一种方式就是多个集线器,连接成覆盖更大范围的多级星型结构

    比如一个学校有三个学院,每个学院配备一个集线器,最后再通过一个主干集线器连接在一起

    多级集线器的优点是,可以跨院通信,同时扩大了范围,缺点是碰撞域变大了(三个独立的碰撞域合成了一个),同时没有缓存功能,不同学院必须使用相同的以太网技术

3.2 数据链路层扩展方式

扩展方式主要通过交换机,交换机工作在数据链路层

特点

  1. 交换机实质是一个多端口的网桥,通常有十几个或者更多个端口,全双工工作方式
  2. 具有存储器,能够进行帧缓存
  3. 即插即用,避免人为配置,通过内部帧交换表实现,要了解交换机更新交换表的自学算法
  4. 用户独占信道,增大了交换机总容量
  5. 有多种速率端口

3.2.1 交换机的自学功能

交换表组成: MAC地址,端口,写入时间

如果交换表内没有自己要发送的对方的地址,则进行广播通知每一个主机,其他主机收到后看看是否是要发送给自己,不是的话则过滤掉,是的话则接收,同时将对应的信息加入交换表。如果有的话则直接一对一发送

3.3 虚拟局域网

当前面的扩展方式进行很多的扩展的时候,就会遇到一些问题

首先一整个以太网是一个广播域,那么以太网上经常就会出现大量广播帧,浪费资源

其次,不利于信息的安全

所以提出虚拟局域网,核心思想是把一个较大的局域网分割为很多较小的局域网,每一个局域网是一个广播域

实现方式是在MAC帧的基础上嵌入了VLAN标签,一个虚拟局域网可以跨越多个交换机

4 高速以太网

4.1 100BASE-T

是在双绞线上传输100Mbit/s的系带信号的星形拓扑结构,比之前的100Mbit/s快了很多

4.2 吉比特以太网

即传输速率是1Gbit/s

之前我们讲到大多通过电话线等方式接入互联网

但实际现在更多的是通过以太网进行宽带接入,比如我们现在只要登录校园网就可以访问外网了

拓展

了解一下网速单位

Mbps是Mb/s 而不是MB/S”。

运营商说的1M宽带的M是指Mb/s,也就是Mbps,运营商为什么喜欢说这个呢?数据传输大多是以“位”(bit,又名“比特”)为单位的,数据的传输以及运营商在流量收费的时候都是按照比特来计算的

所以比如运营商说1M带宽,那么也就意味着是1Mb/s,也就是0.125MB/s

在这里插入图片描述

我自己实际测试了网速

如图是300M-500M带宽

那么也就意味着是37.5MB/s到62.5MB/s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/237347.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python:五种算法(HHO、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、五种算法简介 1、哈里斯鹰优化算法HHO 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、粒子群优化算法PSO 5、遗传算法GA 二、5种算法求解23个函数 (1)23个函数简介 参考文献: [1] Yao X, Liu Y, Lin G M. Evolutionary programming …

树莓派,opencv,Picamera2利用舵机云台追踪人脸

一、需要准备的硬件 Raspiberry 4b两个SG90 180度舵机(注意舵机的角度,最好是180度且带限位的,切勿选360度舵机)二自由度舵机云台(如下图)Raspiberry CSI 摄像头 组装后的效果: 二、项目目标…

Unity之OpenXR+XR Interaction Toolkit接入微软VR设备Windows Mixed Reality

前言 Windows Mixed Reality 是 Microsoft 用于增强和虚拟现实体验的VR设备,如下图所示: 在国内,它的使用率很低,一把都是国外使用,所以适配起来是相当费劲。 这台VR设备只能用于串流Windows,启动后,会自动连接Window的Mixed Reality程序,然后打开微软的增强现实门户…

LAMP 搭建

目录 LAMP LAMP组成及作用 LAMP搭建实验举例,优先将防火墙和安全终端关闭,在一台虚拟机上操作 搭建 apache httpd服务 搭建 mysql服务 搭建 php服务 安装论坛 LAMP —— LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一…

记录汇川:自由口案例01-梯形图

H5U和FX5U通信:通过H5U区点亮FX5U的Y0-Y7 H5U配置 FX5U配置 02 0F 00 00 00 08 01 FF CRC校验码高 CRC校验码低 02:FX5U的站地址 0F:多个线圈写入 00 00:FX5U的MODBUS地址Y0开始 00 08:Y0 - Y7 FF:1111 1111 将Y0 - Y7全部点亮 主程序 MAIN: 记录汇川&a…

开源框架Apache NiFi调研

开源框架Apache NiFi调研 NiFi背景介绍一、什么是NiFi1.1 Apache NiFi特点:流管理、易用性、安全性、可扩展的体系结构和灵活的伸缩模型。1.2 Apache NiFi特性1.2 Apache NiFi核心概念1.3架构 二、NiFi的诞生,要致力于解决的问题有哪些?三、为…

DevEco Studio IDE 创建项目时候配置环境

DevEco Studio IDE 创建项目时候配置环境 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、在配置向导的时候意外关闭配置界面该如何二次配置IDE环境。 打开IDE的界面是这样的。 点击Create Project进行环境配置。 点击OK后出现如…

Mac安装DevEco Studio

下载 首先进入鸿蒙开发者官网,顶部导航栏选择开发->DevEco Studio 根据操作系统下载不同版本,其中Mac(X86)为英特尔芯片,Mac(ARM)为M芯片。 安装 下载完毕后,开始安装。 点击Agree 首次使用,请选择Do not impor…

037.Python面向对象_关于抽象类和抽象方法

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

ssm基于MVC的舞蹈网站的设计与实现论文

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,舞蹈网站当然也不能排除在外。舞蹈网站是以实际运用为开发背景,运用软件工程开发方法,采用Java技…

人体关键点检测2:Pytorch实现人体关键点检测(人体姿势估计)含训练代码

人体关键点检测2:Pytorch实现人体关键点检测(人体姿势估计)含训练代码 目录 人体关键点检测2:Pytorch实现人体关键点检测(人体姿势估计)含训练代码 1. 前言 2.人体关键点检测方法 (1)Top-Down(自上而下)方法 (2)Bottom-Up(自下而上)方法&#xff1…

(企业 / 公司项目) 企业项目如何使用jwt?

按照企业的项目然后写的小demo, 自己搞一个登录接口然后调用jwtUtil工具类 后端实现 创建一个通用模块common来实现jwt生成token 登录注册的基本实现逻辑思路 面试| ProcessOn免费在线作图,在线流程图,在线思维导图 注释挺详细的jwtUtil工具类, 封装的…

低功耗模式的通用 MCU ACM32F0X0 系列,具有高整合度、高抗干扰、 高可靠性的特点

ACM32F0X0 系列是一款支持多种低功耗模式的通用 MCU。集成 12 位 1.6 Msps 高精度 ADC 以及比 较器、运放、触控按键控制器、段式 LCD 控制器,内置高性能定时器、多路 UART、LPUART、SPI、I2C 等丰富的通讯外设,内建 AES、TRNG 等信息安全模块&#xff0…

Cannot find cache named ‘‘ for Builder Redis

当引入 Redissson 时,springCache 缓存机制失效 原因:springCache 默认使用本地缓存 Redisson 使用redis 缓存 最后都转成redis了。。。 总感觉哪不对 两者居然不共存

es6从url中获取想要的参数

第一种方法 很古老,通过 split 方法慢慢截取,可行是可行但是这个方法有一个弊端,因为 split 是分割成数组了,只能按照下标的位置获取值,所以就是参数位置一旦发生变化,那么获取到的值也就错位了 let user…

做数据分析为何要学统计学(10)——如何进行时间序列分析

时间序列是由随时间变化的值构成,如产品销量、气温数据等等。通过对时间序列展开分析,能够回答如下问题: (1)被研究对象的活动特征是否有周期性(也称季节性)(2)被研究对…

〖大前端 - 基础入门三大核心之JS篇(51)〗- 面向对象之认识上下文与上下文规则

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:哈哥撩编程,十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司…

.NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)

WebAppDbTest 项目准备 项目准备1、.net cli 创建项目2、nuget 包引用和项目结构2.1、项目添加相关 nuget 包2.2、WebAppDbTest 项目结构 3、项目代码说明3.1、CSharp/C# 类文件说明3.2、json 配置文件说明 4、项目运行预览 数据库 .db 文件准备1、创建 SQLite 数据库1.1、在 W…

区块链实验室(31) - 交叉编译Ethereum的客户端Geth

编译Geth到X86架构平台 下载Geth源码,直接编译Geth源码,见下图。用file命令观察编译后的文件,架构是x86-64。 编译Geth到Arm64架构平台 直接用命令行编译,同时指定期望的架构为Arm64。编译脚本如下所示。 CGO_ENABLED0 GOOSlin…

VSCode使用Remote-SSH连接服务器时报错:无法与“***”建立连接: XHR failed.

关于VSCode的报错问题:无法与“***”建立连接: XHR failed 问题描述问题理解解决方法手动在本地下载安装包,然后手动传到服务器端 问题描述 是的,我又踩坑了,而且这个弄了好久,也重新装了VSCode软件,好像结…
最新文章