网络层:地址解析协议ARP、网际控制报文协议ICMP、虚拟专用网络VPN、网络地址转换NAT

文章目录

  • 地址解析协议ARP
    • 解决的问题
    • ARP解析流程
    • ARP高速缓存
  • 网际控制报文协议ICMP
    • ICMP报文的种类
      • ICMP差错报告报文
      • ICMP询问报文
    • ICMP应用举例
      • 分组网间探测PING(Packet InterNet Groper)
      • traceroute(tracert)
      • 确定路径的MTU
  • 虚拟专用网络
    • 专用地址
    • 虚拟专用网络
    • 远程接入VPN(remote access VPN)
  • 网络地址转换
    • NAPT(Network Address and Port Translation)
      • 如何解决有且仅有一个全球IP地址和一个端口号
  • 计算机网络体系结构
    • 协议与划分层次
    • 体系结构

地址解析协议ARP

解决的问题

地址解析协议主要解决的问题是,将IP地址转换为硬件地址即MAC地址。
由于IP协议使用了ARP协议,因此通常把ARP协议划归为网络层。但是ARP协议的用途是为了从网络层使用的IP地址,解析出在数据链路层使用的硬件地址。因此有另外一种说法:ARP协议是数据链路层协议。

ARP解析流程

  • ARP是通过广播来完成的。假设主机A要向主机B发送数据报,主机A需要知道主机B的IP地址和MAC地址。但现在的情况是主机A只知道主机B的IP地址,所以需要先获取主机B的MAC地址。
  • 此时主机A会构建一个ARP请求分组,源IP和MAC地址是主机A的IP和MAC地址,目的IP地址是主机B的IP地址,由于不知道主机B的MAC地址于是填写为主机A所在网络的广播地址。
  • 位于本地网络上的主机都可以收到主机A发送的广播数据包,但是只有主机B[每一个收到广播数据包的主机,会从数据包中解析出目的IP地址并与自己的IP地址相比较,相同则是目标主机]会回应主机A并告诉自己的MAC地址。
  • 主机A收到主机B的相应分组之后,就会知道主机B的MAC地址。

具体的,分为以下四种情况
在这里插入图片描述

  • 发送方是主机 H 1 \mathrm{H}_{1} H1,要把IP数据报发送到同一个网络上的另一台主机 H 2 \mathrm{H}_{2} H2 H 1 \mathrm{H}_{1} H1发送ARP请求分组[在网1上广播],找到目的主机 H 2 \mathrm{H}_{2} H2的硬件地址。
  • 发送方是主机 H 1 \mathrm{H}_{1} H1,要把IP数据报发送到另一个网络上的主机 H 3 \mathrm{H}_{3} H3或者 H 4 \mathrm{H}_{4} H4 H 1 \mathrm{H}_{1} H1发送ARP请求分组[在网1上广播],此时与网1相连的路由器 R 1 \mathrm{R}_{1} R1通过查找路由表发现, H 3 \mathrm{H}_{3} H3或者 H 4 \mathrm{H}_{4} H4是本地网络之外的网络上的主机,所以路由器 R 1 \mathrm{R}_{1} R1填入自己的MAC地址,将ARP相应分组发送给主机 H 1 \mathrm{H}_{1} H1。主机 H 1 \mathrm{H}_{1} H1将IP数据报发送给路由器 R 1 \mathrm{R}_{1} R1,剩下的工作由路由器 R 1 \mathrm{R}_{1} R1万完成。
  • 发送方是路由器 R 1 \mathrm{R}_{1} R1,要把IP数据报转发到同一个网络上的主机 H 3 \mathrm{H}_{3} H3 R 1 \mathrm{R}_{1} R1发送ARP请求分组[在网2上广播],找到目的主机 H 3 \mathrm{H}_{3} H3的硬件地址
  • 发送方是路由器 R 1 \mathrm{R}_{1} R1,要把IP数据报转发到网络3上的主机 H 4 \mathrm{H}_{4} H4 R 1 \mathrm{R}_{1} R1发送ARP请求分组[在网2上广播],找到路由器 R 2 \mathrm{R}_{2} R2的硬件地址。剩下的工作由路由器 R 2 \mathrm{R}_{2} R2完成。

