网络层常见协议——IPV4、IPV6、ARP、ICMP、QoS

目录

1、IPV4 协议

IPV4 地址的组成:

IPV4地址的分类:

关于多播和组播:

常见组播地址分类:

特殊的 IPV4 地址:

私有地址和公有地址:

私有地址的范围:

子网划分:

子网掩码:

可变长子网掩码(VLSM):

CIDR:

路由器中的最佳匹配原则:

IPV4 数据报格式:

2、ARP协议

广域网中主机进行通信时 IP 与 MAC 的变化:

ARP 协议原理:

ARP协议的报文类型:

Windows 中 ARP 相关的命令:

代理ARP(Proxy-ARP)

RARP 协议

3、ICMP 协议(网际控制报文协议)

ICMP协议的报文类型:

ICMP报文的注意事项:

ICMP的应用:

4、QoS:

5、IPV6 协议

IPV6 地址表示:

IPV6 的地址类型:

链路本地地址:

IPV6 多播(组播)地址:

IPV6 任播地址:

IPV6报文的格式:

IPV4 到 IPV6 的过渡方案


1、IPV4 协议

        IP 地址分为两类:IPV4 和 IPV6;IP地址用于标识网络设备。网络中的设备都有IP地址,并通过IP地址进行网络的连接。

        IP 地址是逻辑地址,可以手动配置和修改。

        IPV4 使用32位二进制表示 IP 地址。通常采用点分十进制表示法来进行表示:每8位为一组,共4组,每组之间使用 “.” 进行分隔。

        每一组的取整范围都是 0~255 (十进制);

IPV4 地址的组成:

        两部分:前面的网络部分、后面的主机部分

        如:192.168.0.11 ,设其网络部分是192.168,后面的 0.11则为主机部分。

        如果几台主机的网络部分是一样的,则代表他们在同一个网段(在同一网段的主机即在同一局域网下,相互通信使用交换机通信,不需要使用路由器;而不同网段的主机之间相互通信需要使用到路由器)。

IPV4地址的分类:

        A类地址:第一组为网络部分,限制第一组的范围为 1~126

        B类地址:第一、二组为网络部分,限制第一组的范围为 128~191

        C类地址:第一、二、三组为网络部分,限制第一组的范围为 192~223

        D类地址:第一组为网络部分,取值为224~239,其他三组是组播地址IP;

        E类地址(保留地址):第一组取值为240~255

其中A、B、C类地址是单播地址,D类地址是多播地址。单播表示“一对一”之间的通信,而多播即“一对多”的通信。

        在计算有效的 IP 地址(能够分配给用户主机使用的IP)个数时,要减去2。其中一个是主机部分全为0,表示网络地址一个是主机位全取1,表示广播地址。如 IPV4 地址 192.168.1.100 中,前24位(192.168.1)为网络部分,则有效的 IP 地址为192.168.1.1~192.168.1.254,减去网络地址192.168.1.0 和广播地址 192.168.1.255。

关于多播和组播:

        多播是向一组特定的接收者发送信息,只有加入了同一个组的主机才能接收到此组内的所有数据。广播则是向网络中的所有主机发送信息,不论这些主机是否属于同一组。

        多播有固定的地址段(D类地址),而广播使用特定的广播地址或特定网络的广播地址(如199.123.255.255)

        不管一个组播组中包含多少个成员,当组播服务发送信息时,只需要发送一个分组。( 在组播中,“组”是用IP组播地址进行标识的一个集合。任何用户主机(或其他接收设备)加入一个组播组,就成为该组的成员,可以识别并接收发往该组播组的组播数据。一个组播源可以同时向多个组播组发送数据,而多个组播源也可以同时向一个组播组发送数据。组播组成员可以动态地加入或离开组播组,成员的主机可以广泛分布在网络中的任何地方。)

        组播和广播只能用于目的地址,而不能用于源地址。

    

常见组播地址分类:

224.0.0.0 - 224.0.0.255供路由器协议使用
224.0.1.0 - 224.0.1.255公用组播地址,用于Internet
224.0.2.0 - 238.255.255.255

