计算机网络第三章——数据链路层(上)

news2024/11/16 17:38:07

提示:节物风光不相待。桑田碧海须臾改

文章目录

  • 前言
  • 3.1.1 数据链路层功能
    • 数据链路层功能概述
  • 3.2.1 封装成帧和透明传输
    • 封装成帧
    • 透明传输
    • 组帧的四种方式
      • 字符计数法
      • 字符填充法
      • 零比特填充法
      • 违规编码法
  • 3.3.1 差错控制(检错编码)
    • 奇偶校验码
    • CRC循环冗余码
  • 3.3.2 差错控制(纠错编码)
    • 海明码
    • 海明距离
    • 1.确定校验码位数r
    • 2.确定校验码和数据的位置
    • 3.求出校验码的值
    • 检错并纠错
      • 方法一
      • 方法二
    • 脑图时刻
  • 3.4.1流量控制与可靠传输机制
    • 数据链路层的流量控制
    • 流量控制方法
      • 停止等待协议
      • 滑动窗口协议
    • 脑图时刻
  • 3.4.2 停止等待协议
    • 为什么要有停止等待协议
      • 无差错情况
      • 有差错的情况
    • 停等协议性能分析
    • 脑图时刻
  • 3.4.3 后退n帧协议
    • 后退n帧协议中的滑动窗口
    • GBN发送方必须响应的三件事
    • GBN接收方要做的事
    • 运行中的GBN
    • 滑动窗口的长度
    • GBN协议重点总结
    • 习题1
    • 习题2
    • 选择重传协议
    • 脑图时刻
  • 3.4.4 选择重传协议SR
    • GBN协议的弊端
    • 选择重传协议中的滑动窗口
    • SR发送方必须要响应的三件事
    • SR接收方要做的事
    • 运行中的SR
    • 滑动窗口的长度
    • SR协议重点总结
    • 脑图时刻


前言

这一章主要学习数据链路层的功能和应用,功能中最主要的也是最重要的就是封装成帧和透明传输,封装成帧就是帮我过滤一下物理层,这里就是将物理层的几个bit分装成帧,帧就是数据链路层的传输单位或者说是传输单元,透明传输他想表达的不管我们分装好的帧是怎么样的一个组合,我们都能把他顺利的传输过去,就是链路层好像看不到他所传输的bit序列,我们在链路层传输的时候可能有一定的差错,差错主要是由于噪声引起的,位错就是bit发生了错误了,也就是1,0 发生错误,帧错误也就是帧发生丢失,乱序等,流量控制其实就是在控制发送方的速度,流量控制中我们会学习几个协议,这几个协议就是对流量控制的保证,可靠传输与其说说是链路层的功能,倒不如说是链路层的特点,为了实现流量控制和可靠传输,我们引入了一个滑动窗口机制,流量控制也是为了满足差错控制,应用主要是学习两种链路以及链路层设备,介质访问控制就是说我要给你发送一个信息,如何避免别人发送的信息和我发送的信息发生碰撞,链路层设备主要学习的是交换机网桥
请添加图片描述

3.1.1 数据链路层功能

数据链路层的主要功能就是将网络层交给他的数据报安全的无差错的交给相邻结点,就像是一个搬运工的角色,
请添加图片描述

数据链路层功能概述

举一个例子,假如有一个公司的boss网络层,他有一个小蜜数据链路层,网络层交给数据链路层五份文件,让他交给B公司的boss网络层,小秘就将五份文件交给了一个傻子物理层,但是她也知道物理层是一个傻子,所以交给物理层之前要先进行编号,丢失也好寻找,
物理层很傻,数据链路层需要未雨绸缪,进行一定的差错控制,相当于给网络层提供了一种无差错的服务,使得网络层感觉不会发生什么错误,数据链路层干的很好,为了实现这种无差错的功能,无确定无连接服务通常用于实时通信或者误码率比较低的一个通信信道,也就是源主机发送一个信息的时候,不用事先和目的主机连接,目的主机收到数据帧的时候也不用返回确认,若是帧丢失,数据链路层也不负责重发,而是交给上一层处理,这种无确认无连接是为了实时通信,为了更快,这种就需要传输层来解决信息出错的问题,有确认无连接服务,不用事先确认连接,但是目的主机收到数据帧的时候,要发回一个确认,若是源主机在规定时间内没有收到一个确认,就会把没有收到确认的帧重新发送一次,这种适合误码率较高的通信,比如无线通信,有确认面向连接就是需要先建立链接,然后发送数据帧之后需要目的主机发回一个确认信息,发送端只有收到一个确认帧之后才能发送下一个,要注意有连接的一定有确认
请添加图片描述

