当前位置: 首页 > news >正文

排错工具ping和trace(电子科技大学TCP/IP实验四)

一.实验目的

1、了解网络连通性测试的方法和工作原理

2、了解网络路径跟踪的方法和工作原理

3、掌握 MTU 的概念和 IP 分片操作

4、掌握 IP 分组生存时间(TTL)的含义和作用

5、掌握路由表的作用和路由查找算法

二.预备知识

1、ICMP 原理和作用

2、Windows 系统中的 Ping 命令及其各种选项

3、Windows 中的 Tracert 命令及其各种选项

三.实验原理

“PING”这个名字源于声纳定位操作。PING 程序的目的是测试另一台主机是否可达,它发送 ICMP 回送请求报文给被测主机,并等待返回的 ICMP 回送应答或差错报告报文。ICMP 协议(RFC 792)是 IP 协议的辅助协议,提供差错报告和查询机制。

一台主机的可达性不仅取决于 IP 层是否可达,还取决于使用的高层协议及端口号。仅当被测主机可达时,PING 程序才能收到返回的 ICMP 回送应答报文,并能测出到该主机的往返时间。如果被测主机不可达,PING 程序会收到一些 ICMP 差错报告报文,甚至收不到任何返回信息。根据 ICMP 差错报告报文的类型可粗略判定主机不可达的原因。

不同的物理网络具有不同的最大传送单元(MTU)值,因此可能需要对 IP 分组进行分片操作使其能够通过这些物理网络。当 IP 分组被分片时,需要修改分组头中的标志、分片偏移和总长度值,其余各字段将被复制到所有分片中。已经分片的 IP 分组在遇到具有更小 MTU 的网络时还会被再次分片。

TTL 字段是由发送端初始设置在 IP 分组首部中的一个 8 bit 字段,不同操作系统上的不同应用程序指定的 TTL 初始值不同。路由器在转发每个 IP 分组时需要将该分组的TTL 值减 1 或减去该分组在路由器中停留的秒数。由于大多数路由器转发 IP 分组的时延都小于 1 秒钟,因此 TTL 最终成为一个跳站计数器,即分组每经过一台路由器其 TTL 值被减 1。TTL 字段的目的是为了防止分组在选路时被无休止的转发。当路由器收到一份需转发的 IP 分组时,如果该分组的 TTL 值为 1,路由器则丢弃该分组,并向分组源发送一份 ICMP 的TTL 超时报文。

TRACE 程序使用 IP 分组首部的TTL 字段(生存时间)和 ICMP 报文,让使用者可以看到IP 分组从一台主机传到另一台主机所经过的路由。TRACE 程序首先发送一份TTL 值为 1 的 IP 分组给目的主机,处理该 IP 分组的第 1 个路由器即会返回一份以自己的 IP 地址为源的携带有 ICMP 超时报文的 IP 分组,这样 TRACE 程序就得到了该路径中第 1 个路由器的 IP 地址。然后,TRACE 程序发送一份 TTL 值为 2 的 IP 分组,同样又可获得该路径中第 2 个路由器的 IP 地址。TRACE 程序不断增加所发送 IP 分组的 TTL 值直至 IP 分组到达目的主机,即可获得到目的主机所经过的每一个路由器地址。

但是,IP 分组的目的主机不处理该分组的 TTL 值,即使收到 TTL 值为 1 的 IP 分组也不会丢弃该分组并产生一份 ICMP 超时报文。因此,TRACE 程序必须判断 IP 分组是否已到达目的主机,不同操作系统上的 TRACE 程序的判断方法不同。目前通常有两种

实现方法:一种是利用“端口不可达”的 ICMP 差错报文,另一种则是使用 ICMP 回送请求和回送应答报文。

在前一种方法中,TRACE 程序发给目的主机的IP 分组中携带的是一份UDP 数据报,该UDP 数据报的目的端口是一个目的主机上任一应用程序都不可能使用的UDP 端口(通常大于 30000)。当该 IP 分组到达目的主机时,目的主机的 UDP 模块会产生一份“端口不可达”的 ICMP 差错报文返回给TRACE 程序。这样,TRACE 程序即可根据收到的ICMP报文是超时还是端口不可达来判断何时结束。

