【计算机网络】实验6:IPV4地址的构造超网及IP数据报
实验 6:IPV4地址的构造超网及IP数据报
一、 实验目的
-
加深对IPV4地址的构造超网(无分类编制)的了解。
-
加深对IP数据包的发送和转发流程的了解。
二、 实验环境
• Cisco Packet Tracer 模拟器
三、 实验内容
1、了解IPV4地址的构造超网(无分类编制)
(1) 第一步:构建网络拓扑:拖动五个主机,两个路由器,一个交换机,使用自动连接类型将其连接起来。其中路由器使用2911。如图1所示。

图 1 构建网络拓扑
(2) 第二步:设置各个主机的IP地址,以及子网掩码,需要按照下图给出的要求来设计,题目要求如图2所示。

图2 配置IP及子网掩码的要求
(3) 第三步:先来分析一下最上面的网络,后面的25表示前面25个bit表示网络前缀,所以就可以得出最小的地址,也就是192.168.16.0,这个作为网络地址,而最大的地址就是192.168.16.127,这个最大的地址就作为广播地址。同理我们也可以由此原理得出各个网络的可分配给主机或路由器的地址的范围,以及求出对应的子网掩码。如图3所示。

图3 计算各个网络IP以及子网掩码
(4) 第四步:开始为各个主机以及路由器分配IP地址以及子网掩码。IP地址可以从可选范围任选一个,子网掩码使用上面计算出来的,填写一个如图4所示。全部设置完并且写好注释,如图5所示。

图4 填写主机IP地址以及子网掩码

图5 配置IP及子网掩码和路由器
(5) 第五步:此时处于同一个网络中的各个主机应该是可以互相进行通信的,因为都设置为了正确的IP地址以及子网掩码。使用左上角的主机ping一下IP地址为192.168.0.2的主机。如图6所示。如果不指定默认网关的话,那么左上角的主机不可以与最下方的网络中的其中任何一个主机进行通信,因为不知道该怎么从路由器转发出去。

图6 处于同一网络中的主机可以ping通
(6) 第六步:为主机配置好了默认网关之后,在使用左上角的主机去ping一下下面的任何主机中的一个。比如说ping 192.168.16.129。如图7所示。之所以第一次请求超时,是因为上面的主机首先判断发送过去的目的地址和自己是不是在同一个网络,所以上方主机就会把数据包交给自己网络的默认路由器(也就是默认网关所指向的那个路由器),但是找不到这个IP地址对应的MAC地址,所以就会发送一个ARP的广播请求来获得这个MAC地址,而路由器在收到这个请求之后,发现是传给自己的某一个端口的,然后路由器发回去一个单波响应把自己的MAC地址发送回去,同理路由器转发的时候,也是这个原理。

图7 配置完默认网关之后可以通信
(7) 第七步:在配置好了默认网关之后,使用ping指令,让左边的主机去ping一下最右边的主机,ping 192.168.16.198。如图8所示。

图8 此时计算机之间不能互通
(8) 第八步:可以看到上图收到的响应是来自IP地址为192.168.16.126的路由器,也就是说原主机发送的数据包先是转发到了路由器,然后路由器向原主机报告说目的主机不可以到达。之所以说路由器不知道如何转发,是因为路由器的路由表里面并没有存储相关信息。
(9) 第九步:查看路由器的路由表。如图9所示。这里面的6条数据,分别是和路由器直接相连的三个网络,以及记录了自己的三个接口的IP地址,之所以原主机发送请求给最右边的主机不成功,正是因为左边的路由器根本就不知道最右边的网络的存在,所以不知道如何转发。

图9 路由器的路由表
(10) 第十步:给最左边的路由器添加一个静态路由。如图10所示。

图9 为路由器添加静态路由
(11) 第十一步:此时再查看路由的路由表,如图10所示。就可以发现多了一条记录,此时路由器就知道当目的主机在另一个网络时,就知道下一跳该往哪里走了。

图10 路由器知道了另一个网络的路线
(12) 同理给右侧的路由也添加两条静态路由,添加的具体数据信息,上面的图片中已经给出,其中上面的那个静态路由告诉这个路由器怎么到达左上方的那个网络,而下面哪一个的静态路由是告诉怎么去左下方的网络。添加如图11所示。

图11 为右侧的路由器添加静态路由
(13) 为路由器添加好了所有的静态路由之后,理论上这个网络拓扑中的所有主机之间都是可以正常通信的,下面就来测试一下,使用左上角的主机ping一下最右边的主机,即ping 192.168.16.198,如图12所示。之所以会有两次超时的请求,也是因为ARP广播请求以及接收到的单波响应导致的。如果相同的指令在执行一次的话,就不会出现超时的情况。

