[计算机网络实验]头歌 实验二 以太网帧、IP报文分析(含部分分析)

目录

第1关:Wireshark基本使用入门

【实验目的】

【实验环境】

【本地主机、平台虚拟机之间数据传递】

wireshark基本用法】

1、wireshark主界面

2、抓取分组操作

3、Wireshark窗口功能

4、筛选分组操作

【实验操作】

​编辑

第2关:Ethernet帧分析

【以太网帧格式】

1、Ethernet II帧格式

2、IEEE 802.3 帧格式:

IEEE 802.2 LLC的头构成:

3、IEEE 802.3 SNAP

【实验任务】

第3关:IP报文分析

1、MAC帧与数据负载

2、IP数据报格式:

3、ICMP报文格式

4、Ping 命令

5、traceroute命令与工作原理

【实验任务】


第1关:Wireshark基本使用入门

【实验目的】

1、掌握wireshark工具的基本使用方法

【实验环境】

1、头歌基于Linux的虚拟机桌面系统

2、网络报文分析工具wireshark

3、浏览器firefox

【本地主机、平台虚拟机之间数据传递】

1、文本的复制与粘贴 操作入口:点击虚拟机桌面右上角“工具栏”,选择“复制粘贴”菜单项。 特点:可双向复制与粘贴。

2、文件传输 操作入口:点击虚拟机桌面右上角“工具栏”,选择“上传文件”或“下载文件”菜单项。

3、截图 可以使用本地机的截图工具,对虚拟机桌面应用进行截图。 

wireshark基本用法】

Wireshark是一种开源的网络协议分析工具,主要功能有捕捉报文、解码分析、报文统计。官方下载地址:Wireshark · Download

1、wireshark主界面

双击桌面上的图标 ,可启动Wireshark。启动后的用户界面如下图所示,中间列表部分列出了所有网络接口。

Wireshark主界面

2、抓取分组操作

A.单击中间网络接口列表中,某一网络接口如eth0,选中网络接口,通过菜单“捕获”-“开始”或工具栏中的

按钮1

按钮,开始捕获选定接口中的网络分组;

B.也可以双击中间网络接口列表中,某一网络接口如eth0,可以开始抓取分组;

C.通过菜单“捕获”-“停止”或工具栏中的按钮

按钮2

停止抓取分组。

D.通过菜单“捕获”-“重新开始”或工具栏中的按钮

按钮3

重新开始抓取。

3、Wireshark窗口功能

(1)命令菜单和工具栏 命令菜单位于窗口的最顶部,是标准的下拉式菜单。最常用菜单命令有两个: 文件、 捕获。 文件 菜单允许你保存捕获的分组数据,或打开一个已被保存的捕获分组数据文件,或退出 WireShark 程序。 捕获 菜单允许你开始捕获分组。 工具栏位于命令菜单的下方,提供常用功能的快捷方式。如

开始

:开始捕获、

停止

:停止捕获、

重新开始

:重新抓取分组。

(2)显示过滤规则 在该字段中,可以填写协议的名称或其他信息,根据此内容可以对分组列表窗口中的分组进行过滤。

(3)捕获分组列表(报文摘要窗口) 按行显示已被捕获的分组内容,其中包括: WireShark 赋予的分组序号、捕获时间、分组的源地址和目的地址、协议类型、分组中所包含的协议说明信息。单击某一列的列名,可以使分组按指定列进行排序。 在该列表中,所显示的协议类型是发送或接收分组的最高层协议的类型。

(4)分组头部明细(报文解码窗口) 显示捕获分组列表窗口中被选中分组的头部详细信息。包括:与以太网帧有关的信息,与包含在该分组中的 IP 数据报有关的信息。 单击以太网帧或 IP 数据报所在行左边的向右或向下的箭头可以展开或最小化相关信息。如果利用 TCP 或 UDP 承载分组, WireShark 也会显示 TCP 或 UDP 协议头部信息。分组最高层协议的头部字段也会显示在此窗口中。

