❶ 网络传输中的三张表,MAC地址表、ARP缓存表以及路由表详解
在阐述这几张表之前,有必要先说明一下:
1、交换机工作在数据链路层
说明:本文出现的交换机指的都是二层交换机,带路由功能的三层交换机不在讨论范围
2、路由器工作在网络层
3、交换机有MAC地址表,无ARP表,MAC地址表一般存在在交换机中
4、一般情况下,计算机和路由器既有ARP表,也有路由表
MAC地址表 :在交换机中,存有一张记录局域网主机MAC地址与交换机接口的对应关系的表,交换机就是依据这张表将数据帧转发到指定的目标主机上。 通过下面的阐述,你会对mac地址表有所了解。
上面是交换机、主机A以及主机B的连接图,主机A向主机B发送数据帧的详细过程如下:
1、主机A将一个数据帧发送给交换机,其中源MAC地址为MAC_A,目标MAC地址为MAC_B。
2、交换机收到此数据帧后,首先将数据帧中的源MAC地址MAC_A和对应的接口(接口1) 记录到MAC地址表中。
3、然后,交换机会检查自己的MAC地址表中是否有MAC_B的信息。如果有,则从MAC地址表记录的接口2发送出去;如果没有,则会将此数据帧从非接收接口(接口1)的所有接口发送出去。
4、这时,局域网中所有主机都会收到此数据帧,但是只有主机B收到此数据帧时会响应这个广播,并回应一个数据帧,此数据帧中包含主机B的MAC地址MAC_B。
5、当交换机收到主机B回应的数据帧后,也会记录数据帧中的源MAC地址(也就是MAC_B)和对应接口到MAC表中,此时,交换机就可以把主机A发过来的数据帧发送给主机B了。数据帧的源MAC地址为交换机的MAC地址,目标MAC地址是MAC_B。
上面我们讲解了交换机的工作原理,知道交换机是通过MAC地址通信的,但是我们是如何获得目标主机的MAC地址呢?这时我们就需要使用ARP协议了。ARP协议是工作在网络层的协议,它负责将IP地址解析为MAC地址。在每台主机中都有一张ARP表,它记录着主机的IP地址和MAC地址的对应关系。还是利用上面的图来进行阐述。
1、如果主机A想发送数据给主机B,主机A首先会检查自己的ARP缓存表,查看是否有主机B的IP地址和MAC地址的对应关系。如果有,则会将主机B的MAC地址作为源MAC地址封装到数据帧中。如果没有,主机A则会发送一个ARP请求信息,请求的目标IP地址是IP_B,目标MAC地址是MAC地址的广播帧(即FF-FF-FF-FF-FF-FF),源IP地址为IP_A,源MAC地址是MAC_A。
2、当交换机收到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收接口的所有接口发送出去。
3、当主机B收到此数据帧后,会校对目标IP地址是否是自己,当发现是目标地址是自己,会将主机A的IP地址和MAC地址的对应关系记录到自己的ARP缓存表中,同时会发送一个ARP应答,其中包括自己的MAC地址。
4、主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。而此时交换机已经学习到了主机A和主机B的MAC地址了。
路由器负责不同网络之间的通信,它是当今网络中的重要设备,可以说没有路由器就没有当今的互联网。在路由器中有一张路由表,记录着到不同网段的信息。路由表中的信息分为直连路由和非直连路由。
直连路由 :是直接连接在路由器接口的网段,由路由器自动生成。
非直连路由 :不是直接连接在路由器接口上的网段,此记录需要手动添加或者是使用动态路由生成。
路由表中记录的条目有的需要手动添加(称为静态路由),有的需要动态获取的(称为动态路由)。直连路由属于静态路由。
路由器是工作在网络层的,在网络层可以识别逻辑地址。当路由器的某个接口收到一个包时,路由器会读取包中相应的目标的逻辑地址的网络部分,然后在路由表中进行查找。如果在路由表中找到目标地址的路由条目,则把包转发到路由器的相应接口,如果在路由表中没有找到目标地址的路由条目,那么,如果路由配置默认路由,就科举默认路由的配置转发到路由器的相应接口;如果没有配置默认路由,则将该包丢弃,并返回不可到达的信息。这就是数据路由的过程。
如下图:详细介绍路由器的工作原理
1、HostA在网络层将来自上层的报文封装成IP数据包,其中源IP地址为自己,目标IP地址是HostB,HostA会用本机配置的24位子网掩码与目标地址进行“与”运算,得出目标地址与本机不是同一网段,因此发送HostB的数据包需要经过网关路由A的转发。
2、HostA通过ARP请求获取网关路由A的E0口的MAC地址,并在链路层将路由器E0接口的MAC地址封装成目标MAC地址,源MAC地址是自己。
3、路由器A从E0可接收到数据帧,把数据链路层的封装去掉,并检查路由表中是否有目标IP地址网段(即192.168.2.2的网段)相匹配的的项,根据路由表中记录到192.168.2.0网段的数据请发送给下一跳地址10.1.1.2,因此数据在路由器A的E1口重新封装,此时,源MAC地址是路由器A的E1接口的MAC地址,封装的目标MAC地址则是路由器2的E1接口的MAC地址。
4、路由B从E1口接收到数据帧,同样会把数据链路层的封装去掉,对目标IP地址进行检测,并与路由表进行匹配,此时发现目标地址的网段正好是自己E0口的直连网段,路由器B通过ARP广播,获知HostB的MAC地址,此时数据包在路由器B的E0接口再次封装,源MAC地址是路由器B的E0接口的MAC地址,目标MAC地址是HostB的MAC地址。封装完成后直接从路由器的E0接口发送给HostB。
5、此时HostB才会收到来自HostA发送的数据。
总结:路由表负责记录一个网络到另一个网络的路径,因此路由器是根据路由表工作的。
至此,三张表介绍完毕。
❷ 请教arp缓存表是存放在什么地方的比如是在网卡中的什么地方,还是主机中的设么地方
ARP表是存放在cache上 也就是缓存上,
每个设备上都有ARP缓存表 主机上是用arp -a 其它设备上用 在特权模式下 sh arp 查看
建立ARP表项有:一手工配置 二 动态学习
不是很全 可以上网查下。
❸ ARP缓存表存在哪里
arp缓存表,如果是在交换机或者路由或者终端都是保存在内存中的 ram
❹ 什么是arp缓存表
arp_tbl是一个类型为struct
neigh_table的全局变量,它是一个ARP的缓存表,也称为邻居表。协议栈通过ARP协议获取到的网络上邻居主机的IP地址与MAC地址的对应关系都会保存在这个表中,以备下次与邻居通讯时使用,同时,ARP模块自身也会提供一套相应的机制来更新和维护这个邻居表
❺ 如何查看arp缓存表
ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp
-a”就可以查看ARP缓存表中的内容了,如附图所示。
arp
-a
用“arp
-d”命令可以删除ARP表中所有的内容;
用“arp
-d
+空格+
<指定ip地址>”
可以删除指定ip所在行的内容
用“arp
-s”可以手动在ARP表中指定IP地址与MAC地址的对应,类型为static(静态),此项存在硬盘中,而不是缓存表,计算机重新启动后仍然存在,且遵循静态优于动态的原则,所以这个设置不对,可能导致无法上网
❻ ARP高速缓存表由哪几项组成
高速缓存表用项目数组来实现,每个项目包括以下字段:
状态:表示项目的状态.其值为FREE(已超时),PENDING(已发送请求但未应答)或RESOLVED(已经应答).
硬件类型,协议类型,硬件地址长度,协议地址长度:与ARP分组中的相应字段相同.
接口号:对应路由器的不同接口.
队列号:ARP使用不同的队列将等待地址解析的分组进行排队.发往同一个目的地的分组通常放在同一个队列中.
尝试:表示这个项目发送出了多少次的ARP请求.
超时:表示一个项目以秒为单位的寿命.
硬件地址:目的硬件地址,应答返回前保持为空.
协议地址:目的高层协议地址如IP地址
1、在每一行上最多显示 5 个文件名或列出指定目录及所有回响请求信息到目的将用于系统关闭的定时器设置为 xx 秒。默认值是 20 秒。 -l 注销当前
2、发送DHCPdiscover也可以让电脑发送广播帧,只要给路由器配好DHCP功能然后让pc获取即可。
3、命令式 #show arp 这个可以查看所有arp列表 看这个 一般是看不出来的 建议瞧一下 show ip int bri 看看端口状态列表 如果路由器的网段和PC机不在同一个网段 记得加一条路由 0.0.0.0 .0.0.0.0 接下一条的IP地址 加一条缺省路由
4、1、 添加静态项,例子: arp -s 157.55.85.212 00-aa-00-62-c6-09 2、显示arp缓存表: arp -a 3、删除arp缓存条目: arp -d 157.55.85.212 arp -d * 则删除arp缓存内的所有主机arp表。
❼ 关于交换机上怎么查看ARP缓存表
查看ARP缓存表方法:
一:在Windows下查看ARP缓存信息是通过DOS命令来完成的,点击"开始"菜单,选择"命令",输入
cmd
即可进入命令提示符窗口。
二:在命令提示符窗口中键入
arp
-a
可以查看ARP缓存中的内容。
三:在命令提示符窗口中键入
arp
-d
或
arp
-d
可以删除指定IP或全部的ARP缓存记录。
arp缓存表是指在以太局域网内数据包传输依靠的是MAC地址,IP地址与MAC对应的关系依靠ARP表,每台安装有TCP/IP协议的主机(包括网关)都有一个ARP缓存表。该表中保存这网络中各个电脑的IP地址和MAC地址的对照关系。
正常情况下arp缓存表能够有效的保证数据传输的一对一性。但是ARP协议对应的ARP缓存表维护机制中存在不完善的地方,当主机收到一个ARP的应答包后,它并不验证自己是否发送过这个ARP请求,而是直接将应答包里的MAC地址与IP对应的关系替换掉原有的ARP缓存表里的相应信息。这就是导致arp欺骗的根本原因。
❽ 解释ARP缓存表
在局域网的管理维护中,网管可能经常碰到用户之间不能互访,或者不能上因特网的问题,一般是IP地址设置错误、相关软件设置错误、网线网卡或其他网络产品坏了。但有时在排除以上可能后,问题仍然存在。这个时候我们可以研究一下用户计算机上的ARP缓存表是否有问题.局域网中计算机之间的通信,都是通过正确的ARP表来进行数据通信,而且都是系统自动建立维持的。
1.自己的缓存表有错误
比如在图1中,PC 1中的ARP缓存表有这样一个记录。
IP地址:192.168. 0.9
MAC地址:00-aa-00-62-c6-09
很显然,这时PC 1是无法访问PC 2上的数据,但是它可以和PC 3通信,也可以通过Router上因特网。那么这样一个记录是如何来的呢?这时我们应该想到局域网内有恶意程序或者有人在人为操纵。因为一般来讲ARP表是系统自动维护的,但也可以人为制作一个ARP数据包更新缓存表。比如上例中:如果PC 3向PC 1发送一个ARP数据包,告诉它PC 2的MAC地址是00-aa-00-62-c6-09 ,那么在PC 1里就有一个错误的记录。如果PC 3不停地发送,那么PC 1就一直保持这样一个错误记录,也就一直不能访问PC 2上的数据。如果忽略这个错误就会出现,PC 1能访问除PC 2以外的其他任何一台计算机,能上网,而就是无法访问PC 2,但相应的设置又正确无误,想不出来问题到底出在哪里。
2.对方的缓存表有错误
如果PC 1中的ARP缓存表是正确的记录。
IP地址:192.168. 0.9
MAC地址:00-aa-00-62-c6-08
而PC 3向PC 2不停地发送一个ARP数据包,告诉它错误的PC 1的MAC地址,在PC 2的ARP缓存表就一直保持这样一个记录。
IP地址:192.168. 0.2
MAC地址:00-aa-00-62-c6-09
PC 2就无法访问PC 1。
应对措施
目前,对于这种通过ARP数据包欺骗、破坏缓存表没有很好的应对措施。通过实践我认为有以下几种方法可以应对一下。
1.手动更新ARP缓存表
比如上例中,在PC 1中执行“Arp -a 192.168. 0.9 00-aa-00-62-c6-08”的命令。
但如果有程序在不停地发送错误的ARP数据包,这种方法就无法应付了。
2.查出元兇
在PC 1上,执行ping 192.168.0.9 -t的命令,然后让别人在中心机房把网线一根根拔掉,一旦发现能够ping通后,就能通过那条网线,顺藤摸瓜揪出搞破坏的元兇了。这是最笨也是最实用的方法