计算机网络:数据链路层

news2024/12/24 13:52:19

数据链路层

数据链路层主要处理单个链路上如何传输数据,并且向网络层向上提供服务

1. 数据链路层概述

1.1 术语介绍

image-20221011174611130

主机拥有全部的计算机网络结构,路由器只有一部分

各个路由器之间由物理层连接

红线为发送的信息

image-20221011174704757

1.2 数据链路层的三个重要问题

  • 封装成帧

image-20221011174940911

  • 差错检测(不仅仅需要在数据链路层要考虑的问题)

​ 在帧的传输过程中出现了误码,可以通过检错码进行检验

image-20221011175129053

  • 可靠传输(不仅仅需要在数据链路层要考虑的问题)

    单独讲解,详见该博客

image-20221011175234859

  • 其他问题:使用广播信道的数据链路层

    当A给C传输数据时,如何确保C一定能够接收到数据

    通过添加MAC帧地址进行发送

image-20221011175605808

2. 封装成帧

  • 封装成帧指数据链路层给上层交付的协议数据单元添加帧头和帧尾使其成为帧

    • 帧头和帧尾中包含有重要的控制信息

    image-20221011180720626

    • 帧头和帧尾的作用之一是 帧定界(区分传输的时候一个个的帧)

    image-20221011180925356

  • 透明传输

    • 面向字节的物理链路层使用字节填充的方法实现透明传输

    数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在

    (例如帧定界符与其内容相同的问题)

    红色:真正的帧定界符

    灰色:扫描到相同内容时插入转义字符

    image-20221011181426144

    接收结果时扫描到转义字符将其剔除,还原为原本的内容

    • 面向比特的物理链路层使用比特填充的方法实现透明传输

    image-20221011181839929

  • 为了提高帧的传输效率,应使帧的数据部分的长度尽可能的大

  • 每种数据链路层协议都规定了帧的数据部分的上限,即最大传输单元:MTU

image-20221011182125366

3. 点对点协议PPP

3.1 概念及应用

  • 点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议

应用场景:

因特网

image-20221018160808466

广域网

image-20221018160831496

3.2 基本内容

  • 对于各种协议数据报的封装方法(封装成帧)

    • 帧格式

      image-20221018161831840

  • 链路控制协议LCP

    用于建立配置已经测试数据链路的连接

    image-20221018161354174

  • 一套网络控制协议NCPs

    每一个协议支持不同的网络层协议

    image-20221018161326255

3.3 工作状态

image-20221018162412079

4. 媒体接入控制(MAC)

协调多个发送与接收站点在一个通路里不冲突的使用

4.1 基本概念

image-20221018162655352

媒体接入控制(MAC)的分类:

image-20221018163008931

4.2 媒体接入控制——静态划分信道

image-20221122095211968

复用和多址的概念:

某种程度上,多址可以看做是复用的应用

image-20221018165445355

  • 信道复用

    image-20221018163300820

    • 分类

      • 频分复用FDM

      image-20221018163621266

      • 时分复用TDM

      image-20221018164637944

      • 波分复用WDM

      image-20221018164859577

      • 码分复用

      可以在同样的时间使用不同码形,因此各个用户之间不会造成干扰

      image-20221018170013062

      应用举例:

      image-20221018170509244

4.3 MAC——随机接入——CSMA/CD协议

总线局域网使用的无限控制协议

载波监听多址接入/碰撞检测

image-20221122095309863

早期的以太网使用该协议进行检测

  • 术语

    image-20221122100305772

    • 争用期

    衡量是否可以发射信号的标准

    τ:单程端到端的传播时延

    image-20221122101554553

    • 最小帧长

    规定最小帧长为64字节

    最小帧长可以保证在帧发送完成之前就检验到该帧的发送过程中是否遭遇碰撞,如果在争用期(64字节)没有检测到碰撞,后续数据一定不会碰撞

    所以小于64字节的帧都将被抛弃

    • 最大帧长

    以太网V2的MCA帧尾1518字节

    插入VLAN标记后为1522字节

    如果帧太长,总线总会处于繁忙状态

  • 截断二进制指数退避算法

