数据链路层

2023-05-16

本篇目录

***************************************

数据链路层的三个基本问题

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

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

以太网MAC层的硬件地址

***************************************

一、数据链路层的三个基本问题

封装成帧:帧是数据链路层的传送单位。一个帧的帧长等于帧的数据部分加上帧的首部和尾部的长度。首部和尾部的一个重要作用是帧定界(确定帧的界限)。每一种链路层协议都规定了所能传输的帧的数据部分的上限既最大传输单元MTU。(见下图,图片来自百度)


对于帧定界做以补充:

1)当数据是由ASCII组成的文本文件时,使用特殊的帧定界符。

SOH(Start Of Header)放在帧的最前面,表示帧的开始。十六进制编码是01(二进制00000001)

EOT(End Of Transmission)表示帧的结束。十六进制编码是04(二进制00000100)

SOH和EOT只是控制字符的名称。

2)当数据是非ASCII码的文本文件(字符都是从键盘上输入)时,如二进制代码计算机程序或图像等,当数据中有SOH或者EOT这种控制字符时,就会出现判断错误。

做法:字节填充==》发送端的数据链路层在数据中出现了控制支付SOH或者EOT时,就在其前面加上转义字符“ESC”(十六进制为1B,二进制为00011011),如果数据中出现了转义字符,也在其前面加上一个转义字符。在接收端的数据链路层在把数据向网络层传送之前,删除这些转移字符。

透明传输:表示无论什么样的比特组合的数据,都能按照原样没有差错的通过这个数据链路层。

差错检验:实现无比特差错。传输错误的比特占传输比特总数的比特率称为误码率BER(Bit Error Rate)。数据链路层采用循环冗余检验CRC的检错技术。过程如下:


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

(1)、ppp协议:不需要纠错,不需要设置序号,不需要进行流量控制,不支持多点线路(既一个主站轮流和链路上的多个从站进行通信),只支持点对点的链路通信,只支持全双工链路。

(2)、PPP协议的三个组成部分:

①一个将IP数据报封装到串行链路的方法。PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。

②一个用来建立、配置和测试数据链路连接的链路控制协议LCP。

③一套网络控制协议NCP。

(3)、ppp帧的格式


标志字段F:0x7E(01111110):表示一个帧的开始或者结束。标志字段就是PPP帧的定界符。

地址字段A:0xFF(11111111)

控制字段C:0x03(00000011)

协议字段:为0x0021时,PPP协议帧就是IP数据报;为0xC021时,信息字段就是PPP链路控制协议LCP的数据;为0x8021时表示网络层的控制信息。

FCS:使用CRC帧检验的冗余码。

(4)、PPP协议的工作状态


说明:

a)、当用户拨号接入ISP时(通过调制解调器呼叫路由器时,通常是在屏幕上用鼠标点击连接按钮),路由器检测到调制解调器发出的载波信号,做出确认,并建立一条物理连接。

b)、PC机向路由器发送一系列的LCP分组(封装成多个PPP帧)。

c)、这些分组及其相应选择了将要使用的PPP参数,接着进行网络配置,NCP给新接入的PC机分配一个临时的IP地址,使PC称为互联网上的一个有IP地址的主机。

d)、通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址,接着LCP释放数据链路层连接,最后释放物理层连接。

(三)、使用广播信道的数据链路层

CSDA/CD协议:(Carrier Sense Multiple Access with Collision Delection)载波监听、多点接入、碰撞检测。

说明:

载波监听:不管在发送前还是在发送中,每个站都必须不停的检测信道。如果检测到已经有其他站在发送,则自己就暂时不需发送数据,必须要等到信道边为空闲时才能发送数据。在发送中检测信道,时为了及时发现有没有其他站在发送和本站发送的碰撞。

多点接入:总线型网,许多计算机以多点接入的方式连接在一根总线上。

碰撞检测:边发送边监听,既适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。

补充:

a)以太网的端到端往返时间2τ称为争用期。具体的争用期时间是51.2μs,也可以直接使用比特作为争用期的单位。

b)截断二进制指针退避算法:重传应推后的时间计算=r*2τ;

(r是从集合[0,1,……,(2^k)-1]中随机取出的一个数;k=Min[重传次数,10])

c)以太网规定一个最短帧长64字节,既512bit.如果要发送的数据非常少,那么必须加入一些填充字节,使得帧长不小于64字节。

d)从总线网到星形网,以太网交换机已经不使用共享总线,因此就没有了碰撞问题,也就不使用CSMA/CD协议,也就没有了争用期,而是以全双工的方式工作。之所以还叫以太网是因为它的帧结构没有改变,仍然采用的是以太网的帧结构。

四、以太网MAC层的硬件地址