3.2.1 封装成帧和透明传输

封装成帧

封装成帧就是将网络层的ip数据报加头加尾形成一个帧,ip数据报也就成为了帧的数据部,f分,发送的时候就是从帧开始发送的,直到发送到帧尾部为止,组帧就是在发送方完成的事情,帧同步就是接收端识别帧的开始和结束,显然为了提高帧的传输效率,应当帧的数据部分尽可能的大于首部和尾部,但是也不能无限大,帧的最大传输单元叫做MTU,根据不同的协议它们的MTU也不相同,
请添加图片描述

透明传输

下面这句话就是若是某些达不到透明传输就使用一些手段来达到透明传输,透明传输的意思简单来说不会管它传输的是什么,无论是什么都将他交给网络层来进行处理,
请添加图片描述

组帧的四种方式

字符计数法

对于每一个帧,它的第一个字节都是规定了字节数,这样他就可以区分出每一个帧,但是这样就会有一个问题若是第一个帧的第一个字节发生错误,则后面帧的读取就会发生错误,
请添加图片描述

字符填充法

SOH就是指帧首部第一个标志的开始的字节,EOT就是帧尾部的结束字节,看到不同的bit组合来观察是帧开始还是结束,键盘上每一个键字都对应一个ASCII码,键盘上的ASCII和这8bit是不会有重复的,所以无论从键盘上敲击什么都可以放在帧的数据部分,而不会认为是一个EOT,但是当传送的帧是非ASCII的时候 则可能其中的0 1 组合就有与EOT相同的bit组合,从而把后面的丢弃,导致帧传输错误,也就是说通过一种方式当接收方当看到和EOT同样组合的时候也不会认为是一个EOT而是一个数据照常接收,直到遇到帧结束符才会停止接收,
请添加图片描述
字符填充就是在这些控制信息前加上一个转义字符,转义字符其实也是一个8位0 1bit的组合,就是告诉接收端你不用管后面是什么,你只需要正常接收就可以了,同样的SOH之前也加上一个转义字符,遇到转义字节同样的需要加一个转义字节,,直到遇到真正的结束EOT,将原始数据进行一个字节填充就可以放在链路上进行传输了,接收端再将收到的数据的ESC拿掉便可,
请添加图片描述

零比特填充法

主要和字节填充法的区别是首部和尾部,这里的首部和尾部的标识符是一样的,若是数据部分出现了和首部尾部同样的bit组合,我们需要只要遇到五个1 就往后面填一个零,接收端收到一个字段,首先要找到首部和尾部,来确定边界,然后再去扫描其中的数据部分,若是有5个1就把后面的0 删除,
请添加图片描述

违规编码法

就是用两个编码方式中不会用到的编码方式来确定起始和终止,是常用的方法
请添加图片描述

3.3.1 差错控制(检错编码)

对于不同链路可以使用不同的可靠传输机制的,
请添加图片描述
对于链路层的差错控制 我们是在任何一个节点的链路层都可以实现的,每一个结点和他下一个结点就构成了发送方和接收方之间的关系,只要这个关系一成立接收方就应该对发送方发来的数据进行一个差错的检测,甚至是纠正,检错编码中我们主要学习两种奇偶校验码和循环冗余码CRC,现在普遍使用的是CRC,
请添加图片描述

奇偶校验码

若是同时有两个bit发生错误则不能检错
请添加图片描述

CRC循环冗余码

