学习笔记——动态路由——IS-IS中间系统到中间系统(IS-IS工作过程)

六、IS-IS工作过程

1、第一步:建立邻居关系

IS-IS网络中所有路由器之间实现通信,主要通过以下几个步骤:

(1)邻居关系建立:

邻居关系建立主要是通过HELLO包交互并协商各种参数,包括链路类型(level-1/level-2),Hold time,网络类型,支持协议,区域号,系统ID,PDU长度,接口IP等。

(2)链路信息交换:

与OSPF不同,ISIS交互链路状态的基本载体是LSP(link state PDU),不是LSA。交互的过程没有像OSPF协议经历了多个阶段,主要是通过CSNP和PSNP两种协议报文来同步请求以及确认链路状态信息(承载的是链路状态信息摘要),而链路状态信息的详细拓扑和路由信息是由LSP报文传递

(3)路由计算:

SPF计算和OSPF基本一样的,但ISIS算法分离了拓扑结构和IP网段,加快了网络收敛速度。

(1)邻居关系建立

邻居关系,IS-IS目前只支持点对点(P2P)和广播多路访问网络(BMA)其他的网络需要进行额外的配置才能支持,如:在帧中继等特殊环境下,可以通过创建子接口支持P2P的网络类型。

邻居关系的建立主要是通过HELL O包交互并协商各种参数,包括电路类型(level-1/2),hold time,网络类型,支持协议,区域号,系统ID,PDU长度,接口IP等。

ISIS建立邻居关系的必要条件:区域ID号、认证、最多区域地址(max-area-address,Level-2不协商该参数)

OSPF建立邻居关系的必要条件:Hello时间、Hold Time、区域ID号、认证(在广播网络中还需要协商:掩码)

1)ISIS建立邻居关系原则

1)只有同一层次的相邻路由器才有可能成为邻居。

2)对于Level-1的路由器来说,Area ID区域号必须一致。

3)链路两端的ISIS接口的网络类型必须一致。

4)相同的MTU值。

5)只有同一网段的相邻路由器才有可能成为邻居。

6)相同认证。

7)在P2P网络中,system-id长度要一致,最大区域地址数要相同。

(2)IS-IS邻居状态

与OSPF协议不同,IS-IS协议一共定义了三种邻居状态,如下所示:

1、Down:邻接关系的初始状态。没有收到邻居Hello包时处于Down状态。

2、Initiated:收到邻居Hello包(IIH),但是在Hello包中没有发现自己的信息(报文中的邻接列表未包含路由器自身的SystemID),也称为one-way状态

3、Up:收到邻居Hello包(IIH),并发现自己的信息(邻接列表中包含路由器自身的System ID)。

可以看出,IS-IS仅仅根据Hello包的交互情况来定义自己的状态,并没有链路状态信息的相关状态。

(3)IS-IS邻居建立过程

1)广播型链路邻居关系建立

默认情况下是三次握手,但是可以修改为两次握手方式广播型链路上IS-IS协议的目的组播地址

L1级别的为0180-C200-0014

L2级别的为0180-C200-0015

在广播型链路上,IS-IS邻居的建立采用三次握手机制,流程如下:

 

R1及R2通过千兆以太接口互联,这两台直连的Level-1路由器建立邻接关系的过程如下:(上左图)

  1. 在Down状态下,R1组播发送Level-1 LAN IIH(LAN Hello报文),此报文中邻接列表为空。
  2. R2收到此报文后,检测到neighbor字段不包含本地MAC地址,将邻接状态标识为Initial。然后,R2再向R1回复Level-1 LAN IIH,此报文中标识R1为R2的邻接。
  3. R1收到此报文后,检测到neighbor字段中包含了本地的MAC地址,将自己与R2的邻接状态标识为Up。然后R1再向R2发送一个标识R2为R1邻接的Level-1 LAN IIH。
  4. R2收到此报文后,将自己与R1的邻接状态标识为Up。这样,两个路由器成功建立了邻接关系。
  5. 广播网络中需要选举DIS,在邻接关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举

