【计算机网络原理】网络层IP协议的总结和数据链路层以太网协议的总结.

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶​
个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客

系列专栏:xiaoxie的计算机网络学习系列专栏——CSDN博客●'ᴗ'σσணღ
我的目标:"团团等我💪( ◡̀_◡́ ҂)" 

( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​+关注(互三必回)!

目录

​编辑

 一.IP协议

1.IP协议的报头

1.4位版本号:

2. 4位头部长度:

3.8位服务类型:

4.16位总长度:

5.IP协议的拆包组包功能

6.8位生存时间(TTL)

7.8位协议,16位校验和

8.32位源地址 & 32位目标地址

1.动态分配IP地址

2.NAT机制 网络地址映射

3.终极方案IPV6

2.IP地址的基本规则

1.网段划分

2.子网掩码

3.特殊的IP地址

二.以太网协议

1.以太网协议的报头

2.MAC地址 VS IP地址

3.ARP协议

ARP的工作原理:

ARP的使用场景:

示例:

安全和隐私:

 4.RARP

三.DNS 

DNS的主要功能:

DNS的工作原理:

DNS记录类型:

DNS的缺点:

DNS的替代和补充技术:

DNS的查询过程(这个学校考试可能会考)


 一.IP协议

首先我们需要知道网络层的主要工作就是1.路径规划,2.地址管理同时这个就是IP的规则和特点.

1.IP协议的报头

1.4位版本号:

标识当前的IP协议是什么版本 -> IPV4 还是IPV6.当前主流是这两种版本.

2. 4位头部长度:

以4位字节为单位,说明IP报头最长为60字节,最短为20字节.最短为20字节,这是因为IP报头至少需要包含版本、头部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、头部校验和以及源IP地址和目的IP地址这些基本信息。这些信息加起来至少占用20字节。

3.8位服务类型:

其实只有4位是有效的,并且他们是互斥的,只有一位为1.这4位分别表示为: 最小延时(传输过程中消耗的时间最少), 最大吞吐量(单位时间内传输的数据尽可能的多), 最高可靠性(降低丢包的概率), 最小成本(节省系统资源). 这四者相互冲突, 只能选择⼀个.至于具体的内容,怎么实现的,这里不过多的讨论,这算是系统内核需要考虑的.

4.16位总长度:

整个IP数据包的长度 => IP报头  + 载荷.也就是说一个IP数据包的长度最多就为64kb,如果载荷为UDP数据报的话没什么影响,但是如果载荷为TCP数据报的话,64kb是有可能,是不够的,那么IP协议是如何解决这个问题的呢?

5.IP协议的拆包组包功能

如果IP携带的载荷超出长度上限,IP就会自动拆分成多个数据包,每个数据包携带一部分载荷,发送给接收方,接收方收到只后,在进行组包操作.

那么接收方是如何知道那些数据包需要合并,以及合并的顺序呢.

        IP就算依赖这三个属性来实现IP的拆包组包.

1.16位标识:用来区分那些数据包需要合并.

2.3位标志:只有两位有效,一位用来表示该数据包是否需要组包,一位是结束标志,表示当前的数据包是最后一个需要组包的部分.

3.13位片偏移:若干个需要组包的数据包的先后顺序.

 接收方就可以根据接收到的IP数据包的报头来判断是否需要组包以及,组包的先后顺序了,具体如何实现的,这里不过多介绍,主要是大概率面试不会考,工作(如果是和IP协议相关的工作如交换机开发等等还是得多了解了解)上也几乎用不到.感兴趣可以自行翻阅资料.

6.8位生存时间(TTL)

IP数据包是在网络上转发的,而生存时间就是,限制一个IP数据包在网络上转发的最大次数,一个数据包,初始情况下,都有一个 TTL 这个值(整数).这个次数在经过每一个路由器转发之后,就要 -1,只要这个值达到0这个数据包就会被丢弃,是为了防止数据包在网络中无限循环同时这个数值是可以配置的.一般来说这个TTL这个数值是完全够用的.因为路由器的特性,每一次转发都会覆盖大量的设备,例如博主现在访问一下百度的服务器:

其中的TTL就是一个数据包的生存时间.

7.8位协议,16位校验和

8位协议这里就描述了载荷部分是那种协议的数据报,当数据包在分用的时候应该用那个传输层协议.

16位校验和:这里的校验和就只是对IP报头的校验,载荷部分就让传输层的协议来校验,一般使用CRC校验这里不过多解释.

8.32位源地址 & 32位目标地址

这个可以说是整个IP协议最重要的部分了,它们是用来区分 发送数据包的设备的IP地址。数据包的最终目的地的IP地址.

一个IP地址为32位的整数,为了方便人们的观察我们一般把它写作 "点分十进制"例如:

192.168.0.1;

同时一般来说,不同的设备的IP地址应该是不重复,唯一的,而现如今几乎都是人手一两台手机,电脑,等等网络设备,而IP地址只是一个32位整数即42亿左右不同的IP地址,肯定在现如今是不够用的,那么我们该如何解决这个问题呢?

1.动态分配IP地址

某个设备,只要我上网就分配地址,不上网就不分配,但是这样的方法只是稍微缓解了IP地址分配的压力,在根本上其实并没有解决问题,因为IP地址的数量并没有增加.

2.NAT机制 网络地址映射

首先我们先把IP地址分成两类:

1.私网地址(局域网内部使用)

通常的私网地址为:

10.*  172.16-172.31.*  192.168.*  一般都是这三个类型

2.公网IP(广域网使用)

除了上面提到的私网地址都是公网地址.并且规定,公网IP是唯一的,私网IP允许在不同的局域网中重复.

因为大部分设备都是在局域网中,局域网1的IP地址可以和局域网2的IP地址重复,极大的提高了IP地址的复用.

3.这些IP地址之间如何进行通信

1.同一个局域网内部,设备之间进行通信

因为在同一个局域网中的IP地址是唯一的,所以在同一个局域网中的设备可以进行通信

2.广域网和广域网之间的设备进行通信

因为公网IP是唯一的,所以在广域网之间的设备是可以进行通信的.

3.局域网1的A和局域网2的B之间进行通信或者广域网的设备主动访问局域网的设备

这两种情况都要借助路由器和NAT转换,间接的进行通信,不能直接进行通信.具体如何转换如何间接的进行通信,这里就不过多的赘述了.

4.局域网的IP访问公网IP(最常见的)

局域网的IP需要通过运营商的路由器的NAT功能来访问公网IP,公网IP的响应同样是通过运营商的路由器的NAT功能返回给局域网的设备.

运营商路由器,也可以把它当做一个 NAT 设备它就会对中间经过的数据包,进行 网络地址 转换,当内网设备经过运营商路由器访问外网的时候就会把 IP 数据包中的 源 ip, 替换成它自己的 ip
运营商路由器进行上述替换,目的就是为了让自己的外网 ip取代之前的 内网 ip

举个栗子:

我的电脑给CSDN服务器发送一个数据.假设我的IP地址为 192.168.0.1  端口号为: 1234 CSDN服务器的IP地址为1.2.3.4  端口号为 8023 运营商的IP地址为 5.6.7.8;

    

解释一下过程:

1.我的电脑发送一个数据,其中源IP地址为 192.168.0.1 目的IP地址为 1.2.3.4 源端口号为 1234 目的端口为 : 8023 

2.运营商的路由器接收到这个数据之后,会进行NAT网络地址转换把 源IP地址给转换为运营商的公网IP地址即为 5.6.7.8,并且在内部有一个映射表,把该请求和设备的IP地址给关联起来还有源端口,目的端口等等,将修改后的数据发送给CSDN服务器.

3.CSDN接收到请求后,根据具体的业务,然后返回响应,因为CSDN只知道是IP地址为 5.6.7.8的设备给它发送的请求,所以CSDN发送的数据的源IP地址为 1.2.3.4 目的IP地址为 5.6.7.8 源端口号为 1234 目的端口为 : 8023 

4.运营商的路由器接收到该响应之后,由于之前路由器内部的映射表记录了相关请求对应的内网IP地址, 所以路由器就把这个数据的目的IP地址修改为 我的电脑的IP地址即 192.168.0.1,并且将端口号也对应的修改(这里是简化了端口修改的操作)发送给我的电脑.

5.我的电脑就收到了CSDN服务器的请求,这样就实现了内网设备和外网设备的数据交互.

这里在模拟一下多台设备访问外网服务器的情况.

这里简化一下在同一局域网下的两台设备访问CSDN服务器,端口号相同;
  

可以看到CSDN收到的数据虽然是来自同一个IP地址但是它们的端口号不相同,这个时候CSDN服务器执行业务代码,然后根据不同的端口号给不同的客户端返回响应

当路由器收到响应之后根据内部的映射表,给不同的内网设备返回数据,即转换该数据的目的IP地址.

这个只是简化的映射表,其真实的数据可能更加复杂,更加精妙这里就不过多的解释了,同时注意不同局域网设备同时访问外网设备的例子这里也不过多说明,大体流程和上文的差不多.

3.终极方案IPV6

Pv6使用128位地址,相比IPv4的32位地址,它提供了极其庞大的地址数量(约3.4 x 10^38个地址),足以为地球上每个人分配数十亿个IP地址,根本就不用担心IP地址不够用的情况,但由于更换IPV6硬件什么之类的都需要更换,以及其他的因素目前主流的还是 IPV4 + NAT + 动态分配IP地址.但相信未来是IPV6的天下.

2.IP地址的基本规则

1.网段划分

一个32位的IPV4地址被划分为两个部分,前半部分为 网络号  => 标识局域网,后半部分为 主机号 =>

区分同一个局域网中的不同主机.

在同一个局域网中,不同设备网络号相同,主机号不相同.同时不同局域网的网络号是不同的.

2.子网掩码

一个IP地址为32位,哪些是网络号,哪些是主机号呢,这个时候就引入一个概念了 => 子网掩码.

它也是一个32位的整数,左半部分全为1,右半部分全为0,不会出现01交替的情况,左半部分就为网络号,右半部分就为主机号.举个栗子:

IP地址: 192.168.100.20/24  那么这个24 就代表子网掩码的前24位为1,也就是说 192.168.100 为 网络号,20就为主机号.并且 子网掩码为24 就可以说明 该局域网中可以有 2 ^ 8 -2台主机 , 通常网络地址(第一个地址,如 192.168.100.0)和广播地址(最后一个地址,如 192.168.100.255)不分配给单个主机. 

IP地址为: 192.168.48.10/26

在之前的时候,网段划分的规则,是按照ABCDE五类来划分的,现在已经不用了,但大学期末可能会考,这里就简单提一下.

通过前缀来区分网络号和主机号,这里就不过多解释了,现在已经弃用了

3.特殊的IP地址

1.主机号为0: 这样的IP地址表示网段,不能分配给任何主机,就算分配了也无法上网

2.主机号全为1(二进制): 这个IP地址为广播地址,如果向广播地址发送数据,就会广播给该局域网的所有设备.

3.127.* 环回地址 例如向 127.0.0.1发送数据也是由自己接收.

以上就是关于IP协议的所有内容了.

二.以太网协议

数据链路层确保了网络中数据的可靠和有效传输,为网络层提供了必要的支持,这里就简单介绍一下,主要也是比较接近于底层,对于做开发人员距离比较遥远,如果你对交换机开发感兴趣的话,可以深入了解.

1.以太网协议的报头

1.源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡在出厂时固化的,一般来说每个网卡的MAC地址都不一样,所以可以作为主机的身份标识.

2.帧协议类型字段有三种值,分别对应IP、ARP、RARP;

3.帧末尾是CRC校验码

2.MAC地址 VS IP地址

IP地址的作用是支持整个传输过程的转发,虚拟的.

MAC地址的作用是支持两个相邻节点的转发.真实存在的.

举个例子:

假设Alice想要通过互联网发送一封电子邮件给Bob。

  1. 应用层:Alice在邮件客户端中撰写邮件并点击发送,邮件作为数据被传递到传输层。

  2. 传输层:传输层(如TCP)将数据分割成数据包,并为每个数据包分配一个源端口和目的端口。

  3. 网络层:网络层(如IP)将数据包进一步封装,添加源IP地址和目的IP地址,形成IP数据报。

  4. 数据链路层:当IP数据报到达局域网内的设备时,数据链路层将IP数据报封装到帧中,并添加源MAC地址(Alice的电脑网卡地址)和目的MAC地址(默认网关的地址)。

  5. 路由器转发:帧到达默认网关,网关的路由器根据IP数据报中的目的地IP地址查找路由表,决定如何将数据包转发到下一个网络。

  6. 交换机转发:在Bob的局域网内,交换机使用MAC地址表来确定如何将帧转发到Bob的电脑。

  7. Bob接收:Bob的电脑接收到帧,去掉MAC头部,检查IP数据报的源和目的IP地址,然后将数据包传递给传输层。

  8. 邮件客户端显示:传输层将数据包重新组装,传递给应用层的邮件客户端,Bob可以阅读Alice发送的邮件。

在这个例子中,IP地址负责在整个互联网范围内标识和路由数据包,而MAC地址则负责在局域网内两个相邻节点之间的帧传输。两者共同工作,确保数据能够从源头正确地传输到目的地。

3.ARP协议

ARP,即地址解析协议(Address Resolution Protocol),是网络层和数据链路层之间的一种协议,用于将网络层的IP地址解析为数据链路层的MAC地址。ARP是IPv4网络中必不可少的一部分,它使得网络中的设备能够找到彼此并进行通信。以下是ARP的一些关键特性和工作原理

ARP的工作原理:

  1. IP地址到MAC地址的映射

    • 当一个设备需要与同一局域网内的另一个设备通信时,它需要知道目标设备的MAC地址。ARP用于获取这个信息。
  2. ARP请求(ARP Request)

    • 发送设备在局域网内广播一个ARP请求,该请求包含发送者的IP地址和MAC地址,以及目的IP地址。
  3. ARP响应(ARP Reply)

    • 当拥有目的IP地址的设备接收到ARP请求时,它会检查自己的IP地址是否与请求中的目的IP地址匹配。
    • 如果匹配,该设备会发送一个ARP响应,其中包含它的MAC地址。
  4. ARP表

    • 设备通常会维护一个ARP表(或称为ARP缓存),用于存储IP地址到MAC地址的映射关系。
    • 这个表有生存时间(TTL),过期后需要重新解析。
  5. 广播

    • ARP请求是广播的,意味着它会发送到局域网内的所有设备。
    • ARP响应是单播的,仅发送给发送ARP请求的设备。

ARP的使用场景:

  • 当主机A想要发送数据到局域网内的主机B,但不知道主机B的MAC地址时,它会发送一个ARP请求来获取。

示例:

假设主机A(IP地址为192.168.1.2,MAC地址为AA:BB:CC:DD:EE:FF)想要与同一局域网内的主机B(IP地址为192.168.1.3)通信,但不知道主机B的MAC地址。

  1. 发送ARP请求

    • 主机A发送一个ARP请求,该请求在局域网内广播,询问“谁是IP地址192.168.1.3?”
  2. 接收ARP请求

    • 局域网内的所有设备(包括主机B)接收到ARP请求。
  3. 检查IP地址

    • 主机B检查自己的IP地址,发现与请求中的IP地址匹配。
  4. 发送ARP响应

    • 主机B发送一个ARP响应给主机A,告知其MAC地址,假设为BB:CC:DD:EE:FF:AA。
  5. 更新ARP表

    • 主机A接收到ARP响应后,更新其ARP表,将192.168.1.3映射到BB:CC:DD:EE:FF:AA。
  6. 数据传输

    • 现在主机A有了主机B的MAC地址,可以开始数据传输。

安全和隐私:

  • ARP协议本身不提供安全性。网络上的恶意设备可以发送伪造的ARP响应,这种攻击称为ARP欺骗或ARP毒化,用于拦截网络流量或进行中间人攻击。

  • 为了防止ARP欺骗,可以使用动态ARP检测(DARP)或静态ARP表项等安全措施。

ARP是IPv4网络中的基本组成部分,对于局域网内设备间的通信至关重要。随着IPv6的普及,ARP的替代协议邻居发现协议(NDP)被用于IPv6网络中。

 4.RARP

RARP,即反向地址解析协议(Reverse Address Resolution Protocol),是一种较早期的网络协议,用于将MAC地址(物理地址)解析为IP地址,和ARP大致相同现在已经不用了被DHCP取代了,DHCP(Dynamic Host Configuration Protocol):是当前广泛使用的协议,用于自动分配IP地址和其他网络参数。DHCP提供了更多的功能和更好的安全性.

以太网协议大致了解一下就可以.面试和笔试一般来说也不会考学校考试就不知道了(反正博主之前考试的时候没考),主要是考一点网络层,大部分考的是传输层和最重要的应用层.

三.DNS 

DNS,即域名系统(Domain Name System),是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,使得用户可以通过易于记忆的网址(域名)来访问互联网上的资源,而不必直接输入IP地址。

DNS的主要功能:

  1. 域名到IP地址的解析

    • 允许用户使用域名(如 www.example.com)代替难以记忆的IP地址(如 192.0.2.1)来访问网站。
  2. 域名反向解析

    • 根据IP地址查询对应的域名,通常用于验证或诊断。
  3. 负载均衡

    • 大型网站可能会使用多个服务器,DNS可以返回多个IP地址,实现负载均衡。
  4. 故障转移

    • 当一个服务器不可用时,DNS可以返回备用服务器的IP地址。
  5. 缓存

    • DNS查询结果通常会被缓存,以减少延迟和DNS服务器的负载。
  6. 安全性

    • 通过DNSSEC(DNS安全扩展)提供数据的完整性和来源验证。

DNS的工作原理:

  1. 域名注册

    • 用户或组织向域名注册机构注册域名。
  2. 域名解析请求

    • 当用户在浏览器中输入一个网址时,浏览器会向DNS服务器发起域名解析请求。
  3. 递归查询

    • 通常,用户的ISP(互联网服务提供商)提供递归DNS服务,它会代表用户查询域名。
  4. 根服务器

    • 如果本地DNS服务器没有缓存答案,它会向互联网的根DNS服务器查询。
  5. 顶级域服务器

    • 根服务器会指导查询到相应的顶级域(TLD)服务器,例如.com.org等。
  6. 权威DNS服务器

    • 顶级域服务器会指导查询到负责特定域名的权威DNS服务器。
  7. 解析结果返回

    • 权威DNS服务器提供域名对应的IP地址,该信息被返回给用户。
  8. 缓存结果

    • 解析结果通常会被ISP的DNS服务器和用户的本地系统缓存。

DNS记录类型:

  • A记录:将域名指向一个IPv4地址。
  • AAAA记录:将域名指向一个IPv6地址。
  • CNAME记录:为域名提供别名。
  • MX记录:指定邮件服务器。
  • NS记录:指定域名的权威DNS服务器。
  • TXT记录:用于存储文本信息,常被用于SPF(反垃圾邮件)记录。

DNS的缺点:

  • 安全性问题:传统的DNS容易受到各种攻击,如DNS劫持和缓存污染。
  • 隐私问题:DNS查询可能会泄露用户的浏览习惯。

DNS的替代和补充技术:

  • DNSSEC:通过数字签名保护DNS记录,确保数据的完整性和来源验证。
  • DHCP:动态主机配置协议,可以自动分配IP地址和DNS服务器信息。
  • DoH/DoT:DNS over HTTPS/TLS,通过加密通道发送DNS查询,提高安全性。

DNS是互联网基础设施的重要组成部分,极大地方便了用户访问网络资源,并支持了互联网的可扩展性和可用性。

DNS的查询过程(这个学校考试可能会考)

1.迭代查询

客户端向一个DNS服务器发起查询,如果该服务器没有记录,客户端再向另一个服务器查询,依此类推。

2.递归查询

客户端向一个DNS服务器发起查询,该服务器负责向其他服务器查询并将最终结果返回给客户端

以上就是所有的内容,这里介绍的比较浅,主要也是因为面试笔试考的少,平常工作也几乎很少用到,网络层的知识在学校可能会考的比较多所以这里就简单介绍一下,重点还是要放在 传输层和应用层上,这才是网络的重中之重.谢谢你的阅读,祝你一天愉快.

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oat++ 后端实现跨域

这里记录在官方的例子中,加入跨域。Oat Example-CRUD 在官方的例子中,加入跨域。 Oat Example-CRUD 修改AppComponent.hpp文件中的代码,如下: #include "AppComponent.hpp"#include "controller/UserController…

服务器数据恢复—raid信息丢失导致RAID无法被识别的数据恢复案例

服务器数据恢复环境&故障: 某单位机房搬迁,将所有服务器和存储搬迁到新机房并重新连接线路,启动所有机器发现其中有一台服务器无法识别RAID,提示未做初始化操作。 发生故障的这台服务器安装LINUX操作系统,配置了NF…

【虚拟化】KVM概念和架构

目录 一、什么是KVM? 二、KVM的功能 2.1 主要的功能 2.2 其它功能 三、KVM核心组件及作用 四、KVM与VMware的优势 五、KVM架构 六、qemu介绍 七、创建虚拟机流程 一、什么是KVM? Kernel-based Virtual Machine的简称,KVM 是基于虚拟…

数字看板:跨行业需求下的创新与升级

在当今这个数据驱动的时代,数字看板作为信息展示与决策支持的重要工具,正逐步渗透到各行各业之中。从智慧城市到智能制造,从金融分析到医疗健康,数字看板以其直观、动态、高效的特点,成为了连接数据与决策者的桥梁。本…

代码的魔力:Jupyter Notebook从零开始的探索之旅

1. Jupyter Notebook:探索无限的可能 1.1 Jupyter Notebook的简介 Jupyter Notebook是一个开源的Web应用程序,让你能够创建和共享文档,这些文档可以包含实时代码、数学方程、可视化以及叙述性文本。其名字来源于它支持的三种核心编程语言&am…

【Linux】-----工具篇(自动化构建工具make/makefile)

目录 前言 一、是什么? 二、怎么样的? 三、原理及细节 图解代码 细节1:make工作规则 ①依赖文件存在 ②依赖文件不存在 ③依赖文件列表为空(特殊) .PHONY关键字 细节2:makefile识别程序需要重新编译? 四、…

【PyTorch】基于YOLO的多目标检测项目(二)

【PyTorch】基于YOLO的多目标检测项目(一) 【PyTorch】基于YOLO的多目标检测项目(二) YOLO-v3网络由跨距为2的卷积层、跳跃连接层和上采样层组成,没有池化层。网络接收一幅416 * 416的图像作为输入,并提供三…

pytest 测试框架中 setup、teardown 方法不生效

pytest 测试框架中 setup、teardown 方法不生效 源码有改动: 将 setup、teardown改为:setup_method、teardown_method 可生效 def setup_method(self):print("测试用例执行前的初始化,如:打开浏览器,加载网页...")def setup_class…

动手学深度学习V2每日笔记(模型选择+过拟合和欠拟合)

本文主要参考沐神的视频教程 https://www.bilibili.com/video/BV1K64y1Q7wu/?spm_id_from333.788.recommend_more_video.0&vd_sourcec7bfc6ce0ea0cbe43aa288ba2713e56d 文档教程 https://zh-v2.d2l.ai/ 本文的主要内容对沐神提供的代码中个人不太理解的内容进行笔记记录&a…

算法日记day 20(中序后序遍历序列构造二叉树|最大、合并、搜索二叉树)

一、中序后序序列构造二叉树 题目: 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,…

自定义 RAG 工作流:在 IDE 中结合 RAG 编排,构建可信的编码智能体

构建编码智能体并非一件容易的事。结合我们在 AutoDev、ArchGuard Co-mate、ChocoBuilder 等智能体项目的经验,我们开始思考在 Shire 语言中提供一种新的 RAG 工作流。结合我们先前构建的 IDE 基础设施(代码生成、代码校验、代码执行等接口)&…

Linux下普通用户无法执行sudo指令

当执行sudo指令时出现: xxx(普通用户名字) is not in the sudoers file 说明在/etc/sudoers文件中没有把xxx加入到可执行sudo指令的名单中,因此需要修改sudoers文件。 解决方法:1、vim /etc/sudoers (要…

idea启动项目报:the command line via JAR manifest or via a classpath file and rerun.

解决方案 1.打开Edit Configurations,进去编辑,如下: 笔记配置 2.选择Modfiy options,点击Shorten command line 3.在新增的Shorten command line选项中选择JAR manifest或classpath file 4.点击保存后即可

redis构建集群时,一直Waiting for the cluster to join

redis构建集群时,一直Waiting for the cluster to join 前置条件参考 前置条件 这是我搭建的集群相关信息,三台虚拟机,分别是一主一从。在将所有虚拟机中redis服务器用到的tcp端口都打开之后,进行构建集群。但是出现上面的情况。 …

RK平台瑞发科NS6601 MIPI CSI VC虚拟通道支持不同分辨率

需求&#xff1a;两路不同分辨率的摄像头&#xff0c;通过des后输入给一路MIPI CSI。在capture的时候&#xff0c;可以分别支持不同分辨率的capture动作。 设备树 &i2c2 {status "okay";pinctrl-names "default";pinctrl-0 <&i2c2m4_xfer&g…

快速介绍git(Linux)

git 1、安装2、版本控制3、git vs gitee&&GitHub(git故事)4、git的操作 1、安装 很简单&#xff0c;直接 sudo yum install -y git2、版本控制 故事介绍&#xff1a;你是一个大学生&#xff0c;你上课需要交一分实验报告&#xff0c;教你的老师比较负责&#xff0c;…

GAT知识总结

《GRAPH ATTENTION NETWORKS》 解决GNN聚合邻居节点的时候没有考虑到不同的邻居节点重要性不同的问题&#xff0c;GAT借鉴了Transformer的idea&#xff0c;引入masked self-attention机制&#xff0c; 在计算图中的每个节点的表示的时候&#xff0c;会根据邻居节点特征的不同来…

职升网:中级会计师考场常见的注意问题!

在中级会计师考试的征途中&#xff0c;考生常遇挑战&#xff0c;涵盖考前筹备、考场纪律及考后事宜等多维度。针对准考证信息误差&#xff0c;考生务必迅速联系属地会计考试管理机构进行更正&#xff0c;确保信息无误。若身份证不慎遗失或过期&#xff0c;务必紧急补办临时证件…

MyBatis 参数赋值:#{} 和 ${}及区别

目录 一. #{} 和${} 使用 1 对Interger类型的参数 2 对String类型的参数 二、#{} 和${} 区别 1.性能更好 2.SQL注入 总结 MyBatis 参数赋值有两种方式&#xff1a;#{} 和 ${} 一. #{} 和${} 使用 1 对Interger类型的参数 #{}&#xff1a; Select("select username, pas…

音视频入门基础:WAV专题(3)——FFmpeg源码中,判断某文件是否为WAV音频文件的实现

一、引言 通过FFmpeg命令&#xff1a; ./ffmpeg -i XXX.wav 可以判断出某个文件是否为WAV格式的音频文件&#xff1a; 所以FFmpeg是怎样判断出某个文件是否为WAV格式的音频文件呢&#xff1f;它内部其实是通过wav_probe函数来判断的。从文章《FFmpeg源码&#xff1a;av_prob…