《计算机网络—自顶向下方法》 第三章Wireshark实验:DNS协议分析

news2024/11/30 12:52:48

        域名系统 DNS(Domain Name System) 是互联网使用的命名系统,用于把便于大家使用的机器名字转换为 IP 地址。许多应用层软件经常直接使用 DNS,但计算机的用户只是间接而不是直接使用域名系统。 互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。DNS 是:

  1. 一个有分层的 DNS服务器实现的分布式数据库;
  2. 一个使得主机能够查询分布式数据库的应用层协议。

        采用客户服务器方式,使大多数名字都在本地进行解析。名字到 IP 地址的解析是由若干个域名服务器程序完成的,域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。当一个应用进程需要把主机名解析为 IP 地址是,该用户进程就调用解析程序,并成为 DNS 的一个客户,把待解析的域名放在 DNS 请求报文中,以 UDP 用户数据报的方式发给本地域名服务器。本地域名服务器查找域名后,把对应的 IP 地址放在回答报文中返回。若本地域名服务器不能回答该请求,则该本地域名服务器就暂时成为 DNS 中的另一个客户,并向其他域名服务器发出查询请求。

为什么是分布式?

        DNS 的一种简单的设计是,在互联网中只使用一个 DNS 服务器,该服务器包含所有的映射,所有客户的查询都发往该服务器。现在来考虑下,为什么 DNS 不使用集中式设计而是使用分布式?原因主要有一下 4 点:

  • 单点故障:如果该 DNS 服务器崩溃,则整个因特网都会因此瘫痪;
  • 通信容量:单个 DNS 服务器不得不处理所有的 DNS 查询(数量级是上亿台主机);
  • 远距离的集中式数据库:单个 DNS 服务器不可能“邻近”所有的查询客户,会导致严重的时延;
  • 维护:单个 DNS 服务器不得不为所有因特网主机保留记录,这使得数据库异常庞大,且需要频繁更新。

        总而言之,单一的 DNS 服务器上运行集中式数据库,完全没有拓展能力。

        DNS 系统是一种将域名和 IP 地址相互映射的以层次结构分布的数据库系统。DNS 系统采用递归查询请求的方式来响应用户的查询,为互联网的运行提供关键性的基础服务。

        DNS 系统的解析过程描述如下:

  1. 主机先向本地域名服务器进行递归查询;
  2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询;
  3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的 IP 地址;
  4. 本地域名服务器向顶级域名服务器进行查询;
  5. 顶级域名服务器告诉本地域名服务器,下一步查询权威服务器的 IP 地址;
  6. 本地域名服务器向权威服务器进行查询;
  7. 权威服务器告诉本地域名服务器所查询的主机的IP地址;
  8. 本地域名服务器最后把查询结果告诉主机。

        本实验的主要内容是基于 Wireshark 工具去分析 DNS 的解析过程及其协议字段。

1 DNS 协议分析

1.1 nslookup 域名解析

1.1.1 域名结构

        IP 地址是网络中面向应用的计算机主机的标志,而域名则是互联网中面向用户的主机的标志。为了保证域名的唯一性,域名系统采用层次结构。如下图所示:

  • 每一个域名(只讨论英文域名)都是一个标号序列(labels),用字母(A-Z,a-z,大小写等价)、数字(0-9)和连接符(-)组成;
  • 标号序列总长度不能超过 255 个字符,它由点号分割成一个个的标号(label);
  • 每个标号应该在 63 个字符之内,每个标号都可以看成一个层次的域名;
  • 级别最低的域名写在左边,级别最高的域名写在右边,如 www.baidu.com
  • com: 一级域名。表示这是一个企业域名。同级的还有 “net”(网络提供商), “org”(非盈利组织) 等;
  • baidu: 二级域名,指公司名;
  • www: 表示该公司的 WEB 服务器对应的主机。