既然最终使用的是MAC地址,为什么还要有IP地址

  • 由于全世界存在多种多样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,由用户或者用户主机完成这样的转换是不可能的。此时IP编址就解决了这样的事情。连接到互联网上的主机只需要各自拥有一个唯一的IP地址,它们之间的通信就像连接在同一个网络一样方便。而且这个转换过程对用户来说是透明的。

ARP高速缓存

如果不使用缓存,那么任何一台主机只要进行一次通信,就必须在网络上以广播的方式送ARP请求分组,使得网络上的通信量大大增加。ARP把已经得到地址映射保存在ARP高速缓存中,这样就使得主机下次再和具有相同的目的地址的主机通信时,可以直接从高速缓存中找到所需要的硬件地址而不必使用广播的方式发送ARP请求分组。具体的过程如下:

具体的过程

  • 主机 H 1 \mathrm{H}_{1} H1收到主机 H 2 \mathrm{H}_{2} H2的ARP相应分组之后,就在其ARP高速缓存中写入主机 H 2 \mathrm{H}_{2} H2的IP地址到硬件地址的映射。
  • 为了减少网络上的通信量,主机 H 1 \mathrm{H}_{1} H1发送ARP请求分组的时候,会把自己的IP地址到MAC地址的映射写入到ARP请求分组。主机 H 2 \mathrm{H}_{2} H2收到主机 H 1 \mathrm{H}_{1} H1的ARP请求分组时,将主机 H 1 \mathrm{H}_{1} H1的IP地址到MAC地址的映射写入到自己的ARP高速缓存。

过期时间

  • ARP对保存在高速缓存中的每一个映射地址项目都设置生存时间。凡是超过生存时间的项目就从高速缓存中删除掉。

设置过期时间是为了应对如下的情况:

  • 主机A和主机B通信。A的ARP高速缓存里保存了主机B的MAC地址。但是某一刻[在映射条目过期之前],B的网络适配器出现了故障,B立即更换也意味着B的MAC地址发生变化。此时A与B通信会从高速缓存中获取B的MAC地址,但是获取到的是B的旧MAC地址,此时就会出现错误,主机A可能永远找不到主机B。
  • 但是设置了过期时间之后,主机A在映射条目过期之后,发送ARP请求分组重新获取B的MAC地址并记录在高速缓存中[设置相应的过期时间]。

有了ARP高速缓存之后,主机请求另一台主机的时候,会先从ARP高速缓存中寻找目的主机的MAC地址,不存在或者过期的话,才会发送ARP请求分组。加快数据报的传递速度,减少网络上的流量。

网际控制报文协议ICMP

  • 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。ICMP允许主机或者路由器报告差错情况和提供有关异常情况的报告。ICMP是互联网的标准协议。但是ICMP不是高层协议(因为ICMP是封装在IP数据报中,作为其中的数据部分,是IP层的协议)。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP的报文格式如下:
    在这里插入图片描述

ICMP报文的种类

  • ICMP差错报告报文。
  • ICMP询问报文。

ICMP差错报告报文

几MP报文类型种常见的IC
ICMP报文种类类型的值ICMP报文的类型
差错报告报文3终点不可达
差错报告报文11时间超过
差错报告报文12参数问题
差错报告报文5改变路由(Redirect)
询问报文8或0回送(Echo)请求或应答
询问报文13或14时间戳(Timestamp)请求或回答
  • ICMP报文的代码字段是为了进一步区分某种类型中的几种不同情况。检验和字段用来检验整个ICMP报文。

ICMP差错报告报文共有四种,

  • 终点不可达。当路由器或者主机不能交付数据报时就向源点发送终点不可达报文。
  • 时间超过。当路由器收到生存时间(TTL)为零的数据报时,除了丢弃该数据报之外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报片的全部数据报时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
  • 参数问题。当路由器或者目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
  • 改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(更合适更好的路由)

什么情况下不应该发送ICMP差错报告报文

  • 对ICMP差错报告报文,不再发送ICMP差错报告报文。
  • 对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文。
  • 对具有多播地址的数据报,都不发送ICMP差错报告报文。
  • 对具有特殊地址(如127.0.0.1或者0.0.0.0)的数据报,不发送ICMP差错报告报文。