全网范围内的临时可用组播地址

239.0.0.0 - 239.255.255.255本地管理组播地址,仅在特定的本地范围内有效

特殊的 IPV4 地址:

形式是否能作为源地址使用是否能作为目的地址使用备注
0.0.0.0在本网络上代表本主机
255.255.255.255在本网络上进行广播
127.0.0.1用作本地软件环回地址测试使用
169.254.x.y (主机号非全0或全1)Windows主机DHCP服务器故障时操作系统分配的私有 IP 地址(APIPA,自动专用IP地址)

私有地址和公有地址:

        公有地址由因特网信息中心复杂分配,可以通过公有地址直接访问因特网。公有地址是全网唯一的,不能重复使用。

        私有地址是非注册地址,专门为组织机构内部使用,不能直接访问因特网。私有地址在同一内网中唯一使用,不同内网中可以重复使用。

        私有地址要访问因特网,需要使用 NAT(网络地址转换协议)将私有的 IP 转换为公有 IP。内网的主机使用NAT协议,可以通过一个公共的网关来访问因特网。

私有地址的范围:

地址类别地址范围网络号
A10.0.0.0 - 10.255.255.25510
B

172.16.0.0 - 172.31.255.255

172.16 ~ 172.31
C192.168.0.0 - 192.168.255.255192.168.0 ~ 192.168.255

子网划分:

        目的 —— 解决地址浪费问题。

        作用 —— 将一个大的网络划分成多个不同的小网络,进而解决 IP 地址空间利用率低、两级IP地址不够灵活的问题。

        实现过程 —— 借用 IP 地址的若干主机位来充当子网位,进而生成多个不同的子网网络。

        通过子网划分后IP地址变成了三级的结构:<网络位><子网位><主机位>

        由子网号取不同的值,得到不同的子网网络。

某公司想把原来使用的172.16.0.0/16标准网络划分为12个子网,其中最大的子网节点数在4000个左右。求每个子网的范围。

 

172.16.0.0/16,最后的16表示网络号位数为16位,则主机号位数为32-16=16位,最后两组为主机号,可以用来做子网划分。

 

需要12个子网,使用4个二进制位可以表示12,则第 17-20 位用作子网位(可以任意选择12个数,16选12);剩余的12位用作主机位,12位主机位可以表示的主机数量为 2^12-2=4094 个,满足题目的要求。

 

每个子网的范围可以是:

172.16.0000 0000.1/20 ~ 172.16.0000 0000.254/20;

172.16.0001 0000.1/20 ~ 172.16.0001 0000.254/20;

        ……

172.16.1011 0000.1/20 ~ 172.16.1011 0000.254/20;

172.16.1100 0000.1/20 ~ 172.16.1100 0000.254/20;

子网掩码:

        作用:用于指明 IP 地址的网络位和主机位,规定网络位取1,主机位取0;

        设某IP地址的网络位有19位,主机位有13位,则子网掩码为

        由 IP 地址的表示方式:192.168.128.100/19 可以看出:

        1)子网掩码:255.255.224.0,子网掩码长度19位

        2)网络部分:192.168.100 00000.100

        3)主机部分:192.168.100 00000.100

        4)该地址为C类的私有 IP 地址

可变长子网掩码(VLSM):

        在子网的基础上继续划分子网。计算方法也是类似的。

CIDR:

        无类别域间路由。是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。

        CIDR使用斜线记法,又称为 CIDR 记法,即在 IP 地址后面加一个斜线“/”,然后写上网络前缀所占的位数(子网掩码中1的个数),如:192.168.32.10/20

        CIDR路由汇聚:将网络地址中连续相同的位进行汇聚,不同的位则归为汇聚之后的主机位,从而实现多个网段汇聚成一个新的超网网段。

        如有四个网段:

                192.168.129.0/24 —— 192.168.1000 0001.0/24

                192.168.130.0/24 —— 192.168.1000 0010.0/24

                192.168.132.0/24 —— 192.168.1000 0100.0/24

                192.168.133.0/24 —— 192.168.1000 0101.0/24

        则可知在第三组取得最长公共前缀: 1000 0,则新的网络位为 2 * 8 + 5 = 21 位。192.168.128.0/21 为汇聚后的超网 ID。

        路由汇聚的好处是可以精简路由器的路由表的数量;路由汇聚的特点是,将多个小的网络,汇聚成一个大的网络。