(5)分组内容窗口(报文内容窗口) 以 ASCII 码和十六进制两种格式显示被捕获帧的完整内容。

4、筛选分组操作

通常,分组列表窗口中会显示许多类型的分组。即使仅仅是下载了一个网页,但是还有许多其他协议在您的计算机上运行,只是用户所看不见。可以在中间过滤窗口中输入过滤的分组协议如http, 选择应用按钮,就可以只让HTTP分组消息显示在分组列表窗口。

窗口

【实验操作】

1、打开wireshark ,开始抓取网络接口eth0上的分组,将窗口最小化;

双击eth0开始抓取分组

2、打开浏览器,访问http://www.baidu.com, 等待网页打开完毕;

3、切换到Wireshark窗口,并停止抓取分组;

        红色按钮停止

4、利用分组过滤功能,过滤出http分组;在报文摘要窗口中点击选取第1个http报文;

5、对当前报文的头部明细窗口进行截图,保存到实验报告中,课后分析该报文,从外到内分别使用了什么协议,对应网络体系结构的哪一层?

6、将分组列表中出现的协议名称,顺序填入代码文件窗口首行末尾,不可修改原有的提示内容(相同协议只填写一次,用符号,分隔)。

7、使用Wireshark文件菜单,将所捕获的所有http报文保存到某个自定义的文件中,并下载到本地主机中。

  1. 对当前报文的头部明细窗口进行截图,保存到实验报告中,课后分析该报文,从外到内分别使用了什么协议,对应网络体系结构的哪一层?

分析:

- Frame 3958: 数据包的编号。

- 399 bytes on wire (3192 bits), 399 bytes captured (3192 bits) on interface 0: 数据包的大小,以字节和比特表示。

- Ethernet II, Src: 32: bd:db:e7:64:4b (32: bd:db:e7:64:4b), Dst: 5e:ae:36:ab:cd:e6 (5e:ae:36:ab:cd:e6): 数据包的以太网协议头部信息,包括源MAC地址和目的MAC地址。

- Internet Protocol Version 4,Src: 172.16.160.16, Dst: 34.107.221.82: 数据包的IP协议头部信息,包括源IP地址和目的IP地址,使用的是IPv4协议。

- Transmission Control Protocol, Src Port: 39328, Dst Port: 80,Seq: 1, Ack: 1, Len: 333: 数据包的TCP协议头部信息,包括源端口号和目的端口号,序列号和确认号,以及数据长度。

- Hypertext Transfer Protocol: 数据包的应用层协议头部信息,使用的是HTTP协议。

该报文从外到内分别使用了以下协议:

1.以太网协议(Ethernet II)

2.网络层协议(IPv4)

3.传输层协议(TCP)

4.应用层协议(HTTP)

对应网络体系结构的哪一层:

1.以太网协议(Ethernet II):数据链路层

2.网络层协议(IPv4):网络层

3.传输层协议(TCP):传输层

4.应用层协议(HTTP):应用层

第2关:Ethernet帧分析

【以太网帧格式】

以太帧有很多种类型。不同类型的帧具有不同的格式和 MTU 值。但在同种物理媒体上都可同时存在。

(1)以太网第二版或者称之为 Ethernet II 帧,DIX 帧,是最常见的帧类型。并通常直接被 IP 协议使用;

(2)Novell 的非标准 IEEE 802.3 帧变种;

(3)IEEE 802.3帧(后跟逻辑链路控制(LLC) 帧);

(4)子网接入协议(SNAP)帧。

1、Ethernet II帧格式

以太网中大多数的数据帧使用的是 Ethernet II 格式:

以太帧

Ethernet II 类型以太网帧的最小长度为 64 字节(6+6+2+46+4),最大长度为 1518 字节(6+6+2+1500+4)。其中:

(1)前 12 字节分别标识出发送数据帧的源节点 MAC 地址和接收数据帧的目标节点 MAC 地址(2)接下来的 2 个字节标识出以太网帧所携带的上层数据类型,如 16 进制数0x0800代表 IP 协议数据,16 进制数0x86dd代表 IPv6 协议数据,16 进制数0x809B代表 AppleTalk 协议数据,16 进制数0x8138代表 Novell 类型协议数据等;

(3)在不定长的数据字段(Data):其长度是 46 至 1500 字节;

(4)4 个字节的帧校验序列(Frame. Check Sequence,FCS),采用 32 位 CRC 循环冗余校验对从“目标 MAC 地址”字段到“数据”字段的数据进行校验。

2、IEEE 802.3 帧格式:

802.3帧格式

各字段说明如下: (1)D-MAC && S-MAC:分别表示标识目标地址和源地址。它们均为 6 个字节长。如果传输出去的目标地址第一位是 0,则表示这是一个普通地址;如果是 1, 则表示这是一个组地址。 (2)Length / Type :通常这个字段用于指定报文头后所接的数据类型。通常使用的值包括:IPv4(0x0800), IPv6(0x86DD), ARP(0x0806)。 而值0x8100代表一个 Q-tagged 帧(802.1q)。通常一个基础的以太网帧长为 1518 字节,但是更多的新标准把这个值扩展为 2000 字节。 (3)MAC Client Data: 数据主体,由 LLC及 Data 构成。最小长度为 48 字节(加上帧头 12 字节,CRC4 字节刚好 64 字节), 当数据主体小于 48 字节时,会添加 pad 字段。选取最小长度是出于冲突检测的考虑(CSMA/CD)。而数据字段最大长度为 1502 字节。

IEEE 802.2 LLC的头构成:

SNAP

(A)DSAP 目的服务访问字段,1 字节长,指明帧的目的上层协议类型; (B)ASAP 源服务访问字段,1 字节长,指明帧的源上层协议类型; (C)control 控制 1 字节或者 2 字节,长度要看被封装的 LLC 数据类型,是 LLC 数据报(类型1)1 字节,LLC 对话的一部分(类型2)2 字节。类型1 表明是无连接的,不可靠的 LLC 数据报,控制字段用0x03指明;类型 2 表明是面向连接可靠的 LLC 会话。 (4)FCS(Frame Check Sequence):也叫 CRC(Cyclic Redundancy Check),CRC 是差错检测码,用来确定接收到的帧比特是否正确。

3、IEEE 802.3 SNAP

虽然 IEEE 802.3 是标准,但没有被业界采用。以太网 II 已成事实标准。于是 IEEE 802.3 扩展产生 IEEE 802.3 SNAP 来兼容以太网网头部协议,在 IEEE 802.2 LLC 头部后插入了 SNAP 头部。 SNAP 头部字段构成:

(1)组织代码 3 字节长,指明维护接下来 2 字节意义的组织,对 IP 和 ARP,该字段被设置为0x00-00-00。

(2)以太网类型 如果组织代码为0x00-00-00,接下来 2 字节就是以太网类型 IP (0x0800)ARP(0x0806)。 因为增加了 LLC 头部的 3 字节和 SNAP 头部的 5 字节所以有效载荷比以太网 II 少 8 个字节。

【实验任务】

1、切换到终端窗口

 

2、查看虚拟机eth0网卡的MAC地址、IP地址、子网掩码,并记录到实验报告中。 使用命令:ifconfig

3、查看虚拟机网关IP地址 使用命令:route 对应default行

4、查看虚拟机网关MAC地址 使用命令:arp 根据网关IP地址,查ARP表得到对应的MAC地址,记录到实验报告中。

5、打开wireshark ,开始抓取网络接口eth0上的分组,将窗口最小化;(双击)

6、打开浏览器,访问http://www.baidu.com, 等待网页打开完毕;

