怎样查看ARP列表
- 格式:doc
- 大小:51.00 KB
- 文档页数:1
arp表和mac表第一篇:ARP表的基本概念与作用ARP,即地址解析协议(Address Resolution Protocol),是一种互联网协议,它用于将IP地址转换为物理地址(MAC地址)。
ARP协议最初为了解决早期网络中的主机寻址问题而设计,它在网络中扮演着非常重要的角色。
ARP 协议建立了IP地址和MAC地址之间的转换关系,这种转换关系在数据传输过程中非常重要,因为数据在传输过程中必须知道目标物理地址而不是仅仅知道目标IP地址。
ARP表是指保存在计算机或者网络设备中的一个表格,它记录了IP地址和MAC地址之间的转换关系。
ARP表的作用是优化网络通信效率,当网络设备要向某个主机发送数据时,通过ARP表可以快速地查询到该主机的物理地址,从而避免每次通信都要进行地址解析的过程,提高了通信的速度和效率。
ARP表的构成一般包括四个字段:IP地址、物理地址、更新时间和接口编号。
其中IP地址和物理地址分别表示网络设备的IP地址和物理地址,更新时间表示该记录最后一次更新的时间,接口编号表示该记录对应的网络接口编号。
当网络设备收到一个数据包时,它会先查询ARP表,查找该数据包发送目的主机的物理地址,如果该地址不存在或者已经过期,则会向该主机发送ARP请求,获得其最新的物理地址,并更新到ARP表中。
总之,ARP表是网络通信中非常重要的一部分,它直接关系到网络通信的效率和稳定性。
在实际应用中,网络管理人员需要经常监控和维护ARP表,及时更新过期的记录,以保证网络通信的畅通。
第二篇:MAC表的基本概念与作用MAC表,即Media Access Control表,是指网络交换机中保存的一个表格,用于记录交换机端口上连接的设备的MAC 地址,以便于交换机将数据包发送到正确的端口上。
在以太网中,所有的数据包发送和接收都是通过MAC地址来完成的。
当一个网络设备向交换机发送数据包时,交换机会先查询MAC表,查找对应目的MAC地址的接口,然后将数据包发送到相应的接口上,从而实现数据包的正确传输。
怎样查看自己的IP地址是否被占用IP地址都是自动获取的,都在局域网中,发现现在的IP地址和以前的不一样了,所以造成不能上网,那么怎样查看自己的IP地址是否被占用呢?下面店铺就为大家带来了查看自己的IP地址是否被占用的方法。
查看自己的IP地址是否被占用的方法一、原始ping法第一个方法比较简单,而且受环境限制比较大。
众所周知在没有安装防火墙和设置过滤规则的计算机上都容许ICMP协议数据包的通过,那么可以通过“ping ip地址”这个命令来查看该IP地址是否有计算机使用。
通过任务栏的“开始-运行”,输入CMD后回车进入命令行模式。
假设公司网络是192.168.1.0/255.255.255.0,那么可以通过ping 192.168.1.1,ping 192.168.1.2......ping 192.168.1.254来测试IP地址是否被占用。
这种方法遇到计算机上安装了防火墙对ICMP协议进行过滤的话,或者公司交换机和路由器上对ICMP实施ACL访问控制列表过滤的话就不可行了。
因此这个方法受的局限比较大,一般测试的成功率不高,很容易把安装了防火墙的计算机对应的IP地址认为没有被使用。
查看自己的IP地址是否被占用的方法二、扫描器扫描法由于扫描器扫描时并不是仅仅使用ICMP协议进行ping,可以设置,让扫描器多扫描几个端口,多扫描几个服务。
这样即使计算机上安装了防火墙或者交换机上有访问控制列表过滤ICMP协议,只要该计算机开放了某些端口或某些服务,就不会出现漏报的问题。
通过扫描器扫描出来的IP地址列表还可以导出成HTML文件或TXT文件,这样方便保存和统计。
使用扫描器扫描法可以查看出网络中几乎全部计算机使用的IP地址,但是对于那些极个别的设置了防火墙的复杂规则,过滤了大部分常用端口和常见服务的计算机来说,还是会或多或少的出现漏报或错报的问题,再加上扫描器扫描法还需要我们下载专门的工具,所以也给操作上带来了不方便。
使⽤ARP获取局域⽹内设备IP和MAC地址根据Arp列表数据,查询本地设备在线状态使⽤ arp -a 获得所有内⽹地址,⾸先看Mod对象public struct MacIpPair{public string HostName;public string MacAddress;public string IpAddress;public override string ToString(){string str = "";str += $"HostName:{HostName}\t{IpAddress}\t{MacAddress}";return str;}}其次看看查询⽅法:public List<MacIpPair> GetAllMacAddressesAndIppairs(){List<MacIpPair> mip = new List<MacIpPair>();System.Diagnostics.Process pProcess = new System.Diagnostics.Process();pProcess.StartInfo.FileName = "arp";pProcess.StartInfo.Arguments = "-a ";eShellExecute = false;pProcess.StartInfo.RedirectStandardOutput = true;pProcess.StartInfo.CreateNoWindow = true;pProcess.Start();string cmdOutput = pProcess.StandardOutput.ReadToEnd();string pattern = @"(?<ip>([0-9]{1,3}\.?){4})\s*(?<mac>([a-f0-9]{2}-?){6})";foreach (Match m in Regex.Matches(cmdOutput, pattern, RegexOptions.IgnoreCase)){mip.Add(new MacIpPair(){MacAddress = m.Groups["mac"].Value,IpAddress = m.Groups["ip"].Value});}return mip;}在写个调⽤就可以了:class Program{static void Main(string[] args){var arp = new Comm.ArpHelper();var i = arp.GetLocalIpInfo();Console.WriteLine(i.ToString());var l = arp.GetAllMacAddressesAndIppairs();l.ForEach(x =>{//Console.WriteLine($"IP:{x.IpAddress} Mac:{x.MacAddress}");Console.WriteLine(x.ToString());});Console.WriteLine("\r\n==================================================\r\n");Console.WriteLine("本地⽹卡信息:");Console.WriteLine(arp.GetLocalIpInfo() + " == " + arp.getLocalMac());string ip = "192.168.68.42";Console.Write("\n\r远程 " + ip + " 主机名信息:");var hName = arp.GetRemoteHostName(ip);Console.WriteLine(hName);Console.WriteLine("\n\r远程主机 " + hName + " ⽹卡信息:");string[] temp = arp.getRemoteIP(hName);for (int j = 0; j < temp.Length; j++){Console.WriteLine("远程IP信息:" + temp[j]);}Console.WriteLine("\n\r远程主机MAC :");Console.WriteLine(arp.getRemoteMac("192.168.68.21", "192.168.68.255"));Console.WriteLine(arp.getRemoteMac("192.168.68.21", "192.168.68.44"));Console.ReadKey();}}=====================================================================c# 通过发送arp包获取ip等信息利⽤dns类和WMI规范获取IP及MAC地址在C#编程中,要获取主机名和主机IP地址,是⽐较容易的.它提供的Dns类,可以轻松的取得主机名和IP地址.⽰例:string strHostName = Dns.GetHostName(); //得到本机的主机名IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IPstring strAddr = ipEntry.AddressList[0].ToString(); //假设本地主机为单⽹卡在这段代码中使⽤了两个类,⼀个是Dns类,另⼀个为IPHostEntry类,⼆者都存在于命名空间中.Dns类主要是从域名系统(DNS)中检索关于特定主机的信息,上⾯的代码第⼀⾏就从本地的DNS中检索出本地主机名.IPHostEntry类则将⼀个域名系统或主机名与⼀组IP地址相关联,它与DNS类⼀起使⽤,⽤于获取主机的IP地址组.要获取远程主机的IP地址,其⽅法也是⼤同⼩异.在获取了IP地址后,如果还需要取得⽹卡的MAC地址,就需要进⼀步探究了.这⾥⼜分两种情况,⼀是本机MAC地址,⼆是远程主机MAC地址.⼆者的获取是完全不同的.在获取本机的MAC地址时,可以使⽤WMI规范,通过SELECT语句提取MAC地址.在.NET框架中,WMI规范的实现定义在System.Management命名空间中.ManagementObjectSearcher类⽤于根据指定的查询检索管理对象的集合ManagementObjectCollection类为管理对象的集合,下例中由检索对象返回管理对象集合赋值给它.⽰例:ManagementObjectSearcher query =new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration") ; ManagementObjectCollection queryCollection = query.Get();foreach( ManagementObject mo in queryCollection ){if(mo["IPEnabled"].ToString() == "True")mac = mo["MacAddress"].ToString();}获取远程主机的MAC地址时,需要借⽤API函数SendARP.该函数使⽤ARP协议,向⽬的主机发送ARP包,利⽤返回并存储在⾼速缓存中的IP和MAC地址对,从⽽获取远程主机的MAC地址.⽰例:Int32 ldest= inet_addr(remoteIP); //⽬的ipInt32 lhost= inet_addr(localIP); //本地iptry{Int64 macinfo = new Int64();Int32 len = 6;int res = SendARP(ldest,0, ref macinfo, ref len); //发送ARP包return Convert.ToString(macinfo,16);}catch(Exception err){Console.WriteLine("Error:{0}",err.Message);}return 0.ToString();但使⽤该⽅式获取MAC时有⼀个很⼤的限制,就是只能获取同⽹段的远程主机MAC地址.因为在标准⽹络协议下,ARP包是不能跨⽹段传输的,故想通过ARP协议是⽆法查询跨⽹段设备MAC地址的。
共享一个查找IP所在交换机端口的方法作为网络管理员,在单位或者学校的局域网里,经常会遇见,知道IP却找不到它位置的事情比如内网里有一台设备中了arp欺骗病毒,整个内网访问internet速度明显下降,用软件抓包知道了中毒主机的IP地址,就需要找到它在哪里了,可以用以下的方法(针对思科交换机)通过IP地址查端口目标地址,例如192.168.3.48在主干交换机上ping 192.168.3.48确保能ping通使用:show arp | include 192.168.3.48(在arp列表里查找到这个IP对应的mac地址)显示出:Internet 192.168.3.48 0 000d.874a.0c52 ARPA Vlan30得到所连接交换机接口的mac地址:000d.874a.0c52再用:show mac-address-table dynamic add 000d.874a.0c52 (在mac地址列表里找出m ac来源端口)显示:Unicast Entriesvlan mac address type protocols port-------+---------------+--------+---------------------+--------------------30 000d.874a.0c52 dynamic ip FastEthernet4/12连接的是4/12端口,但是不能保证目标就是接在这个端口用:show cdp nei(查看跟这台交换机相链接的网络设备)看到:switch9 Fas 4/12 123 S I WS-C2950-2Fas 0/24这个端口连接的是交换机用:show cdp ent *(查看跟这台交换机链接设备的详细信息)得到该交换机的IP:192.168.3.214telnet到192.168.3.214重复上面动作,输入:show mac-address-table dynamic add 000d.874a.0c52显示:Mac Address Table------------------------------------------Vlan Mac Address Type Ports---- ----------- ---- -----30 000d.874a.0c52 DYNAMIC Fa0/2Total Mac Addresses for this criterion: 1看到接口为Fa0/2,而且只有一个动态的mac地址,说明就是这个接口了目标最后被确定接在一台2950的2口上这样目标IP与交换机链接的位置就找到了,管理员可以采取相应的措施,比如关闭端口来隔绝病毒机--------------------------------------------------------------------------------------------------------------------------------------------------相反的,如果你去机房看到了某个服务器,链接在交换机的某个端口上,但是设备标签上没有任何信息,想知道服务器的IP,应该怎样做呢?看看下面的步骤:先去机房确定机器连接在交换机的哪个端口上,例如0/2口在那台交换机上用命令:show mac add显示出它的Mac Address Table从列表里找到0/2口对应有哪些mac地址例如:000d.874a.0c52 DYNAMIC Fa0/20011.5be0.dd61 DYNAMIC Fa0/20015.c510.12a3 DYNAMIC Fa0/2使用nmap软件输入例如:nmap -oX maclist.xml -sP 192.168.3.1/24的命令创建含有IP地址和mac地址的列表在列表里搜索上面的三个mac地址就能找到相应的IP地址查询结果:000d.874a.0c52 DYNAMIC Fa0/2 192.168.3.480011.5be0.dd61 DYNAMIC Fa0/2 192.168.3.84 / 0015.c510.12a3 DYNAMIC Fa0/2 192.168.3.49 / zhounianou.xxxxcom另外在交换机上使用:show ip arp H.H.H也可以看出内网IP,但是不总管用以上方法不能查出外网IP,只使用于内网,所以在使用nmap这样的软件时,主机一定是要接在搜索网段里的,可以在交换机上用show vlan 看到目标服务器所在端口是在哪个网段里以上均是我平时工作总结出来的方法,经常会用到,不光是找中毒的机器,如果哪位同行有类似的经验希望也能共享一下~~~。
简单PING法网络中查看某个计算机是否在线的最简单的办法就是ping该计算机对应的IP地址。
例如想查看192.168.1.1这台计算机是否已经在线。
点击“开始/运行”输入“cmd”进入命令行命令提示符状态,在命令行模式中输入“ping 192.168.1.1即可,如果ping得通就说明该IP地址对应的计算机已经在线。
ARP缓存法如果仅仅使用ping法来判断网络中计算机的存在是不太严谨的,因为防火墙或者过滤规则,会使ping无法返回正确的信息,也就是说如果按照上面介绍的方法ping了对方IP地址不通,但对方仍然可能会在线,不过通过ARP缓存可以解决这个问题。
防火墙或者过滤包的方法也无法禁止ARP的查看,远程计算机不返回Ping 成功的消息但会告诉本地计算机该IP地址对应的MAC地址。
这样就可以通过ARP 缓存信息来查看了。
如果能看到该IP地址对应了MAC地址说明该计算机在线,相应的MAC地址没有出现在ARP缓存表中则表明该计算机不在线。
首先按照上面介绍的ping法来检测某IP地址的计算机是否在线,然后在ping返回信息为不通的情况下,在命令提示符下输入“arp –a”查看本地ARP缓存列表,看对应的IP是否得到了MAC地址信息。
批处理法利用上述原理,可以通过建立批处理的办法,批量检测局域网中在线的机器。
例如要查看192.168.1.*这个网段中有哪些地址在线。
在桌面上点鼠标右键新建一个文本文件后输入如下代码:FOR /L %%i IN (0,1,255) Do ping 192.168.114.%%i -n 1arp -a -> IP.txt将该文件保存为.bat文件,双击这个批处理文件将自动搜索网段中的所有IP,并且将发现出的ARP信息都保存到ip.txt文件中。
笔者探测了192.168.114.1到192.168.114.10这十个IP得到了如图1的文档。
可以看出,两个IP返回了MAC地址,说明它们是在线的。
解释arp -a命令的意义
arp -a命令的意义在于显示和修改“地址解析协议(ARP)”缓存中的项目。
ARP是重要的TCP/IP协议,用于确定对应IP地址的网卡物理地址。
ARP缓存中包含一个或多个表,用于存储IP地址及其经过解析的以太网或令牌环物理地址。
这些表对于加快网络通信速度和提高效率非常有用。
使用arp -a命令,可以查看本地计算机或另一台计算机的ARP高速缓存中的当前内容。
此外,还可以用人工方式输入静态的网卡物理/IP地址对,这有助于减少网络上的信息量。
按照缺省设置,ARP高速缓存中的项目是动态的,每当发送一个指定地点的数据报且高速缓存中不存在当前项目时,ARP便会自动添加该项目。
arp-scan用法
ARP-Scan是一个用于局域网内计算机查找的小工具,它使用ARP 协议发送ARP弹幕,收集局域网内的IP地址和物理地址的映射表。
ARP-Scan的常用用法如下:
(1)运行arp-scan--localnet
此命令会扫描当前网络,获得当前网络内所有IP地址以及对应的物理地址信息。
(2)运行arp-scan --interface=<接口名称>
此命令会扫描指定接口名称的网络,获得所有IP地址以及对应的物理地址信息。
(3)运行arp-scan --gateway
此命令会扫描当前网络,获得网关IP地址及物理地址信息。
(4)运行arp-scan --retry-count=<数量>
此命令会重复发送ARP报文,直到收到指定数量的回复报文。
(5)运行arp-scan --ignoredups
此命令会忽略重复的回复报文,只显示每个主机的一条信息。
(6)运行arp-scan --write=<文件名>
此命令会将扫描结果写入指定的文件中。
(7)运行arp-scan --help
此命令会显示arp-scan命令的帮助信息,包括所有可用的用法及描述。
实验一 ARP协议原理分析1、ARP协议简介ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。
IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包。
因此,必须把IP目的地址转换成以太网目的地址。
在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。
ARP协议用于将网络中的IP地址解析为的硬件地址(MAC地址),以保证通信的顺利进行。
1. ARP报头结构ARP的报头结构,如图1所示。
硬件类型协议类型协议长度操作类型硬件地址长度发送方的硬件地址(0-3字节)源物理地址(4-5字节)源IP地址(0-1字节)源IP地址(2-3字节)目标硬件地址(0-1字节)目标硬件地址(2-5字节)目标IP地址(0-3字节)(图1 ARP/RARP报头结构)硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;发送方IP(0-1字节):源主机硬件地址的前2个字节;发送方IP(2-3字节):源主机硬件地址的后2个字节;目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;目的IP(0-3字节):目的主机的IP地址。
2. ARP的工作原理ARP的工作原理如下:1. 首先,每台主机都会在自己的ARP缓冲区 (ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。
arp列表不会自动获取到ip摘要:1.问题描述2.原因分析3.解决方案4.总结正文:【1.问题描述】在一些网络环境中,管理员可能遇到了ARP 列表无法自动获取IP 地址的问题。
ARP(Address Resolution Protocol)是用于将IP 地址解析为MAC 地址的协议,当网络中的设备需要与其他设备通信时,会通过ARP 请求广播来获取目标设备的MAC 地址。
然而,有时候ARP 列表并不能正确获取到目标设备的IP 地址,这给网络管理和维护带来了困扰。
【2.原因分析】ARP 列表无法自动获取IP 地址的原因可能有以下几点:2.1 ARP 缓存问题:ARP 缓存是网络设备用于存储最近收到的ARP 响应的内存空间。
当缓存满或者缓存中的数据失效时,设备可能无法正确获取到目标设备的IP 地址。
2.2 网络设备配置问题:如果网络设备上的ARP 配置不正确,也可能导致无法获取到目标设备的IP 地址。
例如,设备可能没有正确设置ARP 请求和响应的间隔时间,导致ARP 列表无法及时更新。
2.3 路由器问题:当网络中的路由器出现故障或者配置不当时,可能导致ARP 请求无法正确传递到目标设备,从而影响ARP 列表的获取。
【3.解决方案】针对ARP 列表无法自动获取IP 地址的问题,可以采取以下措施进行解决:3.1 刷新ARP 缓存:尝试刷新网络设备上的ARP 缓存,让设备重新发送ARP 请求并更新ARP 列表。
3.2 检查网络设备配置:检查网络设备上的ARP 配置是否正确,如ARP 请求和响应的间隔时间、ARP 代理等设置。
3.3 检查路由器配置:检查网络中的路由器配置是否正确,确保ARP 请求可以正确传递到目标设备。
3.4 优化网络环境:优化网络环境,提高网络设备的性能和稳定性,减少网络拥堵和故障的发生。
【4.总结】当遇到ARP 列表无法自动获取IP 地址的问题时,首先要分析可能的原因,然后针对性地采取措施进行解决。
TCPIP协议之ARP寻址ARP协议:前⾯讲了⽹络层的寻址是通过IP地址来做的。
其实⼀个数据包寻址包含两个部分:1 IP寻址。
2 ARP寻址。
ARP寻址是⽤在数据链路层上的。
我们上⽹的电脑都有⽹卡。
那么在数据链路层的进⾏传递的时候,是没有IP的概念,都是通过找到对端设备的硬件地址,也就是⽹卡地址来做传输。
这个硬件地址标准称为MAC地址。
寻找对⽅MAC地址的过程就是ARP寻址。
如何来查找⾃⼰设备的MAC地址呢,windows下⽤ipconfig /all. Linux下⽤ifconfig的命令就可以查到Windows:linux:MAC地址的报⽂格式如下:MAC地址总共48个bit=6个字节其中以太⽹⽬的地址以及以太⽹源地址就是源测和⽬的侧的MAC地址。
我们来看下ARP寻址的过程。
我们先⽤arp –a查看下192.168.0.5这台设备缓存了了哪些MAC地址。
通过下⾯可以看到只有192.168.0.1的MAC地址。
并没有192.168.0.8的地址我们从192.168.0.5来ping下192.168.0.8。
得到交互流程如下。
1 ⾸先是⼀个ARP⼴播报⽂,由192.168.0.5发出,可以看到带的⼴播报⽂是who has 192.168.0.8 tell 192.168.0.52 随后192.168.0.8回复 192.168.0.8 is at 00:0c:29:de:df:873 找到MAC地址后,随后就是ping报⽂来看下ARP的寻呼报⽂。
在以太⽹头部中带有源MAC地址和⽬的地址,此时ARP寻呼的⽬的地址是全1.也就是255.255.255.255。
带的是⼴播地址。
寻呼所有的主机在ARP报⽂中带有源和⽬的IP地址以及本端的MAC地址继续看下192.168.0.8的应答报⽂:收到第⼀步的寻呼后,192.168.0.8知道了谁在寻呼他,因此在响应报⽂中的⽬的地址⾃然就填写了192.168.0.5并且带上了192.168.0.5的MAC地址⾄此,ARP寻址已完成。