ICMP询问报文

  • 回送请求和应答。ICMP回送请求报文是由主机或者路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或者路由器发送ICMP回送应答报文。这种询问报文用来测试目的站是否可以达到以及了解其有关状态。
  • 时间戳请求和回答。ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求与回答可用于时钟同步和时间测量。

ICMP应用举例

分组网间探测PING(Packet InterNet Groper)

  • 用来测试两台主机之间的连通性。PING使用了ICMP回送请求和回送回答报文。PING是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP。
  • 由于往返的ICMP报文上都有时间戳,因此很容易得出往返时间。

在这里插入图片描述

用PING测试主机的连通性
  • 从图上可以看出。图中的信息包括:发送到哪个机器(IP地址),发送的、收到的和丢失的分组数(但是不给出丢失的原因),以及往返时间的最小值、最大值和平均值。

traceroute(tracert)

UNIX操作系统中使用"traceroute",WINDOWS系统使用"tracert"。

  • 用来跟踪一个分组从源点到终点的路径。

工作原理

  • 从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。第一个数据报P1的生存时间是TTL设置为1.当P1到达路径上的第一个路由器R1时,路由器R1先收下它,接着把TTL减1.由于TTL等于0,R1就把P1丢弃了,并向源主机发送一个ICMP时间超过差错报告报文。
  • 按照上述的过程一直继续下去。当最后一个数据报刚刚达到目的主机时,数据报的TTL是1。但是主机或路由器并不把数据报进行转发,也不把TTL值减1。因为IP数据报中封装的是无法交付的运输层的UDP用户数据报,目的主机要向源点主机发送"ICMP"终点不可达差错报告报文[无法交付的UDP数据报使用了非法的端口号,“端口不可达”]。
    在这里插入图片描述

确定路径的MTU

这样做的目的

  • 有的时候我们并不知道路由器的MTU大小,以太网上数据链路层的MTU是1500字节,但是非以太网的MTU值就不一样了,所以要知道MTU的大小,从而控制发送的数据包大小。

工作原理

  • 在源主机向目的主机发送IP数据报时,将IP数据报首部的分片禁止标志位设置为1.[由于设置了这个标志位,途中的路由器不会对大数据报文进行分片,而是将其丢弃,并回应差错控制报文]
  • 随后,会回应给源主机一个终点不可达[应该设置可以分片,但是禁止分片]的ICMP报文。并将数据链路层的MTU一起发送给源主机。
  • 源主机每次受到终点不可达的ICMP报文后,会减小数据报的大小,从而确定最合适的MTU的值。

虚拟专用网络

专用地址

  • 由于IP地址的紧缺,一个机构能够申请到的IP地址数往往小于本机构所拥有的主机数。考虑到互联网并不是很安全,一个机构内并不需要把所有的主机接入到外部的互联网。实际上,许多情况下,很多主机主要还是和本机构内的其它主机进行通信(例如,在大型商场或者宾馆中,有很多用于营业和管理的计算机。显然这些计算机并不都需要和互联网相连)。假定在一个机构内部的计算机通信也是采用TCP/IP协议,从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其IP地址。也即是说,让这些计算机使用仅在本机构有效的IP地址(本地地址),不需要向互联网的管理机构申请全球唯一的IP地址(全球地址)。这样一来,可以节约宝贵的全球IP地址资源。
  • 但是,如果任意选择一些IP地址作为仅在本机构使用的本地地址,在某种情况下可能会引起二义性(和全球地址重合)。
  • 为了解决这些问题,RFC指明了一些专用地址(私有地址)。这些地址只能用做本地地址而不能用做全球地址。
  • 在互联网中的所有路由器,不能转发目的地址是专用地址的数据包

以下是一些专用地址
在这里插入图片描述

  • 采用专用IP地址的互联网络称为专用互联网或者本地互联网,或者专用网。
  • 专用IP地址也叫做可重用地址。也即是说,不同的机构可以使用相同的专用地址。

