HNU_计算机网络_实验4(2021级)-网络层与链路层协议分析(PacketTracer)_total secure mac-addresses on interface etherneto/-程序员宅基地

技术标签: # 实验_计网  实验  计算机网络  

计算机网络Lab4实验报告

网络层与链路层协议分析(PacketTracer)

一、实验目的

        通过本实验,进一步熟悉PacketTracer的使用,学习路由器与交换机的基本配置,加深对网络层与链路层协议的理解。

二、实验内容

        了解路由器交换机的基本配置,使用 Packet Tracer 捕获并研究 ICMP 报文,检查ARP交换。

2.1 完成路由器交换机的基本配置

打开“《计算机网络》基础实验指导书2023”中的实验四的实验文件,按提示完成实验。

2.2 了解 ICMP 数据包的格式

使用的网络中包含一台通过路由器连接到服务器的 PC,并且捕获从 PC 发出的 ping 命令的输出。

2.3 检查ARP交换

使用 Packet Tracer 的 arp 命令,使用 Packet Tracer 检查 ARP 交换,捕获并评估 ARP 通信。

三、实验步骤

1.路由器的基本配置

(1)打开“4.路由器的一些基本配置.pkt”

(2) 输入命令

①show version

        此命令结果包含有网络设备操作系统IOS版本,IOS映像文件,存储器大小,接口类型及配置登记值等信息。

Enable

输入指令,以及相应解释如下:

R1>

enable 

进入特权模式,可以进行配置查看

R1#

configure terminal

Enter configuration commands, one per line. End with CNTL/Z.

进入全局模式,用户可以对路由器进行配置

R1(config)#

hostname R1

将路由器主机名修改为R1

R1(config)#

no ip domain-lookup 

关闭域名解释

R1(config)#

line console 0 

进入终端配置模式

R1(config-line)#

logging synchronous

设置输入同步(输入时,IOS的系统提醒或日志不会打断输入).

R1(config-line)#

exec-timeout 2000 

设置会话时间,不做任何操作,20分后断开

R1(config-line)#

end

R1#

%SYS-5-CONFIG_I: Configured from console by console

终端运行结果如下:

2.静态路由

        静态路由:管理员可以通过手工的方法在路由器中直接配置路由表

        路由器有三种途径建立路由:

  1. 直连网络:路由器自动添加,自己直接连接的网络的路由;
  2. 静态路由:管理员手动输入到路由器的路由;
  3. 动态路由:由路由协议动态建立的路由;

        静态路由的缺点:不能动态反映网络拓扑,当网络拓扑发生变化时,管理员就必须手工改变路由表;

        静态路由的优点:不会占用路由器太多的CPU 和RAM 资源,也不占用线路的带宽。简单、路由器负载小、可控性强。

(1)打开“8.静态路由.pkt”

配置静态路由的命令格式如下:

ip route 目的网络 掩码 { 网关地址 | 接口 }

例:ip route 192.168.1.0 255.255.255.0 s0/0

例:ip route 192.168.1.0 255.255.255.0 12.12.12.2

        在写静态路由时,如果链路是点到点的链路(例如PPP 封装的链路),采用网关地址和接口都是可以的;

        然而如果链路是多路访问的链路(例如以太网),则只能采用网关地址,即不能:ip route 192.168.1.0 255.255.255.0 f0/0。

(2)配置静态路由

​​​​​​​①路由器0

R1>enable

R1#conf t

Enter configuration commands, one per line. End with CNTL/Z.

R1(config)#hostname R1

R1(config)#int loopback0

R1(config-if)#ip address 1.1.1.1 255.255.255.0

R1(config-if)#exit

R1(config)#int s2/0

R1(config-if)#ip address 192.168.1.1 255.255.255.0

R1(config-if)#no shutdown

R1(config-if)#clock rate 64000

R1(config-if)#ip route 2.2.2.0 255.255.255.0 s2/0 //下一跳为接口形式,s2/0是点对点的链路,注意应该是R1上的s2/0接口