(1)、MAC层的硬件地址又称为物理地址或者MAC地址。实际上就是适配器地址或适配器标识符,与主机所在的地点无关。源地址和目的地址都是48位长。

(2)、以太网的适配器有过滤功能,只接受单播帧、广播帧或多播帧。

单播帧(一对一):既收到的帧的MAC地址和本机的硬件地址一样。

广播帧(一对全体):发送给本局域网上所有站点的帧(全1地址)。

多播帧(一对多):发送给本局域网上一部分站点的帧。

(3)、MAC帧的格式


说明:

a)2字节类型:标志上一层使用的什么协议。

b)数据字段:长度在46到1500字节之间(因为帧长度最短为64字节,随意数据部分最小为46字节)

c)插入的8字节:由硬件生成。由两个字段构成,第一个字段是7个字节的前同步码(1和0交替出现)作用是使接收端的适配器在接收MAC帧时能迅速调整时钟频率,使它和发送端的时钟同步(实现位同步)。第二个字段是帧开始定界符,前六位作用和前同步码一样,最后连续的1告诉接收端适配器MAC帧马上要来了。

d)FCS:帧检验序列,检验范围不包括前同步码和帧开始定界符。

e)以太网传输数据时是以帧为单位传送的,在以太网上传送帧时,个帧之间还必须有一定的间隙,因此接收端只要找到帧结束定界符,也不需要使用字节插入来保证透明传输。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据链路层 的相关文章

  • CSDN写博客更改代码颜色为白色代码样式

    一 背景 在平时发博客时 xff0c 代码块背景默认是黑色的 xff0c 而注释是黑色的 xff0c 总是看起来很不清楚 直接上图 xff1a 注释看起来很不清晰 xff0c 现在我们修改一下颜色为白色 直接上图 xff1a 下面是具体设置
  • win10安装Ubuntu16.04双系统

    下载Ubuntu16 04 xff1a 下载地址 xff1a 官网 xff1a Ubuntu 16 04 7 LTS Xenial Xerus 阿里云开源镜像站 ubuntu releases 16 04安装包下载 开源镜像站 阿里云 中科
  • SLAM后端--滤波方法和非线性优化方法

    SLAM的后端一般分为两种处理方法 xff0c 一种是以扩展卡尔曼滤波 xff08 EKF xff09 为代表的滤波方法 xff0c 一种是以图优化为代表的非线性优化方法 不过 xff0c 目前SLAM研究的主流热点几乎都是基于图优化的 滤
  • React 组件 API

    常用 React 组件 API xff1a 设置状态 xff1a setState替换状态 xff1a replaceState设置属性 xff1a setProps替换属性 xff1a replaceProps强制更新 xff1a for
  • 浅析SATA Physical Layer物理层OOB信号

    一 SATA物理层概述 说OOB之前 xff0c 首先得了解一下SATA结构以及物理层的含义 SATA主要包括 xff1a 应用层 Application Layer 传输层 Transport Layer xff0c 链路层 Link L
  • CodeBlocks 20.03下载及安装指南 使用自带MinGW进行环境配置

    原本用的好好的CodeBlocks 17 12 xff0c 今天手欠无聊去搜了一下官网发现两年都没更新的cb竟然在这两天更新了 对于一直喜欢用最新版的我 xff0c 一定要更新 xff0c 然后 我还把之前的各项配置都删掉了 好吧 xff0
  • 程序是从main主函数开始运行吗?

    很多人开始学计算机语言 xff0c 编写代码时都会有一个疑问 xff1a 程序真的是从main主函数开始的吗 xff1f 之前什么都不做吗 xff1f main结束后就不能执行其他函数了吗 xff1f 下面本篇文章就为此问题做一个简单的解释

