ARP表是一个动态表,存储在计算机当中,目的是做一个ip地址与mac地址的对应。
假设在同一子网段,计算机A与计算机B通信
计算机A的ip地址192.168.0.1 MAC地址AA-AA-AA-AA-AA-AA
计算机B的ip地址已知192.168.0.2 MAC地址未知
那么计算机A就要发起一个ARP查询,“谁能告诉我,192.168.0.2的MAC地址是多少?”
很显然通过交换机的时候,交换机并不能看懂ip地址,所以要广播这个信息,就把这个查询信息发到除发送端的其它所有端口。(当然,交换机还要记住192.168.0.1主机的mac地址)
其它所有的计算机看到这个广播发现目的ip不是自己,就把这个数据丢弃,只有192..168.0.2的计算机B会响应,并发送回执,告诉计算机A,“我是192.168.0.2,我的MAC地址是AA-AA-AA-AA-AA-AB”当通过交换机,交换机记住从计算机B端口过来的MAC地址,并通过已知的A计算机MAC地址,发动到连接计算机A的端口。(此时不再广播)计算机A与计算机B都知道对方的ip和MAC地址,开始通信。
我相信有些人已经知道答案了。

三层交换机肯定是有arp表的,这个毋庸置疑,因为有路由功能嘛,牵扯到ip,那肯定是有的,可能大家对2层是否有,有点疑问,一般来说2层是没有的,所谓arp是地址解析协议,而地址指的是ip解析成mac,可2层跟ip没关啊,所以一般来说是没的,但当我们配置了管理vlan时,比如int vlan 1 ,然后ip add ······,这是用来管理的,这时就产生了arp表

什么叫ARP表啊!什么叫MAC地址表啊!
你们搞清楚没有啊!二层交换有MAC地址表,没有ARP表。ARP表里面有IP地址,二层设备不会有IP地址的。所以二层交换机不会有ARP表。有MAC表。一定要搞清楚。
谈论学术的一定要严谨啊!定义一定要清楚,不然很难说清楚啊!

三层交换机肯定是有arp表的,这个毋庸置疑,因为有路由功能嘛,牵扯到ip,那肯定是有的,可能大家对2层是否有,有点疑问,一般来说2层是没有的,所谓arp是地址解析协议,而地址指的是ip解析成mac,可2层跟ip没关啊,所以一般来说是没的,但当 ... [/quote]非常赞同,二层交换机有个管理vlan,默认是关闭的,如果开启之后,就有了arp表项了。
arp 是地址解析协议,实现通过IP地直得知MAC地址。
工作原理的话,我就不都说了,上面的兄弟们解释得非常清楚了。
在每台安装有[url=/view/7649.htm][color=#0000ff]TCP/IP协议[/color][/url]的电脑里都有一个ARP缓存表,表里的IP地址与[url=/view/69334.htm][color=#0000ff]MAC地址[/color][/url]是一一对应的。
我们可以在命令提示符下输入:arp -a 查看本机电脑arp 缓存表。
详细参数的话,可以?试看。
arp缓存并不长久存在,ARP缓存表采用了老化机制(即设置了生存时间TTL),在一段时间内(一般15到20分钟)如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

层二设备的只有 PORT---MAC表
当一个层二交换机启动的时候,它会自动去侦测那些联系到自己端口上的 机器的MAC地址的.从而形成了一个PORT--MAC这样一个对应表
层三设备才有 arp表~

简单来说,ARP这个协议谁也说不准,它是个3层协议但是工作在2层,交换机确切的说是有MAC地址表,当主机要经过2层设备访问的话,先查找它内部的ARP缓存表,如果没有,就发一个广播包,里面携带目的的IP地址,如果对应IP地址的主机看到有人叫它的时候,它才给以回应,发送回包,包里面有本机的MAC地址,这样被交换机放入MAC表中,关于20楼兄弟说的SVI那是一个特例。。。严格意义上来说不是ARP表,ARP这个协议谁也说不好是具体2层的还是3层的,具体说就是2层靠MAC表转发,由于TCP协议是需要ACK的,所以也能导致一些ARP欺骗的问题

要弄明白二三转发原理和流程,必须弄清楚ARP表、交换机转发表和路由表,这是数据转发的依据。由于ARP表和交换机转发表对于管理员来说是透明的,一般很忽视其工作原理,这是我需要注意的学习地方。所以今天主要是弄明白ARP表、交换机转发表、路由表。  

  数据最终转发依靠的都是ARP表,他是数据转发最基础的依据。ARP直接将硬件地址和网络地址相互映射。

  数据最终转发依靠的虽然不是路由表,但路由表是一个向导,指引着数据的走向,让数据能跨越网络,ARP表是没有掩码的,是不区分网段的。 

ARP表 MAC表 路由表的更多相关文章

  1. 转发表(MAC表)、ARP表、路由表总结

    原文:https://cloud.tencent.com/developer/article/1173761 转发表(MAC表).ARP表.路由表总结 我是东东东   发表于我是东东强订阅 1.5K ...

  2. Winpcap网络编程九之Winpcap实战,ARP协议获得MAC表及主机通信

    大家好,本次我们须要完毕的任务是: 完毕两台主机之间的数据通信(数据链路层) 仿真ARP协议获得网段内主机的MAC表 使用帧完毕两台主机的通信(Hello! I'm -) 声明:本文章的目的是为大家的 ...

  3. ARP解析MAC地址的全过程(ARP的工作机制)

    以太网环境下,同一个网段的主机之间需要互相知道对方的MAC地址,才能访问. TCP/IP协议栈从上层到下层的封装过程中,第三层封装需要知道目的IP,第二层封装需要知道目的MAC. 目的IP一般由用户手 ...

  4. MSSQLServer 纵向表转横向表 横向表转纵向表 行转列 列转行

    MSSQLServer 纵向表转横向表  横向表转纵向表 建表语句及插入数据语句: CREATE TABLE Test_y( ) NULL, ) NULL, [Grade] [int] NULL ) ...

  5. EXP/IMP迁移案例,IMP遭遇导入表的表空间归属问题

    生产环境: 源数据库:Windows Server + Oracle 11.2.0.1 目标数据库:SunOS + Oracle 11.2.0.3 1.确认迁移需求:源数据库cssf 用户所有表和数据 ...

  6. SQL Server 2008 R2——TRUNCATE TABLE 无法截断表 该表正由 FOREIGN KEY 约束引用

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

  7. SQL表关联赋值、系统表、表数据删除

    1. 表与表的关联赋值(用于表与表之间有关联字段,数据互传) 双表关联赋值 UPDATE #B SET #B.D=#A.B from #B inner join #A on #B.C=#A.A 多表关 ...

  8. mysql分表和表分区详解

    为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...

  9. ORACLE修改用户表所属表空间的步骤

    ORACLE修改用户表所属表空间的步骤 使用脚本进行修改.据目前所了解,正长情况下需要修改表的空间和表的索引的空间,如果涉及到BOLB字段的表,修改的方式又不一样了!正常情况下的修改脚本:1.修改表的 ...

