计算机网络 - IPv4 常考知识点详解(超详细!)

2023-05-16

目录

一、IPv4分组

1、IPv4分组的格式

2、IP数据报分片

3、网络层转发分组的流程

二、IPv4地址与NAT

1、IPv4地址

2、NAT

三、子网划分与子网掩码、CIDR

1、子网划分

2、子网掩码

3、CIDR

四、ARP、DCHP(待补充)、ICMP

1、ARP

2、DCHP

3、ICMP


一、IPv4分组

1、IPv4分组的格式

  •  一个IP由首部数据部分组成。首部前一部分的长度固定,共20B,是所有IP分组必须具有的。
  • 在首部的固定部分后面是可变部分,长度可变 (从1个字节到40个字节不等),用来提供错误检测及安全等机制。
  • 默认情况下,我们将IP数据报首部看成是20B即可,因为可变部分基本不被使用。

IP首部的各部分字段含义如下:

  1. 版本:占4位,指IP的版本,比如是IPv4还是IPv6版本,通信双方的版本必须一致
  2. 首部长度:占4位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此IP的首部长度的最大值是 60 字节 (实际上IP数据报的首部长度为60B,但是有40B基本从不使用,所以我们默认IP数据报首部是20B)。
  3. 总长度:占16位,指首部和数据部分长度之和,单位为字节,因此数据报的最大长度为(2^16 - 1) = 65535B。(小贴士:有些人不明白为什么-1,这个可以自己举例子体会,比如1111转化成字节数,相当于2^0+2^1+2^2+2^3 <=> 2^4-1)   由于以太网帧(MAC帧)的最大传送单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部加数据)一定不能超过下面数据链路层的MTU的值。为避免这种情况,需要切割后再发送,这就是IP数据报分片(后面再具体讲解)。
  4. 标识(identification):占 16 位,用来产生 IP 数据报的标识。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。但这个 “标识” 并不等同于序号,因为IP是无连接服务,数据报不存在按序接收的问题。当一个数据报长度超过MTU时,必须分片,这个标识字段的值就会被复制到所有的数据报片的标识字段中,相同的标识字段的值使得分片后的各数据报片最后都能正确地重装成为原来的数据报。
  5. 标志(flag):占3位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)MF=1 表示后面还有分片,MF=0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 只有当 DF=0 时才允许分片。 它们的具体使用,后面会进行讲解。
  6. 片偏移:占13位,它指出了较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位,即每个分片的长度一定是8B(64位)的整数倍
  7. 生存时间(Time To Live):占8位,表明这是数据报在网络中的寿命,即数据报在网络中可通过的路由器数的最大值。路由器在每次转发数据报前,就把TTL值减1若TTL值减为零时,就丢弃这个数据报。
  8. 协议:占8位,指出此数据报携带的数据使用何种协议,及分组的数据部分应交给哪个传输层协议,如TCP、UDP等。其中值为6表示TCP,为17表示UDP。
  9. 首部校验和:占16位,校验数据报 头部 在传输中是否出错。这个字段只校验数据报的首部,不校验数据部分。注意这边不采用CRC检验码计算,采用的是其它更简单的计算方式,这里不展开。
  10. 源地址:占32位,表示发送端主机的IP地址。
  11. 目的地址:占32位,表示接收方的IP地址

注意:IP数据报首部中有三个关于长度的标记,一个是首部长度,一个是总长度,一个是片偏移,基本单位分别是4B、1B、8B,题目中常常会出现这几个长度之间的加减运算。另外读者需要熟悉首部各个字段的意义和功能。