将要发送的数据分组,每一个dbit,加上一个冗余码构成一个数据链路层的传输单元帧在进行发送,但是R位的冗余码是如何确认的呢,这里就需要双方商定一个除数,位数是r+1 位的,除数是题目给的,然后来求R位的冗余数据,首先我们要在发送的d位数据后面加上r位的0,然后除以生成多项式,这个除法是模二的除法,模二就是指加法不进位,减法不退位
等同于异或,同零异一的运算,得到一个商和一个余数,这个余数就是r位的fcs,将这个填到r位0上面,然后再把这样一个帧发送到链路上面,接收方再除生成多项式,看余数是否为零
然后用1101 0110 11 0000来除10011 这里是异或,同零异一,第一位若是0 则不需要写,
请添加图片描述
发送方某些数据被丢弃了,没有对这些帧进行处理,因此还不是可靠传输
请添加图片描述

3.3.2 差错控制(纠错编码)

海明码

海明码和之前学的类似都是需要加上一些冗余码,奇偶校验码是在最低位加上一位或者几位,但是海明码这里需要按照一定的规则在数据位上安插校验码,接下来确定好位置即可插入校验码,所以也就需要求出校验码的值,还有一个问题就是接收方如何根据海明码来进行纠错,
请添加图片描述

海明距离

是取任意两个编码码距的最小值,若是遇到两个编码之间的码距是一,那么这个编码系统码距自然也就是1 了,若是码距是一的话,是检测不出来错误的,跟不要说去纠正,若是码距为2,则若是有一位发生错误使得编码系统码距变成1了,自然也就能发现错误了,但是却不能纠错,所以若是需要检错d位bit的话,码距需要d+1 ,若是需要纠错的话需要的码距是2d+1,
请添加图片描述

1.确定校验码位数r

将m等于4带入,右边也就是最小是5,所以r最小是从3开始,这里求r使用的就是一个一个试,来看那个合适
请添加图片描述

2.确定校验码和数据的位置

请添加图片描述

3.求出校验码的值

海明码会采用一个通配符的形式,如这里的100 写成1**。也就是说四号校验码能管所有1**的数据位的,因此也就是相当于根据不同的校验位来进行分组,采用偶校验就是希望出现偶数个1,
请添加图片描述

检错并纠错

方法一

首先使用三个圈,分别标上1,2,4 然后三个圈中两个两个的交集来说相加,也就是3,5,6, 然后最后一个填上7,然后我们发现4 号与1号发生错误了,所以也就是错误发生在5,7 里面。但是2号并没有发生错误,所以错误位也就发生在5号
请添加图片描述

方法二

请添加图片描述

脑图时刻

请添加图片描述

3.4.1流量控制与可靠传输机制

数据链路层的流量控制

窗口公告就是告诉发送方此时还有的缓冲区还剩多少,控制一下你的速度不要发太多,
请添加图片描述

流量控制方法

请添加图片描述

停止等待协议

停止等待协议也可以看作是一个特殊的停止等待协议,不过是滑动窗口的大小是1,在链路层的滑动窗口在发送过程中是固定的,传输层的窗口是不固定的,
请添加图片描述

滑动窗口协议

比如这里有许多的数据,这里每一个小窗口都是标志着一个帧,这里出现了循环,这就说明了帧序号出现了重复利用,滑动窗口就是指在发送方这里允许发送的帧的序号,比如这里就是这六个都是可有发送,比如发送方发送了0号帧给接收方,接收方收到了0号帧之后,就可以返回给接收方一个确认帧,接收窗口就可以向后移动一位,接收方收到之后就可以向右移动一个窗口,就是收到一个确认帧窗口移动一个单位,
请添加图片描述
滑动串口解决流量控制的问题,因为若是接收方一直没有收到一个确认帧,发送窗口就一直圈在哪里,就相当于变相的控制了发送速率,可靠传输意思是发送方若是超时还是没有收到一个确认帧,则发送方重传帧,
请添加图片描述

脑图时刻

请添加图片描述

3.4.2 停止等待协议

停止等待协议有的放在了传输层,有的放在了链路层,在计算机网络发展的前期,通信质量还不是特别好,链路层就需要担任可靠传输的职责,随着通信质量的发展,出现差错的可能性也变小了,把这个责任交给传输层来实现,链路层主要负责差错的控制,这样使得在链路上传输的速度更快,因此不需要关注是属于哪一个层次的,因为在哪一个层次最后影响的也只是传输数据的一个对象,若是传输层的,发送的数据就可以称为分组,而在链路层进行传输的时候称作是一个帧,只是命名的不同,本质上是一个传输的数据,