1、R1先在GEO/O/0接口上激活了IS-IS,缺省时该接口的网络类型为Broadcast,由于R1是Level-1路由器,因此GEO/O/0接口的Level为Level-1,它将在该接口上周期性地发送Level-1 LAN IIH,这些PDU以组播的形式发送,目的MAC地址是0180-c200-0014,该Level-1 LAN IIH中记录了R1的系统ID(0000.0000.0001),此外,还包含多个TLV,其中区域地址TLV记录了R1的区域ID(49.0012)

2、R2在其GEO/O/0接口上收到了R1发送的Level-1 LAN IIH,它会针对PDU中的相关内容进行检查(例如检查对方与自己是否处于相同的区域),检查通过后,R2在其IS-IS邻居表中将R1的状态设置为Initial(初始化),并在自己从GEO/O/0接口发送的Level-1 LAN IIH中增加IS邻居TLV,在该TLV中写入R1的接口MAC地址,用于告知R1:“我发现你了”

3、R1收到该Level-1 LAN IIH后,在其IS-IS邻居表中将R2的状态设置为Up,然后在自己从GEO/O/0接口发送的Level-1 LAN IIH中增加IS邻居TLV,并在该TLV中写入R2的接口MAC地址。

4、R2收到该IIH后,在其IS-IS邻居表中将R1的状态设置为Up。如此一来,两台路由器的IS-IS邻居关系就建立起来了邻居关系建立起来之后,R1与R2依然会周期性交互IIH,LSP的交互及LSDB同步过程也将在邻居关系建立起来之后进行。

此外,在R1及R2的邻居关系建立过程中,DIS也会被选举产生LSDB完成同步后,DIS会周期性地在该广播网络中泛洪csNP。

本例描述的是级别-1邻居关系的建立过程,级别-2的情况类似,只不过设备之间使用级别-2局域网IIH建立邻居关系,并且该PDU的目的MAC地址是另一个组播MAC:0180-c200-0015.

在广播链路上,使用LAN IIH报文执行三次握手建立邻居关系。如下左图:

  1. RTA发送IIH报文,报文中包含自己的系统ID邻居状态为:null(不知道邻居是谁),
  2. RTB接收到了报文之后,发现RTA发送过来的报文里面没有自己的系统ID,RTB进入初始化状态(initialized),然后给RTA发送自己IIH报文,里面包含了自己的系统ID,并宣告邻居是RTA,
  3. RTA收到之后进入UP状态,并回复IIH报文,RTB收到之后进入UP状态,此时邻居关系建立完成。然后进行DIS选举

只有收到邻居发过来的Hello PDU有自己的system ID才会up,排除了链路单通的风险。

             

2)P2P链路邻居关系建立

P2P类型IS-IS协议的目的组播地址0900-2B00-0005。

(如上右图)与广播型链路稍有区别,P2P链路上建立IS-IS邻居可以采用根据配置采取三次握手或者两次握手的方式建立IS-IS邻居关系。

在P2P网络中,当路由器采用两次握手建立邻居关系时,步骤非常简单,只需要进行两次的报文交互即可(两次握手),两次握手只要路由器收到对端发来的Hello报文,就单方面宣布邻居为up状态,建立邻居关系,不过容易存在单通风险。

P2P链路上,当采用两次握手建立邻接关系时,只要路由器收到对方的Hello包,状态就处于UP状态。邻居建立更快,但是可靠性较差

在接口模式上执行命令:isis ppp-negotiation 2-way //接口邻接关系建立方式改为两次握手

在接口模式上执行命令:isis ppp-negotiation 3-way

当对端路由器使用两次握手时,本端也会兼容对端路由器的两次握手机制。本端链路采用三次握手机制与对端建立邻接关系,但是不兼容对端两次握手建立邻接关系方式。

在接口模式上执行命令:isis ppp-negotiation 3-way only

在RFC3373中,默认P2P采用了三次握手的方式。通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系,与广播链路邻居关系的建立情况相同。

方式

建立邻居形式

优\缺点

可靠性

Way

方式

只要设备收到IS-IS Hello报文,就会单方向建立起邻居关系