在后一种方法中,TRACE 程序发给目的主机的 IP 分组中携带的是 ICMP 回送请求报文。当该 IP 分组到达目的主机时,目的主机即会返回一份 ICMP 回送应答报文给TRACE 程序。这样,TRACE 程序即可根据收到的 ICMP 报文是超时还是回送应答来判断何时结束

四.实验内容

 

五.实验步骤

实验步骤详见TCP//IP实验指导书。由于步骤过长,就在此不在赘述。

六、实验数据及结果分析

1、按照显示顺序记录步骤 3 中PC2 的路由表信息:

No.

Network Destination

Netmask

Gateway

1

0.0.0.0

0.0.0.0

192.168.11.254

2

127.0.0.0

255.0.0.0

127.0.0.1

3

192.168.11.0

255.255.255.0

192.168.11.2

4

192.168.11.2

255.255.255.255

127.0.0.1

5

192.168.11.255

255.255.255.255

192.168.11.2

6

224.0.0.0

240.0.0.0

192.168.11.2

7

255.255.255.255

255.255.255.255

192.168.11.2

Default Gateway

192.168.11.254

【分析】

  1. 请按照网关(gateway)地址分类分析主机路由表中每条路由表项的网关地址的特征,路由的目的地,以及所采取的分组交付方式。

第一类:缺省路由

当接收到一个报文的目的地址网络不在路由表内,就会发送到缺省网关192.168.11.254。采用间接交付。

第二类:环回地址

当主机收到一个目的网络在127.0.0.0数据包时,主机就会接收该数据包。采用直接交付。

第三类:直连网络

当主机收到一个目的网络在192.168.11.0的数据包时,主机会将数据包通过192.168.11.2这个接口转发,路由的目的地是192.168.11.0/24上的一台设备。采用直接交付

第四类:本地主机路由

当主机收到一个目的IP地址为本机网卡的IP地址的数据包时,主机会接收该数据包。采取直接交付。

第五类:本地广播路由

当主机收到一个目的网络在直连网络的广播数据包时,主机会将数据包从192.168.11.2这个接口以广播的形式发出去。路由的目的地是192.168.11.0/24上的所有设备,采用直接交付。

第六类:组播路由

当系统收到一个组播数据包,系统会将分组直接从192.168.11.2这个接口以组播的防守转发出去。路由的目的地是192.168.11.0/24上的某些设备,采用的是直接交付。

第七类:广播路由

当系统收到一个广播数据包,系统会将分组直接从192.168.11.2这个接口转发出去。目的地是局域网内的所有设备,采用直接交付。

  1. 本实验中PC2 将使用哪条路由发送对目的主机的ping 报文?

第一条,缺省路由,即发送给默认网关。

2、记录步骤 4 中PC2 上显示的PING 命令选项-n-l-f 的含义。

 -n count :Number of echo requests to send(要发送的回显请求次数)

 -l size: Send buffer size(发送缓冲区的大小)

 -f : Set Don’t Fragment flag in packet(在数据包中设置不分段标记)

3、记录步骤 6 中PC2 上的 ping 命令回应信息,并按分组的捕获顺序记录该步骤在子网A 和子网 B 上捕获的ICMP 报文信息:

Ping命令

Ping回应信息

Ping -n l 192.168.22.3

Reply from 192.168.22.3:bytes=32 time=271ms TTL=124

子网

IP分组首部

ICMP报文首部

TTL

源IP地址

目的IP地址

Type

Code

报文类型

A

128

192.168.11.2

192.168.22.3

8(Echo

request)

0

Echo request

124

192.168.22.3

192.168.11.2

0(Echo reply)

0

Echo reply

B

124

192.168.11.2

192.168.22.3

8(Echo

request)

0

Echo request

128

192.168.22.3

192.168.11.2

0(Echo reply)

0

Echo reply

说明:IP 地址用点分十进制表示,其他值均用十进制表示。

【分析】解释 PING 命令回应信息中的 bytes、time 和 TTL 参数的含义。

Bytes:报文的字节数

Time:发送ICMP请求到收到回应的之间的时间。

