通过简单的实验深入透析子网掩码,网关与ARP协议的作用

2023-11-08

http://www.knowsky.com/383893.html

子网掩码,网关与ARP协议的概念和工作原理是学习网络知识的初学者首先碰到的几个重要的知识点,其中子网掩码与ARP协议的作用和基本工作原理更是思科网络技术学院教程Semester 1中的重点与难点,初学者往往难以一下子把握这些抽象复杂的机理。因此很有必要通过实验来帮助学员更加深入直观地了解子网掩码,网关与ARP协议的基本概念与工作原理。
  
    在对实验进行讲解之前,首先对子网掩码,网关与ARP协议的基本知识进行概述。
  
  子网掩码(Subnet Mask)
  
    子网掩码的主要功能是告知网络设备,一个特定的IP地址的哪一部分是包含网络地址与子网地址,哪一部分是主机地址。网络的路由设备只要识别出目的地址的网络号与子网号即可作出路由寻址决策,IP地址的主机部分不参与路由器的路由寻址操作,只用于在网段中唯一标识一个网络设备的接口。本来,假如网络系统中只使用A、B、C这三种主类地址,而不对这三种主类地址作子网划分或者进行主类地址的汇总,则网络设备根据IP地址的第一个字节的数值范围即可判定它属于A、B、C中的哪一个主类网,进而可确定该IP地址的网络部分和主机部分,不需要子网掩码的辅助。
  
    但为了使系统在对A、B、C这三种主类网进行了子网的划分,或者采用无类别的域间选路技术(Classless Inter-Domain Routing,CIDR)对网段进行汇总的情况下,也能对IP地址的网络及子网部分与主机部分作正确的区分,就必须依靠于子网掩码的帮助。
  
    子网掩码使用与IP相同的编址格式,子网掩码为1的部分对应于IP地址的网络与子网部分,子网掩码为0的部分对应于IP地址的主机部分。将子网掩码和IP地址作"与"操作后,IP地址的主机部分将被丢弃,剩余的是网络地址和子网地址。例如,一个IP分组的目的IP地址为:10.2.2.1,若子网掩码为:255.255.255.0,与之作"与"运算得:10.2.2.0,则网络设备认为该IP地址的网络号与子网号为:10.2.2.0。
  
  网关(Gateway)
  
    在Internet中的网关一般是指用于连接两个或者两个以上网段的网络设备,通常使用路由器(Router)作为网关。在TCP/IP网络体系中,网关的基本作用是根据目的IP地址的网络号与子网号,选择最佳的出口对IP分组进行转发,实现跨网段的数据通信。在Semester 1中只需要对网关的基本作用有所了解,在Semester 2中还将对路由器的工作机理和配置过程作具体的论述。
  
  ARP协议(Address Resolution Protocol)
  
    在以太网(Ethernet)中,一个网络设备要和另一个网络设备进行直接通信,除了知道目标设备的网络层逻辑地址(如IP地址)外,还要知道目标设备的第二层物理地址(MAC地址)。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
  
    当一个网络设备需要和另一个网络设备通信时,它首先把目标设备的IP地址与自己的子网掩码进行"与"操作,以判定目标设备与自己是否位于同一网段内。假如目标设备在同一网段内,并且源设备没有获得与目标IP地址相对应的MAC地址信息,则源设备以第二层广播的形式(目标MAC地址为全1)发送ARP请求报文,在ARP请求报文中包含了源设备与目标设备的IP地址。同一网段中的所有其他设备都可以收到并分析这个ARP请求报文,假如某设备发现报文中的目标IP地址与自己的IP地址相同,则它向源设备发回ARP响应报文,通过该报文使源设备获得目标设备的MAC地址信息。
  
    假如目标设备与源设备不在同一网段,则源设备首先把IP分组发向自己的缺省网关(Default Gateway),由缺省网关对该分组进行转发。假如源设备没有关于缺省网关的MAC信息,则它同样通过ARP协议获取缺省网关的MAC地址信息。
  为了减少广播量,网络设备通过ARP表在缓存中保存IP与MAC地址的映射信息。在一次ARP的请求与响应过程中,通信双方都把对方的MAC地址与IP地址的对应关系保存在各自的ARP表中,以在后续的通信中使用。ARP表使用老化机制,删除在一段时间内没有使用过的IP与MAC地址的映射关系。
  
  实验设计
  
    我们通过设计一个简单的实验来帮助学员更深入直观地理解上述三个知识点所涉及的基本概念与原理。在实验中,我们利用ping命令来检验主机间能否进行正常的双向通信。在"ping"的过程中,源主机向目标主机发送ICMP的Echo Request报文,目标主机收到后,向源主机发回ICMP的Echo Reply报文,从而可以验证源与目标主机能否进行正确的双向通信。
  
  实验的拓扑结构: 如图(1)所示。
   
  A与B为实验用的PC机,使用Windows2000 Professional作操作系统。 
  
  实验方案:
  
    步骤1:
  
    设置两台主机的IP地址与子网掩码:
    A: 10.2.2.2 255.255.254.0
    B: 10.2.3.3 255.255.254.0
    两台主机均不设置缺省网关。
  
    用arp -d命令清除两台主机上的ARP表,然后在A与B上分别用ping命令与对方通信,在A与B上分别显示,
    A: Reply from 10.2.3.3: bytes=32 time<10ms TTL=128
    B: Reply from 10.2.2.2: bytes=32 time<10ms TTL=128
  用arp -a命令可以在两台PC上分别看到对方的MAC地址。
  
    分析:由于主机将各自通信目标的IP地址与自己的子网掩码相"与"后,发现目标主机与自己均位于同一网段(10.2.2.0),因此通过ARP协议获得对方的MAC地址,从而实现在同一网段内网络设备间的双向通信。
  
    步骤2:
  
    将A的子网掩码改为:255.255.255.0,其他设置保持不变。
  
    操作1:用arp -d命令清除两台主机上的ARP表,然后在A上"ping"B,在A上显示结果为:Destination host unreachable
  
    用arp -a命令在两台PC上均不能看到对方的MAC地址。
  
    分析1:A将目标设备的IP地址(10.2.3.3)和自己的子网掩码(255.255.255.0)相"与"得10.2.3.0,和自己不在同一网段(A所在网段为:10.2.2.0),则A必须将该IP分组首先发向缺省网关。由于A的缺省网关没有配置,无法对分组进行正确发送,因此显示"目标主机不可到达"。
  
    操作2:接着在B上"ping"A,在B上显示结果为:
  
     Request timed out
  
     此时用arp -a命令可以在两台PC上分别看到对方的MAC地址。
  
     分析2:B将目标设备的IP地址(10.2.2.2)和自己的子网掩码(255.255.254.0)相"与",发现目标主机与自己均位于同一网段(10.2.2.0),因此,B通过ARP协议获得A的MAC地址,并可以正确地向A发送Echo Request报文。但由于A不能向B正确地发回Echo Reply报文(原因见分析1),故B上显示ping的结果为"请求超时"。在该实验操作中,通过观察A与B的ARP表的变化,可以验证:在一次ARP的请求与响应过程中,通信双方就可以获知对方的MAC地址与IP地址的对应关系,并保存在各自的ARP表中。
  
     步骤3:
  
     在前面实验的基础上,把A的缺省网关设为:10.2.2.1,网关的子网掩码为:255.255.0.0。
     在A与B上分别用ping命令与对方通信,各自的显示结果为:
  
       A: Reply from 10.2.3.3: bytes=32 time<10ms TTL=128
       B: Reply from 10.2.2.2: bytes=32 time<10ms TTL=127
  
     在A与B上分别用tracert命令追踪数据的传输路径,结果分别为:
  
     A: tracert 10.2.3.3
  
     Tracing route to 10.2.3.3 over a maximum of 30 hops:
        1 <10 ms <10 ms <10 ms 10.2.2.1
        2 <10 ms <10 ms <10 ms 10.2.3.3
     Trace complete.
  
     B: tracert 10.2.2.2
  
     Tracing route to 10.2.2.2 over a maximum of 30 hops:
        1 <10 ms <10 ms <10 ms 10.2.2.2
     Trace complete.
  
    分析:如步骤2中的分析,由于A认为B与其不在同一个网段,故从A发向B的报文需要经过网关转发;而B认为A与其在同一个网段,故B不需要经过网关直接向A发送报文,从而可以观察到A与B双向通信时传输路径的不对称性。由于ping命令结果显示的是从目标主机返回的Echo Reply报文的TTL的值,而B收到从A返回的Echo Reply报文经过了网关的转发,所以在B中显示该IP报文的TTL值降为了127(从A发出的IP分组的TTL的初始值为128,每经过一个网关,TTL值减1)。
  
    步骤4:
  
    用arp -d命令清除A中的ARP表,在A上ping一台外网段的主机,如中大的WWW Server(202.116.64.8),再用arp -a可观察到A的ARP表中只有缺省网关的MAC地址信息。
  
    分析:当源主机要和外网段的主机进行通信时,它并不需要获取远程主机的MAC地址,而是把IP分组发向缺省网关,由网关IP分组的完成转发过程。假如源主机没有缺省网关MAC地址的缓存记录,则它会通过ARP协议获取网关的MAC地址,因此在A的ARP表中只观察到网关的MAC地址记录,而观察不到远程主机的MAC地址。
  
  小结
  
    该实验能够比较深入直观地帮助学员了解子网掩码与IP地址的相互作用过程,理解网关在网络中的基本作用以及ARP协议的基本原理与基本工作过程。该实验对环境的要求很低,一般具有LAN上网条件的机房与学生宿舍都能够顺利完成该实验,既适合于网络技术学院进行课堂实验的指导,也适合于学员通过E-Learning后,在宿舍对课件中所讲述的知识点进行实验验证