R1(config)#ip route 3.3.3.0 255.255.255.0 192.168.1.2 //下一跳为IP地址形式,192.168.1.2 是R2上的IP地址

R1(config)#end

R1#

%SYS-5-CONFIG_I: Configured from console by console

终端运行结果如下:

​​​​​​​②路由器1

R2>en

R2#conf t

Enter configuration commands, one per line. End with CNTL/Z.

R2(config)#int loopback0

R2(config-if)#ip add 2.2.2.2 255.255.255.0

R2(config-if)#exit

R2(config)#int s2/0

R2(config-if)#ip add 192.168.1.2 255.255.255.0

R2(config-if)#no shutdown

R2(config-if)#exit

R2(config)#int s3/0

R2(config-if)#ip add 192.168.100.1 255.255.255.0

R2(config-if)#no shutdown

R2(config-if)#clock rate 64000

R2(config-if)#ip route 1.1.1.0 255.255.255.0 s2/0

R2(config)#ip route 3.3.3.0 255.255.255.0 s3/0

R2(config)#end

R2#

%SYS-5-CONFIG_I: Configured from console by console

终端运行结果如下:

​​​​​​​③路由器2

R3>en

R3#conf t

Enter configuration commands, one per line. End with CNTL/Z.

R3(config)#hostname R3

R3(config)#int loopback0

R3(config-if)#ip address 3.3.3.3 255.255.255.0

R3(config-if)#exit

R3(config)#int s2/0

R3(config-if)#ip address 192.168.100.2 255.255.255.0

R3(config-if)#no shutdown

R3(config-if)#end

R3#

%SYS-5-CONFIG_I: Configured from console by console

终端运行结果如下:

(3)在R1上进行Ping测试

R1>en

R1#ping

Protocol [ip]:

Target IP address: 2.2.2.2

Repeat count [5]:

Datagram size [100]:

Timeout in seconds [2]:

Extended commands [n]: y

Source address or interface: 1.1.1.1

Type of service [0]:

Set DF bit in IP header? [no]:

Validate reply data? [no]:

Data pattern [0xABCD]:

Loose, Strict, Record, Timestamp, Verbose[none]:

Sweep range of sizes [n]:

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/5 ms

终端运行结果如下:

能够ping通2.2.2.2,因此配置信息无误。

3.子网划分

(1)打开“15.子网划分.pkt”

(2)子网划分的公式及举例

划分子网的一些公式:

说明

公式

子网掩码产生子网个数

(x:被借走的主机位数)

每个子网的主机个数

(y:被借走后,剩余的主机位数)

有效子网号(block size)

256-十进制的子网掩码

每个子网的广播地址

下个子网号-1

每个子网的有效主机

忽略子网内全为0和全为1的地址剩下的即有效主机地址。

最后有效的1个主机地址=下个子网号-2(即广播地址-1)

        划分子网的例子:

        实验文件中对网络192.168.10.0/24进行划分。

说明

公式-计算结果

子网掩码产生子网个数

2^2=4

每个子网的主机个数​​​​​​​

2^6-2=62

有效子网

block size=256-192=64,

第一个子网: 192.168.10.0,

第二个子网: 192.168.10.64,

第三个子网: 192.168.10.128,

最后一个:   192.168.10.192

每个子网的广播地址

第一个子网:192.168.10.63,

第二个子网:192.168.10.127,

第三个子网:192.168.10.191,

最后一个:  192.168.10.255。

每个子网的有效主机

第一个子网:

192.168.10.1到192.168.10.62,

第二个子网:

192.168.10.65到192.168.10.126,

第三个子网:

192.168.10.129到192.168.10.190,

最后一个子网:

192.168.10.193到192.168.10.254

4.配置RIP

(1)打开“16.配置RIP.pkt”

路由选择信息协议(RIP/RIP2/RIPng:Routing Information Protocol):