TTL:生存时间

  1. 记录步骤 7 中PC2 上的 ping 命令回应信息,并按分组的捕获顺序记录该步骤在子网

A 和子网 B 上捕获的ICMP 报文的 IP 分组头信息:

Ping命令

Ping回应消息

Ping -n 1 -l 1500 192.168.22.3

Reply from 192.168.22.3:bytes=1500 time=330ms TTL=124

子网

IP分组首部

总长度

标识

不分片

还有分片

分片偏移

源IP地址

目的IP地址

A

1500

74

0

1

0

192.168.11.2

192.168.22.3

48

74

0

0

185

192.168.11.2

192.168.22.3

796

103

0

1

0

192.168.22.3

192.168.11.2

48

103

0

0

185

192.168.22.3

192.168.11.2

724

103

0

1

97

192.168.22.3

192.168.11.2

B

796

74

0

1

0

192.168.11.2

192.168.22.3

724

74

0

1

97

192.168.11.2

192.168.22.3

48

74

0

0

185

192.168.11.2

192.168.22.3

1500

103

0

1

0

192.168.22.3

192.168.11.2

48

103

0

0

185

192.168.22.3

192.168.11.2

【分析】

  1. PC2 发出的 IP 分组(源 IP 地址 PC2,目的 IP 地址 PC3)在子网 A 和子网B 上分别有几个分片?这些分片分别是由实验拓扑中的哪些设备划分的? 为什么要划分这些分片?这些分片的重组操作将由实验拓扑中的哪台设备进行?

在子网A有两个分片,在子网B有三个分片

子网A中的两个分片是由PC2主机划分的,因为子网A的MTU是1500字节,而PC2要发送的数据部分就有1500字节,加上首部信息等等会超过MTU,所以会进行分片。

子网B收到三个分片是由R3划分的,因为PC2发出的数据包在经过R3之后,由于R3-R4之间的链路带宽比较大,所以分组会选择这个路径,接下来下一跳网络的MTU是800,而第一个分组有1500字节,所以还需要被分片。

分片重组操作由目的主机PC3完成。

  1. PC3 发出的 IP 分组(源 IP 地址 PC3,目的 IP 地址 PC2)在子网 A 和子网B 上分别有几个分片?这些分片分别是由实验拓扑中的哪些设备划分的? 为什么要划分这些分片?这些分片的重组操作将由实验拓扑中的哪台设备进行?

PC3发出的IP分组在子网A会有3个分片,在子网B会有2个分片。

子网B的分片由PC3划分,子网A的分片由R4划分。

原因:在子网B中,MTU为1500字节,而PC3要发送的数据部分就有1500字节,加上首部信息等等会超过MTU,所以会进行分片,将分组划分长2个分片。

在子网A中会有三个分片的原因是:因为PC2发出的数据包在经过R3之后,由于R2-R4之间的链路带宽比较大,所以分组会选择这个路径,当分组经过路由器R4时,接下来下一跳网络的MTU是800,而第一个分组有1500字节,所以还需要被分片。

分片重组操作由目的主机PC2完成。

  1. 在分片重组操作中,应根据分片首部中的什么信息判断收到的分片属于哪 个 IP 分组?属于同一 IP 分组的分片需按照分片首部中的什么信息进行重组?

应该根据分片首部中的“标识”字段判分片所收到的IP分组;属于同一 IP 分组的分片按照分片首部的“标识”字段中的第三位和“分片偏移”进行重组

5、记录步骤 8 中PC2 上的 ping 命令回应信息。

步骤

Ping命令

PING回应消息

8

Ping -n 1 -l 1500 -f 192.168.22.3

Packet needs to be fragmented but DF set

【分析】本步骤中是否捕获到 PC2 发送或接收的报文?结合 PING 回应信息解释其原因。

没有捕获到PC2发送或者接收的报文。

①PING回应消息的意思是,分组被分片才能正常传输。

②Ping -f命令使得分组不被分片,而子网A的最大的MTU只有1500字节,所以不会被传输。

6、记录步骤 9 中PC2 上的 ping 命令回应信息。

步骤

Ping命令

PING回应消息

9

ping  -n  1  192.168.22.20

Request timed out