虚拟专用网络

  • 有时一个很大的机构的许多部门分布的范围很广,这些部门经常要互相交换信息。可以有两种方法。
  • 1.租用电信公司的通信线路为本机构专用。这种方法虽然简单,但是线路的租金太高。
  • 2.利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网称之为虚拟专用网VPN(Virtual Private Network)。
  • 之所以称之为"专用网"是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。

以两个场所为例说明如何使用IP隧道技术实现VPN
在这里插入图片描述

  • 假定某个机构在两个相隔较远的场所建立了专用网A和B,其网络地址分别是专用地址"10.1.0.0"和"10.2.0.0"。现在这两个场所需要通过公用的互联网构成一个VPN
  • 每一个场所至少要有一个路由器具有合法的全球IP地址,如图中的路由器 R 1 \mathrm{R}_{1} R1 R 2 \mathrm{R}_{2} R2。这两个路由器和互联网的接口地址必须是合法的全球地址。路由器 R 1 \mathrm{R}_{1} R1 R 2 \mathrm{R}_{2} R2在专用网内部网络的接口地址则是专用网的本地地址。
  • 在每一个场所A或者B内部的通信量都不经过互联网。但如果场所A的主机X要和另一个场所B的主机Y通信,就必须经过路由器 R 1 \mathrm{R}_{1} R1 R 2 \mathrm{R}_{2} R2
  • 主机X向主机Y发送的IP数据报的源地址是"10.1.0.1",目的地址是"10.2.0.3"。这个数据报先作为本机构的内部数据报从X发送到与互联网相连的路由器 R 1 \mathrm{R}_{1} R1。路由器 R 1 \mathrm{R}_{1} R1收到内部数据报后,发现其目的网络必须通过互联网才能达到,就把整个内部的数据报进行加密保证内部数据的安全,然后重新加上数据报的首部,封装成为在互联网上发送的外部数据报,其源地址是路由器 R 1 \mathrm{R}_{1} R1的全球地址"125.1.2.3",而目的地址是路由器 R 2 \mathrm{R}_{2} R2的全球地址"194.4.5.6"。路由器 R 2 \mathrm{R}_{2} R2收到数据报后将其数据部分提取出来进行解密,恢复出原来的内部数据报(目的地址是"10.2.0.3")交付主机Y

内联网
由场所A和场所B构成的虚拟专用网VPN称之为内联网(intranet VPN)。
外联网
有时候一个机构的VPN需要有某些外部机构参加。这样的VPN称之为外联网(extranet VPN)。

内联网和外联网都采用了互联网技术,即都是基于TCP/IP协议的。

远程接入VPN(remote access VPN)

  • 有的公司可能并没有分布在不同场所的部门,但却有很多流动员工在外地工作。公司需要和他们保持联系,有时还可能一起开电话会或者视频会议。
  • 远程接入VPN可以满足以上的需求。在外地工作的员工通过拨号接入互联网,驻留在员工个人电脑的VPN软件可以在员工的个人电脑和公司的主机之间建立VPN隧道。

网络地址转换

现在有这样一种情况,在专用网内部的一些主机本来已经分配到了本地IP地址(仅在本专用网内使用的专用地址),但是现在想和互联网上的主机通信(并不需要加密),应当采取什么措施呢?

实际上,最简单的方法就是再申请一些全球IP地址。但这在很多情况下是不容易做到的,因为全球IPV4的地址已经所剩不多了。目前使用得最多的方法是采用网络地址转换。

这种方法需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,至少有一个有效的全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将本地地址转换为全球IP地址,才能和互联网连接。

下面这张图显示了,NAT的工作流程
在这里插入图片描述

  • NAT路由器收到从专用网内部的主机A发往互联网上主机B的IP数据报:源IP地址是主机A的IP的地址:“192.168.0.3”,而目的地址是"213.18.2.4"。NAT路由器把IP数据报的源IP地址转换为自己的全球IP地址"172.38.1.5"。
  • 当B给A发送应答时,IP数据报的目的IP地址是NAT路由器的IP地址"172.38.1.5"。B并不知道A的专用地址"192.168.0.3"。实际上,即使知道了,也不能使用,因为互联网上的路由器都不转发目的地址是专用地址的IP数据报。
  • 通过NAT地址转换表,就可以把IP数据报上的就目的地址"172.38.1.5"转换为新的目的IP地址"192.168.0.3"。