7、切换到Wireshark窗口,并停止抓取分组;

8、利用分组过滤功能,过滤出http分组;在报文摘要窗口中点击选取第1个http报文;

9、分析当前报文采用以太网哪种帧格式,把典型字段值记录到到实验报告中。

10、确定当前报文的目的MAC地址指向目标(选填:平台虚拟机的网关MAC地址/主机的MAC地址),并填写到代码文件窗口第一行末尾(不要破坏“冒号”之前提示内容)。 注意:填写内容仅限于范围(平台虚拟机、平台虚拟机的网关、百度服务器、不能确定)

11、在捕获的报文中,找到一个广播帧,记录广播型MAC地址值(采用标准写法,16进制、冒号分隔),并填写到代码文件窗口第二行末尾(不要破坏“冒号”之前提示内容)。

采用的是Ethernet II帧格式,5a 48 29 f6 bf 25

第3关:IP报文分析

1、MAC帧与数据负载

在TCP/IP网络内,MAC帧的数据部分只有一个字段,其长度在46到1500字节之间,包含的信息是网络层传下来的数据,网络层常见协议有IP、ARP、ICMP协议,所以MAC帧的数据字段通常是一个IP分组、ARP报文。

MAC帧

2、IP数据报格式:

IP数据报(IP Datagram)是一个与硬件无关的虚拟包, 由首部和数据两部分组成,其格式如下图所示。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。

IP报文

1.版本:ip报文中,版本占了4位,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。一般此处的值为4,表示ipv4。

2.头长度:该字段用四位表示,表示整个ip包头的长度,其中数的单位是4字节。即二进制数0000-1111(十进制数0-15),其中一个最小长度为0字节,最大长度为60字节。一般来说此处的值为0101,表示头长度为20字节。

3.Tos服务字段:该字段用8位表示。该字段一般情况下不使用。

4.总长度:该字段表示整个ip报文的长度,单位是1字节。能表示的最大字节为2^16-1=65535字节。不过由于链路层的MTU限制。超过1480字节后就会被分片(以太帧MTU为1500的情况下,除去20字节的包头)

5.标识:该字段是ip软件实现的时候自动产生的,该字段的目的不是为了接受方的按序接受而设置的,而是在ip分片以后,用来标识同一片分片的。方便ip分片的重组。

6.标志:该字段是与ip分片有关的。其中有三位,但只有两位是有效的,分别为MF,DF,MF。MF标识后面是否还有分片,为1时,表示后面还有分片。DF标识是否能分片,为0表示可以分片

7.片偏移:该字段是与ip分片后,相应的ip片在总的ip片的位置。该字段的单位是8字节。比如,一个长度为4000字节的ip报文,到达路由器。这是超过了链路层的MTU,需要进行分片,4000字节中,20字节为包头,3980字节为数据,需要分成3个ip片(链路层MTU为1500),那么第一个分片的片偏移就是0,表示该分片在3980的第0位开始,第1479位结束。第二个ip片的片偏移为185(1480/8),表示该分片开始的位置在原来ip的第1480位,结束在2959。第三片的片偏移为370(2960/8),表示开始的时候是2960位,结束的时候在3979位。

8.TTL:该片表示生存周期,该值占8位。ip分片每经过一个路由器该值减一,它的出现是为了防止路由环路,浪费带宽的问题。比如,该ip在R1路由器发送到R2路由器。R2路由器又发给R1路由器。防止这种循环。window系统默认为128.

9.协议:该值标识上层的协议。占8位。其中1,标识ICMP、2标识IGMP、6标识TCP、17标识UDP、89标识OSPF。

10校验和:该值是对整个数据包的包头进行的校验。占16位。

11.源地址和目的地址。标识发送ip片的源和目的ip,32位

12.可选项,一般一些特殊的要求会加在这个部分。

3、ICMP报文格式