路由器中的最佳匹配原则:

        使用路由汇聚时,路由表的项目主要由 “网络前缀” 和 “下一跳” 地址组成。

        查找路由表匹配报文中的目标IP地址时可能会得到不止一个匹配项,应当从匹配结果中选择具有最长网络前缀的路由(最长前缀匹配)。

        网络前缀越长,其块地址就越小,因而路由就越具体(即该网络下的主机数量越少)。

IPV4 数据报格式:

字段占位大小(位)备注取值
版本4ip协议的版本号IPV4为4(0100)
首部长度4IP报文的长度单位为4字节。最小取值为5(0101),即IP报文的报头长度最小是20个字节
总长度16IP报文的总长度单位为字节。IP报文最长为 65535 B。
标识16对IP分片做表示同一报文中的不同分片有相同的标识,用于对分片的重组
标志3

DF占一位,表示是否不允许分片

MF占一位,表示是否还有更多的分片

还有一位是保留位。

若分片,则DF为0,否则DF=1;

若该片为最后的一片,没有更多的分片,则MF=0,否则MF=1;

片偏移13指出分片中的数据在报文中的相对位置单位为8B,可以按片偏移字段的值从小到大进行排序和重组。
生存时间(TTL)8也叫“跳数”,用来预防IP报文无限制地在网络中转发每经过一个路由器,报文中的TTL值会相应减1,当TTL值为0时,路由器将丢弃该报文。
协议8用来标识上层使用了什么协议
首部校验和16在网络中转发时,对IP头部做校验
源地址32发送方方IP地址
目的地址32接收方的IP地址
选项可变长
填充可变长用于确保IP报文首部的长度为4B的整数倍

例:IP数据报经过 MTU 较小的网络时需要分片。假设一个大小为1500的报文分为两个较小的报文,其中一个报文的大小为800字节,则另一个报文的大小至少为多少字节?(2017年下半年网工上午试题)

 

1500的报文,IP 报头占 20 字节,则数据只有 1480 字节;

要分成两个小的报文来发送,第一个报文的数据是800-20=780字节,那么第二个报文的数据是 1480-780=700,加上首部 20个字节,则为 720 字节。

2、ARP协议

        ARP协议只在局域网中使用。

        当一台主机要和另一台主机通信时,必须要知道目的主机的MAC地址,而这个MAC地址就是通过ARP协议获得的。 ARP 协议即地址解析协议,用于实现 IP 地址到 MAC 地址的映射。

        当主机A想要与主机 B 通信但不知道其 MAC 地址时,它会发送一个 ARP 请求广播报文到局域网中,询问主机 B 的 MAC 地址。这个 ARP 请求广播报文会包含主机 B 的 IP 地址,由于尚未知道主机 B 的 MAC 地址,此时的目的 MAC 地址为 0 ;当封装成帧时,目的 MAC 地址会被设置为广播地址(FF-FF-FF-FF-FF-FF),以便局域网中的所有主机都能接收到这个报文。

若主机 hostA 的 MAC 地址为 aa-aa-aa-aa-aa-aa,主机 hostB 的 MAC 地址为 bb-bb-bb-bb-bb-bb。由 hostA 发出的查询 hostB 的 MAC 地址的帧格式如下图所示,则此帧中的目标MAC地址为多少?ARP报文中的目标MAC地址为多少?(2018年上半年网工上午题)

帧中的目标MAC地址为:ff-ff-ff-ff-ff-ff;

报文中的目标MAC地址为:00-00-00-00-00-00

        当主机 B 收到这个 ARP 请求广播报文后,它会检查报文中的 IP 地址是否与自己的IP地址匹配。如果匹配,主机 B 就会回复一个ARP响应报文给主机 A,将自己的 MAC 地址提供给主机A。(广播发送 ARP 请求,单播回应 ARP 响应。)

         网络层及以上使用 IP 地址;数据链路层及以下使用硬件地址(MAC地址)。

