计算机网络-数据链路层

news2024/11/17 19:41:01

概念

结点:主机、路由器
链路:结点间物理通道
数据链路:结点间逻辑通道,控制数据传输协议的硬件和软件加到链路上构成数据链路
帧:链路层的协议数据单元,封装网络层数据报

数据链路层负责通过一条链路从一个结点与其相邻的结点传送数据报

功能

向网络层提供服务,将来自网络层的数据可靠地传输到相邻结点的目标机网络层
加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成逻辑上无差错的数据链路

面向连接:建立连接、数据传输、释放连接
面向无连接:数据传输

  • 为网络层提供服务。无确认无连接服务、有确认无连接服务、有确认面向连接服务
  • 链路管理,面向连接的管理
  • 组帧
  • 流量控制
  • 差错控制

组帧

封装成帧:一段数据在前后部分添加首部和尾部,接收端根据首尾部标记,识别帧的开始和结束
首尾部包含控制信息,作用包含帧定界(确定帧的界限)、帧同步(区分帧的起始和终止)

透明传输:不管数据是怎样的比特组合,都应当可以在链路上传送

组帧方法

字符计数法

帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数
当计数字段出错,导致数据传输不同步

字符填充的首尾定界法

当传送帧由ASCII码的文本文件组成时,都可实现透明传输
当传送帧由非ASCII码的文本文件组成时,采用字符填充方法实现透明传输

用字符区分边界,就会出现同义情况,需要添加转义字符

零比特填充的首尾标志法

信息字段只要出现连续5个1,就立即填入1个0,接收端就如此删除0

违规编码法

在这里插入图片描述
字节计数法中count字段脆弱,字符填充实现复杂
普遍使用的是比特填充和违规编码法

差错控制

差错:位错(1变0,0变1)、帧错(丢失、重复、失序)

比特错

数据编码层编码针对一组比特,通过冗余码检验有无出错
物理层编码针对单个比特,解决比特同步等问题

冗余编码是在数据发送前,附加上一定的冗余位,构成一个符合某一规则的码字再发送,当数据变化时,冗余位随之变化来保持码字不变,接收端根据码字是否符合原规则

检错编码

奇偶校验码

####

循环冗余码CRC

在这里插入图片描述

纠错编码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

流量控制

流量控制对数据链路上的帧的发送速率进行控制,以便接收方有足够的缓冲空间来接受每个帧

两种方式:停止-等待协议、滑动窗口协议

可靠传输机制

通过确认和超时两种重传机制完成

确认是一种无数据的控制帧,这种控制帧使得发送方知道哪些内容被正确接收,为了提高传输效率,将确认捎带在一个回复帧,称为捎带确认

超时重传是指发送方在发送某个数据帧以后就开始一个计时器,在一定时间内如果没有收到确认就重新发送数据帧,直到发送成功为止

自动重传请求ARQ,通过接收方请求发送方重传出错的数据帧来恢复出错的帧
分为三种:停等式、后退N帧、选择性重传,后两种是滑动窗口和请求重发的结合,由于窗口尺寸足够大,帧能够连续流动,称为连续ARQ协议

滑动窗口机制

发送方和接收方都维持了一个连续的允许接收的帧的序号,分别称为发送窗口和接收窗口
两个窗口的序号的上下界和大小不一定要一样
不同滑动窗口协议,窗口大小一般不同
发送方窗口内的序号列号代表了哪些已被发送,但还没被确认的帧,或是哪些可以被发送的帧
在这里插入图片描述
在这里插入图片描述
发送端和接收端,每收到确认帧/数据帧时,窗口前移
而发送端窗口内的没有可发送数据帧,即全为未收到确认帧的数据帧,发送方就会停止发送
接收端的则是收到不在窗口的数据帧,全部丢弃

停止-等待协议:发送窗口 = 1,接收窗口 = 1
后退N帧协议:发送窗口 > 1,接收窗口 = 1

停止等待协议