image-20221122102819363

例:

image-20221122102943020

若多次发生重传,表示有较多的主机参与信道竞争

如果重传16次不成功,则丢弃改帧,并向高层汇报

  • 信道利用率

image-20221122110035627

  • 帧发送流程图

image-20221122110238806

  • 帧接收流程图

image-20221122110310484

4.4 随机接入——CSMA/CA协议

无限局域网使用的无线控制协议,因为无线的不稳定性,还需使用停止等待协议对信息进行确认

载波监听多址接入/碰撞避免

不使用碰撞检测技术(CD),主要原因是无线信道的信号强度较小,检测碰撞较难,并且存在隐蔽站问题

所以802.11无线局域网使用CSMA/CA协议

  • 术语

    • 帧间间隔(IFS)

    所有站点必须在持续检测到信道空闲一段时间后才能发送帧

    image-20221122111659765

    常用的两种:短帧间间隔SIFS(28μs)、DCF间间隔DIFS(128μs)

  • 工作原理

image-20221122112109198

  • CSMA/CA协议的退避算法

image-20221122112432901

例:

image-20221122112616977

  • CSMA/CA协议信道预约

802.11标准允许对信道进行预约,使用请求发送(RTS)与允许发送(CTS)表示对信道进行预约

image-20221122113937938

image-20221122114039218

  • CSMA/CA协议虚拟载波监听

image-20221122114323409

image-20221122114339514

5. MAC地址、IP地址、ARP协议

5.1 MAC地址

以太网的MAC子层所使用的地址

  • 当多个主机连接在同一个广播信道上,需要一个特定的数据链路层(MAC)地址
  • MAC地址也被称为硬件地址

帧中必须携带目的地址接收地址

  • IEEE 802局域网的MAC地址

image-20221122140605073

  • 第一字节:

    • b0 ->

      • 0:单播

      由B发出,填入目的地址与源地址,该信号沿链路传播

      image-20221122141232457

      • 1:多播

      由A发出,填入多播地址与源地址,该信号沿链路传播

      在每个主机中存有多播列表

      image-20221122142415226

    • b1->

      • 0:全球管理
      • 1:本地管理
  • 广播MAC地址举例

由B发出,填入广播地址与源地址,该信号沿链路传播

image-20221122141609999

5.2 IP地址

TCP/IP的网际层所使用的地址

5.3 ARP协议

属于TCP/IP体系结构,作用是通过IP地址获取设备的MAC地址

  1. 首先在本地的ARP缓存中进行查找,如果未找到,则发送下述ARP请求

image-20221122142807184

image-20221122142812528
  1. 在C接收到请求报文后回应其响应报文
image-20221122143102025
  1. B将C的MAC地址收录到缓存中

tips:ARP协议只能在一个链路或者一个网路上使用

6. 集线器与交换机

6.1 集线器

使用集线器HUB取代同轴电缆,因为其更加可靠

image-20221122150843601

  • 可以使用集线器HUB在物理层面扩展以太网

image-20221122150958141

6.2 对比以太网交换机

  • 单播时:使用交换机可以不用将信息发送给全部连接

image-20221122151300248

  • 多个主机向一个主机进行单播时不会发送碰撞
image-20221122152204783

在交换机中缓存后依次送转发给目的主机

image-20221122152148194

image-20221122152429432

7. 以太网交换机自学习与转发帧的流程

  • 自学习:

将MAC地址记录在交换机的表中

image-20221122152643321
  • 转发帧:

如果找不到B,则进行转发帧

image-20221122152858678

B收到了该帧,对其进行回应:

image-20221122153045968

该步骤循环往复

就可以自动学习MAC地址与接口的对应关系

例:

image-20221122153232730

8. 以太网交换机生成树协议STP

为了提高以太网可靠性,又要避免网络环路带来的各种问题,所以使用树形结构

例如:

将一下物理连接的网络自动变为一个没有闭合环路的网络