路由协议

默认管理距离

直连网络

0

静态路由

1

EIGRP(internal)

90

IGRP

100

OSPF

110

RIPv1/RIPv2

120

管理距离越小,可信度越高,优先采用可信度高的路由协议。

(2)配置路由R1-R4

​​​​​​​①R1

R1>enable

R1#conf t

Enter configuration commands, one per line. End with CNTL/Z.

R1(config)#router rip

R1(config-router)#network 192.168.1.0

R1(config-router)#end

R1#

%SYS-5-CONFIG_I: Configured from console by console

终端运行结果如下:

​​​​​​​②R2

R2>enable

R2#conf t

Enter configuration commands, one per line. End with CNTL/Z.

R2(config)#router rip

R2(config-router)#network 192.168.1.0

R2(config-router)#network 172.16.0.0

R2(config-router)#end

R2#

%SYS-5-CONFIG_I: Configured from console by console

终端运行结果如下:

​​​​​​​③R3

R3>enable

R3#conf t

Enter configuration commands, one per line. End with CNTL/Z.

R3(config)#router rip

R3(config-router)#network 172.16.0.0

R3(config-router)#network 10.0.0.0

R3(config-router)#end

R3#

%SYS-5-CONFIG_I: Configured from console by console

终端运行结果如下:

​​​​​​​④R4

R4>enable

R4#conf t

Enter configuration commands, one per line. End with CNTL/Z.

R4(config)#router rip

R4(config-router)#network 10.0.0.0

R4(config-router)#end

R4#

%SYS-5-CONFIG_I: Configured from console by console

终端运行结果如下:

5.交换机的基本配置

(1)打开“11.交换机的基本配置.pkt”

        交换机的作用:维护CAM(ContextAddress Memory)表——MAC地址和交换机端口的映射表;根据CAM 来进行数据帧的转发。

        交换机对帧的处理有三种:

  • Forword:交换机收到帧后,查询CAM 表,如果能查询到目的计算机所在的端口,且目的计算机所在的端口不是交换机接收帧的源端口,交换机将帧从该端口转发出去;
  • Filter:如果该计算机所在的端口和交换机接收帧的源端口是同一端口,交换机将过滤掉该帧;
  • Flood:如果交换机不能查询到目的计算机所在的端口,交换机将把帧从源端口以外的其他所有端口上发送出去,这称为泛洪,当交换机接收到的是帧是广播帧或者多播帧,交换机也会泛洪帧。

以太网交换机转发数据帧有三种交换方式

(1)存储转发(Store-and-Forward)

        把从端口输入的数据帧先全部接收并存储起来;然后进行CRC(循环冗余码校验)检查,把错误帧丢弃;最后才取出数据帧目的地址,查找地址表后进行过滤和转发。

        存储转发方式延迟大;但是它可以对进入交换机的数据包进行高级别的错误检测。这种方式可以支持不同速度的端口间的转发。

(2)直接转发(Cut-Through)

        交换机在输入端口检测到一个数据帧时,检查该帧的帧头,只要获取了帧的目的地址,就开始转发帧。

        优点:开始转发前不需要读取整个完整的帧,延迟非常小。

        缺点:不能提供错误检测能力。

(3)无碎片(Fragment-Free)

        改进后的直接转发,介于前两者之间的一种解决方法。

        无碎片法在读取数据帧的长前64个字节后就开始转发该帧。这种方式虽然不提供数据校验,但是能够避免多数的错误。

        数据处理速度比直接转发方式慢,但比存储转发方式快。

(2)交换机的基本配置

​​​​​​​①交换机配置类似路由器配置

S1>enable

S1#conf t

Enter configuration commands, one per line. End with CNTL/Z.

S1(config)#hostname R1

R1(config)#no ip domain-lookup

R1(config)#line console 0

R1(config-line)#logging synchronous

R1(config-line)#exec-timeout 1000

R1(config-line)#end

R1#