2、IP数据报分片

        如果IP数据报的总长度大于以太网帧MTU(Maximum Transmission Unit),就需要将IP数据报中的数据分装在两个或多个较小的IP数据报汇总,这些较小的数据报称为

        分片重组方式:目的主机使用IP首部的标识、标志和片偏移字段来完成对片的重组

  1. 标识的作用:创建一个IP数据报后,源主机会为该数据报加上一个标识号。当目的主机收到来自同一发送主机的一批数据报时,它可以通过检查数据报的标识号,来确定哪些数据报属于同一个原始数据报的片。

  2. 标志的作用:IP首部标志位有3比特,其中有2比特有意义,分别是MF位和DF位。MF=1 表示后面还有分片,MF=0 表示最后一个分片,DF=0 时才允许分片。可以这么理解,接收端在等待并合并切割后的数据报,MF=0,就说明这个是最后一片了,接收端就不会再等待了,如果MF=1,那么接收端就保持等待状态。

  3. 片偏移的作用:目的主机对片进行重组时,使用片偏移字段来确定片应放在原始数据报的哪一个位置。比如,假设已经收到了最后一个分片,那么怎样将所有分片合并呢?这就需要片偏移,接收端会按照片偏移从小到大合并即可。注意合并过程中一定要将首部的20B删除。

        分片方式:IP分片涉及一定的计算,举个例子,一个长为3820N的IP数据报(20B的首部,3800B的数据部分),需要被转发到一条MTU为1500B的链路上。这意味着原始数据报中3800B的数据必须被分配到3个独立的片中(每片也是一个IP数据报),如下图所示:

可以看出,由于偏移值的单位是8B ,所以除了最后一个片外,其他所有片中的有效数据部分都是8的倍数。

3、网络层转发分组的流程

转发过程按以下顺序依次执行:

  1. 从数据报首部提取目的主机的IP地址D得出目的网络地址N
  2. 若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这称为路由器的直接交付;否则就是间接交付。
  3. 若路由表有目的地址为D的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络,或出于对安全的考虑才采用的),则把数据报传送给路由表中所指明的下一跳路由器。
  4. 若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器。
  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器。
  6. 否则就报告转发分组出错。

二、IPv4地址与NAT

1、IPv4地址

        IP地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的32位的标识符。无论哪类IP地址,都由网络号和主机号两部分组成。一般将IP地址分为A、B、C、D、E 五类地址:

这里介绍下ABC类地址,D类地址是后面章节的内容,这里先不介绍。E类地址保留为以后使用,不需要介绍。

  1. A类地址:A类地址的网络号是主机前8位,且第一位规定为0。A类地址可以指派的网络数为2^7-22^7表示网络号前8位,除去固定的第一位,剩下可以分配的数量,-2代表减去了两个特殊的地址:1网络号全为0的IP地址,前八位是00000000。这个IP地址有特殊用途,它表示“本网络”。 2网络号为127的(即01111111)的IP地址,它用来本地软件环回测试本主机的进程之间的通信。A类地址的主机号占3个字节,最大主机数为2^24-2个2^24代表了主机号共有24位,每位要么0要么1有两种分法。-2代表减去两个特殊的地址:1、主机号全0的地址,表示该网络(例如,若主机的IP地址为5.6.7.8,那么该主机所在的网络号就是5,该网络的网络地址为5.0.0.0;若主机的IP地址为12.0.0.1,那么该主机所在的网络地址就是12.0.0.0)。2、主机号全1的地址,它表示广播地址,如12.255.255.255。所以说,合法的主机地址就是介于网络地址和广播地址之间的地址(即12.0.0.0 ~ 12.255.255.255)。
  2. B类地址:B类地址网络号为前面的16位,且前面2位固定为10,所以无论后面14位怎么设置,都不可能出现全0,所以B类地址可指派的网络数2^14。(旧教材会指出B类地址128.0.0.0是不指派的,所以结果是2^14-1,但是根据最新的[RFC 6890],这个网络地址已经可以指派了!) 同理,B类地址的最大主机数2^16-2-2代表扣除全0和全1的主机号
  3. C类地址:C类网络号为前面24位,并且前面前3位规定为110,由于不管后面怎么设置,都不可能出现全0,所以可以指派的网络数是2^21(这里也是,旧教材会指出C类地址192.0.0.0是不指派的,所以结果是2^21-1,但是根据最新的[RFC 6890],这个网络地址已经可以指派了!),同理,C类地址的最大主机数2^8-2=254

上述归纳成下面的表格:

 注意↓

需要牢记
​​​​