1.1.2 域名服务器

        域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名及其 IP 地址数据库的主机。

        域名服务器由高向低进行层次划分,可分为以下几大类:

  • 根域名服务器:最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助;
  • 顶级域名服务器:负责管理在该顶级域名服务器下注册的二级域名;
  • 权限域名服务器:负责一个区的域名解析工作;
  • 本地域名服务器:当一个主机发出 DNS 查询请求时,这个查询请求首先发给本地域名服务器。

        注:一个域名服务器所负责的范围,或者说有管理权限的范围,就称为区。各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。

        我们需要注意的是:

  • 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器;
  • 每一级域名服务器都知道下级域名服务器的 IP 地址;
  • 为了容灾,每一级至少设置两个或以上的域名服务器。

1.1.3 域名解析

        域名解析主要是将主机名(例如 www.example.com)转换为计算机友好的 IP 地址(例如 192.168.1.1),域名解析的基本过程:

  • (1) 输入域名后,先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据;
  • (2) 如果没有, 就向上级域名服务器进行查找, 依次类推;
  • (3) 最多回溯到根域名服务器,肯定能找到这个域名的 IP 地址;
  • (4) 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的 IP 地址缓存起来,可以加速查找过程。

        简单的域名对应的 IP 地址查询,也可以使用 ping 命令来完成。

1.1.4 域名解析与 nslookup

        nslookup 是一种网络管理命令行工具,可用于查询 DNS 域名和 IP 地址。无论是 linux 或者是 window 下都有这个工具,用好它对平常的域名解析情况,或者对域名服务器的维护都有帮助。
语法:

    nslookup [ -Option ... ] [ Host ] [ -NameServer ]

        nslookup 命令以两种方式查询域名服务器:

  • 交互模式:当没有给出操作参数时进入,操作对象和操作方式可以通过相应交互命令来告诉。
  • 命令模式:在一个命令行中将操作对象和操作方式告知命令,nslookup 将执行结果返回。实际使用中,采用这种方式比较多。

        下面列举几种主要用法:

  1. 直接查询 查询一个域名的 A 记录,使用默认的 DNS 服务器,语法为:nslookup domain 例如: nslookup baidu.com

        从中可以看出:
(1) baidu.com 的域名解析所使用的 DNS 服务器地址 172.21.0.10
(2) baidu.com 域名对应的主机有几个IP地址。

  1. 指定域名服务器查询
nslookup domain  dns-server

        将查询请求发送到 DNS 服务器 bitsy.mit.edu,而不是默认的 DNS 服务器。如:

nslookup baidu.com 172.21.0.10
  1. 查询其他记录,语法格式如下:
nslookup -type=type domain 

        通过指定 -type 参数的具体类型,执行其他类型的查询。常用类型说明:

  • MX:邮件服务器记录;
  • NS:名字服务器记录;
  • PTR:反向记录。

        如查询baidu.com对应的名字服务器记录:

nslookup -type=NS baidu.com

结果如图:

        查询 IP 地址172.11.4.107对应的域名(反向查询):

nslookup -type=PTR 172.11.4.107

结果如图:

1.2 查看与设置 DNS 服务器操作

1.2.1 如何查看网卡默认的 DNS 服务器

        在我们使用的 Linux 操作系统里面,DNS 服务器的配置信息在 /etc/resolv.conf 文件里面。查看该文件的命令如下:

cat /etc/resolv.conf

        该文件内容如下图所示:

        可以看出,默认的 DNS 服务器 IP 是:172.21.0.10

1.2.2 如何修改网卡默认的 DNS 服务器

        可以直接修改 resolv. conf文件,方法如下:

vim /etc/resolv.conf        		// 打开resolv.conf 文件

        改为如下内容:

nameserver 114.114.114.114 		# 修改成你的主DNS
nameserver 8.8.8.8    			# 修改成你的备用DNS

        配置完成后,需重启网络服务才生效,重启网络服务的语句为:

service networking restart

1.3 DNS 报文分析