网络本身是不可靠的,在网络传输过程中,可能会发生许多突发事件并导致数据传输失败。网络层的IP协议是一个无连接的协议,它不会处理网络层传输中的故障,而位于网络层的ICMP协议却恰好弥补了IP的缺限,它使用IP协议进行信息传递,向数据包中的源端节点提供发生在网络层的错误信息反馈。ICMP可以看作是IP协议的伴随协议。ICMP报文被封装在IP 数据报发送。

ICMP报文

 类型:标识生成的错误报文,它是ICMP报文中的第一个字段;

 代码:进一步地限定生成ICMP报文。该字段用来查找产生错误的原因;

 校验和:存储了ICMP所使用的校验和值。

 未使用:保留字段,供将来使用,起值设为0

 数据:包含了所有接受到的数据报的IP报头。还包含IP数据报中前8个字节的数据;

IP数据包8字节

4、Ping 命令

其主要功能是用于网络连通测试,通信协议是ICMP,Windows系统下Ping命令格式如下:

ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count]

[[-j host-list] | [-k host-list]] [-w timeout] target_name 这里对实验中可能用到的参数解释如下:

-t :用户所在主机不断向目标主机发送回送请求报文 ,直到用户中断;

-n count: 指定要 Ping 多少次,具体次数由后面的 count 来指定 ,缺省值为 4;

-l size: 指定发送到目标主机的数据包的大小 ,默认为 32 字节,最大值是 65,527;

-w timeout:指定超时间隔,单位为毫秒;

target_name:指定要 ping 的远程计算机。

Unix/Linux系统下Ping命令使用格式如下:

ping [-c count] [-s size] target_name

-c count: 指定要 Ping 多少次,具体次数由后面的 count 来指定

-s size: 指定发送到目标主机的数据包的大小,默认为 32 字节

target_name:指定要 ping 的远程计算机。

5、traceroute命令与工作原理

其主要功能是跟踪(报文传输)沿途所经过的路由,通信协议是ICMP,用于unix、linux系统环境,在Windows系统环境内,对应的命令是tracert。命令格式:Traceroute 目标主机名或IP. Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由器...... traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢?Traceroute在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。 Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。

【实验任务】

1、切换到终端窗口

2、已知某目标机IP地址是119.38.215.130,测试IP报文由平台虚拟机发送至目标机,沿途经过哪些路由器? 执行命令:traceroute 119.38.215.130 把得到的数据整理后,保存到实验报告中,课后分析沿途经过哪些路由器。

3、分析沿途所经过的路由器的数目,并填写到代码文件窗口第一行末尾(不要破坏“冒号”之前提示内容)。 注:有两种可能的答案,系统只认其中一种(如果你的答案系统不认,可以将其减1或加1再试)。

4、打开wireshark ,开始抓取网络接口eth0上的分组,将窗口最小化;

5、在终端窗口内,执行如下命令: ping -c 3 -s 0 www.educoder.net 在实验报告中解释该命令行各参数的含义; 把得到的数据整理后,保存到实验报告中,课后完成数据分析。

6、切换到Wireshark窗口,并停止抓取分组;

7、利用分组过滤功能,过滤出icmp分组;在报文摘要窗口中点击选取第1个icmp报文;

8、调节分组头部细节窗口大小,将其中IP报头和ICMP报头全部字段都展开,然后对该窗口进行截图,并粘贴到实验报告中,课后对其中主要字段进行分析解读。

9、分析第一个icmp响应(reply)报文,把其类型值、代码,分别填写到代码文件窗口的第二、三行末尾(不要破坏“冒号”之前提示内容)。

  1. 调节分组头部细节窗口大小,将其中IP报头和ICMP报头全部字段都展开,然后对该窗口进行截图,并粘贴到实验报告中,课后对其中主要字段进行分析解读。

21 IP

这是一个IPv4的数据包,其中包含了源IP地址和目标IP地址,以及其他一些信息。具体分析如下:

- 版本号为4,表示这是IPv4协议。

- 头部长度为20字节,即5个32位字长。

- 差分服务字段为0x14,其中DSCP为Unknown,ECN为Not-ECT。

- 总长度为28字节。

- 标识符为0x3b17,即15127。

- 标志位为0x4000,表示不分片。

- 存活时间为55。

- 协议为ICMP,即Internet控制报文协议。

- 头部校验和为0xdb65。

- 源IP地址为122.225.212.158。

- 目标IP地址为172.16.49.192。

22 icmp

这是一个ICMP协议的回复报文,其中包含了以下信息:

- Type: 0,表示这是一个回复报文,而不是请求报文。

- Code: 0,表示这是一个Echo (ping) reply。

- Checksum: 0xfdd7,表示校验和正确。

- Identifier (BE): 552 (0x0228),表示标识符为552。

- Identifier (LE): 10242 (0x2802),表示标识符的小端字节序为10242。

- Sequence number (BE): 0 (0x0000),表示序列号为0。

- Sequence number (LE): 0 (0x0000),表示序列号的小端字节序为0。

根据这些信息,我们可以确定这是一个回复报文,而不是请求报文,并且是一个Echo (ping) reply。标识符为552,序列号为0。校验和正确。

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

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

相关文章

基于Towers of Binary Fields的succinct arguments

1. 引言 Ulvetanna团队Benjamin E. Diamond和Jim Posen 2023年论文《Succinct Arguments over Towers of Binary Fields》,开源代码见: https://github.com/recmo/binius(Rust Sage)【基于plonky3等库】 在该论文中&#xff1…

Apache POI简介

三十二、Apache POI 32.1 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下,POI都是用于操作Excel文件。 Apache POI 的应用场…

基于区域划分的GaN HEMT 准物理大信号模型

GaN HEMT器件的大信号等效电路模型分为经验基模型和物理基模型。经验基模型具有较高精度但参数提取困难,特别在GaN HEMT器件工艺不稳定的情况下不易应用。相比之下,物理基模型从器件工作机理出发,参数提取相对方便,且更容易更新和…

火山引擎 ByteHouse 的增强型数据导入技术实践

作为企业数字化建设的必备要素,易用的数据引擎能帮助企业提升数据使用效率,更好提升数据应用价值,夯实数字化建设基础。 数据导入是衡量OLAP引擎性能及易用性的重要标准之一,高效的数据导入能力能够加速数据实时处理和分析的效率。…

Sa-Token 整合Java17和SpringBoot

目录 前言引入项目开启登录认证路由拦截鉴权解决兼容问题总结 前言 之前无意中发现Sa-Token权限认证框架,项目十分好用。 项目地址: https://github.com/dromara/sa-token 官网地址: https://sa-token.cc/doc.html#/start/example 我的个人…

不停的挖掘硬盘的最大潜能

从 NAS 上退休的硬盘被用在了监控的存储上了。 随着硬盘使用寿命的接近尾声,感觉就是从高附加值数据到低附加值数据上。监控数据只会保留那么几个月的时间,很多时候都会被覆盖重新写入。 有人问为什么监控数据不保留几年的,那是因为监控数据…

java_函数式接口

文章目录 一、什么是函数式接口二、四大核心函数式接口三、使用举例 一、什么是函数式接口 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口函数式接口的实例可以通过 lambda 表达式、方法引用或者构造方法引用来创建如果我们在某个接口上声明了 Funct…

从mysql源码编译出相应的库和可执行文件及搭建mysql服务端

目录 1. 问题的提出 2. 源码下载 3. 升级或安装某些前置软件 3.1. 升级CMake 3.2. 升级gcc、g 4. 安装依赖库 4.1. 安装OpenSSL 4.2. 安装Curses 4.3. 安装pkg-config 5. 编译、安装 6. 编译结果、配置 7. 编译错误处理 7.1. 错误1 7.2. 错误2 8. 搭建mysql数…