当发送窗口和接收窗口的大小为1时,滑动窗口协议退化为停止-等待协议
为区分是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号
由于停等协议规定只有一帧完全发送成功才能发送新的帧,因此只需要用1bit来编号

停等协议除了是为了比特出差错,还会出现丢包问题,实现流量控制

无差错

发一帧就确认一帧,确认完才能发送下一帧

有差错

  • 数据帧丢失或者检测到帧出错
    发送一个帧后保留其一个副本并启动一个计时器,超时重新发送

  • ACK确认帧丢失,确认帧丢失时,触发超时重传,等待接收端重新发送确认帧

  • ACK确认帧迟到,依然会触发超时重传,但接收端会丢弃重复帧,并重传确认帧,发送端对迟到的确认帧收下就丢弃

性能分析

信道利用率低,信道真正使用的时间只有发送时延

后退N帧协议

当发送方发完一个数据帧后,不停下来等待应答帧,而是继续发送,若超时则重发此帧以及后面的帧
双方都维持一组连续的允许发送的帧的序号
发送端每收到一个确认帧就前滑动一格,接收端每接受一个新的帧,发送一个确认帧,就向前滑动一格
连续发送数据帧提高了效率,但一次性重发未确认的帧降低了效率

发送方要做三件事

  • 提示上层的调用,先检查发送窗口是否满了,如果未满就产生一个帧并将其发送,若满了缓存数据,等待未满时
  • 收到确认n号确认帧时,对n号帧采用累积确认,即n以及之前的全部帧都表示全部接收
  • 超时事件,超时发送时,重传所有已发送但未确认的帧

接收方则需要在收到n号帧时,发送对应的ack并将数据部分交付给上层,其他情况都丢弃帧,并发送最近接收的帧的确认帧,不缓存任何失序帧
在这里插入图片描述
当采用n个比特对帧编号,则发送窗口满足1<=W<=2^n-1,但窗口过大会导致接收窗口无法区别新帧和旧帧

选择重传协议

当某帧出错,后续收到正确的帧,先不立即递交上层,先缓存,等到错误帧重传再按顺序提交上层
在这里插入图片描述
发送方
上层调用:接收到数据后,当序号处于窗口内,则发送数据帧,否则缓存数据或返回上层晚点再传输
收到ACK确认帧:加入窗口内,标记对应帧为已接收,若为窗口下界则移动窗口到未确认帧的最小序号处,若窗口移动且仍有未发送帧,则发送这些帧

接收方
发送确认帧,将失序帧缓存,并返回该帧确认帧,知道所有帧被收到才一次性按序交付上层,移动窗口
在这里插入图片描述
在这里插入图片描述

设备

网桥

在这里插入图片描述

冲突域(碰撞域):同一时间内只能有一台设备发送信息的范围,即在冲突域内不能有两台机器同时传输数据
广播域:网络中能接收任一设备发出的广播帧的所有设备的集合
网段:一个计算机网络内使用同一物理层设备能够直接通信的那一部分

多个以太网通过网桥连接后,形成一个范围更大的以太网,原来的每个以太网称为一个网段

网桥工作再链路层的MAC子层,使以太网各网段成为隔离开的碰撞域

网桥比工作在物理层的转发器,多了过滤通信量的功能

网段独立,故障不影响其他网段

网桥处理的是帧,中继器和放大器处理的是信号

网桥信息处理方式

网络1与网络2通过网桥连接后,网桥收到网络1发来的数据帧,检查地址,是网络2的则转发,网络1的则丢弃
在这里插入图片描述

特点

  • 网桥具备寻址和路径选择能力,以确定帧的传输方向
  • 网桥具备协议转换能力,网段间使用协议可能不同
  • 网桥对接收到的帧很少修改
  • 网桥通过执行帧翻译互联不同类型的局域网,把原协议的信息段内容添加封装进帧里面
  • 网桥有足够大缓冲空间,避免帧到达速率高于转发速率

优缺点