分类的 IP 地址的优点和缺点:管理简单;使用方便;转发分组迅速;划分子网,灵活地使用。

但是设计上不合理:采用大地址块,浪费地址资源;即使采用划分子网的方法,也无法解决 IP 地址枯竭的问题。

因此无分类编址CIDR被提出(后面会讲到)。

2、NAT

接下来来介绍下网络地址转换NAT(Network Address Translation)。先来了解下什么是专用地址:专用地址是专门用作一些只需内部通信的机构使用的地址,无需连接到因特网,路由器看到专用地址就不转发,所以说专用地址作为目的地址是不可能在因特网上被传送的。因特网已经规定了以下地址作为专用地址:

  1. 10.0.0.0 ~ 10.255.255.255 (相当于一个A类网络)
  2. 172.16.0.0 ~ 172.31.255.255 (相当于16个连续的B类网络,小提示:这边的16算的是可分配的网络号)
  3. 192.168.0.0 ~ 192.168.255.255 (相当于256个连续的C类网络)

现在的问题是:如果专用网想和因特网的主机通信,怎么办?这时NAT派上用场了。NAT的作用:所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接,工作过程如下图:

 简单来说,就是:

  1. 离开专用网时:替换源地址,将内部地址替换为全球地址。
  2. 进入专用网时:替换目的地址,将全球地址替换为内部地址。

        NAT有个局限性:当 NAT 路由器具有n个全球 IP 地址时,专用网内最多只可同时有n台主机接入到互联网。所以此时NAPT(Network Address Port Translation)派上用场:

这样,用一个全球IP地址,就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。

        需要注意的是,通过 NAT 路由器的通信必须由专用网内的主机发起,因此,专用网内部的主机不能充当服务器用。简单来说,专用网主机不主动联系因特网的主机,因特网的主机就一定不会主动联系专用网的主机。

三、子网划分与子网掩码、CIDR

1、子网划分

        两级IP地址(网络号+主机号)设计的并不合理:

  • IP地址空间的利用率有时很低。例如,对于一个只有200台主机的公司,分配一个A类网络,显然IP地址的利用率极低。
  • 给每个物理网络都分配一个网络号,会使得路由表变得太大而使得网络性能变坏。
  • 两级的IP地址不够灵活。

后来,人们在IP地址中增加了一个“子网号字段”,使两级IP地址变成了三级IP地址。这种做法叫做子网划分

子网划分的基本思路:从主机号借用若干个比特作为子网号,而主机号也就相应减少了若干个比特,网络号不变。不过需要注意的是,子网划分纯属一个单位内部的事,单位对外仍然表现为没有划分子网的网络。

于是三级IP地址即:

                IP地址::={<网络号>,<子网号>,<主机号>}

发送IP分组时,先根据IP数据报的目的网络号,先找到连接到本单位网络的路由器,然后改路由器在收到IP数据报后,按照目的网络号和子网号找到目的子网,最后把IP数据报直接交付给目的主机。

2、子网掩码

        为了告诉主机或路由器对一个A类、B类、C类网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位。子网掩码是一个与IP地址对应的、长32位(bit)的二进制串,由一串1和跟随的一串0组成。其中1对应于IP地址中的网络号及子网号,而0对应于主机号。计算机只需要将IP地址和其对应的子网掩码逐位“与”(AND运算),就可以得出相应子网的网络地址。

        现在的因特网标准规定:所有网络都必须使用子网掩码。如果一个网络未划分子网,就采用默认子网掩码。ABC类地址默认的子网掩码分别是:255.0.0.0、255.255.0.0、255.255.255.0。

        使用子网掩码后,路由表所包括的主要内容是目的网络地址、子网掩码和下一跳地址。此时路由器的分组转发算法如下:

  1. 从收到的分组首部提取目的IP地址,记为D
  2. 先判断是直接交付还是间接交付,方法是用D和路由器直接相邻的网络的子网掩码逐位相“与”,看看是否和相应地的网络匹配。若匹配,说明目的主机在本网络上,直接交付,否则就是间接交付。
  3. 若路由表中有目的地址为D的特定主机路由,则将分组传送给指明的下一跳路由器,否则执行第4步。
  4. 对路由表中每一行子网掩码和D逐位相“与”。若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器。否则执行第5步。
  5. 若路由表有一个默认路由,那么将分组传送给路由表中所指明的默认路由器,否则执行第6步。
  6. 报告转发分组出错。