缺点:当链路状态反复波动引起CSNP报文丢失,导致LSDB在一个完整的LSP报文更新周期内不能达到同步。

当路由器间存在两条及以上的链路时,如果某条链路上到达对端的单向状态为Down,而另一条链路同方向的状态为Up,路由器之间还是能建立起邻接关系。导致没有检测到故障的路由器在转发报文时仍然试图通过状态为Down的链路导致报文丢失。

3-way方式

通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系

优点:保证在双方状态都为Up时建立邻居,实现报文安全传输。

3)建立邻居方式判定

那么运行IS-IS协议的路由器是如何判定对端如何与自己建立邻居呢?

如果采用两次握手建立邻接关系,则Hello报文的TLV字段不会出现P2P Adjacent State字段,而当采用三次握手建立邻接关系时,Hello报文的TLV字段会出现P2P Adjacent State字段。凭借P2P Adjacent State字段,就可以通过对端发送的Hello包从而判定对端建立邻居的方式了。

当采用三次握手方式建立邻居时发送的Hello数据包:

当采用两次握手方式建立邻居时发送的Hello数据包:

2、第二步:链路状态数据库同步(链路信息交换)

当邻居状态UP后,开始进行LSDB同步,发送CSNP和PSNP两种协议报文来同步,请求以及确认链路状态信息(承载的是链路状态信息摘要),而链路状态信息的详细拓扑和路由信息是由LSP报文传递。(与OSPF不一致;OSPF进行LSDB同步是需要建立邻接关系,而ISIS是直接进行LSDB同步,不涉及邻居状态的改变)

链路状态信息的载体

1、LSP PDU——用于交换链路状态信息

实节点LSP

伪节点LSP(只在广播链路存在)

2、SNP PDU——用于维护LSDB的完整与同步,且为摘要信息。

CSNP(用于同步LSP)

PSNP(用于请求和确认LSP)

协议报文都分为Level-1和Level-2两种,在MA网络中所有协议报文的目的MAC都是组地址:

Level-1地址为:0180-C200-0014

Level-2地址为:0180-C200-0015

(1)广播网络(MA)中LSP的同步过程

                   

广播网络中新加入路由器与DIS同步LSDB数据库的过程:(上左图)

假设新加入的路由器RTC已经与RTB(DIS)和RTA建立了邻居关系。

建立邻居关系之后,RTC将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻居都将收到该LSP。

该网段中的DIS会把收到RTC的LSP加入到LSDB中,并等待CSNP报文定时器超时(DIS每隔10秒发送CSNP报文)并发送CSNP报文,进行该网络内的LSDB同步。

RTC收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP(如RTA和RTB的LSP就没有)。

RTB作为DIS收到该PSNP报文请求后向RTC发送对应的LSP进行LSDB 的同步。

注意:MA网络CSNP报文只由DIS组播发送,时间默认为10秒

举例说明步骤

A、B图书馆的合作越来越大,并确立了以图书馆B为老大的联盟(DIS)老大负责维护发送书籍清单等任务,这时C图书馆也加入了进来(MA网络)。

这时图书馆A和B的图书数据库已经同步(LSDB同步),图书馆C加进来之后,为了表达诚意,直接给老成员A和B送了自己独有的实体书(LSP),老大B收到了书之后,将书籍加入到联盟的图书数据库中(将RTC的LSP信息加入到LSDB中),然后为了联盟的共同稳定发展,老大定期(10s)在联盟内部发送书籍清单(CSNP),来保证三家图书馆的书籍都是全的。

由于图书馆C是刚加入进来的,他还没有A、B的书籍,当收到老大B发送的书籍清单之后(CSNP)C看了清单,列举了C没有的书籍,然后给老大发送请求(PSNP),老大知道了之后,就给C寄出实体书籍(LSP:注意:这里的是伪节点LSP)

(2)点到点网络(P2P)中的LSP同步过程

(上右图)建立邻居关系之后,RTA与RTB会先发送CSNP给对端设备。如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取相应的LSP。

假定RTB向RTA索取相应的LSP,此时向RTA发送PSNP。RTA发送RTB请求的LSP的同时启动LSP重传定时器,并等待RTB发送PSNP作为收到LSP的确认。