过滤通信量大、物理范围大、可使用不同物理层、可互联不同局域网、可靠性高
但增大了时延,MAC子层没有流量控制功能,连接不同MAC子层网段时需要转换帧格式,网桥只适用于用户数不多的局域网

局域网交换机

本质上说,以太网交换机是一个多端口的网桥,它工作在数据链路层。交换机能经济地将网络分成小的冲突域,为每个工作站提供更高的带宽。

检测从以太端口来的数据帧的源和目的地的MAC(介质访问层)地址,然后与系统内部的动态查找表进行比较,若数据帧的MAC地址不在查找表中,则将该地址加入查找表,并将数据帧发送给相应的目的端口。
在这里插入图片描述

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

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

相关文章

银行转账问题(死锁)

本文主要讲述死锁的一个经典案例—银行转账问题&#xff0c;并对该问题进行定位、修复。 1. 问题说明 当账户A对账户B进行转账时&#xff0c; 首先需要获取到两把锁&#xff1a;账户A和账户B的锁。获取两把锁成功&#xff0c;且余额大于0&#xff0c;则扣除转出人的余额&…

我记不住的那些C语言的struct知识

背景&#xff1a; 最近在重学C语言&#xff0c;目的是为了能看懂操作系统的底层代码&#xff0c;也为后续使用C语言开发一个类似redis数据库的中间件做准备&#xff0c;于是又重新踏上了学习C语言的道路&#xff0c;早在上学期间就学习过C语言&#xff0c;但是很久都不用了&…

ssm学习-spring01

Spring_day01 今日目标 掌握Spring相关概念完成IOC/DI的入门案例编写掌握IOC的相关配置与使用掌握DI的相关配置与使用1,课程介绍 对于一门新技术,我们需要从为什么要学、学什么以及怎么学这三个方向入手来学习。那对于Spring来说: 1.1 为什么要学? 从使用和占有率看 Spri…

使用 ChatGPT API 构建系统(一):分类

今天我学习了DeepLearning.AI的 Building Systems with the ChatGPT API 的在线课程&#xff0c;我想和大家一起分享一下该门课程的一些主要内容。 下面是我们通过Openai API来访问ChatGPT模型的主要代码&#xff1a; import openai#您的openai的api key openai.api_key YOUR…

chatgpt赋能python:Python删除节点:从入门到实践

Python删除节点&#xff1a;从入门到实践 在任何编程语言中&#xff0c;删除节点都是一个极为常见的操作。在Python中&#xff0c;它同样非常重要&#xff0c;因为我们通常会使用Python处理各种数据结构&#xff0c;诸如树、链表等等。但是&#xff0c;删除节点并不总是一件容…

C++类和对象 -- 知识点补充

补充 const成员函数static成员友元内部类匿名对象拷贝对象时的一些编译器优化 const成员函数 将const修饰的成员函数称为const成员函数&#xff0c;const修饰类成员函数&#xff0c;实际是修饰该成员函数隐含的this指针&#xff0c;表明在该成员函数中不能对类的成员进行修改。…

javaWeb ssh自习室管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh自习室管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,…

预报名通道已开启,2023第11届国际生物发酵展,8月4-6日上海见!

新机遇、新挑战、新发展 同期展会&#xff1a;酵素产品与益生产品展 制药机械与包装技术展 生化仪器及实验室设备展 合成生物技术与生物制造展 展会时间&#xff1a; 2023年8月4日 9:00-17:00 2023年8月5日 9:00-17:00 2023年8月6日 9:00-15:00 展会地点&#xff1a…

【数据结构】栈和队列选择题和面试编程题

目录 一、选择题 二、栈和队列的面试题 1、括号匹配问题 1.1 题目说明 1.2 题目解析 2、用队列实现栈 2.1 题目说明 2.2 题目解析 3、用栈实现队列 3.1 题目说明 3.2 题目解析 一、选择题 1、若进栈序列为 1,2,3,4 &#xff0c;进栈过程中可以出栈&#xff0c;则下列不可能的…