3、CIDR

        CIDR(Classless Inter-Domain Routing)无分类域间路由选择,作用是:消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,可以更加有效地分配 IPv4 的地址空间。

  • CIDR用各种长度的“网络前缀”来代替分类地址中的网络号和子网号。于是IP地址又从三级编址回到了两级编址IP 地址 ::= { <网络前缀>, <主机号>}。为了区分网络前缀,通常采用斜线记法 (slash notation)a.b.c.d / n:二进制 IP 地址的前 n 位是网络前缀。例如128.14.35.7/20:前 20 位是网络前缀,注意,网络前缀的位数 n 不固定,可以在 0 ~ 32 之间选取任意值;网络前缀所占比特殊,对应于网络号的部分,等效与子网掩码中连续1的部分,比如128.14.35.7/20,它的掩码是20个连续的1和后续12个连续的0。
  • CIDR 把网络前缀都相同的所有连续的 IP 地址组成一个 CIDR 地址块。一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合(也称构成超网),路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的路由选择信息的交换,从而提高网络性能。
  • CIDR地址块中的地址数一定是2的整数次幂,实际可指派的地址数通常为2^N-2,N代表主机号的位数,-2表示减去主机号全0(代表网络号)和主机号全1(代表广播地址)的地址。所以说,网络前缀越短,其地址块所包含的地址数就越多。
  • CIDR的优点在于网络前缀长度的灵活性。由于上层网络的前缀长度较短,因此相应路由的表示项目就少。内部又可以进一步采用延长网络前缀的方法来灵活地划分子网。
  • 有时候查找路由表会查找到不止一个匹配结果(谢希仁《计算机网络第8版》P142有详细描述),应当从匹配结果中选择具有最长前缀的路由,因为网络前缀越长,地址块就越小(主机号位数越小,CIDR地址块越小),这样路由就越具体。
  • CIDR常用二叉线索树进行查找最长前缀匹配(谢希仁《计算机网络第8版》P144有详细描述)。

知识点巩固↓

四、ARP、DCHP(待补充)、ICMP

1、ARP

        ARP地址解析协议 (Address Resolution Protocol ) 作用:从 IP 地址解析出 MAC 地址。

在发送主机中的ARP模块将取在相同局域网上的任何IP地址作为输入,然后返回相应的MAC地址,如下图:

若发送主机222. 222. 222. 220向它的ARP模块提供了 IP地址222.222.222.222,其ARP模块便会返回了相应的MAC地址49-BD-D2-C7-56-2A。 

        那么ARP是如何工作的呢?每台主机或路由器在其内存中具有一个ARP表(ARP table),这张表包含IP地址到MAC地址的映射关系。 该ARP表也包含一个寿命(TTL)值,它指示了从表中删除每个映射的时间。 每台主机设有一个ARP 高速缓存 (ARP cache)来存放ARP表。注意到这张表不必为该子网上的每台主机和路由器都包含一个表项,因为某些可能从来没有进入到该表中,某些可能已经过期。从一个表项放置到某ARP表中开始,一个表项通常的寿命值是20分钟。

在主机发送数据报时,发送方先在ARP高速缓存中查看是否有目的主机的IP地址,有,就查处其硬件地址,并将此硬件地址写入MAC帧,然后通过局域网将改MAC帧发往次硬件地址;如果没有,
主机便指示适配器使用用MAC广播地址(即FF-FF-FF-FF-FF-FF)来发送ARP请求分组,ARP请求分组的目的是询问子网上所有其他主机和路由器,以确定对应于要解析的IP地址的那个MAC 
地址
。适配器在链路层帧中封装这个ARP分组,用广播地址作为帧的目的地址,并将该帧传输进本网络中。当目的主机接收到该ARP请求后,便发回一个响应ARP分组,响应ARP分组包括了主机B的IP与MAC地址的映射关系,主机A收到后将次映射写入自己的ARP缓存,最后按查询到的硬件地址发送MAC帧。

        总结ARP的工作流程:

  1. 发送方是主机,目的主机在本网络,直接用ARP找到目的主机的硬件地址。
  2. 发送方是主机,目的主机不在本网络,先用ARP找到本网络上的一个路由器硬件地址,再通过路由器进行进一步操作。
  3. 发送方是路由器,目的主机在本网络,直接用ARP找到目的主机的硬件地址。
  4. 发送方是路由器,目的主机不在本网络,先用ARP找到本网络上的一个路由器硬件地址,再通过路由器进行进一步操作。

