【计算机网络】实验6:IPV4地址的构造超网及IP数据报

实验 6:IPV4地址的构造超网及IP数据报

一、 实验目的

  1. 加深对IPV4地址的构造超网(无分类编制)的了解。

  2. 加深对IP数据包的发送和转发流程的了解。

二、 实验环境

• Cisco Packet Tracer 模拟器

三、 实验内容

1、了解IPV4地址的构造超网(无分类编制)

(1) 第一步:构建网络拓扑:拖动五个主机,两个路由器,一个交换机,使用自动连接类型将其连接起来。其中路由器使用2911。如图1所示。

img

图 1 构建网络拓扑

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

img

图2 配置IP及子网掩码的要求

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

img

图3 计算各个网络IP以及子网掩码

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

img

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

img

图5 配置IP及子网掩码和路由器

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

img

图6 处于同一网络中的主机可以ping通

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

img

图7 配置完默认网关之后可以通信

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

img

图8 此时计算机之间不能互通

(8) 第八步:可以看到上图收到的响应是来自IP地址为192.168.16.126的路由器,也就是说原主机发送的数据包先是转发到了路由器,然后路由器向原主机报告说目的主机不可以到达。之所以说路由器不知道如何转发,是因为路由器的路由表里面并没有存储相关信息。

(9) 第九步:查看路由器的路由表。如图9所示。这里面的6条数据,分别是和路由器直接相连的三个网络,以及记录了自己的三个接口的IP地址,之所以原主机发送请求给最右边的主机不成功,正是因为左边的路由器根本就不知道最右边的网络的存在,所以不知道如何转发。

img

图9 路由器的路由表

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

img

图9 为路由器添加静态路由

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

img

图10 路由器知道了另一个网络的路线

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

img

图11 为右侧的路由器添加静态路由

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

img

图12 左上角主机成功ping通右边主机

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

img

图13 两个静态路由进行路由聚合

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

img

图14 主机之间成功通信

2、IP数据报的发送和转发过程

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

img

图 15 构建网络拓扑并写好注释

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

img

图16 查看ARP高速缓存表及路由表

(3) 第三步:为左上角的主机添加一个简单的PDU,让其发送给左下角的主机。并打开ICMP的数据报。如图17所示。

img

图17 ICMP数据报里面的内容

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

(5) 第五步:点击捕获前进,路由器收到广播请求,路由器的ARP表多出来一条记录,如图18所示。这条记录了原主机的IP地址以及MAC地址的对应关系。

img

图18 路由器的ARP表多出来一条记录

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

img

图19 原主机ARP表多了一条记录

img图20 以太网帧封装成功

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

(8) 第八步:点击捕获前进,目的主机收到广播请求,目的主机的ARP表多出来一条记录,如图21所示。这条记录了路由器的某个端口的IP地址以及MAC地址的对应关系,以备之后需要使用。

img

图21 目的主机的ARP表多了一条记录

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

img

图 22 路由器记录目的主机IP及MAC地址

(10) 第十步:当高速缓存表以及路由表里面都有相关的信息之后,此时再发送简单的PDU,就可以很顺利的到达目的主机了。

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

img

图 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数据包。这一过程中,数据包携带了源地址和目标地址,确保信息能够准确传递,转发流程则涉及路由器的关键作用。当数据包到达路由器时,路由器根据目标地址查找路由表,决定最佳转发路径。这一过程不仅依赖于静态路由配置,还可能涉及动态路由协议,确保网络在变化时依然高效运作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java Web 1HTML快速入门