image-20221122154423210

9. 虚拟局域网VLAN

因为使用多个交换机互联会产生巨大的广播域,可能会导致:

  • 广播风暴
  • 难以维护

所以使用VLAN:将局域网内的设备划分成与物理位置无关的逻辑组的技术:

image-20221122155407001

实现VLAN机制

首先需要在以太网交换机上实现:

  • IEEE 802.1Q帧

对原本的MAC格式进行了扩展,插入了4字节的VLAN

image-20221122162148252

image-20221122162725089

  • 交换机的端口类型

新概念:缺省 VLAN ID,在华为交换机上简称为PVID

有以下几种:

  • Access(连接主机的交换端口)
image-20221122163440536

例:

image-20221122164104539

  • Trunk(交换机之间的互联端口)

    image-20221122163914269

    例:

    image-20221122164224756

  • Hybrid(华为交换机特有的)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

职业危机:从无到有,从弱到强;反思再反思和应对措施

一、写在开头 每天每周不写点东西,不把脑中的疑惑写明白,就感觉不到每天的进步。 每天没进步,这北漂生活,何时是个头啊。 可以北漂10年,也可以20年,但不可能是一辈子。 因为我不是北京人呐。 二、持续转…

Redis的字符串是怎么实现的

本篇会讲以下内容: Redis字符串的实现 Redis字符串的性能优势 Redis字符串的实现 Redis虽然是用C语言写的,但却没有直接用C语言的字符串,而是自己实现了一套字符串。目的就是为了提升速度,提升性能,可以看出Redis为…

Nacos的服务注册之客户端

服务注册到Nacos以后,会保存在一个本地注册表中,这个注册表是一个map. private Map<String, Map<String, Service>> serviceMap new ConcurrentHashMap<>(); key是namespace,用来隔离环境 value又是一个map      key是group      value又是一个s…

java计算机毕业设计springboot+vue远程教育系统

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以远程教育系统的实际应用需要出发,架构系统来改善现远程教育系统工作流程繁琐等问题。不仅如此以操作者的角度来说,该系统的架构能够对多媒体课程进…

以太网 DHCP(简介、DHCP工作原理、租期时间)

2.13.0 以太网 DHCP&#xff08;简介、DHCP工作原理、租期时间&#xff09; DHCP的作用&#xff1a;企业网络中存在大量的终端设备&#xff08;PC&#xff09;&#xff0c;管理员配置设备上网参数工作量大&#xff0c;而且效率不高&#xff0c;手动配置容易出错&#xff0c;DH…

数据库复杂sql如何编写入手

前言&#xff1a;说到数据库我想大家都不陌生&#xff0c;对主流的数据库都会基本使用&#xff0c;但是要写好sql完成复杂的sql编写是需要对数据库原理&#xff0c;sql脚本语法有一定的了解的&#xff0c;但是对于开发人员来说&#xff0c;平常都是在curd写一些业务代码&#x…

Flutter 中使用 OpenAI GPT-3 进行语义化处理

Flutter 中使用 OpenAI GPT-3 进行语义化处理 前言 最近 openai 的 ChatGPT 火了&#xff0c;然后我也想着用它来做点什么&#xff0c;于是就写了个 调用 openai api 语言执行工具&#xff0c;跑个测试&#xff0c;以后再有功能也可以在这个程序上面试验。 copilot 也是用的 op…

m基于FPGA的64QAM调制解调、载波同步verilog实现

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 64QAM&#xff08;正交幅度调制&#xff09;&#xff0c;在使用同轴电缆的网络中&#xff0c;这种数字频率调制技术通常用于发送下行链路数据。64QAM在6mhz信道中&#xff0c;64QAM的传输速率非常…

Qt编写视频监控系统(移动侦测/遮挡报警/区域入侵/越界侦测/报警输入输出等)

一、前言 得益于标准的onvif协议&#xff0c;各大监控厂商的设备都会支持onvif协议&#xff0c;在onvif协议中就包括了事件订阅机制&#xff0c;通过这个机制&#xff0c;可以拿到各种报警事件&#xff0c;比如移动侦测/遮挡报警/区域入侵/越界侦测/报警输入输出等&#xff0c…