流程图如下:

2、DCHP

3、ICMP

        ICMP (Internet Control Message Protocol) 允许主机或路由器报告差错情况和提供有关异常情况的报告,ICMP最典型的用途是差错报告ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。ICMP 报文的格式如下图:

ICMP 报文的种类有两种:ICMP差错报告报文和ICMP询问报文。下表给出几种常用的ICMP报文类型:

 对于ICMP差错报告,有以下四种类型(注意,一些教材上提到的“源点抑制”已经不再使用):

  1. 终点不可达:路由器或主机不能交付数据报时就向源点发送终点不可达报文。
  2. 时间超过:路由器收到生存时间为零的数据报,或者不在预先规定的时间内收到一个数据报的全部数据报片时,丢弃已收到的数据报并向源点发送时间超过报文。
  3. 参数问题:路由器或目的主机收到的数据报首部中有的字段值不正确,就丢弃所有已收到的该数据报片并向源点发送参数问题报文。
  4. 改变路由(重定向):路由器把改变路由报文发送给主机,让主机直到下次应将数据报交给另外的路由器。(简单来说:路由器早已通过和其它路由器交换信息,确认了比自己更优的转发路径。于是如果主机传送数据报时经过了该路由器,该路由器就会发送改变路由报文给主机,告诉它,最佳路线不是我哦,你应该选择另一个路由才能走最佳路线呢!)

下面是ICMP 差错报告报文的数据字段的内容:

        ICMP差错报告报文,它的数据部分,由收到的需要进行差错报告的IP数据报的首部和其数据字段的前8个字节提取出来组成。再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。

下面是不应发送 ICMP 差错报告报文的几种情况:

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

常用的ICMP 询问报文有以下两种:

  1.  回送请求或回送回答:由主机或路由器向一个特定的目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文。这种询问报文用来测试目的站是否可达,以及了解其有关状态。
  2. 时间戳请求或时间戳回答:发出时间戳请求报文,就能收到对方响应的时间戳回答报文。利用报文中记录的时间戳(如报文的发送时间和接收时间),发送方就可以计算出当前网络的往返时延。时间戳请求与回答也可用于时钟同步和时间测量。

ICMP 的应用举例

课本中提到两个应用,具体实现参见《谢希仁计算机网络第八版P148~P149页》

1、PING (Packet InterNet Groper) 作用是用来测试两个主机之间的连通性。它使用了 ICMP 回送请求与回送回答报文。是应用层直接使用网络层 ICMP 的例子,没有通过运输层的 TCP或UDP。