图12 左上角主机成功ping通右边主机
(14) 可以发现右边的路由器的两个静态路由的下一跳地址是相同的,因此就可以实现路由聚会,也就是构造超网,路由聚合就是找到两个目的网络的共同前缀,路由聚合之后,如图13所示。此时路由器转发相当于是到达了一个更大的地址块,而不是到达两个分散的地址块。

图13 两个静态路由进行路由聚合
(15) 此时使用最右边的主机去ping一下左边的两台主机中的一个,如图14所示。成功ping通说明此次路由聚合是成功的。

图14 主机之间成功通信
2、IP数据报的发送和转发过程
(1) 第一步:构建网络拓扑:在逻辑工作空间上,拖动六个普通计算机和三个交换机以及两个路由器,选择自动连接把设备连接起来,并设置好IP,并在计算机旁边写好IP注释。并写好MAC地址注释。如图15所示。

图 15 构建网络拓扑并写好注释
(2) 第二步:切换到仿真模式,并且过滤协议,只保留ARP协议和ICMP协议。并且让左上角的主机去给左下角的主机发送一个ICMP的报文,发送之前,将原主机以及经过的路由器和目的主机的三个ARP高速缓存表给打开,另外还需要调整三个ARP高速缓存表的列的位置,还需要打开路由器的路由表,如图16所示。之所以路由器的ARP表不是空的,是因为存放着三个端口的IP地址以及对应的MAC地址,所以不是空的。路由表的里的类型C表示直接连接,L表示自己接口的IP地址,S表示的是静态路由。

图16 查看ARP高速缓存表及路由表
(3) 第三步:为左上角的主机添加一个简单的PDU,让其发送给左下角的主机。并打开ICMP的数据报。如图17所示。

图17 ICMP数据报里面的内容
(4) 第四步:原主机要发送一个ICMP的数据报给目的主机,首先需要封装成IP数据报,源地址就填原主机的IP,目的地址就填目的主机的IP,然后还需要封装成以太网的帧才可以发送走,以太网帧的首部的原MAC地址填的是原IP地址对应的MAC地址,但是目的MAC地址是不可以直接填写目的主机的MAC地址,因为并不知道。原主机将目的主机的IP地址和自己的子网掩码相与,得到一个网络地址,然后查看自己的网络地址和自己的是不是一样,若是一样,则可以直接交付,如是不一样,则原主机需要通过自己网络中的一台路由器来帮助自己转发。所以以太网帧的首部的目的MAC地址就应该填写的是路由器的某个接口的MAC地址,此时原主机就会去自己的ARP高速缓存表里面查找,若是空的,就会发送一个ARP的广播请求,通过已知的路由器的某个接口的IP地址去找对应的MAC地址,找到了,才可以将真正的数据报传送过去。
(5) 第五步:点击捕获前进,路由器收到广播请求,路由器的ARP表多出来一条记录,如图18所示。这条记录了原主机的IP地址以及MAC地址的对应关系。

图18 路由器的ARP表多出来一条记录
(6) 第六步:再次点击捕获前进,发现路由器将单波响应明确的经过交换机发回给了原主机,这样原主机就得到了与自己所在网络相连的路由器的端口的IP地址以及MAC地址。如图19所示。此时原主机的封装成帧的以太网的首部的目的MAC地址就可以填写了。此时就可以发送ICMP数据报,打开ICMP数据报如图20所示。

图19 原主机ARP表多了一条记录
图20 以太网帧封装成功
(7) 第七步:点击捕获前进,当ICMP报文到达路由器之后,开始解封装,主要目的是为了提取IP数据报中的目的IP地址,然后根据自己的路由表中所指向的下一跳进行转发,如果下一跳的地址为空,说明此时这个接口和目的主机属于同一个网络,可以直接交付,此时路由器将这个数据重新封装成帧,此时帧的原MAC地址就应该填写当前转发的这个端口的MAC地址,而目的MAC地址也是需要路由器去自己的ARP高速缓存表里查找的,若是没有,那么路由器就会把封装的数据帧(其中带有ICMP报文)丢弃。紧接着就会发送ARP广播请求来获取。
(8) 第八步:点击捕获前进,目的主机收到广播请求,目的主机的ARP表多出来一条记录,如图21所示。这条记录了路由器的某个端口的IP地址以及MAC地址的对应关系,以备之后需要使用。

图21 目的主机的ARP表多了一条记录
(9) 第九步:点击捕获前进,路由器收到目的主机发回来的单波响应,路由器的ARP表多出来一条记录,如图22所示。这条记录了目的主机的IP地址以及MAC地址的对应关系。但是最终目的主机还是没有收到ICMP报,因为路由器将其丢弃了。