%SYS-5-CONFIG_I: Configured from console by console

终端运行结果如下:

​​​​​​​②交换机SW1配置

SW1>enable

SW1#config t

Enter configuration commands, one per line. End with CNTL/Z.

SW1(config)#enable secret cisco // (MD5加密密码)

SW1(config)#line vty 0 15 //(配置VTY口令 用于TELNET)

SW1(config-line)#password cisco

SW1(config-line)#login

SW1(config-line)#interface f0/1

SW1(config-if)#duplex auto // (双工协商模式为自动)

SW1(config-if)#speed auto //(速率协商模式为自动)

SW1(config-if)#exit

SW1(config)#int vlan 1

SW1(config-if)#ip add 192.168.1.254 255.255.255.0

SW1(config-if)#no shutdown

SW1(config-if)#exit

SW1(config)#ip default-gateway 192.168.1.100

终端运行结果如下:

​​​​​​​③交换机端口-安全配置

        当非法MAC地址的设备接入时,自动关闭接口或拒绝非法设备接入,也可以限制某个端口上的最大MAC地址数。以下是实验给出的交换机端口安全配置:

SW1#config t

Enter configuration commands, one per line. End with CNTL/Z.

SW1(config)#int f0/1

SW1(config-if)#switch mode access //端口访问模式

SW1(config-if)#switch port-security //打开端口安全功能

SW1(config-if)#switch port-sec max 1 //只允许一个设备接入

SW1(config-if)#switch port-sec violation shutdown

SW1(config-if)#switch port-sec violation protect

/*

violation选项共有三种:protect(超过最大数量后,新设备无法接入),shutdown(超过最大数量后,端口关闭,需要no shutdown命令重新打开),restrict(超过最大数量后,新设备可以接入,但交换机会向其发送警告信息)

*/

SW1(config-if)#switch port-sec mac-add 0001.63e.9702 //允许R1路由器从接口接入

Total secure mac-addresses on interface FastEthernet0/1 has reached maximum limit.

SW1(config-if)#shutdown

SW1(config-if)#

%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down

%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan1, changed state to down

终端运行结果如下:

6.了解 ICMP 数据包的格式

        ICMP因特网控制报文协议被主机和路由器用来沟通网络层的信息。典型的用途是差错报告,包括目的网络不可达,目的主机不可达等。

        常用的ping程序也使用的是ICMP报文,发送一个回显请求,目的主机会发送一个回显回答。

        任务:使用 Packet Tracer 捕获并研究 ICMP 报文,使用的网络中包含一台通过路由器连接到服务器的 PC,并且捕获从 PC 发出的 ping 命令的输出。

        实验拓扑图:

(1)PC0的IP配置:

(2)路由器配置:

 (3)服务器0配置:

(4)捕获 ICMP报文

  • 进入 Simulation(模拟)模式。Event List Filters(事件列表过滤器)设置为只显示 ICMP 事件。

  • 打开PC0的命令提示符,输入ping 192.168.254.254:

        单击 Auto Capture/Play(自动捕获/播放)按钮,收到 “No More Events”(没有更多事件)消息时单击 OK(确定)。

(5)数据包分析-事件列表

        Packet Tracer 只显示 TYPE(类型)和 CODE(代码)字段。

   

        查看ICMP报文的内容:

        从主机发送的ICMP报文的类型为0x08,编码为0,表示该报文为回显请求;

        服务器响应的ICMP报文的类型为0,编码为0,表示回显回答。

 (6)捕获并评估到达192.168.253.1的ICMP回应报文

        使用 IP 地址 192.168.253.1 重复步骤 1。

        步骤1中,目的IP与主机不在同一网段,需要通过网关找到下一跳地址;

    若地址设置为192.168.253.1,输入ping指令,会出错,因为中间路由器的接口FastEhernet0/0、0/1的IP地址还没变化,与当前主机设置的IP地址不匹配。

        ICMP报文在PC和路由器之间传输,因为路由器没有到达目的主机的路由信息,因此目的主机不可达。

        类型为0x03,编码为0x01,表示目的主机不可达。