2、Traceroute,这是UNIX操作系统中名字。在 Windows 操作系统中这个命令是 tracert。它用来跟踪一个分组从源点到终点的路径。利用 IP 数据报中的 TTL 字段、ICMP 时间超过差错报告报文和ICMP 终点不可达差错报告报文实现对从源点到终点的路径的跟踪。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机网络 - IPv4 常考知识点详解(超详细!) 的相关文章

  • 手把手教你做计算机网络基础大题—路由表

    一 题目 设某路由器建立了如下路由表 xff1a 目的网络子网掩码下一跳128 96 39 0255 255 255 128接口m0128 96 39 128255 255 255 128接口m1128 96 40 0255 255 255
  • 新手入门:ST-Link和J-Link仿真器的使用

    当编译完成之后 xff0c 点击下载 xff0c 出现这样的错误提示 xff0c 说明我们的仿真器配置没有配置好 xff0c 下面我们讲讲J Link和ST Link分别应该如何配置 xff08 1 xff1a 编译 xff0c 后续只编译
  • 深度学习图像分类实战——pytorch搭建卷积神经网络(AlexNet, LeNet, ResNet50)进行场景图像分类(详细)

    目录 1 一 实验过程 1 1 实验目的 1 2 实验简介 1 3 数据集的介绍 1 4 一 LeNet5网络模型 1 5 二 AlexNet网络模型 1 6 三 ResNet50 xff08 残差网络 xff09 网络模型 二 实验代码
  • c++实现经典游戏贪吃蛇(超详解)

    经典版 要求 xff1a 1碰到四周和自身游戏结束 xff1b 2迟到食物蛇身增长 xff1b 3食物吃得越多游戏越快 xff1b 4通过w a s d可控制蛇头的方向 xff1b 5蛇身颜色不一致 源码 xff08 需要easy x 贪吃
  • c++中求数组的长度

    c 43 43 中求数组的长度 数组长度 61 sizeof 数组名 sizeof 数组类型 span class token macro property span class token directive hash span span
  • 实验 1 UML 类图实验

    实验内容 作图工具 xff1a PowerDesigner 1 绘制以下类图并生成源代码 xff08 语言不限 xff09 xff1a 2 根据以下描述绘制类图 xff0c 再正向工程生成 Java 源代码 xff08 也可生成其他面 2
  • 贪吃蛇(C++)

    一 项目思路 该项目用于计算机软件课设 贪吃蛇要解决的问题有 xff1a 蛇身的移动 xff0c 事物的随机生成 xff0c 蛇头与食物重合 xff0c 蛇吃食物身体的变长 蛇身移动的处理可以改变蛇首元素 xff08 蛇身用数组存储 xff
  • C语言编程工具Dev C++的安装教程

    一 Dev C 43 43 安装包 xff08 5 11版本 xff09 无偿分享 Dev C 43 43 5 11 简体中文版下载地址 xff1a 百度网盘 xff1a 链接 xff1a https pan baidu com s 1Yb
  • winform基础 C#编程

    1 winform应用程序是一种智能客户端技术 xff0c 帮助我们获得信息或者传输信息 2 当后台需要获取前台控件属性 xff0c 需要使用Name属性 visible 指示一个空间是否可见 enabled 指示一个空间是否可用 3 事件
  • 联合索引为啥需要满足最左前缀原则?

    在回答这个问题之前 首先需要先了解清楚何为联合索引 联合索引就是MySQL设计大叔为了节省内存而创建的将多个列的值作为非叶子节点存储的B 43 树结构 比如按照key part1 key part2 key part3列创建了idx key
  • 堆栈和变量的分配区域

    转载自 http mengren425 blog 163 com blog static 56903931200791003721118 一 预备知识 程序的内存分配 一个由c C 43 43 编译的程序占用的内存分为以下几个部分 1 栈区
  • 2023海南大学835软件工程原理方法与应用考研总结

    不知不觉23考研已经结束一个星期了 xff0c 考试的过程还历历在目 政治复习虽然看完了徐的视频 xff0c 刷完了1000题 xff0c 写了肖8肖4 xff0c 背了肖4大题 xff0c 但选择题写的时候还是十分纠结 xff0c 用了一
  • vue 封装 axios 请求

    需求 xff1a 向后端请求拿数据 好处 xff1a 把所有的请求方法放在一个文件夹里面 xff0c 方便优化 先把 axios 安装起 npm install axios save 接下来按照步骤走吧 go go go 1 在src路径下
  • Python:从清华源安装第三方库

    python 在使用pip安装的时候 xff0c 一些小一点的还好 xff0c 安装一些大的包的时候 xff0c 会非常的慢甚至出现timeout的报错 xff0c 这时我们就可以使用清华大学的镜像来安装 xff0c 打开终端 xff1a
  • 用OpenStack搭建简单的云平台并启动云主机

    OpenStack OpenStack简介OpenStack重要集成组件OpenStack平台部署部署环境建立虚拟机 配置时间同步安装OpenStack安装 RabbitMQ 消息队列服务Memcached缓存令牌的安装安装和配置OpenS
  • 关于VMware USB arbitration Serve 服务无法启动的问题

    文章目录 问题方法一方法二 问题 虚拟机插入U盘或者PA等其他USB设备时无法识别 xff0c 经过一番查询发现是本机的VMware USB arbitration Serve 没有启动 xff0c 然后 打开以后尝试启动VMware US
  • keil5安装记录(基于stm32芯片配置)

    参考资料地址正点原子 下载上述地址中的文件 xff0c 根据自己芯片的型号下载 xff0c 如仅安装keil仅下载网盘中的 软件资料 即可 xff0c 同时也可在官网下载 xff0c 但是不推荐下载最新版本 xff0c 因为很多报错没有可参
  • 黎曼几何与黎曼流形

    目录 0 黎曼几何 1 欧几里得几何与黎曼几何的区别 2 黎曼流形 3 黎曼距离 4 切空间 5 黎曼均值 6 SPD矩阵如何形成黎曼流型 7 切线空间映射 8 同余变换和同余不变 9 黎曼对齐 科普性笔记 xff0c 做了解 xff0c
  • Faster R-CNN

    1 论文简介 论文名 xff1a Faster R CNN Towards Real Time Object Detection with Region Proposal Networks 论文地址 xff1a Faster R CNN 论
  • 手把手教你安装VSCode(附带图解步骤)

    一 前端工具vscode 1 1 概述 前端开发是创建Web页面或app等前端界面呈现给用户的过程 xff0c 通过HTML xff0c CSS及JavaScript以及衍生出来的各种技术 框架 解决方案 xff0c 来实现互联网产品的用户

