计算机网络链路层

数据链路

链路是从一个节点到相邻节点之间的物理线路(有线或无线) 数据链路是指把实现协议的软件和硬件加到对应链路上。是点对点信道的数据链路层的协议数据单元。

点对点信道

通信的主要步骤:

  1. 节点a的数据链路层将网络层交下来的包添加首尾分装成帧。
  2. 节点a将封好的帧发送给节点b的数据链路层。
  3. 若节点b收到的帧无差错则从收到的帧中提取出数据,否则将该帧丢弃。

广播信道

局域网的优点:

  • 具有广播功能。
  • 便于系统的扩展和演变。
  • 提高了系统的可靠性、可用性、生存性。

 静态划分信道、动态媒体接入控制。

以太网的两个主要标准。

三个基本问题

封装成帧

封装成帧就是在一段数据的前后分别加上首部和尾部。首部和尾部的一个重要作用就是帧定界。每一种链路协议都规定了所传输的帧的数据部分的最大长度——最大传输单元MTU

透明传输

透明传送数据:不管什么样的比特组合的数据,都能按照原样没有差错的通过数据链路层。

“透明”表示某个存在的事物看起来好像不存在一样。

当传输文件为非ASCII的文本文件时如果数据中的某个字节的二级制代码恰好为控制字符,数据链路层就会错误的把部分帧收下。 

解决透明传输的问题是:发送端数据链路层在数据中出现控制字符“SOC”和"EOT"时在SOC和EOT前插入一个转义字符“ESC”,接收端的数据链路层把数据送往网络层之前删除这个转义字符,这叫字符填充字节填充

差错检测

在传输过程中可能产生比特差错,即0变成1,1变成0 。传输错误的比特占所有传输的比特总数的比率称之为误码率BER。误码率与信噪比有很大关系。

循环冗余检验CRC

生成步骤

(1)、将x的最高次幂为R的生成多项式G(x)转换成对应的R+1位二进制数。
(2)、将信息码左移R位,相当于对应的信息多项式C(x)*x的R次方。
(3)、用生成多项式(二进制数)对信息码做除,得到R位的余数即冗余码
(4)、将余数拼到信息码左移后空出的位置,得到完整的CRC码。

循环冗余检验CRC和帧检验序列FCS并不是同一概念。CRC是检错方法,FCS是冗余码。

接收方:冗余码除以除数,余数不为零则该帧有差错丢弃该帧,余数为零可能出错但出错概率小。

缺点:这一种检测方法不知道哪个比特出错。

无比特差错与无传输差错
  • 比特差错:帧内部比特位出现错误,可以通过帧的FCS(方法:CRC检验)序列保证无比特差错。
  • 传输差错:帧丢失、帧重复、帧失序。
  • 在数据链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。(来自CSDN)

点对点协议PPP

特点:

  1. 简单
  2. 封装成帧
  3. 透明性
  4. 多种网络层协议
  5. 多种类型链路
  6. 差错检测
  7. 检测连接状态
  8. 最大传送单元
  9. 网络层地址协商
  10. 数据压缩协商

不需要的功能

  1. 纠错
  2. 序号
  3. 流量控制

多点线路:只支持点对点链路通信

半双工或单工链路:只支持全双工链路

三个组成部分:

  • 一个将IP数据报封装到串行链路的方法。
  • 一个链路控制协议。
  • 一套网络控制协议。

帧格式

首部和尾部分别为4个字段和两个字段。

首部:

首部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的开始。
首部中的地址字段A规定为0xFF(即11111111)。
首部中的控制字段C规定为0x03(即00000011)。
尾部:
尾部中的第一个字段(2个字节)是使用CRC的帧检验序列FCS。
尾部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的结束。
注:标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果连续出现两个标志字段,就表示这是一个空帧,应当丢弃。(来自CSDN)

为点对点信道的透明传输提供的解决方案

异步传输

当PPP使用异步传输时,它把转移符定义为0x7D,并使用字节填充
RFC1662规定了如下填充方法:

  1. 把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
  2. 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。
  3. 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。

由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在接收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

同步传输

当PPP使用同步传输时,使用零比特填充
零比特填充的具体方法:

  1. 在发送端先扫描整个信息字段(通常使用硬件实现,但也可以用软件实现,但是会慢一些)。
  2. 只要发现有5个连续的1,则立即填入一个0。
  3. 接收端在收到一个帧时,先找到标志字段F以确定帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把5个连续1后的一个0删除,以还原成原来的信息比特流。

因此通过这种零比特填充后的数据,就可以保证在信息字段中不会出现连续6个1。

 (来自CSDN)

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

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

相关文章

【spring】FileSystemXmlApplicationContext 类学习

上一篇我们一起学习了 FileSystemXmlApplicationContext介绍AnnotationConfigApplicationContext 。 【spring】AnnotationConfigApplicationContext 类学习_annotationconfigapplicationcontext方法-CSDN博客 FileSystemXmlApplicationContext是一个用于加载和刷新基于XML配…

四种常用限流算法、固定窗口限流算法、滑动窗口限流算法、漏桶限流算法和令牌桶限流算法

什么是限流? 限流可以被视为服务降级的一种形式,其核心目标是通过控制输入和输出流量来保护系统。通常,一个系统的处理能力是可以预估的,为了确保系统的稳定运行,当流量达到预定的阈值时,必须采取措施限制进…