如果在接口LSP重传定时器超时后,RTA还没有收到RTB发送的PSNP报文作为应答,则重新发送该LSP直至收到RTB的PSNP报文作为确认。

注意:P2P网络CSNP报文只发送一次,邻居建立之后就立刻发送。

举例说明步骤

  1. B两个图书馆(RTA、RTB)建立了友好的合作关系(建立邻居),两个图书管商量着合作,A图书馆历史书较多,B图书馆小说较多。两家想要互相补充一下各自所缺的书籍。

这时A图书馆首先发送给B图书馆一份书籍清单,清单上包含了A图书馆所有的书籍名称(CSNP:摘要信息)告诉B,我图书馆所有的书都在这份清单上,你没有的向我拿我再给你寄过来实体书。

图书馆B收到之后,列出了B没有的书,然后发送请求告诉图书馆A这些书是我没有的(PSNP请求)。

图书馆A知道之后,就按照B发送过来的清单拿来实体书,然后打包发送给图书馆B(LSP:全部信息),图书馆B收到实体书之后,非常的开心,发送了一份感谢信给图书馆A(PSNP:确认),但是由于某些原因,感谢信丢失了。

图书馆A没有收到。过了一段时间之后(LSP重传定时器超时)图书馆A认为B没有收到A送出去的实体书,出于担心,A又重新寄了一份实体书过去(重新发送LSP),图书馆B又收到了一份实体书,再次很感谢,这时他也明白了上次的感谢信A应该是没有收到,于是重新发送了一份感谢信给A(重传PSNP:确认)

对应的OSPF中也可拿这个举例,原理不变,只是报文变了一下而已。

(3)IS-IS LSP新旧判断

当一个IS-IS路由器收到一条本地已经存在的LSP时,就要进行LSP新旧判断机制,然后根据判断结果进行不同的处理。

LSP新旧判断采用如下机制:

1、若收到的LSP序列号大于本地LSP,就替换为新报文,并广播新LSP内容;若收到的LSP序列号小于本地的LSP序列号则不接受该报文,同时向收到该报文的接口发送本地LSP报文。

2、若收到的LSP和本地的LSP序列号相等,则判断剩余老化时间是否为0若为0,则表示为最新的LSP。剩余老化时间为0的LSP常常被产生该LSP的路由器用来删除一条LSP。但是,不能使用这种方式修改一条LSP。

PS在默认情况下,ISIS路由器每隔15分钟(即900s)周期性的泛洪更新LSP同时序列号(seq)加1。而ISIS一条LSP的老化时间默认为20分钟(即1200s)除了要等待20分钟外,还要等待60s的零老化时延。重传时间5s。

3、若收到报文序列号相同,且Remaining Time都不为0,则比较checksum,越大越优先

4、若checksum相同,则认为是相同的LSP

LSP的处理机制

产生新的LSP的原因:

ISIS相关接口UP或down或邻居UP或者DOWN

引入的IP路由发生变化

区域间的IP路由发生变化

接口被赋予了新的metric值

周期性更新

3、第三步:路由计算

SPF计算和OSPF基本一样的,但ISIS算法分离了拓扑结构和IP网段加快了网络收敛速度。

当网络达到收敛状态,即完成了LSDB同步的过程,IS-IS就将使用链路状态数据库中的信息执行SPF路由计算,得到最短路径树,之后利用该最短路径树构建转发数据库,即建立路由表。

IS-IS协议使用链路开销计算最短路径,在华为路由器上,接口的缺省开销值为10,且可以通过配置修改。一条路由的总代价为沿此路由路径方向的每一个出接口的开销值简单相加。到达某个目的地可能存在多条路由,其中代价最小的为最优路由。

对于Level-1路由器来说,路由计算具有另外一个功能:为区域间路由选择计算到达最近的Level-2路由器的路径。当一台Level-1-2路由器与其他区域相连时,路由器将通过在它的LSP中设置ATT位为1来通告这种情况,对于Level-1路由器,路由计算过程将选择开销最小的Level-1-2路由器作为它区域间的中介路由器。