图 22 路由器记录目的主机IP及MAC地址
(10) 第十步:当高速缓存表以及路由表里面都有相关的信息之后,此时再发送简单的PDU,就可以很顺利的到达目的主机了。
(11) 第十一步:至使用IP地址为192.168.16.2的主机ping一下IP地址为192.168.16.193的主机,如图23所示。总共ping了四次,相当于是发送了四个简单的PDU,前两次超时是因为经过了两个路由器,每个路由器的高速缓存表里面都没有相关信息,所以就丢了两次数据报,丢弃原理上面说了,所以就超时了两次。此时如果再ping一次的话,就不会出现超时的情况了。

图 23 前两次超时,后两次成功
(12) 第十二步:对于主机而言,使用命令arp -d就可以成功清除自己的ARP高速缓存表,如果是交换机的话,就进入命令行界面,然后输入enable进入特权指令,然后输入指令clear mac-a可以清除交换机的MAC地址表,路由器也可以使用指令enable首先进入特权模式,然后输入指令clear arp,此时清除了高速缓存表和MAC地址表之后,就可以在仿真模式下再做一遍,以便更好地查看转发流程。
四、 实验体会
1. 这两个实验的步骤都遵循构建网络拓扑、配置网络环境、跟踪数据包和查看数据包这四个规则。
2. Cisco Packet Tracer 模拟器可以清晰地展示 PDU 在传送过程,设备是如何处理 PDU 的。通过仿真传送过程,有助于我们理解有关的知识。
3. 在学习IPv4地址的构造与超网(无分类编制)时,我深刻体会到其灵活性和高效性。超网技术通过将多个小网络合并为一个更大的网络,从而减少路由表的大小,提高路由效率。这种方法打破了传统的类A、类B、类C的限制,使得IP地址的分配更加灵活,能够根据实际需求进行合理划分,我了解到,超网的关键在于CIDR(无类别域间路由选择),它允许使用任意长度的前缀,而不是固定的类划分。这种灵活性使得网络管理员能够根据流量需求动态调整网络结构,优化资源利用。此外,超网还可以有效减少IP地址的浪费,特别是在IP地址资源紧张的情况下,显得尤为重要。
4. 在学习IP数据包的发送和转发流程时,我对网络通信的复杂性和高效性有了更深刻的理解。数据包的发送始于源主机,通过协议栈逐层封装,最终形成IP数据包。这一过程中,数据包携带了源地址和目标地址,确保信息能够准确传递,转发流程则涉及路由器的关键作用。当数据包到达路由器时,路由器根据目标地址查找路由表,决定最佳转发路径。这一过程不仅依赖于静态路由配置,还可能涉及动态路由协议,确保网络在变化时依然高效运作。
相关文章:
【计算机网络】实验6:IPV4地址的构造超网及IP数据报
实验 6:IPV4地址的构造超网及IP数据报 一、 实验目的 加深对IPV4地址的构造超网(无分类编制)的了解。 加深对IP数据包的发送和转发流程的了解。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、了解IPV4地址的构造超网…...
easy excel 生成excel 文件
导包 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version> </dependency> 内容 List<类> limspjreport 值; String fileName sdf.format(new Date()) "-…...
Ajax:回忆与节点
一点回忆 面对我的Ajax学习,实现前后端交互,最开始我采用的使用网络寻找intellij IDEA Ultimate破解方法,然后最终成功,然后按照相关教程配置java ee项目,然后中间又去配置了Tomcat服务器,然后又去学习了一…...
Python+OpenCV系列:Python和OpenCV的结合和发展
PythonOpenCV系列:Python和OpenCV的结合和发展 **引言****Python语言的发展****1.1 Python的诞生与发展****1.2 Python的核心特性与优势****1.3 Python的应用领域** **OpenCV的发展****2.1 OpenCV的起源与发展****2.2 OpenCV的功能特性****2.3 OpenCV的应用场景** *…...
Ubuntu20.04 由源码编译安装opencv3.2 OpenCV
Ubuntu20.04 由源码编译安装opencv3.2.0 获取 opencv 及opencv_contrib源代码 创建目录以存放opencv及opencv_contrib源代码 mkdir ~/opencv3.2.0 cd ~/opencv3.2.0获取opencv源代码并切换到对应tag git clone https://github.com/opencv/opencv.git cd opencv git checkou…...
A058-基于Spring Boot的餐饮管理系统的设计与实现
🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…...
RDIFramework.NET CS敏捷开发框架 SOA服务三种访问(直连、WCF、WebAPI)方式
1、介绍 在软件开发领域,尤其是企业级应用开发中,灵活性、开放性、可扩展性往往是项目成功的关键因素。对于C/S项目,如何高效地与后端数据库进行交互,以及如何提供多样化的服务访问方式,是开发者需要深入考虑的问题。…...
Linux——命名管道及日志
linux——进程间通信及管道的应用场景-CSDN博客 文章目录 目录 文章目录 前言 一、命名管道是什么? 理解: 2、编写代码 makefile 管道封装成类,想用中管道时只需要调用实例化 读端 写端 日志 1、日志是什么? 2、日志有什么&#x…...
Flink 常见面试题
1、Flink 的四大特征(基石) checkpoin基于Chandy-Lamport算法实现了分布式一致性快照提供了一致性的语义 state丰富的StateAPI time实现了Watermark机制,乱序数据处理,迟到数据容忍 window开箱即用的滚动,滑动会话窗口…...
rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable
解决方法: 1、先测量pcf8563电源电压,是否满足要求。 2、pcf8563首次操作。第一次读取pcf8563的时间,未初始化,非法,芯片门槛电压检测配置不合理。使用hwclock命令写入一次,即可解决。 hwclock -f /dev/…...
(简单5步实现)部署本地AI大语言模型聊天系统:Chatbox AI + grok2.0大模型
摘要: 本文将指导您如何部署一个本地AI大语言模型聊天系统,使用Chatbox AI客户端应用和grok-beta大模型,以实现高效、智能的聊天体验。 引言: 由马斯克X-AI发布的Grok 2大模型以其卓越的性能超越了GPT4.0。Grok模型支持超长文本…...
MAUI APP开发蓝牙协议的经验分享:与跳绳设备对接
在开发MAUI应用程序时,蓝牙协议的应用是一个重要的环节,尤其是在需要与外部设备如智能跳绳进行数据交换的场景中。以下是我在开发过程中的一些经验和心得,希望能为你的项目提供帮助。 1. 蓝牙协议基础 蓝牙协议是无线通信的一种标准&#x…...
最新版Node.js下载安装及环境配置教程
目录 初识:Node.js 一、下载:Node.js 二、安装:Node.js 1.下载【node.js】压缩包安装文件 2.解压下载的安装包 3.打开解压的【node-v22.11.0-x64】文件夹 4.双击启动安装程序 5.点击【Next】 6.勾选【I accept the terms in the Lic…...
51c自动驾驶~合集39
我自己的原文哦~ https://blog.51cto.com/whaosoft/12707676 #DiffusionDrive 大幅超越所有SOTA!地平线DiffusionDrive:生成式方案或将重塑端到端格局? 近年来,由于感知模型的性能持续进步,端到端自动驾驶受到了来…...
单链表基础操作
文章目录 abstract定义结点结构初始化链表遍历链表求表长查找结点根据序号查找结点根据值查找结点 插入结点首尾位置插入一般位置插入(通用插入)找到尾元素|尾指针相关操作 删除结点 abstract 单链表是一种简单的动态数据结构,它由一系列结点组成,每个结…...
Asp.net MVC在VSCore中的页面的增删改查(以Blog项目为例),用命令代码
在VSCore中的页面的增删改查(以Blog项目为例) 1.创建项目(无解决方案)复杂项目才需要 dotnet new mvc -o Blog2.控制器 BlogsController.cs 控制器(Controller)名字和视图(View)中的文件名要一模一样 u…...
【Leecode】Leecode刷题之路第66天之加一
题目出处 66-加一-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 66-加一-官方解法 方法1:找出最长的后缀9 思路: 代码示例:(Java&#…...
使用 VLC 在本地搭建流媒体服务器 (详细版)
提示:详细流程 避坑指南 Hi~!欢迎来到碧波空间,平时喜欢用博客记录学习的点滴,欢迎大家前来指正,欢迎欢迎~~ ✨✨ 主页:碧波 📚 📚 专栏:音视频 目录 借助VLC media pl…...
Ubuntu 常用解压与压缩命令
.zip文件 unzip FileName.zip # 解压 zip DirName.zip DirName # 将DirName本身压缩 zip -r DirName.zip DirName # 压缩,递归处理,将指定目录下的所有文件和子目录一起压缩 zip DirName.zip DirName 行为: 只压缩 DirName 目录本身ÿ…...
【深度学习】四大图像分类网络之AlexNet
AlexNet是由Alex Krizhevsky、Ilya Sutskever(均为Hinton的学生)和Geoffrey Hinton(被誉为”人工智能教父“,首先将反向传播用于多层神经网络)在2012年ImageNet图像分类竞赛中提出的一种经典的卷积神经网络。AlexNet在…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
全志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…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