【MagicDrive环境配置】新手配俩星期版

1.创建一个新的环境conda create -n newdrive python3.8 2.激活该环境conda activate newdrive 3.下载MagicDrive源码 git clone --recursive https://github.com/cure-lab/MagicDrive.git,如果出现时间超时八成是网的问题,直接自己下载解压就好 3.我的…

WinServer启用Hyper-V新建虚拟机没有网络、无法开启增强模式

没有网络问题如下: 原因:没有在Hyper-V中新增交换机 操作—虚拟交换机管理器—新建虚拟网络交换机-外部-允许管理员操作系统共享此网络适配器 无法开启增强模式:

Nginx第三方模块---nginx-sticky-module的使用(基于cookie的会话保持)

目录 Nginx和Sticky介绍 编译安装sticky的nginx环境 安装过程碰到的问题和编译安装过程遇到的错误: (1)第一个错误:修改源代码ngx_http_sticky_module.c (2)第二个错误:修改源代码ngx_http_s…

李宏毅【生成式AI导论 2024】第5讲 让语言模型彼此合作,把一个人活成一个团队

GPD4,它也有非常强大的能力。但是GPT4如果跟其他的语言模型合作,他们其实可以发挥1加1大于二的力量。 为什么要让模型合作? 那怎么让模型彼此合作呢?有很多不同的方式。一个可能性是假设你现在手边就有一堆语言模型,他们可能有不同的能力使用,他们可能有不同的成本局来…

骗子查询系统源码

源码简介 小权云黑管理系统 V1.0 功能如下: 1.添加骗子,查询骗子 2.可添加团队后台方便审核用 3.在线反馈留言系统 4.前台提交骗子,后台需要审核才能过 5.后台使用光年UI界面 6.新增导航列表,可给网站添加导航友链 7.可添加云黑类…

Obsidian插件-高亮块(Admonition)

在插件市场里面搜索Admonition并安装插件,就可以使用高亮块了。 添加高亮块 用法稍微有一些不同。按照下面的格式,输入Markdown就可以创建一个高亮块。 内容内容内容输入*ad-*会出现相应的类型可以选择

linux 内存介绍

大致共有四类:VSS、RSS、PSS、USS ,通常情况下,VSS > RSS > PSS > USS 1.VSS(Virtual Set Size)虚拟耗用内存(包含共享库占用的内存) VSS表示一个进程可访问的全部内存地址空间的大小。这个大小包括了进程已…

Mysql数据库-DQL查询

Mysql数据库-DQL基本查询 1 DQL基本查询1.1 基础查询1.2 WHERE子句1)算术运算符2)逻辑运算符3)比较运算符A)BETWEEN... AND ...B)IN(列表)C)NULL值判断 4)综合练习 2 DQL高级查询2.1 LIKE 模糊查…

Linux:Jenkins:参数化版本回滚(6)

上几章我讲到了自动集成和部署 Linux:Jenkins全自动持续集成持续部署(4)-CSDN博客https://blog.csdn.net/w14768855/article/details/136977106 当我们觉得这个页面不行的时候,需要进行版本回滚,回滚方法我这里准备了…

【C语言】编译和链接----预处理详解【图文详解】

欢迎来CILMY23的博客喔,本篇为【C语言】文件操作揭秘:C语言中文件的顺序读写、随机读写、判断文件结束和文件缓冲区详细解析【图文详解】,感谢观看,支持的可以给个一键三连,点赞关注收藏。 前言 欢迎来到本篇博客&…

Swagger添加JWT验证(ASP.NET)

文章目录 JWT1、解析2、配置JWT JWT 1、解析 1)客户端向授权服务系统发起请求,申请获取“令牌”。 2)授权服务根据用户身份,生成一张专属“令牌”,并将该“令牌”以JWT规范返回给客户端 3)客户端将获取到的…

【C语言基础】:数据在内存中的存储

文章目录 一、整数在内存中的存储二、大小端字节序和字节序判断1. 为什么有大小端?2. 练习 三、浮点数在内存中的存储1. 浮点数的存储1.1 浮点数的存储过程1.2 浮点数取的过程 四、题目解析 书山有路勤为径,学海无涯苦作舟。 创作不易,宝子们…

牛客NC26 括号生成【中等 递归 Java,Go,PHP】

题目 题目链接: https://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca 思路 答案链接:https://www.lintcode.com/problem/427/solution/16924 参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参…

从小白-入门-进阶-高阶,四个阶段详细讲解单片机学习路线!

大家好,今天给大家介绍从小白-入门-进阶-高阶,四个阶段详细讲解单片机学习路线!,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 单片机学习路…

冥想打坐睡觉功法

睡觉把手机放远一点,有电磁辐射,我把睡觉功法交给你,这样就可以睡好了。

es6 Class基本语法和继承

es6 Class基本语法 class的基本语法: ES6 的class只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已 传统用构造函数生成实例 function Point(x, y) {th…

政安晨:【Keras机器学习实践要点】(七)—— 使用TensorFlow自定义fit()

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 在TensorFlow中,fit()是一个非常…

【算法题】三道题理解算法思想--滑动窗口篇

滑动窗口 本篇文章中会带大家从零基础到学会利用滑动窗口的思想解决算法题,我从力扣上筛选了三道题,难度由浅到深,会附上题目链接以及算法原理和解题代码,希望大家能坚持看完,绝对能有收获,大家有更好的思…