(1)IS-IS的计算特点:

在本区域内路由器第一次启动的时候执行的是Full-SPF算法。

后续收到的LSP更新,如果是部分拓扑的变化执行的iSPF计算。

如果只是路由信息的变化,执行的就是PRC计算。

由于采用拓扑与网络分离的算法,路由收敛速度得到了加强。

(2)SPF计算过程

  Step 1:单区域LSDB同步完成

  Step 2:生成全网拓扑结构图

  Step 3:以本节点为根生成最短路径树

  Step 4:默认跨越每个节点开销一样

1)Level-1路由器的路由计算 

R1是Level-1路由器,只维护Level-1LSDB,该LSDB中包含同属一个区域的R2、R3、R1自己产生的Level-1 LSP。

R1根据LSDB中的Level-1LSP计算出Area49.0001内的拓扑,和到达区域内各个网段的路由信息。

R2及R3作为Area49.0001内的Level-1-2路由器,会在它们向该区域下发的Level-1LSP中设置ATT标志位,用于向区域内的Level-1路由器宣布可以通过自己到达其他区域。R1作为Level-1路由器,会根据该ATT标志位,计算出指向R2或R3的默认路由。

2)Level-1路由器的次优路径的问题

缺省时,R1只能通过指向R2或R3的默认路由到达区域外部,但是R1距离R2和R3路由器的Cost值相等,那么当R1发送数据包到192.168.20.0/24时,就有可能选择路径2,导致出现次优路径。

4)Level-1-2路由器的路由计算

R2及R3都维护Level-1 LSDB,它们能够通过这些LSDB中的LSP计算出Area 49.0001的路由。

R2及R3都维护Level-2 LSDB,它们能够通过这些LSDB中的LSP计算出Area 49.0002的路由。

R2及R3将到达Area 49.0001的路由以Level-2 LSP的形式发送到Area 49.0002。

5)Level-2路由器的路由计算

R4及R5作为Level-2路由器,只会维护Level-2 LSDB,它们能够根据该LSDB计算出到达全网各个网段的路由。


整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun    暗号:CSDN】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详细分析Spring中的@Configuration注解基本知识(附Demo)

目录 前言1. 基本知识2. 详细分析3. Demo3.1 简单Bean配置3.2 属性配置3.3 多条件配置 4. 实战拓展 前言 Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)Spring框架从入门到学精(全&am…

k8s集群如kubeadm init和kube-flannel.yam问题

查看k8s中角色内容kubectl get all (显示pod和server以及delment) 删除应用资源选择删除先删除部署查看部署和pod没了服务还在,但资源和功能以及删除,删除服务kubectl delete 服务名(部署名),get pods 获取默认空间的容…

毛细管计算软件

思科普毛细管计算软件 输入部分: 一是制冷剂的选取,含常用制冷剂R134A R600A R407C等 A输入热负荷 B蒸发温度 C冷凝温度 D回气温度 毛细管的选项,根据不同内径对应不同长度的毛细管

详细分析@FunctionalInterface的基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)Spring框架从入门到学精(全) 1. 基本知识 FunctionalInterface 是 Java 8 引入的一个注…

apache:the requested operation has failed使用httpd -t

Apache24\bin cmd 回车 httpd -t 因为我重新压缩了,记住,重新压缩要使用原路径, 因为你安装的 时候使用的是原路径 还是不行就改个端口,切记修改配置文件httpd.conf先把Tomcat停了 Define SRVROOT "F:\Apache\Apache24&q…

从生物学到机械:人眼如何为机器人视觉系统提供无尽灵感?

人眼激发了相机机制的发展,该机制改善了机器人对周围世界的观察和反应方式。 该摄像头系统由马里兰大学(UMD)计算机科学家领导的团队开发,模仿人眼用于保持清晰稳定的视力的不自主运动。 该团队对相机的原型设计和测试称为…

警惕!焦虑过度的这些症状正在悄悄侵蚀你的生活!