为什么要有停止等待协议

数据包其实就是一个数据,链路层可以叫做一个帧,网络层可以叫做IP数据报或者叫做分组,传输层可以叫做报文段,
请添加图片描述

无差错情况

这两个数轴的指向就是时间增大的方向,发送方开始发送数据,因为我们是在链路层进行讨论所以我们把数据以帧作为一个单位,发送方发送一个0号帧,接收方收到0号帧之后,回复一个对0号帧的确认,写作ACK0,这里的第一个0 帧和第二个0 帧是不一样的,
请添加图片描述

有差错的情况

数据帧丢失或检测到帧出错
但是实际上经常会出现一些差错,也就是之前提到的丢包,链路层的体现就是丢失了一些数据帧,这个超时计时器每次发送一个帧都会启动,但是在这个计数器到期之前,确认帧已经到了发送方,这个时候计时器就可以终止掉,若是到期之前还是没有收到确认帧,就会在到期之后重新发一次数据帧,RTT就是往返传播时延,这里需要比平均往返时延要长一点,因为发送方发送需要发送时延,接收方发送确认帧也有发送时延,需要对帧进行编号,这样就有效解决了帧的丢失,帧的重复,
请添加图片描述
ACK丢失
若是在确认帧发给发送方的时候丢失了,这个时候发送方就不会收到确认帧,然后超时重传刚才的帧,然后接收方会丢弃重复的1帧,再次发送一个对一号帧的一个确认,

请添加图片描述
ACK迟到
首先发送方在等待了一个超时计时器之后依然没有等待到确认帧,这个时候发送方就会超时重传一个0号帧,此时接收方收到0号帧,发现刚才是受到过0号帧的,此时就需要丢弃这个0号帧,并重新发送一个确认帧,然后接收方收到这个0号帧的确认之后,开始发送一号帧,但是此时收到了0号帧的一个确认帧,本来应该收到的是1号帧的一个确认的,说明0号帧的确认来晚了,此时发送方对这个0号确认帧不做处理,只是简单的丢弃就可以,
请添加图片描述

停等协议性能分析

发送方发送数据也是按照1bit 1bit进行数据发送的,这个红色的宽就是发送方的发送时延,这个确认帧是一个只包含控制信息的不含数据,因此这个黑色的长条要窄一些,下面这个例题中没有给确认帧的发送时延,因此这里就不加上了,
请添加图片描述
请添加图片描述
请添加图片描述

脑图时刻

请添加图片描述

3.4.3 后退n帧协议

这里连续发送多个帧,这样就会比我们刚才的信道利用率要更高,所以这里必须要增加一个序号范围,传送中的数据帧必须有一个序号,所以就像这里三组数据帧的序号要是不同的,这样接收方才能返回给发送方一个唯一确认帧,另外发送方需要缓存多个分组,这是因为传递数据的过程中很容易出现帧丢失的情况,所以可能多个分组都是需要缓存的,当然这里可能会出现发那个的帧或者确认的帧出现丢失等情况,所以这里也就有了后退n帧协议和选择重传协议,
请添加图片描述

后退n帧协议中的滑动窗口

发送窗口,简单来说就是发送帧的序号都必须在这个发送窗口里面,后面没有进入这个发送窗口里面的自然也就是不能发送的,后退n帧中这里接收窗口固定为1,停等协议中发送窗口接收窗口都是1,后退n帧协议发送窗口是有n个,接收窗口是有1个,sr选择重传协议发送窗口有n个,接收窗口同样有n个,如下发送方先发送0号帧,0号帧已经发送到链路上了,发送方也会copy一个1号帧的副本,0号帧传输的过程中,1号帧也是可以发送的,因为只要在这个发送窗口里,且有这个帧我们就可以发送,接收方收到之后,接收窗口就向右移动一个位置,接收方就会发送一个确认帧,发送方收到这个确认帧之后,窗口就会前移一位
若是每一个都发送一个确认帧,这不就是停等协议了吗,所以这里有一个独特之处就是累积确认,若是接收方同时收到了123三个帧接收方不需要逐一的去确认,只需要发送一个3号的确认帧即可,在发送方这里我们可以分成三个部分,发送并且被确认收到的帧,已经发送但是等待确认的帧,还能发送的帧,还有就是不在发送窗口中的帧,
请添加图片描述