1.3.1 DNS 域名解析过程

        DNS 协议属于应用层,使用客户端-服务器模式运行在通信的端系统之间。在通信的端系统之间通过端到端传输输协议( UDP 协议,通常使用 53 号端口)来传送 DNS 报文。DNS 系统解析过程如下图所示:

        DNS 客户需要访问 WEB 服务器 www.abc.xyz.com,则客户机可以访问本地的 hosts 文件,看能否知道主机名称对应的 IP 地址,如果 hosts 文件不能解析该主机名称,则只能通过向客户机所设定的 DNS 服务器进行查询。查询过程如下:

  • (1) DNS 客户机向本地域名服务器发送查询请求,查找域名 www.abx.xyz.com 的 IP 地址。本地域名服务器查询本地的缓存,如果有这个地址,则将地址返回给 DNS 客户机;
  • (2) 如果本地域名服务器缓存没有这个地址,则发送查询请求到根域名服务器,询问 www.abx.xyz.com 的地址,根域名服务器会将子域 com 的域名服务器的地址返回给本地域名服务器;
  • (3) 本地域名服务器再向 com 域发送查询请求,com 域服务器无法提供地址,但会把下一级的域名服务器 xyz.com 的地址发送给本地域名服务器;
  • (4) 重复(2)、(3)的过程,最后 xyz.com 域名服务器把 abc.xyz.com 域名服务器地址发送给本地域名服务器;
  • (5) 本地域名服务器再向 abc.xyz.com 域名服务器发送地址查询请求 abc.xyz.com,找到了 www.abc.xyz.com 的地址,就将这个地址发送给本地域名服务器;
  • (6) 本地域名服务器把地址保存到缓存,同时返回给 DNS 客户机。

        有两种查询方式,分别是:

1. 递归查询
        主机向本地域名服务器的查询,一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。

2. 迭代查询
        本地域名服务器向根域名服务器的查询,通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。

  1. 递归查询:主机向本地域名服务器的查询一般都是采用递归查询;
  2. 迭代查询:本地域名服务器向根域名服务器的查询通常采用迭代查询。只是通常,也有的采用递归查询。

1.3.2 域名解析协议

        域名解析的实现是依靠 DNS 协议来完成。有两种 DNS 报文——查询报文和响应报文,分别来实现 DNS 的查询请求和响应请求。

        DNS 协议报文格式如下:

1. 头部
        (1) 会话标识(2 字节) DNS 报文的 ID 标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分 DNS 应答报文是哪个请求的响应。
        (2) 标志(2 字节) 各字段定义如下:

  • QR(1 bit) 查询/响应标志,0 为查询,1 为响应
  • opcode(4 bit) 0 表示标准查询,1 表示反向查询,2 表示服务器状态请求
  • AA(1 bit) 表示授权回答
  • TC(1 bit) 表示可截断的
  • RD(1 bit) 表示期望递归
  • RA(1 bit) 表示可用递归
  • rcode(4 bit) 表示返回码,0 表示没有差错,3 表示名字差错,2 表示服务器错误(Server Failure)

        (3) 数量字段(总共 8 字节): 各自表示后面的四个区域的数目。

  • Questions 表示查询问题区域节的数量
  • Answers 表示回答区域的数量
  • Authoritative nameservers 表示授权区域的数量
  • Additional recoreds 表示附加区域的数量

**2. 正文 **

        正文部分由查询区域和资源记录区域组成。
        (1) 查询区域

  • 查询名:长度不固定,且不使用填充字节,一般该字段表示的就是需要查询的域名(如果是反向查询,则为 IP ,反向查询即由 IP 地址反查域名)。其构成如下:
  • 查询类型:规定如下

        注:查询类通常为 1 ,表明是 Internet 数据。

        (2) 资源记录 (RR) 区域(包括回答区域、授权区域和附加区域)

        这三个区域分别是:回答区域,授权区域和附加区域,其格式都是一样的。

  • 域名( 2 字节或不定长):格式和 Queries 区域的查询名字字段是一样的;
  • 查询类型:表明资源纪录的类型,与查询类型表格相同;
  • 查询类:对于 Internet 信息,总是 IN ;
  • 生存时间(TTL):以秒为单位,表示的是资源记录的生命周期;
  • 资源数据:可变长字段,表示按照查询段的要求返回的相关资源记录的数据。

1.4 NS 类型的 DNS 解析报文分析

1.4.1 如何捕获 NS 类型的 DNS 报文

        DNS 中 NS 记录 NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个 DNS 服务器来进行解析。 在注册域名时,总有默认的 DNS 服务器,每个注册的域名都是由一个 DNS 域名服务器来进行解析的,DNS 服务器 NS 记录地址一般以以下的形式出现:ns1.domain.comns2.domain.com 等。 简单的说,NS 记录是指定由哪个 DNS 服务器解析你的域名。

        在执行 nslookup 时,可以通过指定参数 -type=NS 来查询指定域名对应的域名服务器。如下图所示。