广域网中主机进行通信时 IP 与 MAC 的变化:

        设主机 H1 和主机 H2 在不同的局域网中,主机 H1 要发送消息给主机 H2,通信中间要经过路由器 R1。

        数据离开 H1 时,源IP为IP1,目的IP为IP2,源MAC地址为 HA1,目的MAC地址是HA3。(注意这里是广域网通信,不清楚目标主机的MAC,所以目标MAC是中转的路由器MAC地址,让路由器帮忙处理;如果是局域网中,则目标MAC地址就一定是目标主机的MAC地址)

        从 H1 到 R1 和从 R1 到 H2 时:IP数据报中的源地址和目的地址都是 IP1 、IP2;两个IP地址始终保持不变。

        但是,从H1 到 R1 后,数据帧中的目的 MAC 地址由 R1 的 MAC 地址变成 H2 的 MAC 地址HA2,源MAC地址由 HA1 变成 HA4。

        总而言之,在不同的局域网中进行通信,IP地址始终不变,每经过一次路由器,MAC地址都(源、目的)会发生改变在同一个局域网中进行通信,IP地址和MAC地址都不会变

ARP 协议原理:

        ARP 协议在 IP 协议之下,通过广播发送 ARP 请求报文,来获取 IP 与 MAC 的映射关系。

ARP协议的报文类型:

      ARP 报文包括 ARP 请求分组报文和 ARP 响应分组报文。报文内容都包括以下部分:

                发送方MAC地址;

                发送方IP地址;

                目标方MAC地址(如果是请求分组报文,该项未知时为0);

                目标方IP地址;

        路由器不会转发 ARP 请求,ARP请求只会在本地进行广播,直接封装在帧中进行传输。

Windows 中 ARP 相关的命令:

arp -a查看ARP缓存表
arp -d清除ARP缓存
arp -s ip地址 mac地址

用于静态绑定

如:arp -s 192.168.1.123 a0-1a-64-aa-aa-aa

arp 192.168.1.2获取 192.168.1.2 这台主机对应的MAC地址

代理ARP(Proxy-ARP)

        当出现跨网段的 ARP 请求时,由离源主机最近的路由器将自己的 MAC 地址返回给发送 MAC广播请求的主机,实现 MAC 地址代理最终使主机能够正常通信。

RARP 协议

        逆向地址解析协议,实现 MAC 地址到 IP 地址的映射。

3、ICMP 协议(网际控制报文协议)

        背景:IP 协议采用无连接的数据报转发方式,网络中的节点尽最大努力交付IP报文,整个过程并不保证可靠交付。

        ICMP 协议的作用:可以传送 IP 通信过程中出现的错误信息,进而帮助提升 IP 报文成功交付的概率。

        ICMP 协议封装在 IP 数据报中进行传输。

ICMP协议的报文类型:

ICMP报文的注意事项:

  • 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文;
  • 对具有特俗地址(如127.0.0.1、0.0.0.0等)的数据报不发生 ICMP 差错报告报文;
  • 对具有多播地址的数据报都不发送 ICMP 差错报告报文;
  • 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文;

ICMP的应用:

路由追踪的过程:

        通过向目标发送一连串TTL值依次加1且端口不可达的数据报,从而实现对到达目标地址的路径跟踪。

H1发送一个 TTL=1 数据包,根据返回的超时消息可获得第一跳路由器的地址 RA

H1发送一个 TTL=2 数据包,根据返回的超时消息可获得第二跳路由器的地址 RB

        ……

H1发送一个 TTL = 4 数据包,数据包成功到达目标主机,返回一个端口不可达的错误,此时路由跟踪结束。

4、QoS:

        IPV4 网络存在以下几个问题:延迟、丢包、延迟抖动;

        QoS —— 服务质量,是用来解决网络延迟和阻塞等问题的一项技术。使用QOS的目的是为了区分流量,保证重要流量及时被转发。