GBN发送方必须响应的三件事

请添加图片描述

GBN接收方要做的事

如果我们接收方按序收到了n号帧,接收方对接下来收到的帧心中都是有一个数的,知道接下来要收到几号帧,若是之前都是按照计划进行的,每一个期待的帧都受到了,接收方就可以发送一个ACK,假如现在收到了0 1 2 4 5 号帧 这里接收方收完2号帧之后,它心中就知道接下来要受到的是3 号帧,这个三号帧就存放于expectedseqnum中, 若是等不到三号帧则会丢弃4,5 号帧并且重新发送一个2号的确认帧,发送方就会把3号帧以及之后的帧都重新发送
请添加图片描述

运行中的GBN

这里假设滑动窗口大小是4, 首先发送过来的是0号帧,然后是一号帧,这些无论是发送方还是接收方都没有丢失,然后发送方发送二号帧的过程中丢失了,此时接收方无论是收得3 号帧还是四号帧接收方都会丢弃,而且发送方的一直发送的都是ack1,直到发送方接收到之后确认帧之后,然后重新发送已发送但是还没有确认的帧,
请添加图片描述

滑动窗口的长度

假如这里n为2,则滑动窗口的大小是4,若是发送的时候,0号帧丢失了,则此时就无法分辨是新窗口的0号帧还是原来窗口的0号帧,
请添加图片描述

GBN协议重点总结

偶尔捎带确认是指接收方偶尔也可以发送一些数据给发送方,接收方可以将这个确认帧放到数据中这样就相当于是一个顺风车的形式,一旦发送窗口的大小在发送的时候确定好,发送的过程中是不能改变的,
请添加图片描述

习题1

发送方受到了3号帧的确定,所以这里这里应该从4号帧可以发送
请添加图片描述

习题2

首先需要算一下甲的发送延迟,也就是甲的发送窗口的尺寸乘以数据帧长,然后换算成bit也就是乘8,再除以甲的发送功率,算出甲的发送时延是80ms,甲在发送第一个帧之后,什么时候才能受到这个帧的确认帧,先算传播延迟,加上甲发送第一个帧的传输延迟,也就是100.08ms,所以也就是需要等待20毫秒才能受到确认帧,受到确认帧之后窗口才能向前移动,
请添加图片描述

选择重传协议

请添加图片描述

脑图时刻

请添加图片描述

3.4.4 选择重传协议SR

GBN协议的弊端

请添加图片描述

选择重传协议中的滑动窗口

请添加图片描述

SR发送方必须要响应的三件事

请添加图片描述

SR接收方要做的事

这里所说的收到小于窗口的帧,可能原因是发给接收方的确认帧丢失了,所以发送方有超时重传了,返回一个ACK的确认帧,这个确认帧是与那个小于窗口的帧相对应的确认帧,注意这里和后退n帧的区别,注意这里返回的确认帧是一一对应,不能使用一个高帧来代替
请添加图片描述

运行中的SR

对于接收方,只要收到了接收窗口中的帧,都会返回一个确认帧,并返回一个确认,收一个确认一个,接收方只有收到下界的帧窗口才会移动,发送方只有收到发送窗口下界的确认帧窗口才会移动,
请添加图片描述

滑动窗口的长度

控制长度主要是为了区分是新帧还是旧帧,如下面左图中窗口大小是三,这三个帧都顺利到达了,所以接收窗口向右移动三个单位,但是发送的确认帧都丢失了,所以发送窗口没有移动,超时重传的就是原来的老0号帧,而接收方以为是滑动窗口新0号帧,还有就是下右图,发送方发送的帧都顺利到达了接收方,接收窗口向右移动三个单位,然后接收方收到了一个0号的确认帧,发送窗口向右移动一个位置,然后可以发送三号帧,但是三号帧丢失了,然后收到1号帧的确认,接收窗口向右移动一个位置,发送方就可以发送一个0号帧,这个0号帧就是新帧,所以是0是新帧还是旧帧就无法确认,