【分析】

  1. 本步骤中是否捕获到 PC2 发送或接收的报文?结合 PING 回应信息解释其原因。

子网A内能捕获到PC2发送的PING请求报文,但是不能收到Reply报文。

原因:192.168.22.20是不存的主机的IP,所以无法给与PC2回应信息。

  1. 在 ping 时如果收到“Request timed out.”信息,是否能确定目的主机一定未开机响应或一定没有可达的路由?为什么?

不能,因为也有可能是分组丢失或者网络拥塞等原因。

7、记录步骤 10 中PC2 上的 ping 命令回应信息,并按分组的捕获顺序记录该步骤在子网A 上捕获的 ICMP 报文信息:

Ping命令

PING回应信息

Ping -n 10.1.1.1

Reply from 192.168.11.254:Destination host unreachable

IP分组首部

ICMP报文首部

ICMP差错报文的数据

标识

源IP地址

Type

Code

标识

源IP地址

77

192.168.11.2

8

0

-

-

98

192.168.11.254

3

1

79

192.168.11.2

【分析】请指出步骤 9 和步骤 10 中目的主机可达性的差异之处,并解释其差异产生的原因。

差异在于PING回应的消息不同。步骤9中只是目的主机不可达,但是步骤10中目的主机所在的网络和目的主机都不可达。

差异产生的原因是:步骤9中目的地址所在的网络存在于整个拓扑当中,路由器有相应的表项;但是步骤10中目的主机所在的网络不在拓扑当中,路由器的路由表项中不会存在这个网络。

8、记录步骤 12 中主机上输入的 TRACE 命令及其回应信息,并按分组的捕获顺序记录该步骤在子网A 和子网 B 上捕获的如下报文信息:

子网

IP分组首部

ICMP报文首部

TTL

源IP地址

目的IP地址

Type

Code

报文类型

A

1

192.168.11.2

192.168.22.3

8

0

Echo request

255

192.168.22.3

192.168.11.2

11

0

Time-to-live  exceeded

2

192.168.11.2

192.168.22.3

8

0

Echo request

254

192.168.22.3

192.168.11.2

11

0

Time-to-live  exceeded

3

192.168.11.2

192.168.22.3

8

0

Echo request

253

192.168.22.3

192.168.11.2

11

0

Time-to-live  exceeded

4

192.168.11.2

192.168.22.3

8

0

Echo request

252

192.168.22.3

192.168.11.2

11

0

Time-to-live  exceeded

5

192.168.11.2

192.168.22.3

8

0

Echo request

124

192.168.22.3

192.168.11.2

11

0

Echo reply

B

1

192.168.11.2

192.168.22.3

8

0

Echo request

128

192.168.22.3

192.168.11.2

11

0

Echo reply

【分析】

  1. TRACE 程序根据什么报文中的什么信息获得每一跳路由器的 IP 地址?

根据返回的类型11(Time-to-live exceeded类型)的ICMP报文中的源IP地址获得每一跳路由器的 IP 地址。

  1. TRACE 程序在跟踪每一跳路由器时,发送了几个测试报文?这样做的目的是什么?

发送了3条测试报文。防止分组丢失或者网络拥塞,路由器收不到报文。

3)WinXP 系统的 TRACE 程序使用何种方法判断测试分组是否已到达目的主机?

根据应答信息中的源IP是否有目的主机的IP,若收到了来自目的主机的应答,说明了分组已经到达了目的主机。从下图中可以看到存在目的IP地址,所以分组一定到达了目的主机。

 

  • 实验结论
  1. 总结 ICMP 差错报告机制的作用和 ICMP 差错报告报文中数据部分的作用。

ICMP差错报告机制可以及时通告源主机报文不可达,出现了差错。

具体:ICMP差错报告机制只是向发生差错数据报的源端报告这个错误,但是不会纠正这个错误。

ICMP 差错报告报文中数据部分的作用:通告源主机错误类型(终点不可达,源点抑制,超时,参数问题,路由重定向等)。并且数据部分不仅有类型还有代码,可以具体确定发生差错的原因。

  1. 交付出错的哪些 IP 分组不会产生 ICMP 差错报告报文?

携带ICMP差错报告的数据报,不会再产生ICMP差错报文