5、IPV6 协议

        解决的问题:从根本上解决 IPV4 地址资源不足的问题

        相较于 IPV4 的改进:

  • 更大的地址空间,128位
  • 拓展的地址层次结构
  • 灵活的首部格式
  • 改进的选项
  • 允许协议继续扩充
  • 支持手动配置
  • 支持资源的预分配

IPV6 地址表示:

        IPv6地址由128位组成,分为前缀和后缀两部分。前缀部分用于标识网络,由IPv6地址分配机构分配;后缀部分用于标识主机,由网络接口ID生成

  • 使用冒号十六进制记法,把每一个16位的二进制值使用十六进制值表示,各值之间用冒号分隔。
  • 允许把数字前面的 0 省略
  • 支持将一组连续的 0 压缩成一对冒号代替(零压缩),但是双冒号的形式只能出现一次

如 IPV6 的初始地址为:0000:0000:0000:0db8:0000:0000:0042:8329

前导零进行省略:0000:0000:0000:db8:0000:0000:42:8329

压缩连续的零:::db8:0000:0000:42:8329  或 0000:0000:0000:db8::42:8329

因为连续的零只能出现一次,因此不能变成:::db8::42:8329

特殊的地址:

环回地址

        0000:0000:0000:0000:0000:0000:0000:0001,可以通过规则缩写为 ::1

未分配地址(全为0),不能分配给任何节点,也不能用作目的地址

        0000:0000:0000:0000:0000:0000:0000:0000,即 ::/128

在 IPV6 中,CIDR斜线表示方法仍然适用,如 60 位前缀12AB00000000CD30可以记为:

  • 12AB:0000:0000:CD30:0000:0000:0000:0000/60
  • 或 12AB::CD30:0:0:0:0/60
  • 或 12AB:0:0:CD30::/60

IPV6 的地址类型:

(1)单播:传统的点对点通信

(2)多播:一点对多点的通信

(3)任播:任播是IPV6 新增加的一个类型,数据报在交付时只交付其中的一个,通常是距离最近的一个。

地址类型地址前缀IPV6前缀标识
全球单播地址全球路由选择前缀(48位)前三位固定为001
链路本地(单播)地址1111111010FE80::/10
站点本地(单播)地址1111111011FEC0::/10
多播地址11111111FF00::/8
任播地址从单播地址空间中进行分配,使用单播地址格式

全球单播地址的等级结构:

链路本地地址:

  • 每个设备的接口在启动 IPV6 时都会自动配置一个链路本地地址
  • IPV6 的 “邻居发现” (ND)机制要用到 IPV6 的链路本地地址,IPV6 中没有广播,也不需要使用ARP协议,“邻居发现” 是 IPV6 中与 IPV4 的 ARP 对应的寻址机制
  • 链路本地地址以 “FE80” 开头
  • 接口ID(接口表示符)由 EUI-64 算法生成,将 MAC 地址和其他的一些信息转换为 IPv6 地址的后 64 位;
  • 路由器不会转发链路本地地址

IPV6 多播(组播)地址:

  • 任何一个节点都可以是一个组播组的成员
  • 一个源节点可以发送数据包到组播组
  • 组播组的所有成员都能收到发往该组播组的数据包
  • 组播地址在 IPV6 中不能用作源地址使用,也不能出现在任何选择路由中

IPV6 任播地址:

  • 任播地址是 IPV6 特有的地址类型,他用来标识一组网络接口(主机、路由器、交换机等)
  • 路由器会将目的地址是任播地址的数据包发送给距离本地路由器最近的一个网络接口(一对一组中的一个)

IPV6报文的格式:

        首部长度固定40字节, 通过选项字段来扩充首部,并封装于有效载荷。

        IPV6 和 IPV4 二者是不兼容的(报文格式不同)。

        在 IPV6 网络中,除了逐跳选项拓展首部外,路由器都不处理其他的拓展首部,这样大大提高了路由器的处理效率。

        在 RFC 2460 中定义了六种拓展首部:

  • 逐跳选项
  • 路由选项
  • 目的站选项
  • 分片
  • 鉴别
  • 封装安全有效载荷