1.4.2 解析 DNS 请求报文

        通过 Wireshark 可以抓取执行上述操作报文列表。筛选 DNS 协议的报文,找到查询请求报文,展开如下图所示。

        可以看出,请求查询报文的的 Type 字段为 NS ,即 Authorizative Name Server 。即希望得到权威的名字服务。该请求报文是通过 UDP 协议进行传输的,端口号为 53 。

传输层协议使用 TCP 还是 UDP ?

        DNS 可以使用 UDP/53 ,也可以使用 TCP/53 。当响应报文的长度小于 512B 时,就使用 UDP (因为 UDP 的最大报文长度为 512B );若响应报文的长度超过 512B ,则选用 TCP 。DNS 协议关于 UDP 和 TCP 的选择通常为以下两种情况:
        (1) 若 DNS 客户程序事先知道响应报文的长度超过 512B ,则应当使用 TCP 连接;

        注意:主域名服务器与辅助域名服务器在进行区域传送时,通常数据量都比较大,所以 DNS 规定,区域传送使用 TCP 协议。

        (2) 若解析程序不知道响应报文的长度,它一般使用 UDP 协议发送 DNS 查询报文,若 DNS 响应报文的长度大于 512B ,服务器就截断响应报文,并把 TC(truncated) 置为 1 。在这种情况下,DNS 客户程序通常使用 TCP 重发原来的查询请求,从而它将来能够从 DNS 服务器中收到完整的响应。

1.4.3 解析 DNS 应答报文

        查看随后的响应报文,可以看到有多个响应报文。这些报文就是在进行解析baidu.com域名对应的权威服务器过程中响应的报文。展开这些报文,可以看到第一个响应报文如下图所示。

        该报文应答部分有多个服务器地址,其第一个地址类型为 SOA(start of a zone of an authority),即权威区域的开始。其后的服务器地址类型为 SRV(Server selection),即服务器选择。
随后的多个报文都是对查询报文的响应。

        由于前述响应报文长度大于 512B ,随后再次出现了一个查询请求报文,查看其传输层协议,可以看到换用了 TCP 协议。

        同样有多个应答报文进行响应。查看这些报文的应答类型,有些是 SRV ,有些是 A(Address,内容是具体的 IP 地址)。
        查看最后一个应答报文,如下图所示。

        可以看出,其权威 DNS 服务器的名称为:ns.dns.cluster.local

1.5 反向 DNS 解析

1.5.1 反向解析

        在 nslookup 中,类型参数设为 PTR 表示反向解析。反向解析是用于将一个 IP 地址映射到对应的域名,也可以看成是 A 记录的反向,IP 地址的反向解析。下图演示了反向解析 IP 地址 39.156.69.79 的操作。

        注意:反向解析时IP地址的顺序也是反的

反向解析查询报文

        下图是 Wireshark 抓获的查询报文。

        展开 Query 段,可以看到,此报文的 Type 为 PTR ,即反向解析。反向解析的 name 是 IP 地址再加了 in-addr.arpa 这部分。

反向解析响应报文

        下图是 Wireshark 抓获的反向解析应答报文。

        展开该报文的 Answers 部分,可以看到该段的 Type 是 PTR ,查询的 name 是 IP 地址加in-addr.arpa 部分,而响应的 Domain Name 的值为:79-69-156-39.dynamic.dsl.as9105.com

1.6 指定服务器的DNS报文分析

        打开 Wireshark ,并在过滤器中输入 DNS 。筛选出 DNS 协议报文,并开始捕获报文。然后打开终端,输入命令并执行 nslookup baidu.com 114.114.114.114,在 Wireshark 中停止捕获报文;

        从报文列表可以看出,经历了多次查询与应答,在最后一轮才得到了baidu.com的 A 地址。查询的百度域名依次为:

baidu.com.default.svc.cluster.local
baidu.com.svc.cluster.local
baidu.com.cluster.local
baidu.com

        依次查看其应答报文,可以看出,前几次的应答都是 Authoritative Nameserver ,类型为 SOA ,即域名分区,没有得到真正的 IP 地址;只有最后一次才得到 Answers ,其类型 Type 为 A ,其 IP 地址为 220.181.38.148,39.156.69.79

补充:ipconfig

         ipconfig(对于Windows)和 ifconfig(对于Linux / Unix)是主机中最实用的程序,尤其是用于调试网络问题时。这里我们只讨论ipconfig,尽管Linux / Unix的 ifconfig 与其非常相似。 ipconfig 可用于显示您当前的TCP/IP信息,包括您的地址,DNS服务器地址,适配器类型等。例如,您只需进入命令提示符,输入

ipconfig /all

        所有关于您的主机信息都类似如下面的屏幕截图所显示。

         ipconfig 对于管理主机中存储的DNS信息也非常有用。在第2.5节中,我们了解到主机可以缓存最近获得的DNS记录。要查看这些缓存记录,在 C:\> 提示符后输入以下命令:

ipconfig /displaydns

        每个条目显示剩余的生存时间(TTL)(秒)。要清除缓存,请输入:

ipconfig /flushdns

        清除了所有条目并从hosts文件重新加载条目。