SR协议重点总结

请添加图片描述
请添加图片描述

脑图时刻

请添加图片描述

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

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

相关文章

【编程语言 · C语言 · while语句】

​while 语句 循环 在前面我们了解到, 程序在运行时可以通过判断, 检验条件作出选择。此处,程序还必须能够重复, 也就是反复执行一段指令, 直到满足某个条件为止。 while 语句 while语句可以执行循环结构。 语法: while(表达…

6.8 互斥锁/读写锁的概念及使用、死锁的避免

目录 线程通讯-互斥 互斥锁初始化-pthread_mutex_init 互斥锁销毁pthread_mutex_destroy 申请锁-pthread_mutex_lock 释放锁-pthread_mutex_unlock 读写锁 死锁的避免 ​编辑 条件变量 线程的GDB调试 笔记 线程的互斥和同步 临界资源概念: 互斥锁的创…

在京东待了几年,感觉自己废了····

在一家公司待久了技术能力反而变弱了,原来的许多知识都会慢慢遗忘,这种情况并不少见。 一个京东员工发帖吐槽:感觉在大厂快待废了,出去面试问自己接口环境搭建、pytest测试框架,自己做点工太久都忘记了。平时用的时候…

【功能超全】基于OpenCV车牌识别停车场管理系统软件开发【含python源码+PyqtUI界面+功能详解】-车牌识别python 深度学习实战项目

车牌识别基础功能演示 摘要:车牌识别系统(Vehicle License Plate Recognition,VLPR) 是指能够检测到受监控路面的车辆并自动提取车辆牌照信息(含汉字字符、英文字母、阿拉伯数字及号牌颜色)进行处理的技术。车牌识别是现代智能交通…

FMC子卡设计方案原理图:两路250Msps AD、两路600Msps DA FMC子卡

一、板卡概述 ADC采用TI的ADS62P49,2通道250M,14bit,共1片; DAC采用ADI的AD9122,2通道,16bit,可达1.2G,共1片; 时钟采用AD9516,支持板上时钟和外接时钟…

驱动--自动创建设备节点

自动创建设备节点 头文件&#xff1a;#include <linux/device.h> 自动创建设备节点&#xff1a; struct class *cls; cls class_create(owner, name) /void class_destroy(struct class *cls) 功能&#xff1a;向用户空间提交目录信息 参数&#xff1a; owner :THIS_MOD…

打卡有礼!快来 2023 开放原子全球开源峰会找龙蜥玩~

回望过去&#xff0c; 2022 年开放原子全球开源峰会上&#xff0c;龙蜥社区携新一届理事成员以及 18 位产学研大咖重磅亮相&#xff0c;社区论坛及展区更是吸引了近 1400 位参会者参与互动&#xff0c;现场热闹非凡。再看今朝&#xff0c;2023 年开放原子全球开源峰会举办在即&…

淘宝618每日一猜答案(6月8日)明星孙怡最喜欢的显瘦单品?

淘宝6月8日每日一猜答案是什么&#xff1f;&#xff0c;接下来也会给大家来介绍一下6月8日淘宝大赢家每日一猜的答案。 淘宝每日一猜6月8日答案分享 活动问题&#xff1a;明星孙怡最喜欢的显瘦单品&#xff1f; 活动答案&#xff1a;【鲨鱼裤】 还有打开手机淘宝&#xff0c…

Java 高效处理千万级数据:技巧与最佳实践

引言 这篇文章主要为大家简单介绍 Java 如何处理千万级数据&#xff0c; 随着大数据时代的到来&#xff0c;数据量持续呈现爆炸式增长。在这种背景下&#xff0c;如何快速、高效地处理和分析千万级甚至更大规模的数据&#xff0c;成为企业和开发者面临的重要挑战。处理大数据…

通过Typora,以CSDN作为图床、解决CSDN防盗链问题、将CSDN博客搬到hexo上

完美将csdn的md(包括图片)复制到hexo上 其实主要就是复制图片&#xff0c;因为csdn有防盗链&#xff0c;自己的hexo上不能拉取csdn上的图片资源 1. 安装Typora Typora作为本地的md编辑器&#xff0c;有在复制网络图片时&#xff0c;直接将其保存到本地的能力&#xff0c;我们…

集权攻防——身份认证协议之NTLM

在Kerberos出现之前&#xff0c;NTLM被广泛应用于工作组和域环境&#xff0c;是更早的用于对用户进行身份验证的协议。 相比于Kerberos&#xff0c;NTLM的认证原理比较简单&#xff0c;主要通过对比客户端和服务端加密后的数据&#xff0c;判断其是否一致&#xff0c;以确定用…

浅析Spring生命周期

前言 Spring框架是一个非常流行的Java企业级应用程序框架&#xff0c;已经成为许多生产环境中的首选技术。它提供了一种便捷的方法来帮助开发人员构建可扩展和模块化的企业级应用程序。在Spring框架中&#xff0c;Bean生命周期是非常重要的一部分&#xff0c;它负责Bean的创建…

【教程】ChuanhuChatGPT本地化部署支持多语言模型支持上传分析文档附件的GPT

原文&#xff1a;【教程】本地化部署支持多语言模型支持上传分析文档附件的GPT_腾讯新闻 说明 该项目要是为 ChatGPT API 和其他多种语言模型&#xff08;Language Language Models&#xff0c;简称 LLM&#xff09;提供一个用户友好的 Web 图形界面(GUI)。这个项目的 GUI 支…

# 文盘Rust -- tokio绑定cpu实践

作者&#xff1a; jiashiwen 原文来源&#xff1a; https://tidb.net/blog/18804515 notice"Rust is a trademark of the Mozilla Foundation in the US and other countries." tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程…

AI浪潮下,企业如何保障数据安全,不泄露

随着数字经济蓬勃发展&#xff0c;数据对于企业的价值与重要性不断攀升&#xff0c;随之而来的数据安全风险也不断涌现。再加上ChatGPT诞生&#xff0c;推动ai算力技术大步跃进&#xff0c;而算力提升的背后是史诗量级规模的数据投入&#xff0c;数据量越大&#xff0c;用户数据…

函数调用的机器级表示

文章目录 1.Call和ret指令2. 如何访问栈帧里面的数据为什么栈底放在上面&#xff0c;栈顶放在下面X86中的寄存器EBP、ESP寄存器push 、pop 指令mov 指令总结如何访问栈帧 3. 如何切换栈帧函数调用时函数返回时 4. 完整的函数调用过程1. 一个函数的栈帧内包含哪些内容2. 汇编代码…

配置数据库

&#x1f333;&#x1f333;&#x1f333;前言&#xff1a;下载数据库&#xff0c;安装配置数据库&#xff0c;连接Navicat 又又又重新配置数据库害。 目录 一、下载数据库 二、安装 三、解决3306端口占用 四、验证 五、连接Navicat 一、下载数据库 官方链接&#xff1a;M…

Glibc——堆利用机制[拓展]

目录 1、什么是堆 2、使用动态分配的内存 3、系统调用brk和mmap 3.1 brk() 3.2 mmap() 4、多线程与Arena 5、维护多个堆 1、什么是堆 堆是每个程序被分配到的一块内存区域&#xff0c;和栈的区别主要在于堆内存是动态分配的。也就是说&#xff0c;程序可以从“heap“段请…

LPC1114 - AD采集

一、基础知识 1.1位操作 对寄存器的bit5写0&#xff1a; 寄存器&~&#xff08;1<<5&#xff09;&#xff1b; 现在运用你的C语言知识分析一下&#xff0c;把十进制的1写成二进制32位数就是&#xff1a; 00000000000000000000000000000001 &#xff08;1<<5&…

微服务下如何选择OAuth2授权之四种模式

OAuth2.0是一个授权框架&#xff0c;他规定了客户从授权服务器获取令牌Token的规则。 一、OAuth2的组成部分 1.OAuth2.0需要解决的问题 要理解OAuth2.0&#xff0c;先要知道为什么会有这个东西产生&#xff0c;或者说他能帮我们解决什么问题&#xff0c;其实简单说他就是帮我…