NAT地址转换表举例
方向字段旧的IP地址新的IP地址
源IP地址192.168.0.3172.38.1.5
目的IP地址172.38.1.5192.168.0.3
源IP地址192.168.0.7172.38.1.6
目的IP地址172.38.1.6192.168.0.7
  • 由此可见,当NAT路由器具有N个全球IP地址时,专用网内部最多可以同时有n台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用NAT路由器有限数量的全球IP地址。
  • 从上述流程,也可以发现,通过NAT路由器的通信必须由专用网内的主机发起。假设互联网上的主机要发起通信,当IP数据报到达NAT路由器时,NAT路由器就不知道应当把目的IP地址转换成专用网内的哪一个本地IP地址。这就表示专用网内部的主机不能充当服务器使用。

NAPT(Network Address and Port Translation)

  • 为了有效利用NAT路由器上的全球IP地址,现在常用的NAT转换表把运输层的端口号也利用上。这样就可以使多个拥有本地地址的主机,共用一个NAT路由器上的全球IP地址。
NAPT地址转换表举例
方向字段旧的IP地址新的IP地址
源IP地址:TCP源端口号192.168.0.3:30000172.38.1.5 :40001
目的IP地址:TCP目的端口号172.38.1.5:40001192.168.0.3:30000
源IP地址:TCP源端口号192.168.0.4:30000172.38.1.5:40002
目的IP地址: TCP目的端口号172.38.1.5:40002192.168.0.4:30000
  • 从层次的角度看,NAPT的机制有些特殊。普通路由器在转发IP数据报时,对于源地址或者目的IP地址是不改变的。但NAT路由器在转发IP数据报时,要且必须更换其IP地址。普通路由器转发分组时是在网络层。但是NAPT路由器还要查看和转换运输层的端口号,但是这应该数据运输层的职责。正因为如此,NAPT遭受到一些人的批评,认为NAPT的操作没有严格按照层次的关系。

如何解决有且仅有一个全球IP地址和一个端口号

  • 为了解决一个专有网络地址对应一个全球IP地址导致全球IP地址不够用的问题[一个NAT有多少合法的全球IP地址,就有多少专用网内的主机同时接入到互联网],在地址转换的基础上引入了端口号。这样不同的端口号可以复用同一个全球IP地址,这样大大提升全球IP地址的利用率。
  • 透过现象看本质。如果说IP地址是一级标识,那这里的端口号就是二级标识。都是用来唯一标识一台专用网主机的手段,那现在只有一个全球IP地址和一个端口号,我们只需要引入三级标识:分布式唯一ID。不同的ID可以复用相同的全球IP地址和端口号。

分布式唯一ID的生成方式有:

  • redis inrc 自增ID
  • UUID
  • snowflakes
  • mysql区间自增ID

计算机网络体系结构

协议与划分层次

  • 在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了交换的入 | 目的IP地址:TCP目的端口号|172.38.1.5:40001|192.168.0.3:30000数据的格式以及有关的同步问题。这里的同步是广义的同步,即在一定条件下应当发生什么事件(例如应当发送一个应答信息),同步含有时序的意思。为进行网络中的数据交换而建立的规则、标准或者约定称之为网络协议(network protocol)。

网络协议主要由以下三个要素组成:

  • 语法,数据与控制信息的结构或者格式
  • 语义,需要发出何种控制信息,完成何种动作以及做出何种响应
  • 同步,即事件实现顺序的详细说明

网络分层带来的好处

  • 各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口(即界面)所提供的服务。由于每一层只实现一种相对独立的功能,因而可以将一个难以处理的复杂问题分级为若干个比较容易处理的更小一些的问题。这样整个问题的复杂度就下降了。

  • 灵活性好。当任何一层发生变化时(例如由于技术的变化),只要层间接口关系保持不变,则在这层以上或者以下各层均不受影响。此外,对某一层提供的服务还可以进行修改,当某层提供的服务不再需要时,甚至可以将这层取消。

  • 结构上可分割。各层都可以采用最合适的技术实现。

  • 易于维护和实现。这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理,因为整个的系统已经被分解为若干相对独立的子系统。

  • 能促进标准化工作。因为每一层的功能及其所提供的服务都已经有了精确的说明。

