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

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

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

相关文章

FreeRtos开发之计数信号量

前面介绍过了计数信号量的定义取值只有0与1两种状态的信号量称之为二值信号量 取值大于1的信号量称之为计数信号量 计数信号量的取值也可以为1,但通常大于1,如果取值为1,相当于只有0与1两种状态,用二值信号量即可。 计数信号量应用…

Profinet转EtherNet/IP网关是如何解决西门子S7-1500PLC与AB PLC的通讯问题的

一、 案例背景 在一个工业现场,一端是AB的PLC,IP地址192.168.1.20;另一端西门子是S7-1500系列,IP地址192.168.2.248。AB的PLC内有 B3、N7、F8 三个寄存器文件涉及到通讯,分别对应西门子PLC的M、DB1、DB2三个存储区域。通过捷米特…

【C语言】扫雷游戏(一)

我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。 1,可以用数组存放,如果有雷就用1表示,没雷就用0表示。 2,排查(2,5)这个坐标时,我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时&#xf…

Unity开发FPS游戏之完结篇

这个系列的前几篇文章介绍了如何从头开始用Unity开发一个FPS游戏,感兴趣的朋友可以回顾一下。这个系列的文章如下: Unity开发一个FPS游戏_unity 模仿开发fps 游戏-CSDN博客 Unity开发一个FPS游戏之二_unity 模仿开发fps 游戏-CSDN博客 Unity开发一个F…

浅析RPC—基础知识

该文章会简单介绍一下 RPC 相关的基础概念。 什么是RPC? RPC(Remote Procedure Call) 即远程过程调用,通过名字我们就能看出 RPC 关注的是远程调用而非本地调用。 为什么要 RPC ? 因为,两个不同的服务器…

mysql数据库varchar截断问题

用了这么多年mysql数据库,才发现varchar是可以截断的,而且是在我们线上数据库。个人觉得dba的这个设置是非常有问题的,用户往数据库里存东西,就是为了以后用的,截断了存放,数据不完整,就用不了了…

EwoMail邮箱服务器软件安装教程

EwoMail是基于Linux的开源邮件服务器软件,集成了众多优秀稳定的组件,是一个快速部署、简单高效、多语言、安全稳定的邮件解决方案,帮助你提升运维效率,降低 IT 成本,兼容主流的邮件客户端,同时支持电脑和手机邮件客户端。 一、系统版本 二、关闭selinux vi /etc/sysconf…

【机器学习】机器学习的基本分类-监督学习-支持向量机(Support Vector Machine, SVM)

支持向量机是一种强大的监督学习算法,主要用于分类问题,但也可以用于回归和异常检测。SVM 的核心思想是通过最大化分类边界的方式找到数据的最佳分离超平面。 1. 核心思想 目标 给定训练数据 ,其中 是特征向量, 是标签&#xf…

Linux命令进阶·如何切换root以及回退、sudo命令、用户/用户组管理,以及解决创建用户不显示问题和Ubuntu不显示用户名只显示“$“符号问题

目录 1. root用户(超级管理员) 1.1 用于账户切换的系统命令——su 1.2 退回上一个用户命令——exit 1.3 普通命令临时授权root身份执行——sudo 1.3.1 为普通用户配置sudo认证 2. 用户/用户组管理 2.1 用户组管理 2.2 用户管理 2.2.1 …

Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录

前言:纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 参考&…

《Python基础》之Python中可以转换成json数据类型的数据

目录 一、JSON简介 JSON有两种基本结构 1、对象(Object) 2、数组(Array) 二、将数据装换成json数据类型方法 三、在Python中,以下数据类型可以直接转换为JSON数据类型 1、字典(Dictionary&#xff09…

若依项目源码阅读

源码阅读 前端代码分析 代码生成器生成的前端代码有两个,分别是course.js用于向后端发送ajax请求的接口代码,另一个是index.vue,用于在浏览器展示课程管理的视图组件。前端的代码是基于vue3elementplus。 template用于展示前端组件别的标签…

C#tabcontrol如何指定某个tabItem为默认页

// Selects tabPage2 using SelectedTab.this.tabControl1.SelectedTab tabPage2; 参考链接 TabControl.SelectedTab 属性 (System.Windows.Forms) | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/api/system.windows.forms.tabcontrol.selectedtab?viewnetfr…

文件比较和文件流

文件比较和文件流 一、文本比较工具 diff1.基本用法1.1输出格式 2.常用选项 二、文件流1.文件的打开模式2.文件流的分类ifstreamofstreamfstrem区别 3.文件流的函数1. 构造函数2. is_open 用于判断文件是否打开3. open4. getline5. close6. get()7. read8. write9. put10. gcou…

【网络篇】HTTP知识

键入网址到网页显示,期间发生了什么? 浏览器第一步是解析URL,这样就得到了服务器名称和文件的路径名,然后根据这些信息生成http请求,通过DNS查询得到我们要请求的服务器地址,然后添加TCP头、IP头以及MAC头&…

【解决安全扫描漏洞】---- 检测到目标站点存在 JavaScript 框架库漏洞

1. 漏洞结果 JavaScript 框架或库是一组能轻松生成跨浏览器兼容的 JavaScript 代码的工具和函数。如果网站使用了存在漏洞的 JavaScript 框架或库,攻击者就可以利用此漏洞来劫持用户浏览器,进行挂马、XSS、Cookie劫持等攻击。 1.1 漏洞扫描截图 1.2 具体…

互联网基础

TCP/IP协议(协议组) 分层名称TCP/IP协议应用层HTTP,FTP,mDNS,WebSocket,OSC...传输层TCP,UDP网络层IP链路层(网络接口层)Ethernet,Wi-Fi... 链路层(网络接口层) 链路层的主要作用…

【分组去重】.NET开源 ORM 框架 SqlSugar 系列

💥 .NET开源 ORM 框架 SqlSugar 系列 🎉🎉🎉 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…

hdlbits系列verilog解答(Exams/m2014 q4d)-89

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 本节实现以下电路。 模块声明 module top_module ( input clk, input in, output out); 思路: 它的输入是一个组合逻辑异或门,将输入和输出异或后输入D触发器,这意味着输出与历史输出及当前输入都有关系,…

Cesium K-means自动聚合点的原理

Cesium K-means自动聚合点的原理 Cesium 是一个开源的 JavaScript 库,用于在 Web 环境中创建 3D 地球和地图应用。它能够处理地理空间数据,并允许开发者对大规模的地理数据进行可视化展示。在一些应用中,尤其是当处理大量地理坐标点时&#…