分片的数据段,且不是第一个分片

具有多播地址的数据报

特殊地址(127.0.0.0或0.0.0.0)的数据报

3、请根据实验中的TRACE 回应信息和实验拓扑图,写出路由器R1 的 F0/1 接口、R2 的 F0/1 和 S1/0 接口、以及 R3 和 R4 的所有接口的 IP 地址,并指出本实验中子网A 到子网 B 的通信路径。

路由器

接口的IP地址

R1

F0/1:192.168.13.1

R2

F0/1:192.168.24.1       S1/0:无法确定

R3

F0/0:192.168.13.2       S1/0:无法确定          S1/1:192.168.34.2

R4

F0/0: 192.168.24.2       S1/0:192.168.34.1

本实验中子网A 到子网B的通信路径是:PC2R1R3R4R2PC3。

八、总结及心得体会

1.在此次实验当中,学习ICMP报文中的ping,以及常见的ICMP差错报告报文。还有使用trace命令跟踪报文的路径。

2.掌握了ICMP基本的差错报告机制和查询机制的内容。

3.在实验过程中,要认真仔细,不要把步骤操作顺序搞反了。

九、对本实验过程及方法、手段的改进建议

1.不借助wireshark分析数据,让学生们加深对相关协议报文格式的理解。

相关文章:

排错工具ping和trace(电子科技大学TCP/IP实验四)

一.实验目的 1、了解网络连通性测试的方法和工作原理 2、了解网络路径跟踪的方法和工作原理 3、掌握 MTU 的概念和 IP 分片操作 4、掌握 IP 分组生存时间(TTL)的含义和作用 5、掌握路由表的作用和路由查找算法 二.预备知识 …...

node.js中ws模块创建服务端和客户端

一、WebSocket出现的原因 1、Http协议发布REST API 的不足: 每次请求响应完成之后,服务器与客户端之间的连接就断开了,如果客户端想要继续获取服务器的消息,必须再次向服务器发起请 求。这显然无法适应对实时通信有高要求的场景…...

kubernates-1.26.1 kubeadm containerd 单机部署

k8s1.26 kubeadm containerd 安装 kubeadm init 时提示 containerd 错误 failed to pull image “k8s.gcr.io/pause:3.6” 报错日志显示containerd pull时找不到对应的pause版本,而不是registry.k8s.io/pause:3.9 [rootk8s-master containerd]# kubeadm init --k…...

如何在 iPhone 上恢复已删除的通话记录/通话记录

您的通话记录/通话记录可能很重要,尤其是当您想要拨打之前联系过但未保存的号码时。如果您碰巧删除了通话记录(有意或无意),本指南将帮助您了解如何检索它们并找回您需要使用的所有记录。我们将根据您的情况和您拥有的工具讨论不同…...

Canonical为所有支持的Ubuntu LTS系统发布了新的Linux内核更新