计算机网络的各层及其协议的集合就是网络的体系结构(architecture)。

体系结构

在这里插入图片描述

  • 应用层(applaction layer)。应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。对于不同的网络应用需要不同的应用层协议。如域名系统DNS,HTTP,SMTP。应用层交互的数据单元称为报文(message)
  • 运输层(transport layer)。运输层的任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。由于一台主机可以同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用进程同时使用下面运输层的服务,分用和复用相反,就是运输层把收到的信息分别交付上面应用层中的相应进程。
    运输层主要使用以下两种协议:
    1.传输控制协议TCP(Transmission Control Protocol)—提供给面向连接的,可靠的,基于字节流的数据传输服务,数据传输的单位是报文段(segment)
    2.用户数据报协议UDP(User Datagram Protocol)—提供无连接的、尽最大努力(best-effort)交付的数据传输服务(不保证数据传输的可靠性),数据传输的单位是用户数据报。
  • 网络层(network layer)。网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。由于网络层使用的是IP协议,因此分组也叫做IP数据报。互联网使用的网络层协议是无连接的网际协议IP和许多种路由选择协议。
  • 数据链路层(data link layer)。数据链路层简称为链路层。数据链路层将网络层交下来的IP数据报封装成帧。主要解决的问题有:封装成帧、透明传输、差错控制。
  • 物理层(physical layer)。在物理层上所传数据的单位是比特。

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

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

相关文章

某鱼弹幕逆向

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018…

mysql题库详解

1、如何创建和删除数据库? 创建数据库 CREATE DATABASE 数据库名; 删除数据库 drop database 数据库名; 2、MyISAM与InnoDB的区别? 1)事务:MyISAM 不支持事务 InnoDB 支持 2)行锁/表锁:MyISAM 支持表级锁…

Redis中AOF数据持久化

AOF介绍 AOF(Append Only File)持久化:以独立日志的方式存储了 Redis 服务器的顺序指令序列,并只记录对内存进行修改的指令。 当Redis服务发生雪崩等故障时,可以重启服务并重新执行AOF文件中的指令达到恢复数据的目的…

SpringMVC | SpringMVC中的 “数据绑定”

目录: “数据绑定” 介绍1.简单数据绑定 :绑定 “默认数据” 类型绑定 “简单数据类型” 类型 (绑定Java“基本数据类型”)绑定 “POJO类型”绑定 “包装 POJO”“自定义数据” 绑定 :Converter (自定义转换器) 2.复杂数据绑定 :绑定数组绑定集合 作者简…

ubuntu 18.04安装教程(详细有效)