深度学习-环境搭建(安装Pytorch)

文章目录前言一、安装Anaconda二、查看电脑显卡支持的CUDA版本三、更新CUDA版本四、创建并激活Anaconda虚拟环境需要创建虚拟环境而最好不在base下载的原因五、安装pytorchPS&#xff1a;注意事项六、下载其他库七、检查安装结果总结前言 入门深度学习过程中&#xff0c;我决定…

[附源码]JAVA毕业设计鞋店销售管理(系统+LW)

[附源码]JAVA毕业设计鞋店销售管理&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

都在说软件测试真的干不到35岁,那咋办呢...我都36了...

作为一个已经36岁但仍奋战在测试一线的老测试员&#xff0c;被人无数次问到这个问题&#xff0c;也回答过无数次&#xff0c;刚看到 程序员真的干到35岁就干不动了吗 想到&#xff0c;在测试行业&#xff0c;也有很多年轻人在焦虑这个问题。现在小编就从管理、技术、思维、体力…

Pytho——naiohttp的简单使用

1.aiohttp的简单使用(配合asyncio模块) import asyncio,aiohttpasync def fetch_async(url):print(url)async with aiohttp.request("GET",url) as r:reponse await r.text(encoding"utf-8")  #或者直接await r.read()不编码&#xff0c;直接读取&…

我不谈ChatGPT

&#xff08;1&#xff09;数据有两个未经证实的传闻&#xff1a;1、客服问答&#xff1a;80%用户问的问题都是那20%常见问题&#xff0c;但是就是这样&#xff0c;占用了客服人员80%的工作量和工作时间2、资讯搜索&#xff1a;谷歌一位员工说&#xff0c;在互联网上&#xff0…

Spring Cloud Alibaba-全面详解(学习总结---从入门到深化)

​​​​​​​ Spring Cloud Alibaba简介 什么是Spring Cloud Alibaba Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。 此项目包含开发分布式应用微服务的必需组件&#xff0c;方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 为…

OSI七层模型中各层网络协议

应用层: (典型设备:应用程序&#xff0c;如FTP&#xff0c;SMTP &#xff0c;HTTP) DHCP(Dynamic Host Configuration Protocol)动态主机分配协议&#xff0c;使用 UDP 协议工作&#xff0c;主要有两个用途&#xff1a;给内部网络或网络服务供应商自动分配 IP 地址&#xff0c…

spring——Spring 注入内部Bean——setter 方式注入内部 Bean

我们将定义在 <bean> 元素的 <property> 或 <constructor-arg> 元素内部的 Bean&#xff0c;称为“内部 Bean”。 项目依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org…

交战“低代码”,云大厂跑马圈地

者 关注 2022年末,云大厂阿里、腾讯、华为(ATH)开始了新一轮的跑马圈地。 这一次交战的战场,是低代码。 11月18日,华为AppCube全线产品全面升级,在低代码、零代码、数据看板三个方面,升级优化;11月13日,腾讯升级了云开发开发者工具“微搭”,目前已服务开发者数300万…

疫情期间,家中常备药物有哪些?这份清单请收好

【防疫科普】疫情期间&#xff0c;家中常备药物有哪些&#xff1f;这份清单请收好 为加强防疫知识科普&#xff0c;提振群众战“疫”必胜信心&#xff0c;疫情期间&#xff0c;我们将持续向广大市民朋友传递科学健康科普知识、防疫提醒、自我防护注意事项、疫情期间心理疏导等相…

Python融于ASP框架

一、ASP的平反 想到ASP 很多人会说 “asp语言很蛋疼&#xff0c;不能面向对象&#xff0c;功能单一&#xff0c;很多东西实现不了” 等等诸如此类。 以上说法都是错误的&#xff0c;其一ASp不是一种语言是 微软用来代替CGI的一种web框架&#xff0c;只不过我们一直被扭曲在 vbs…