随机推荐

  • 前端小知识:1.A标签的用法

    前端小知识 1 A标签的用法 Hello xff0c 大家好 xff0c 我是仲桉君 因为一些不可抗因素停更了很久 xff0c 但是我还是回来了从今天开始正式开始更新 这个系列是有关一些前端的小知识的小博文 预计更新20篇以上 争取做到每日
  • 从uboot中学习C语言基本功(uboot/lib_generic/vsprintf.c/simple_strtoul)

    此函数有以下几点值得注意 xff1a 1 第一个参数中的const 一般在函数的形参中 xff0c 如果我们只是希望调用者使用该参数 xff0c 而不会去改变该 参数内容 xff08 一般是指针指向的内容 xff09 xff0c 则可以声明
  • C++语法基础

    C 43 43 环境安装和基础知识 1 xff1a C 43 43 环境安装与配置 我使用的编译器是Clion xff0c 解释器配置的是Dev C 43 43 自带的解释器 xff0c Clion安装见下文 Clion的安装和配置 xff
  • Samba服务

    目录 配置yum源 安装samba服务 配置samba服务 Windows环境使用Samba服务 Linux环境使用Samba服务 xff08 1 xff09 方法一使用smbclient命令 xff08 2 xff09 方法二使用挂载的方
  • 已解决—The connection to the server localhost:8080 was refused - did you specify the right host or port

    运行 kubectl get namespace时报错 xff1a root 64 ip 10 0 0 8 kubectl get namespace E0320 07 39 20 866425 32422 memcache go 265
  • 修改ideal中java项目jdk版本,记得收藏

    1 Ctrl 43 Shfit 43 Alt 43 S 进入Settings 窗口 xff0c 修改红框标记的两处jdk版本 2 Ctrl 43 Shfit 43 Alt 43 S 进入Project Structure窗口 xff0c 先
  • GO语言开发环境配置(Linux)

    Go语言开发环境配置 xff08 Linux xff09 一 Go安装二 IDE安装三 Vim IDE 常用功能 一 Go安装 Go 有多种安装方式 xff0c 比如 Go 源码安装 Go 标准包安装 第三方工具 xff08 yum apt
  • HBase过滤器

    目录 一 介绍 1 hbase运算符 2 Hbase 过滤器的比较器 二 代码 1 hbase建表 2 创建数据 3 导入依赖 4 列值过滤器 5 单列值过滤器 6 单列值排除过滤器 7 rowkey过滤器 8 rowkey前缀过滤器 xf
  • Hive与HBase之间的区别和联系

    目录 概念 Hive HBase 共同点 区别 关系 首先要知道Hive和HBase两者的区别 xff0c 我们必须要知道两者的作用和在大数据中扮演的角色 概念 Hive 1 Hive是hadoop数据仓库管理工具 xff0c 严格来说 x
  • VSCode(Visual Studio Code )软件(插件)安装与使用

    VSCode 简介 Visual Studio Code 简称 VS Code VSC 是微软公司推出的一款免费开源的现代化轻量级代码编辑器 xff0c 支持几乎所有主流的开发语言的语法高亮 智能代码补全 GIT 等特性 xff0c 支持插
  • 51单片机智能小车

    最近学校举办了一个智能小车比赛 xff0c 比赛内容为用手机蓝牙控制小车拥有5个功能 xff0c 分别是超声波舵机避障 xff0c 测距 xff08 显示在LCD1602上 xff09 xff0c 红外跟随 xff0c 循迹还有蓝牙控制小车
  • 在Matlab中通过mex使用cuda的方法

    仅供参考 xff0c 具体问题需要具体分析 xff01 1 cuda安装及配置 xff0c 参考下面这篇 cpp文件调用cuda函数 苹果挨炮的博客 CSDN博客 2 Matlab配置mex编译环境 在matlab命令行中输入以下命令 me
  • container_of 详解

    container of宏的功能 xff1a 从结构体类型 type 的一个成员 member 指针 ptr xff0c 反推得到该结构体的指针 其实现由两个分号隔开的语句组成 xff0c 首先用typeof关键字 xff0c 得到memb
  • ubuntu 内存清理【亲测有效】

    目录 一 xff1a 引言 二 xff1a ubuntu 内存清理 应急 1 移除掉不再需要的软件包 2 清理ubuntu中的APT缓存 3 清理缩略图缓存 4 手动删除老旧Linux内核 5 删除多余的孤立包 6 卸载不必要的应用程序 一
  • hdfs的常见语句

    开hdfs环境 xff1a xff08 开启成功后用jps命令出来至少6条数据 xff09 start all sh 关hdfs环境 xff08 记得关 xff0c 容易坏 xff09 xff1a stop all sh 上传文件 xff1
  • 疑难杂症之vscode--During startup program exited with code 0xc0000139.--缺失重要文件(杂记)

    问题展示 在vscode中 xff0c 只要用了STL容器 xff0c 就会出现这样的提示 发现自己的 vscode 不能运行带有部分 stl 库的程序 xff0c 编译不会报错 xff0c 运行也不会报错但是也没有结果 xff0c 调试的
  • SpringBoot整合Jcasbin,RESTful,Mysql,入门

    Casbin 是一个权限框架 xff0c 这里就不多赘述了 xff0c 有兴趣自己了解 Casbin xff0c 这里我们使用的是JCasbin 首先需要了解Casbin的Model和Policy xff0c 可以通过这里观察编辑器 xff
  • 聚类联邦学习的拜占庭鲁棒性

    聚类联邦学习的拜占庭鲁棒性 2020 ICASSP On the Byzantine Robustness of Clustered Federated Learning 原文链接 xff1a https ieeexplore ieee o
  • 网络安全学习(十七)VlAN

    虚拟局域网vlan vlan是二层技术 xff0c 路由器上不能配置vlan表 主要应用在交换机上 广播的危害 xff1a 增加网络 终端负担 xff0c 传播病毒 xff0c 安全性 路由器也可以隔离 xff0c 但有缺点 成本高 不灵活
  • 计算机网络 - IPv4 常考知识点详解(超详细!)

    目录 一 IPv4分组 1 IPv4分组的格式 2 IP数据报分片 3 网络层转发分组的流程 二 IPv4地址与NAT 1 IPv4地址 2 NAT 三 子网划分与子网掩码 CIDR 1 子网划分 2 子网掩码 3 CIDR 四 ARP D