导读Canonical近日为所有支持的Ubuntu LTS系统发布了新的Linux内核更新,以解决总共19个安全漏洞。新的Ubuntu内核更新仅适用于长期支持的Ubuntu系统,包括Ubuntu 22.04 LTS(Jammy Jellyfish)、Ubuntu 20.04 LTS(Focal F…...

MS9122是一款USB单芯片投屏器,内部集成了USB2 0 控制器和数据收发模块、HDMI 数据接口和音视频处理模块。MS9122可以通过USB接口显示

MS9122是一款USB单芯片投屏器,内部集成了USB2.0 控制器和数据收发模块、HDMI 数据接口和音视频处理模块。MS9122可以通过USB接口显示或者扩展PC、智能手机、平板电脑的显示信息到更大尺寸的显示设备,支持HDMI视频接口。 主要功能特征 HDMI v1.4兼容 最大…...

C++学习笔记-数据抽象

简单的说,数据抽象是用来描述数据结构的。数据抽象就是 ADT。一个 ADT 主要表现为它支持的一些操作,比方说 stack.push、stack.pop,这些操作应该具有明确的时间和空间复杂度。另外,一个 ADT 可以隐藏其实现细节,比方说…...

【Android】Android开发笔记(一)

【Android】Android开发笔记(一) 在Android Studio中import module和delete moduleimport moduledelete moduleAndroid Studio中App(Module)无法正常运行在实机上测试App一些基本概念App的工程结构结语在Android Studio中import m…...

C语言数据结构(二)—— 受限线性表 【栈(Stack)、队列(Queue)】

在数据结构逻辑层次上细分,线性表可分为一般线性表和受限线性表。一般线性表也就是我们通常所说的“线性表”,可以自由的删除或添加结点。受限线性表主要包括栈和队列,受限表示对结点的操作受限制。一般线性表详解,请参考文章&…...

线程安全之synchronized和volatile

目录 1.线程不安全的原因 2.synchronized和volatile 2.1 synchronized 2.1.1 synchornized的特性 2.1.2 synchronized使用示例 2.2 volatile 我们先来看一段代码: 分析以上代码,t1和t2这两个线程的任务都是分别将count这个变量自增5000次&#xff…...

量子计算对网络安全的影响

量子计算的快速发展,例如 IBM 的 Quantum Condor 处理器具有 1000 个量子比特的容量,促使专家们宣称第四次工业革命即将实现“量子飞跃”。 量子计算机的指数处理能力已经受到政府和企业的欢迎。 由于从学术和物理原理到商业可用解决方案的不断转变&am…...

MyBatis——增删改查操作的实现

开启mybatis sql日志打印 可以在日志中看到sql中执行的语句 在配置文件中加上下面这几条语句 mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl logging.level.com.example.demodebug查询操作 根据用户id查询用户 UserMapper: User…...

【7】linux命令每日分享——cat查看文件内容

大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的类UNIX操作系统,Linux的基本思想有两点:一切都是文件;每个文件都有确定的用途;linux涉及到IT行业的方方面面,在我们日常的学习中&…...

新氧2023年财务业绩预测:退市风险大幅降低,收入增长将放缓

来源:猛兽财经 作者:猛兽财经 公司进展 与新氧(SY)有关的两个重要积极进展值得一提。 第一个积极进展是新氧的退市风险已在很大程度上降低。 2023年1月6日,新氧披露,它已经“重新符合纳斯达克规定的股价每…...

C++使用shared_ptr与weak_ptr轻松管理内存

智能指针之shared_ptr与weak_ptr前言智能指针实例分析前言 C与其他语言的不同点之一就是可以直接操作内存,这是一把双刃剑,直接操作内存可以提高开发的灵活度,开发人员在合适的时机申请内存,在合适的时机释放内存,减少…...

Buuctf reverse [FlareOn4]IgniteMe 题解

一. 查壳 无壳32位程序 二. ida打开 GetStdHandle函数根据微软官方文档可以得知是获取标准输入/输出/错误的句柄 参数里的 0xFFFFFFF6转换一下是4294967286, 对应(DWORD) -10 所以这里的WriteFile函数实际上是实现了printf的功能 sub_4010F0()函数 其功能是通过ReadFile函数读取…...

ChatGPT懂SAP吗?跟ChatGPT聊完后,我暂时不担心会失业

我弄了个ChatGPT账号。随便问了一下他SAP的问题。贴出来跟大家分享一下。 问题1:我是 SAP 开发工程师,你有什么可以帮到我。 作为一个语言模型,我可以为您提供关于SAP开发的一般性建议,以及关于如何使用SAP软件的一些技巧。以下是…...

Communications link failure 解决方法 !!!

Communications link failure 解决方法 最近在使用mybatis逆向生成的时候遇到了link failure的问题, 这里记录解决方法 文章目录Communications link failure 解决方法generatorConfig 里的数据库链接或数据库或密码或账户填写错误mysql响应时间设置太短, 还没等链接上就关闭连…...

pytorch入门2--数据预处理、线性代数的矩阵实现、求导

数据预处理是指将原始数据读取进来使得能用机器学习的方法进行处理。 首先介绍csv文件: CSV 代表逗号分隔值(comma-separated values),CSV 文件就是使用逗号分隔数据的文本文件。 一个 CSV 文件包含一行或多行数据,每一…...

15.消息队列RabbitMQ

一、基本概念 RabbitMQ 是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息&#xf…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...