2 实验分析

        现在,我们熟悉nslookupipconfig,我们准备好了一些正经的事情。首先让我们捕获一些由常规上网活动生成的DNS数据包。

  • 使用ipconfig清空主机中的DNS缓存。
  • 打开浏览器并清空浏览器缓存。 (若使用Internet Explorer,转到工具菜单并选择Internet选项;然后在常规选项卡中选择删除文件。)
  • 打开Wireshark,然后在过滤器中输入“ip.addr==your_IP_address”,您可以先使用ipconfig获取你的IP地址。此过滤器将删除既从你主机不发出也不发往你主机的所有数据包。
  • 在Wireshark中启动数据包捕获。
  • 使用浏览器访问网页: https://www.nuaa.edu.cn/
  • 停止数据包捕获。
  1. 运行nslookup 以获取一个亚洲的Web 服务器的IP 地址。该服务器的IP 地址
    是什么?
    答:这里使用的阿里的公众 DNS 223.5.5.5 替代我的 ISP 服务商的 DNS 进行查
    询,这里我查询的是南航(https://www.nuaa.edu.cn/)的IP 地址。可以在图中看到我请求阿里公共DNS 来获取南航的IP 地址,为:218.94.136.180

  2. 找到DNS查询和响应消息。它们是否通过UDP或TCP发送?
    答:是 UDP。

  3. DNS是查询消息的目标端口是什么? DNS响应消息的源端口是什么?
    答:都是 53 端口。

  1. DNS 查询消息发送到哪个 IP 地址?使用 ipconfig 来确定本地 DNS 服务器的 IP 地址。这两个 IP 地址是否相同?
  1. 检查 DNS 查询消息。DNS 查询是什么 “Type” 的?查询消息是否包含任何 “answers”?
    答:Type 为 “A”,表示查询 IP 地址,没有任何 “answers”。

  2. 检查DNS响应消息。提供了多少个"answers"?这些答案具体包含什么?
    答:提供了 2 个 “answers”,是该域名的 2 个 IPV4 地址。

  3. 考虑从您主机发送的后续 TCP SYN 数据包。 SYN 数据包的目的 IP 地址是否与 DNS 响应消息中提供的任何 IP 地址相对应?
    答:是相对应的。

  4. 这个网页包含一些图片。在获取每个图片前,您的主机是否都发出了新的 DNS 查询?
    答:没有,因为本机 DNS 已经被缓存了,因此不需要发起新的 DNS 查询。

  5. DNS查询消息的目标端口是什么? DNS响应消息的源端口是什么?
    答:目标端口和源端口都是 53。

  1. DNS 查询消息的目标 IP 地址是什么?这是你的默认本地 DNS 服务器的 IP 地址吗?
    答:225.3.3.3,是我修改的默认本地 DNS 服务器的 IP 地址。

  1. 检查 DNS 查询消息。DNS 查询是什么 “Type” 的?查询消息是否包含任何 “answers”?
    答:Type 为 “A”,表示查询 IP 地址,没有任何 “answers”。
  1. 检查 DNS 响应消息。提供了多少个 “answers”?这些答案包含什么?
    答:提供了 1 个 “answers”,是该域名的 IPV4 地址。

        现在重复上一个实验,但换成以下命令:

nslookup www.aiit.or.kr bitsy.mit.edu
  1. DNS 查询消息发送到的 IP 地址是什么?这是您的默认本地 DNS 服务器的 IP 地址吗?
    答:18.0.72.3,不是我的默认本地 DNS 服务器的 IP 地址。
  1. 检查DNS查询消息。DNS 查询是什么 “Type” 的?查询消息是否包含任何 “answers”?
    答:Type 为 “A”,表示查询 IP 地址,没有任何 “answers”。
  1. 检查 DNS 响应消息。提供了多少个 “answers”?这些答案包含什么?
    答:提供了 1 个 “answers”,是该域名的 IPV4 地址。

补充:dig命令

        命令行工具 dig 可以跟 DNS 服务器互动,它的查询语法如下(美元符号$是命令行提示符)

$ dig @[DNS 服务器] [域名]

        网上有很多公用的 DNS 服务器,这篇文章选择 Cloudflare 公司提供的 1.1.1.1 进行演示,向 1.1.1.1 查询域名,就执行下面的命令。


参考

  • DNS 原理入门:http://www.ruanyifeng.com/blog/2016/06/dns.html
  • DNS 查询原理详解:http://www.ruanyifeng.com/blog/2022/08/dns-query.html
  • DNS协议分析:https://www.educoder.net/shixuns/4yze3kp5/challenges
  • 《计算机网络-自顶向下方法》笔记:https://github.com/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES
  • Wireshark实验——DNS域名系统:https://www.cnblogs.com/linfangnan/p/12771157.html

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

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

相关文章

达索的有限元分析软件Abaqus 2023版本下载与安装配置教程

目录 前言一、安装前准备二、Abaqus 安装总结 前言 Abaqus软件是一款广泛使用的有限元分析软件,可用于模拟各种工程应用程序,包括结构、流体力学、热传递、电磁和声学等。该软件提供了广泛的建模功能和多种求解器,可以帮助工程师预测材料和结…

lowcode-cms开源社区源码设计分享

开源背景 lowcode可视化社区 是我之前在设计研发 Dooring低代码 平台时开发的一个面向低代码内容分享的知识社区, 内容端采用 SSR 技术来渲染页面, 对 SEO 更加友好, 同时后端服务采用 Nodejs 来实现, 内容端和服务端同端, 也就是传说中的内容服务“同构”. 管理端采用前端最最…

【JUC】线程池有哪 4 种拒绝策略?

第一种拒绝策略是 AbortPolicy,这种拒绝策略在拒绝任务时,会直接抛出一个类型为 RejectedExecutionException 的 RuntimeException,让你感知到任务被拒绝了,于是你便可以根据业务逻辑选择重试或者放弃提交等策略。 第二种拒绝策略…

ChatGPT自动生成大厨菜谱

大厨菜谱 最近几年,越来越多年轻人也开始尝试自己在家做菜吃饭,而不仅仅是外出就餐或点外卖。有些人可以向长辈讨教做菜心得,有些人则开始尝试从互联网搜索学习菜谱。著名的"下厨房" App,就是针对这个需求应运而生的。…

华为许超:伙伴成功,才有华为企业业务成功

伙伴,可以说是今年ICT行业最为重要的词。各大厂商都在强调伙伴优先,发力伙伴体系构建。然而行业内更多是厂商单维度的信息释放,重视强调厂商面向伙伴的支持与赋能。这个过程中,似乎普遍缺少一个视角:那就是伙伴究竟需要…

美团一面:Spring Cloud 如何构建动态线程池?

美团一面:Spring Cloud 如何构建动态线程池? 说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如美团、极兔、有赞、希音、百度、网易、滴滴的面试资格,遇到一几个很重要的面试题:…

最强linux抓包工具优劣势对比分析

ngrep 核心参数 参数名称参数介绍-q禁止在屏幕上输出匹配行-d定义网络接口,可以多次使用-W设置缓冲区大小,单位为MB,默认为2MB-n不解析ASCII数据-i设置网络接口,与-d参数相同-P将解析的协议名称作为输出的一部分-t显示时间戳-O输出…

Linux——线程1

背景知识 堆区细粒堆划分 我们在申请堆空间时,我们只是设置了空间大小,并未设置空间从哪里结束。 堆区里面的详细信息,如某段空间从哪开始,从哪结束,由vm_area_struct负责记录,每申请一段空间就增加一个vm_…

优于FCOS:在One-Stage和Anchor-Free目标检测中以最小的成本实现最小的错位(代码待开源)...

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G 与基线FCOS(一种单阶段和无锚目标象检测模型)相比,新提出的模型…

STL-map容器

作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括 C基本数据类型(int、double 等)、使用结构体或类自定义的类型。…

IDEA中java文件出现黄色的J文件同时maven项目导入了依赖但是idea依赖加不进去的问题记录

IDEA导入项目后依赖jar包没有显示 报错提示尝试的解决方法检查对应的sdkmodule等配置信息开始尝试是不是版本问题,因为对上述maven报错进行查询,好像是因为版本太高导致的,开始下一个低版本进行尝试切换版本即可解决 总结后续出现的BUG 此次环…

Linux基本指令(三)

Linux基本指令 一.data指令1.基本使用2.时间戳 二.cal指令三.find指令四.grep指令五.zip/unzip指令六.tar指令(打包/解包,不打开直接看内容)七.bc指令八.uname指令九.几个重要热键十.关机 一.data指令 1.基本使用 下面不需要记住&#xff0c…

nodejs+Vue+elementui农家乐管理系统系统-住宿-美食-活动报名系统vue

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 目 录 管理员在还可以进行首页、个人中心、农家乐管理、美食信息管理、住宿信息管理、活动信息管理、用户管理、活动报名管理、客房预…

English Learning - L3 作业打卡 Lesson1 Day5 2023.5.9 周二

English Learning - L3 作业打卡 Lesson1 Day5 2023.5.9 周二 引言🍉句1: Fast loud music is popular with many people .成分划分爆破语调 🍉句2: They may say the music is red hot, especially the kind called Dixieland jazz.成分划分爆破语调 &a…

Ae 入门系列之十二:三维合成

在 Ae 中,可以将图层设置为 3D 图层并添加动态的摄像机和灯光,从而制作基于三维空间的动画。 ◆ ◆ ◆ 二维与三维 二维 2D 在一个平面上的内容就是二维。只有上下、左右两个方向,没有前后。即,只有面积,没有体积。 …

FX DocuCentre S2520~~富士施乐 DocuCentre S2520和2022打印机驱动安装

先确定打印机IP 1. 12楼打印机IP 13楼 2楼 192.168.20.251 192.168.20.252 192.168.10.252 2. 下载安装驱动 2520富士施乐 DocuCentre S2520 驱动下载 - 驱动天空 (drvsky.com) 2022富士施乐 DocuCentre SC2022 驱动下载 - 驱动天空 (drvsky.com) 3. 添加驱动配置 安装驱动配…

解决问题,是管理者最了不起的才华

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 小C和小Y是K哥下面的两个主管,都管着10多人的团队,但他们带队伍的风格完全不同。小C名校毕业,理论基础扎实,彼得德鲁克、约翰科特的管理思想&#xff0c…

如何解决过度拟合

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

Ae:合成查看器 - 3D 视图选项

当启用 3D 图层后,合成查看器右下方将出现与 3D 视图相关的按钮与菜单。 草图 3D Draft 3D 启用后,Ae 将使用 GPU 加速来实时显示对 3D 设计所做的更改或更新。这种体验无缝流畅且速度更快,因此可避免在预览时发生延迟,使用任意摄…

Java原型模式详解:克隆人案例【深浅克隆】

前言 在许多情况下,我们需要创建对象的副本,比如在初始化操作比较复杂或者需要大量资源的情况下。在这些情况下,我们可以使用原型模式来避免重复创建对象,提高程序的性能。本文将介绍Java中的原型模式以及如何在实际应用中使用它。…