VMware三种网络模式

桥接模式 NAT(网络地址转换模式) Host-Only(仅主机模式) 参考: vmware虚拟机三种网络模式 - 知乎 (zhihu.com)

一篇文章搞懂WPF动画的使用技巧

WPF 动画系统提供了丰富的功能,用于为 UI 元素创建流畅的动态效果。动画可以应用于任何可用于渲染的属性,比如位置、颜色、大小等。在 WPF 中,动画是通过更改随时间变化的属性来实现的。 WPF动画基本用法 例如实现如下的动画效果&#xff1…

合并区间问题

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:intervals [[1,…

Java如何获取泛型类型

泛型(Generic) 泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Vis…

WPF树形控件TreeView使用介绍

WPF 中的 TreeView 控件用于显示层次结构数据。它是由可展开和可折叠的 TreeViewItem 节点组成的&#xff0c;这些节点可以无限嵌套以表示数据的层次。 TreeView 基本用法 例如实现下图的效果&#xff1a; xaml代码如下&#xff1a; <Window x:Class"TreeView01.Mai…

springcloud整合seata我踩过的坑

版本问题 seata 1.5和1.5之前的目录结构不同,使用docker修改的配置文件也不同 1.4的左右 1.5之后docker 挂载文件也不同 1.5之前是使用自己写的挂载registry docker run -d -p 8091:8091 -p 7091:7091 --network newlead --name seata-serve -e SEATA_IP192.168.249.132…

人工智能基础_机器学习047_用逻辑回归实现二分类以上的多分类_手写代码实现逻辑回归OVR概率计算---人工智能工作笔记0087

然后我们再来看一下如何我们自己使用代码实现逻辑回归的,对二分类以上,比如三分类的概率计算 我们还是使用莺尾花数据 首先我们把公式写出来 def sigmoid(z): 定义出来这个函数 可以看看到这需要我们理解OVR是如何进行多分类的,我们先来看这个 OVR分类器 思想 OVR(One-vs-…

UE 进阶篇一:动画系统

导语: 下面的动画部分功能比较全,可以参考这种实现方式,根据自己项目的颗粒度选择部分功能参考,我们商业项目动画部分也是这么实现的。 最后实现的效果如下: 最终效果 目录: ------------------------------------------- 文末有视频教程/工程地址链接 -------------…

9、鸿蒙应用桌面图标外观和国际化

一、项目资源目录 项目下的resoueces目录为资源配置目录&#xff0c;其中base为基础配置&#xff0c;即在任何语言环境下都会加载的资源&#xff0c; color.json&#xff1a;用于配置颜色&#xff0c;如页面的背景和文字的颜色。 string.json&#xff1a;用于设置文字&#…

Selenium切换窗口、框架和弹出框window、ifame、alert

一、切换窗口 #获取打开的多个窗口句柄 windows driver.window_handles #切换到当前最新打开的窗口 driver.switch_to.window(windows[-1]) #最大化浏览器 driver.maximize_window() #刷新当前页面 driver.refresh() 二、切换框架frame 如存在以下网页&#xff1a; <htm…

Java基础(程序控制结构篇)

Java的程序控制结构与C语言一致&#xff0c;分为顺序结构、选择结构&#xff08;分支结构&#xff09;和循环结构三种。 一、顺序结构 如果程序不包含选择结构或是循环结构&#xff0c;那么程序中的语句就是顺序的逐条执行&#xff0c;这就是顺序结构。 import java.util.Sc…

杭电oj 2064 汉诺塔III C语言

#include <stdio.h>void main() {int n, i;long long sum[35] { 2,8,26 };for (i 3; i < 35; i)sum[i] 3 * sum[i - 1] 2;while (~scanf_s("%d", &n))printf("%lld\n", sum[n - 1]); }