IPV4 到 IPV6 的过渡方案

        

IPV6 的隧道技术有多种,分为手动隧道和自动隧道

隧道技术特殊地址
自动隧道ISATAP隧道::0000:5EFE:w.x.y.z
IPV4 兼容 IPV6 自动隧道::w.x.y.z(0:0:0:0:0:0:w.x.y.z)
IPV6 to IPV4 隧道完整的IPV6 to IPV4 主机地址由 IPV6 to IPV4地址的48位格式前缀(2002:A.B.C.D::/48)和后面的子网标识符ID以及64位的接口ID组成
手动隧道IPV6-OVER-IPV4 GRE隧道手动指定IPV4地址

三种过渡方案的对比:

特点
双协议栈技术是实现其他IPV6过渡方案的基础技术
隧道技术通常应用于IPV6孤网,通过现有的IPV4网络通信,通过再次封装,形成通信隧道
网络地址转换技术通过地址转换协议,进行 IPV6 to IPV4 或IPV4 to IPV6 访问转换,可满足IPV4纯节点于IPV6纯节点之间的双向访问请求

参考:

[1] IPv4地址分类(A类 B类 C类 D类 E类)_ipv4分类-CSDN博客

[2] 一文读懂ARP协议,从IP获取对方MAC实操 - 知乎

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

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

相关文章

操作系统--分页存储管理

一、概念介绍 分页存储&#xff1a;一是分内存地址&#xff0c;二是分逻辑地址。 1.分内存地址 将内存空间分为一个个大小相等的分区。比如&#xff0c;每个分区4KB。 每个分区就是一个“页框”&#xff0c;每个页框有个编号&#xff0c;即“页框号”&#xff0c;“页框号”…

【统计学】Top-down自上而下的角度模型召回率recall,精确率precision,特异性specificity,模型评价

最近在学 logistic regression model&#xff0c;又遇见了几个之前的老面孔。 召回率recall, 精确率precision&#xff0c;特异性spcificity&#xff0c;准确率accuracy&#xff0c;True positive rate&#xff0c;false positive rate等等名词在学习之初遇到的困难在于&#x…

【Java每日一题】— —第十八题:求二维数组中的元素最小值及其索引。(2023.10.02)

&#x1f578;️Hollow&#xff0c;各位小伙伴&#xff0c;今天我们要做的是第十八题。 &#x1f3af;问题&#xff1a; 求二维数组中的元素最小值及其索引。 测试结果如下&#xff1a; &#x1f3af; 答案&#xff1a; int [][]anew int[3][];a[0]new int [3];a[1]new int[5…

全国排名前三的直播公司无锋科技入驻天府蜂巢成都直播产业基地

最近&#xff0c;全国排名前三的直播公司——无锋科技&#xff0c;正式宣布入驻位于成都的天府蜂巢直播产业基地&#xff0c;这一消息引起了业内人士的高度关注。成都直播产业基地一直是中国直播产业的重要地标之一&#xff0c;其强大的技术和资源优势为众多直播公司提供了广阔…

postgresql-管理表空间

postgresql-管理表空间 基本概念创建表空间用户授权移动表空间 修改表空间移动表空间位置 删除表空间 基本概念 在 PostgreSQL 中&#xff0c;表空间&#xff08;tablespace&#xff09;表示数据文件的存放目录&#xff0c;这些数据文件代表了数 据库的对象&#xff0c;例如表…

Oracle SQL Developer 中查看表的数据和字段属性、录入数据

在Oracle SQL Developer中&#xff0c;选中一个表时&#xff0c;右侧会列出表的情况&#xff1b;第一个tab是字段的名称、数据类型等属性&#xff1b; 切换到第二个tab&#xff0c;显示表的数据&#xff1b; 这和sql server management studio不一样的&#xff1b; 看一下部门…

常用的分布式ID解决方案原理解析