随机推荐

  1. Python3:input()输入函数的用法

    Python3:input()输入函数的用法 一.简介 input这个函数,第一个参数是提示语,它默认是空的.在我们使用input的时候,会从标准输入中读取一个string,即字符串(请注意,这里很重 ...

  2. Linux下挂载windows的共享文件夹

    环境说明: 由于领导要求:现需要将某Linux服务器下的一个文件移动到某windows服务器下(服务器均在机房托管,要远程操作) 由于操作为一次性,则决定在windows下建立一个共享文件夹,linu ...

  3. Pandas稀疏数据

    当任何匹配特定值的数据(NaN/缺失值,尽管可以选择任何值)被省略时,稀疏对象被“压缩”. 一个特殊的SparseIndex对象跟踪数据被“稀疏”的地方. 这将在一个例子中更有意义. 所有的标准Pan ...

  4. TF卡.购买(20180925)

    1.准备买 2个 一个 用于 老的手机"红米Note",一个用于现在我的手机"红米Note4X". 之前,这2个手机都是用的 那个坏掉的64g的tf卡 2.刚问 ...

  5. java加载jdbc驱动三种方式的比较

    一.引言 平时连接数据库的时候首先要加载jdbc驱动,这一步骤其实有三种方式,他们的区别?优劣? 二.快速了解三种加载方式 Class.forName(“com.mysql.jdbc.Driver”) ...

  6. Spring mvc使用不了jstl 或者 Spring mvc不解析jstl

    最近我搭了一个maven的springMVC的项目发现前端怎么也识别不了我的jstl,我查询了很多方法,导致这种情况的原因有很多 1.jar引用不对,maven中的正确导入可用的jar <dep ...

  7. python脚本2_输入2个数比较大小后从小到大升序打印

    #输入2个数,比较大小后,从小到大升序打印 a = input('first: ') b = input('second: ') if a > b: print(b,a) else: print ...

  8. python中zip()函数的用法

    一. 定义 zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少内存 如果各个迭代器的元素个数不一致,则返回列表长度与最 ...

  9. 更改当前启动项,开关Hyper-V

    switch-HyperV.bat @echo off "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\ ...

  10. ndk+opencv安装+各种错误分析(新版安装,编译不需要Cygwin 和Sequoyah了)

    鼓捣了两三天,终于成功算跑通了一个简单的程序.下面说说具体的安装: 因为从同学那里拷过来的eclipse 就有adt cdt 的插件.所以这两个就不用再安装了.(需要的话自己安装) 具体说下安装过程: ...