在快节奏的现代社会中,焦虑已成为许多人生活的一部分。适度的焦虑可以激发我们的斗志,推动我们前进。然而,当焦虑过度时,它可能会变成一把双刃剑,对我们的身心健康造成严重威胁。本文将探讨焦虑过度的表现,…

机器视觉/自然语言/生成式人工智能综合应用实验平台-实训平台-教学平台

AIGC是人工智能1.0时代进入2.0时代的重要标志,MIT 科技评论也将Al合成数据列为2022年十大突破性技术之一,甚至将生成性Al(Generative Al) 称为是AI领域过去十年最具前景的进展。同时,AIGC领域岗位需求数量暴涨。高校方面在人工智能专业与机器…

文献笔记|综述|When Large Language Model Meets Optimization

When Large Language Model Meets Optimization 题目:当大型语言模型遇到优化时 作者:Sen Huang , Kaixiang Yang , Sheng Qi and Rui Wang 来源:arXiv 单位:华南理工大学 文章目录 When Large Language Model Meets Optimization…

【android 9】【input】【10.发送按键事件4——View的分发流程】

系列文章目录 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录…

AGE 可比性、相等性、可排序性和等效性

AGE已经对原始类型(布尔值、字符串、整数和浮点数)和映射的相等性有了良好的语义。此外,Cypher对整数、浮点数和字符串的可比性和可排序性也有很好的语义。然而,处理不同类型的值与Postgres定义的逻辑和openCypher规范存在偏差&am…

websockt初始化,创建一个webSocket示例

写文思路: 以下主要从几个方面着手写websocket相关,包括以下:什么是webSocket,webSocket的优点和劣势,webSocket工作原理,webSocket握手示例,如何使用webSocket(使用webSocket的一个示例)&#…

【安全设备】堡垒机

一、什么是堡垒机 安全运维审计与风险控制系统即堡垒机,前身为跳板机,跳板机是一个简单的管理设备,但缺乏对运维操作的控制和审计能力。堡垒机是一种特定的网络安全设备,用于在一个网络环境中保护数据和网络不受外部和内部用户的…

k8s record 20240708

一、PaaS 云平台 web界面 资源利用查看 Rancher 5台 CPU 4核 Mem 4g 100g的机器 映射的目录是指docker重启后,数据还在 Rancher可以创建集群也可以托管已有集群 先docker 部署 Rancher,然后通过 Rancher 部署 k8s 想使用 kubectl 还要yum install 安…

深度分析:智算中心建设 - GPU选型

大模型加持AI技术赛道革新发展,“大模型热”愈演愈烈。2024年2月15日,OpenAI首个视频生成模型Sora发布,完美继承DALLE 3的画质和遵循指令能力,能生成长达1分钟全尺寸的高清视频。2024年5月14日,OpenAI发布GPT-4o&#…

comsol达西定律的小例子

comsol达西定律的小例子

clean code-代码整洁之道 阅读笔记(第十七章 终章)

大纲 第十七章 味道与启发 17.1 注释 C1:不恰当的信息 C2:废弃的注释 C3:冗余注释 C4:糟糕的注释 C5:注释掉的代码 17.2 环境 E1:需要多步才能实现的构建 E2:需要多步才能做到的测试 …

computed传参

目录 一、问题 二、解决方法 三、总结 tiips:如嫌繁琐,直接移步总结即可! 一、问题 computed可以依据其他变量动态计算出值,但是v-for渲染html时,需要根据html中 传入的不同变量,来分别做处理或者利用 html中的值该…

node+vue的仿网易云音乐网站-计算机毕业设计源码02905

摘要 本论文基于Node.js和Vue.js技术,以仿网易云音乐网站为目标,设计并实现了一个具有音乐播放、歌曲搜索、歌单推荐等功能的音乐网站。首先,论文介绍了网易云音乐网站的特点和功能,分析了其前端和后端技术栈,为后续设…

CTFShow的36D杯

神光 还是想了一下,但那个异或搞不出来,都是对dword_41A038操作,想起开头就给了 key ,还有反调试应该是要调试的 输出的应该就是 flag ,只是为什么是乱码呢? 放 od 再试试,直接就出 flag 了&am…