软考A计划-电子商务设计师-信息安全知识

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

安全防御——IDS(入侵检测系统)

安全防御——IDS&#xff08;入侵检测系统&#xff09; IDS介绍为什么需要IDSIDS的工作原理IDS的工作过程第一步&#xff1a;信息收集第二步&#xff1a;数据分析 IDS的主要检测方法1、模式匹配&#xff08;误用检测&#xff09;2、统计分析&#xff08;异常检测&#xff09;3、…

chatgpt赋能python:Python创建venv的完全指南

Python创建venv的完全指南 在Python开发中&#xff0c;虚拟环境是一个非常有用的工具。它可以让我们在同一台计算机上拥有多个Python环境&#xff0c;而不会互相干扰。在本文中&#xff0c;我们将介绍如何使用Python创建venv&#xff08;虚拟环境&#xff09;。 什么是venv&a…

4-5.配置信息和路由信息

一、配置信息 app.run()的参数 参数1&#xff1a;host&#xff0c;如果我们不指定&#xff0c;默认值是127.0.0.1。参数2&#xff1a;port&#xff0c;如果我们不指定&#xff0c;默认值是5000。参数3&#xff1a;debug&#xff0c;调试模式&#xff0c;如果不指定&#xff0…

chatgpt赋能python:Python创建画布语句

Python 创建画布语句 在数据可视化的领域&#xff0c;画布&#xff08;Canvas&#xff09;是一个重要的概念。画布可以视为一个空白的像素或向量画布&#xff0c;用于绘制图表、图形、图像和动画等。Python 提供了多种创建画布的方式&#xff0c;其中包括使用第三方库和内置库…

哲学家就餐问题(死锁)

本文主要讲述死锁的一个经典案例—哲学家就餐问题&#xff0c;并对该问题进行修复。 1. 问题描述 看上图&#xff0c;有五位哲学家&#xff0c;每天循环做两件事&#xff1a;思考&#xff0c;吃面。吃面时每人面前都有一个盘子&#xff0c;盘子左边和右边都有一根筷子&#xff…

5.3 树和二叉树的抽象数据类型定义

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 1.什么是树的抽象数据类型定义 树的抽象数据类型定义是指对树这种数据结构的一种抽象描述&#xff0c;其中包括了树的基本操作和性质。它定义了树作为一…

基于深度学习的目标姿态检测方法_kaic

目录 摘要 第1章 引言 1.1 研究背景和意义 1.2 国内外研究现状 1.3 主要内容 第2章 单目相机的目标姿态检测技术 2.1单目相机的工作原理 2.2目标姿态检测 2.3已有的目标姿态检测方法及其局限性 2.4本章总结 第3章 构建数据集 3.1 数据集来源 3.2数据集标注 3.3数据集分析 3.4本…

基于Springboot的社区论坛系统(源代码+数据库)055

部分代码地址 https://gitee.com/ynwynwyn/forum-public 基于Springboot的社区论坛系统(源代码数据库) 一、系统介绍 前台&#xff1a; 话题列表&#xff0c;搜索话题&#xff0c;发布话题通过标签筛选话题个人设置&#xff1a;修改个人信息&#xff0c;查看发布话题记录&a…

FPGA设计的指导性原则 (三)

例12. 在SDC文件中附加syn_ramstyle综合约束属性,指定综合存贮单元的类型 SDC文件是Synplicity综合工具通用的综合约束属性文件,其扩展名为”sde”。在SDC 指定 syn_ramstyle的语法格式为: define_attribute (signal_name [bit_range)) syn_ramstyle (atring) 其中,黑体…

1.Python高频函数—数据合并merge()

前言 数据处理中经常对多个表的数据进行合并处理&#xff0c;python 提供两个十分好用的函数处理。merge() 、 concat() merger函数是Python里的数据分析工作中最常见的函数之一&#xff0c;主要应用场景是&#xff1a;针对同一个主键存在两张不同字段的表。&#xff08;这里强…