(7)捕获并评估超过TTL值的ICMP回应报文

        Packet Tracer 不支持 ping -i 选项。在模拟模式中,使用 Add Complex PDU(添加复杂 PDU)设置 TTL。

        单击 Add Complex PDU按钮,然后单击PC0。打开 Create Complex PDU对话框:

        Destination IP Address:输入192.168.254.254。TTL: 值改为 1。Sequence Number:输入 1。Simulation Settings: 选择 Periodic(定期)选项。Interval:输入 2。然后点击 Create PDU(创建 PDU)。

        此操作等同于从 PC0 上的命令提示符窗口发出命令 ping -t -i 1 192.168.254.254。

        查看路由器发送给主机的ICMP报文,类型为0X0b,编码为0,表示TTL过期。

7.检查 ARP 交换

(1)ARP协议

        TCP/IP 使用地址解析协议 (ARP) 将第 3 层 IP 地址映射到第 2 层 MAC 地址。

         ARP 是一种使网络设备可以通过 TCP/IP 协议进行通信的协议。如果没有 ARP,就没有建立数据报第 2 层目的地址的有效方法。

        但 ARP 也是潜在的安全风险。例如,ARP 欺骗或 ARP 中毒就是攻击者用来将错误的 MAC 地址关联放入网络的技术。攻击者伪造设备的 MAC 地址,致使帧发送到错误的目的地。手动配置静态 ARP 关联是预防 ARP 欺骗的方法之一。

        ARP协议工作过程:

        主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;

        主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;

        当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

  1. 根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
  2. 如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。
  3. 主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。并将包含其MAC地址的ARP回复消息直接发送回主机A。
  4. 当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

(2)使用PacketTracer的arp命令

        本实验需要对ARP请求和响应进行分析,由于ARP请求只用于一个子网内,建立一个两个主机直连的网络拓扑,IP地址分别为192.168.0.1和192.168.0.2。创建拓扑图如下:

        单击 PC0 的 Desktop(桌面)中的 Command Prompt(命令提示符)按钮。

  • ARP命令,查看PacketTracer中ARP命令可用的选项

  • arp 命令,显示 PacketTracer 中可用的选项。

  • 使用 ping 命令在 ARP 缓存中动态添加条目。

        使用ping命令请求192.168.0.2,ping通后将会获得另一台主机的MAC地址,可以使用arp -a命令查看获取的MAC地址为0060.5CAE.7898。

        在此任务结束时,完成率应为 100%。

(3)使用PacketTracer检查ARP交换

使用arp -d命令清空ARP表中的条目,然后再次ping 192.168.0.2,即另一台主机的IP地址:

        查看事件列表:

        在事件列表过滤出ARP请求和响应。

请求报文:

        请求报文(PC0)中包含了源MAC地址和IP地址,以及目的地址的IP地址。

响应报文:

        响应报文(PC1)中包含了目的主机的MAC地址,发送主机接收到该报文后就会将IP和MAC地址的映射加入ARP表。

ARP报文格式如下:

类型

解释说明

硬件类型

发送方请求的硬件接口类型,以太网的值为1

协议类型

发送方提供的高层协议类型,IP为0x0800

硬件地址长度和协议长度

指明硬件地址和高层协议地址的长度,使ARP报文可以在任意硬件和任意协议的网络中使用

操作类型

指明报文类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;

四、实验总结

        通过这次实验,我学习了通过PacktTracer工具对应用层和传输层协议进行分析,进一步熟悉了PacketTracer的使用,对于路由与交换技术有了更加深入的了解与体会。

        同时,通过本实验,我学习了路由器与交换机的基本配置,加深对网络层与链路层协议的理解,并使用 Packet Tracer 捕获并研究了 ICMP 报文,检查ARP交换。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_62323523/article/details/135873188

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签