目录 前言 一&#xff1a;分布式ID的使用场景 二&#xff1a;分布式ID设计的技术指标 三&#xff1a;常见的分布式ID生成策略 3.1 UUID 3.2 数据库生成 3.3 数据库的多主模式 3.4 号段模式 3.5 雪花算法 前言 分布式ID的生成是分布式系统中非常核心的基础性模块&#…

【C语言】宏定义

&#x1f6a9; WRITE IN FRONT&#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四"&#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博…

Docker下如何构建包含延迟插件的RabbitMQ镜像

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

OpenGLES:绘制一个彩色、旋转的3D圆柱

一.概述 上一篇博文讲解了怎么绘制一个彩色旋转的立方体 这一篇讲解怎么绘制一个彩色旋转的圆柱 圆柱的顶点创建主要基于2D圆进行扩展&#xff0c;与立方体没有相似之处 圆柱绘制的关键点就是将圆柱拆解成&#xff1a;两个Z坐标不为0的圆 一个长方形的圆柱面 绘制2D圆的…

基于Java的老年人体检管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

SNERT预备队招新CTF体验赛-Web(SWCTF)

目录 1、F12 2、robots 3、game1-喂青蛙 4、game 2 - flap bird 5、game 3 - Clash 6、Get&Post 7、sql &#xff08;1&#xff09;手工注入 &#xff08;2&#xff09;工具注入 8、命令执行漏洞 9、文件上传漏洞 10、文件泄露 11、php反序列化漏洞 12、PHP绕…

数据结构之双链表

双链表 1.复杂方法的图分析2.My_LinkedList代码3.接口MY_lIST4.测试类 1.复杂方法的图分析 2.My_LinkedList代码 package My_liNKEDlIST;public class My_LinkedList implements MY_lIST{static class ListNode{public int val;public ListNode prev;public ListNode next;pub…

Git使用【下】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;标签管理理解标签标签运用 …

SSM - Springboot - MyBatis-Plus 全栈体系(十七)

第三章 MyBatis 五、MyBatis 高级扩展 1. mapper 批量映射优化 1.1 需求 Mapper 配置文件很多时&#xff0c;在全局配置文件中一个一个注册太麻烦&#xff0c;希望有一个办法能够一劳永逸。 1.2 配置方式 Mybatis 允许在指定 Mapper 映射文件时&#xff0c;只指定其所在的…

函数、函数的傅里叶级数展开、傅里叶级数的和函数之间的关系

1.函数、函数的傅里叶级数展开、傅里叶级数的和函数之间的关系 1.1 傅里叶级数中的系数公式推导 我们先来推导一下傅里叶级数中的系数公式&#xff0c;其实笔者已经写过一篇相关笔记&#xff0c;详见&#xff1a;为什么要把一个函数分解成三角函数?(傅利叶级数) f ( x )…

用AI原生向量数据库Milvus Cloud 搭建一个 AI 聊天机器人

搭建聊天机器人 一切准备就绪后,就可以搭建聊天机器人了。 文档存储 机器人需要存储文档块以及使用 Towhee 提取出的文档块向量。在这个步骤中,我们需要用到 Milvus。 安装轻量版 Milvus Lite,使用以下命令运行 Milvus 服务器: (chatbot_venv) [egoebelbecker@ares milvus_…

Python中匹配模糊的字符串

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 如何使用thefuzz 库&#xff0c;它允许我们在python中进行模糊字符串匹配。 此外&#xff0c;我们将学习如何使用process 模块&#xff0c;该模块允许我们在模糊…

条件查询和数据查询

一、后端 1.controller层 package com.like.controller;import com.like.common.CommonDto; import com.like.entity.User; import com.like.service.UserService; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.GetMapping; import …

C语言 —— 函数

目录 1. 函数是什么 2. C语言中函数的分类 2.1 库函数 2.2 自定义函数 3. 函数的参数 3.1 实际参数(实参) 3.2 形式参数(形参) 4. 函数的调用 4.1 传值调用 4.2 传址调用 5. 函数的嵌套调用和链式访问 5.1 嵌套调用 5.2 链式访问 6. 函数的声明和定义 6.1函数声明…