文章目录 一、下载ubuntu 18.04镜像二、安装ubuntu1. 点击下载好的Vmware Workstation,点击新建虚拟机,选择 “自定义(高级)”,之后下一步。2. 默认配置,不需要更改,点击下一步。3. 选择 “安装程序光盘映像文件(iso)(…

Windows 11 DirectX 诊断工具获取电脑型号

Windows 11 DirectX 诊断工具获取电脑型号 1. dxdiag2. DirectX 诊断工具References 1. dxdiag Win R 打开运行窗口,输入 dxdiag,点击确定按钮。 2. DirectX 诊断工具 通过 DirectX 诊断工具,可以直接找到电脑型号,型号是硬件制…

RocketMQ学习笔记三(黑马)大神级

课程来源:6.RocketMQ安装_哔哩哔哩_bilibili (时长:19.5h) 讲解版本:4.5版本(我是以4.8版本实践的) 目录 第一部分 核心功能 第1章 RocketMQ的下载、安装、启动和测试(Linux环境) 启动: 测试: 第2章 RocketMQ集群搭建 2.1 集群特点 2.2 集群模式 2.3 双主…

程序员必备开发工具、程序员必备集成开发环境(IDE)

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

Java项目:52 springboot基于SpringBoot的旅游网站的设计与实现013

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 旅游网站主要功能如下: 1.用户管理:注册、登录、退出、修改密码; 2.分类显示:显示旅游路线的…

【机器学习300问】30、准确率的局限性在哪里?

一、什么是准确率? 在解答这个问题之前,我们首先得先回顾一下准确率的定义,准确率是机器学习分类问题中一个很直观的指标,它告诉我们模型正确预测的比例,即 还是用我最喜欢的方式,举例子来解释一下&#xf…

ISIS多区域实验简述

为支持大型路由网络,IS-IS在路由域内采用两级分层结构。 IS-IS网络中三种级别的路由设备:将Level-1路由设备部署在区域内,Level-2路由设备部署在区域间,Level-1-2路由设备部署在Level-1和Level-2路由设备的中间。 实验拓扑图&…

107. 如何使用Docker以及Docker Compose部署Go Web应用

文章目录 一、为什么需要Docker?二、Docker部署示例1. 准备代码2. 创建Docker镜像3. 编写Dockerfile4. Dockerfile解析5. 构建镜像6. 通过镜像创建容器运行 三、分阶段构建示例四、附带其他文件的部署示例五、关联其他容器六、Docker Compose模式七、总结 本文将介绍…

微信小程序(五十二)开屏页面效果

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.使用控件模拟开屏界面 2.倒计时逻辑 3.布局方法 4.TabBar隐藏复现 源码&#xff1a; components/openPage/openPage.wxml <view class"openPage-box"><image src"{{imagePath}}"…

java-类和对象

1.面向对象 1.1 区分面向对象与面向过程 举个例子: 在传统的洗衣服过程中,需要经历防水,放衣服,放洗衣粉,搓洗,换水......多个步骤,每个过程都是不可或缺的,关注的是过程. 而现在的洗衣服过程,就需要我们把衣服,洗衣粉放入洗衣机,启动洗衣机即可,并不需要关注洗衣机是如何运行…

React-嵌套路由

1.概念 说明&#xff1a;在一级路由中又内嵌了其他路由&#xff0c;这种关系就叫做嵌套路由&#xff0c;嵌套至一级路由内的路由又称作二级路由。 2.实现步骤 说明&#xff1a;使用childen属性配置路由嵌套关系&#xff0c;使用<Outlet/>组件配置二级路由渲染的位置。…

事务【MySQL】

事务的概念 引入 在 A 转账 100 元给 B 的过程中&#xff0c;如果在 A 的账户已经减去了 100 元&#xff0c;B 的账户还未加上 100 元之前断网&#xff0c;那么这 100 元将会凭空消失。对于转账这件事&#xff0c;转出和转入这两件事应该是绑定在一起的&#xff0c;任意一个动…

B3620 x 进制转 10 进制(详解)

题目 思路 八进制数567怎么转化为十进制数。首先八进制就是逢八进一&#xff0c;也就是说这里面最大的数也就7&#xff0c;没有≥8的数。下面我们就讲一下567怎么转化为十进制&#xff1a;首先7是个位&#xff0c;可以直接写成十进制的7&#xff0c;6是十位&#xff0c;它是通…

Java项目企业设备管理系统

java项目企业设备管理系统javaweb项目ssm框架项目 运行环境:idea/eclipse tomcat jdk mysql navicat 系统用户分为员工和管理员两类用户。两类用户都可以进行系统的登录&#xff0c;虽然进入的系统主页结构相似&#xff0c;但是在功能上有不同。员工的密码可以自己进入系统后…

城乡居民基本医疗信息管理系统|基于Springboot的城乡居民基本医疗信息管理系统设计与实现(源码+数据库+文档)

城乡居民基本医疗信息管理系统目录 目录 基于Springboot的城乡居民基本医疗信息管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、病例管理 2、医院资讯信息管理 3、医院资讯类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

蓝桥杯历年真题省赛java b组2016年第七届

一、题目 取球博弈 两个人玩取球的游戏。 一共有N个球&#xff0c;每人轮流取球&#xff0c;每次可取集合{n1,n2,n3}中的任何一个数目。 如果无法继续取球&#xff0c;则游戏结束。 此时&#xff0c;持有奇数个球的一方获胜。 如果两人都是奇数&#xff0c;则为平局。 假设双…