资料引用:http://www.knowsky.com/383893.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过简单的实验深入透析子网掩码,网关与ARP协议的作用 的相关文章

随机推荐

  • java每日一题

    写两个函数 分别求两个整数的最大公约数和最小公倍数 用主函数调用这两个函数 并输出结果两个整数由键盘输入 输入格式 两个数 输出格式 最大公约数 最小公倍数 样例输入 6 15 样例输出 3 30 import java util Scan
  • Vue3.x中的Provider Inject

    我们可以使用 provide 和 inject 对父组件可以作为其所有子组件的依赖项提供程序 而不管组件层次结构有多深 这个特性有两个部分 父组件有一个 provide 选项来提供数据 子组件有一个 inject 选项来开始使用这个数据 s
  • 字符串的长度

    下面字符串的长度为 考点 转义字符 转义字符的意义 我们使用的字符串都是用 双引号框起来的 电脑只识别双引号内框起来的内容 printf 但是如果想表达的字符是 abc 即如下 printf abc 运行结果 报错 电脑是识别不出来具体哪段
  • pf_ring 5.4.0源码分析

    pf ring 5 4 0源码分析 pf ring是一款开源的高性能抓包库 项目的网址是 http www ntop org products pf ring 同经典的libpcap比较 pf ring提高性能的关键在以下三点 1 pf r
  • Kafka必须掌握的核心技术:java词法分析器代码

    二 常见的并发问题 1 脏读 一个事务读取了另一个事务未提交的数据 2 不可重复读 一个事务对同一数据的读取结果前后不一致 两次读取中间被其他事务修改了 3 幻读 幻读是指事务读取某个范围的数据时 因为其他事务的操作导致前后两次读取的结果不
  • 从今天起,将软件测试学习过程记录起来,一点一滴都要体现在这个博客中

    两年前 我开始做web开发 我的学习过程没有被记录下来 深感遗憾 今年2月28辞职 重新定了方向 做软件测试工作 我希望自己能在这里 记录自己技能成长的点点滴滴 既然选择了 路上再难 我也要坚持到底 不退缩
  • C++基础知识 - 纯虚函数与抽象类

    什么时候使用纯虚函数 某些类 在现实角度和项目实现角度 都不需要实例化 不需要创建它的对象 这个类中定义的某些成员函数 只是为了提供一个形式上的接口 准备让子类来做具体的实现 此时 这个方法 就可以定义为 纯虚函数 包含纯虚函数的类 就称为
  • ScheduledThreadPoolExecutor 及 ThreadPoolExecutor的基本使用及说明

    关于作者 CSDN内容合伙人 技术专家 从零开始做日活千万级APP 专注于分享各领域原创系列文章 擅长java后端 移动开发 人工智能等 希望大家多多支持 目录 一 导读 二 概览 2 1 为什么不推荐使用Executors去创建线程池 三
  • js创建文件发向服务器,Node.js创建HTTP文件服务器的使用示例

    HelloWorld示例只有演示意义 这次我们来搞一个实际的例子 文件服务器 我们使用Node js创建一个HTTP协议的文件服务器 你可以使用浏览器或其它下载工具到文件服务器上下载文件 为了读取文件 我们会用到File System模块
  • 素数p阶群乘法循环群啥意思_如何证明素数阶群都是abel群?

    这个证明需要分两步 1 首先证明素数阶群都是循环群 2 其次证明循环群一定是abel群 我先来证明1 过程如下 首先我们假设p为任意素数 存在一个群G 群G的阶数是 G p 根据拉格朗日定理我们知道 G的所有元素的阶都可以被p整除 这里的关
  • openGauss5.0企业版CentOS一主两从安装

    目录 一 前期规划 二 依赖包安装 三 环境配置 四 安装前准备 五 预安装 六 安装 一 前期规划 主机名 IP CPU 内存 操作系统 python 节点 node4 192 168 5 7 2核 4G CentOS 7 9 3 6 8
  • yolo格式、voc格式、coco格式相互转换(xml,json,txt)

    yolo转voc keras版yolov3训练格式是name box class这种形式 转voc格式使用一下代码 根据别人的代码改了一点 list txt为yolo的标签 转换的voc格式的标签为 xml文件 都存放在Annotation
  • 计算机程序的构造和解释习题3.28

    计算机程序的构造和解释习题3 28 问题 请将或门定义为一个基本功能块 令构造函数为or gate 程序 define or gate in1 in2 out define or action procedure let new value
  • CH4-程序活动单元Activity

    文章目录 目标 一 Activity的生命周期 目标 1 1 生命周期状态 1 2 生命周期方法 二 Activity的创建 配置 启动和关闭 目标 2 1 创建Activity 2 2 配置Activity 2 3 启动和关闭Activi
  • 点击按钮复制想要复制的文字, 三行代码搞定。。 想粘贴到哪里就粘贴到哪里。。...

    UIPasteboard pab UIPasteboard generalPasteboard NSString string 这个方法走完之后有文本框的时候长按就可以粘贴啦 pab setString string 转载于 https w
  • 【数据结构】【王道】【线性表】单链表的实现及基本操作(带头结点)(可直接运行)

    总目录 文章目录 1 基本操作 1 1 结构体定义 1 2 初始化 1 3 判空 1 4 按位序插入 1 5 指定结点后插操作 1 6 指定结点前插操作 1 7 按位序删除 1 8 按位查找 1 9 按值查找 1 10 表的长度 1 11
  • 西门子et200 分布式i/o_西门子S7-1500H冗余系统硬件及网络结构

    1 1 软件及硬件要求 SIMATIC S7 1500 R H冗余PLC的冗余功能集成在冗余PLC操作系统中 不需要安装额外的冗余包 软件要求为STEP7 Professional V15 1 S7 1500H只有一个CPU型号 CPU15
  • 老码农教你学英语

    说说码农应该如何学习英语 达到熟练掌握英语的水平 首先 我要明确一个概念 英语学习是不可能速成的 一心想速成的同学们可以不用往下看了 不然浪费了你们的时间我可担不起责任啊 作为码农的习惯 自然第一个重点是要准确定义 熟练掌握英语 的概念 我
  • redis未授权漏洞详细利用

    redis未授权漏洞详细利用 攻击机 kali 192 168 52 130 靶机 Ubuntu 192 168 52 134 1 启动redis服务 2 未授权访问漏洞测试 3 利用redis写webshell 前提 1 靶机redis链
  • 通过简单的实验深入透析子网掩码,网关与ARP协议的作用

    http www knowsky com 383893 html 子网掩码 网关与ARP协议的概念和工作原理是学习网络知识的初学者首先碰到的几个重要的知识点 其中子网掩码与ARP协议的作用和基本工作原理更是思科网络技术学院教程Semeste