目录 一、Web开发介绍 1.什么是Web? 2.初识Web前端 二、HTML快速入门 1.什么是HTML、CSS? 2、案例练习 3.小结 三、VS Code开发工具 四、基础标签&样式(HTML) 2、实现标题--样式1(新闻标题的颜色&#xff0…

【流程图】各元素形状和含义

判定、文档、数据、数据库、流程处理节点 矩形 - 动词 平行四边形 - 图像 下波浪 - 数据 图片来源http://baike.cu12.com/bkss/62449.shtml

利用机器学习预测离婚:从数据分析到模型构建(含方案和源码)

背景介绍 在当今社会,婚姻关系的稳定性受到了多方面因素的影响,包括经济压力、沟通问题、个人价值观差异等。离婚不仅对夫妻双方产生深远的影响,还可能对子女的成长环境和社会稳定造成不利影响。因此,理解并预测可能导致离婚的因素…

分层架构 IM 系统之 Router 架构分析

通过前面文章的分析,我们已经明确,Router 的核心职责是作为中央存储记录在线客户端的连接状态,Router 在本质上是一个内存数据库。 内存是一种易失性的存储,既如此,Router 的可用性如何保障呢? 副本是分布…

二分查找常规实现

使用二分查找有一个前提条件:要查找的数必须在一个有序数组里。在这个前提下,取中间位置数作为比较对象: 若要查找的值和中间数相等,则查找成功。 若小于中间数,则在中间位置的左半区继续查找。 若大于中间数&#x…

C++ 之弦上舞:string 类与多样字符串操作的优雅旋律

string 类的重要性及与 C 语言字符串对比 在 C 语言中,字符串是以 \0 结尾的字符集合,操作字符串需借助 C 标准库的 str 系列函数,但这些函数与字符串分离,不符合 OOP 思想,且底层空间管理易出错。而在 C 中&#xff0…

获取联通光猫的管理员密码

缘起:联通给免费更换了一个新的光猫,烽火的光路由,一个WAN口,4个LAN口,带USB接口,欣欣然接受。但是呢,发现以前的管理员密码CUAdmin不能用了。经过一系列查询,借助别人的经验&#x…

数组练习(非最终版)

作业1&#xff1a;使用二维数组输出杨辉三角 //杨辉三角 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {int i,j,n;scanf("%d",&n);int arr[n][n];for(i0;i<n;i){arr[i][0]1;arr[…

【MySQL 进阶之路】索引概述

第06章_索引 1.什么是索引 索引是存储引擎用于快速找到数据记录的一种数据结构&#xff0c;就好比一本教科书的目录部分&#xff0c;通过目录中找到对应文章的页码&#xff0c;便可快速定位到需要的文章。MySQL中也是一样的道理&#xff0c;进行数据查找时&#xff0c;首先查…

微积分复习笔记 Calculus Volume 2 - 3.3 Trigonometric Substitution

3.3 Trigonometric Substitution - Calculus Volume 2 | OpenStax

业财一体化新篇章:外贸ERP软件重塑业务流程

业财一体化的定义&#xff08;Definition&#xff09; FMS&#xff0c;即财务管理软件&#xff08;Financial Management Software&#xff09;&#xff0c;涵盖了用于管理公司财务的多种工具和系统&#xff0c;包括预算管理、账务处理、报表生成等功能。 ERP&#xff0c;即企…

Qt 信号与槽:UI设计的基础

Qt 的信号与槽机制是其最强大的功能之一&#xff0c;也是初学者理解 Qt 的第一步。它让对象之间的通信变得直观和高效。信号与槽类似于现实生活中的“呼叫和应答”模式&#xff1a;一个对象发出信号&#xff0c;另一个对象响应并执行动作。 什么是信号与槽&#xff1f; 信号与…

QT 左右 上下,拉伸 分配窗口大小

要的效果是以下&#xff1a; QT C 两个QWideget A B现在有放在一个窗口QWideget Test内&#xff0c;初始比例要2&#xff1a;8 ,现在我要 A B 两个窗口中间 当鼠标移到他中间时&#xff0c;有条线&#xff0c;可以左右移动来控件 A B 窗口所占的大小widgetB &#xff08;有 wi…

Linux 各个目录作用

刚毕业的时候学习Linux基础知识&#xff0c;发现了一份特别好的文档快乐的 Linux 命令行&#xff0c;翻译者是happypeter&#xff0c;作者当年也在慕课录制了react等前端相关的视频&#xff0c;通俗易懂&#xff0c;十分推荐 关于Linux的目录&#xff0c;多数博客已有详细介绍…

基于PyTorch框架的线性回归实现指南

目录 ​编辑 1. 线性回归基础 2. PyTorch环境搭建 3. 数据准备 4. 定义线性回归模型 5. 损失函数和优化器 6. 训练模型 7. 评估模型 8. 结论 线性回归是统计学和机器学习中最基本的预测模型之一&#xff0c;它试图找到输入特征和输出结果之间的线性关系。在深度学习框…

HYSPLIT下载及使用

准备工作 官网基础教程&#xff1a;https://www.ready.noaa.gov/documents/Tutorial/html/index.html 使用 参考&#xff1a;https://blog.csdn.net/liaohaibing/article/details/112788701 下载之前还需要Graphical Utilities&#xff1a;https://www.ready.noaa.gov/HYSPLI…

基于Java Springboot环境保护生活App且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…

骨架行为识别-论文复现

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

【PyTorch】torch.distributed.elastic.multiprocessing.errors.ChildFailedError:

报错说明 torch.distributed.elastic.multiprocessing.errors.ChildFailedError: 报错如图所示 报错分析 该报错是 torch 和 CUDA 版本不兼容导致。 &#xff08;一般N卡自带的CUDA版本与最新的torch版本相差较大&#xff09; 解决方案 1.查看自己的CUDA版本 # 查看自己的…

Kylin Server V10 下基于Kraft模式搭建Kafka集群

一、Kraft 模式与 ZooKeeper 模式简介 在Kafka 2.8 之前,Kafka 重度依赖 ZooKeeper 集群做元数据管理、Controller 的选举等(统称为共识服务);当ZooKeeper 集群性能发生抖动时,Kafka 的性能也会受到很大的影响。如下图所示: 在 Kafka 2.8 之后,引入了基于 Raft …