随机推荐

  • C++内存越界(转)

    glibc detected free invalid pointer glibc detected malloc memory corruption glibc detected double free or corruption out
  • 总结几种结构体初始化的方法(转)

    总结几种结构体初始化的方法 转自 xff1a http www cnblogs com vongang archive 2011 07 30 2122076 html 结构体能自由组装数据 xff0c 是一种很常见的数据打包方法 当我们定义
  • C++各大有名库的介绍(转)

    C 43 43 各大有名库的介绍 C 43 43 各大有名库的介绍之C 43 43 标准库 标准库中提供了C 43 43 程序的基本设施 虽然C 43 43 标准库随着C 43 43 标准折腾了许多年 xff0c 直到标准的出台才正式定型
  • 内存分配——静态存储区 栈 堆 与static变量 (转)

    一 内存基本构成 可编程内存在基本上分为这样的几大部分 xff1a 静态存储区 堆区和栈区 他们的功能不同 xff0c 对他们使用方式也就不同 静态存储区 xff1a 内存在程序编译的时候就已经分配好 xff0c 这块内存在程序的整个运行期
  • Java的集合框架最全详解(图)

    Java的集合框架最全详解 xff08 图 xff09 前言 xff1a 数据结构对程序设计有着深远的影响 xff0c 在面向过程的C 语言中 xff0c 数据库结构用struct来描述 xff0c 而在面向对象的编程中 xff0c 数据结
  • 如何查看sybase存储过程的内容?

    如何查看sybase存储过程的内容 xff1f 1 在isql xff08 或SQL Advantage xff09 中执行 xff1a sp helptext 存储过程名 可以查看存储过程的内容 2 在 SQL CENTRAL里连接你的服
  • Oracle的表分析是做什么的?

    Oracle的表分析是做什么的 xff1f analyze table tablename compute statistics 分析的结果被Oracle用于基于成本的优化生成更好的查询计划 那么 xff0c 问题在于 xff1a Orac
  • React Refs

    React 支持一种非常特殊的属性 Ref xff0c 可以用来绑定到 render 输出的任何组件上 这个特殊的属性允许引用 render 返回的相应的支撑实例 xff08 backing instance xff09 这样就可以确保在任
  • μC/OS-II学习之:任务,信号量、邮箱、队列及其区别

    一 xff1a UCOS是一种抢占式的多任务操作系统 xff0c 如果最高优先级的任务不主动放弃CPU的使用的话 xff0c 其他任务是无法运行的 xff0c 通常情况下 xff0c 高优先级的任务在使用完CPU或其他资源后都要主动放弃 x
  • 51 单片机简单的多任务调度例子(转)

    51 单片机简单的多任务调度例子 看大家都在学操作系统 xff0c 我也想学学 所以想用51写一个来玩玩 xff0c 发现比较郁闷 弄了几下 xff0c 不想再弄了 xff0c 51弄这个没啥意思 我用的89S52 xff0c 除了速度慢
  • java代码编写随笔总结

    一 项目模块定义 说明 xff1a 一个产品分为各个独立的原子服务 xff0c 通过这些独立的原子服务进行组合来满足各种业务的需求 1 各原子服务关系与原则 xff1a 依赖关系 xff1a 只能上级依赖下级 xff0c 不可下级依赖上级
  • 缓冲区溢出原理学习

    什么是缓冲区溢出 xff1f 缓冲区 简单说来是一块连续的计算机内存区域 可以保存相同数据类型的多个实例 动态变量在程序运行时定位于堆栈之中 我们这里只关心动态缓冲区的溢出问题 即基于堆栈的缓冲区溢出 进程的内存组织形式 一个进程在内存中被
  • Java学习笔记12:求s=1+11+111+1111+......+1111......1的值

    64 author 朱凌风 64 weather 阵雨 64 date 06 19 2011 64 function 计算1 43 11 43 111 43 43 111 1的值 package com jerome import java
  • 配置Ubuntu软件源

    引子 Ubuntu系统的软件源就是指Ubuntu系统的软件更新管理器下载更新软件的来源 xff0c 是一个软件仓库 Ubuntu系统对这个软件源的配置的信息是放在一个文本文件中的 xff0c 这个文本文件的完整路径一般是 etc apt s
  • NuttX 启动流程

    xff08 嵌入式 实时操作系统 rtos nuttx 7 1 stm32 源代码分析 xff09 NuttX 启动流程 转载请注明出处 xff1a http blog csdn net zhumaill article details 2
  • NuttX 介绍

    xff08 嵌入式 实时操作系统 rtos nuttx 7 1 xff09 NuttX 介绍 转载请注明出处 xff1a http blog csdn net zhumaill article details 24197637 1 Nutt
  • Ubuntu用命令行打开网页的三种方法

    1 第一种方法 links命令 apt install links links websol cn 2 第二种方法 w3m命令 apt install w3m w3m websol cn 3 第三种方法 lynx命令 apt install
  • JS删除数组中指定元素/删除数组中指定对象

    删除数组中指定对象指定元素 let arr 61 name 34 xiaowang 34 id 1 name 34 xiaozhang 34 id 2 createDate 34 xiaoli 34 id 3 删除id为1的对象 xff0c
  • React G2Plot 水波图

    官方文档 xff1a https antv g2plot v1 gitee io zh docs manual introduction 安装依赖 span class token function npm span span class
  • 数据链路层

    本篇目录 数据链路层的三个基本问题 使用点对点信道的数据链路层 使用广播信道的数据链路层 以太网MAC层的硬件地址 一 数据链路层的三个基本问题 封装成帧 xff1a 帧是数据链路层的传送单位 一个帧的帧长等于帧的数据部分加上帧的首部和尾部