如何查看外网IP相对应的MAC

如何查看外网IP相对应的MAC,第1张

抱歉,外网IP的MAC地址是不能查看的,更准确的说法是没有途径查看。

原因如下:

1、一般电脑上网的方式都是通过路由器(大型小型不区分),而使用路由器之后所使用的一项技术便是NAT或者称之为PAT,路由两侧地址属于不同网段,而跨网段是无法获取另一个网段IP的mac地址的,因为MAC属于OSI模型中二层,而IP属于三层,跨网段通信,只用得到一个mac地址:网关的MAC。

这样,不管你外面ip地址是什么,都不会出现在你电脑的arp表中,从而你就无法获取对应IP的MAC地址。

2、假如你采用的是电脑直接拨号,获取的是一个外网的IP地址,那么你用arp -a 也只能查看与你相连设备(网关设备)IP地址对应的MAC,其他外网的MAC地址仍旧无法查看。

3、再有一种假设,如果你是一个运营商网络维护人员,能够控制节点设备,仍旧只能查看同网段内的mac ,MAC地址是应用在二层的,并不像IP。如果你在一个小型局域网内获取到MAC会有一定价值,但是外网IP的MAC是没有什么价值的,更重要一个原因是几乎获取不到。

注:NAT/PAT这是一项地址转换技术。能将私有网络地址映射为公网地址,这是国际上解决IPv4地址枯竭的一个方案,也是现在使用比较广泛的技术。

第一种:

private void GetIP()

{

string hostName = DnsGetHostName();//本机

//SystemNetIPAddress[] addressList = DnsGetHostByName(hostName)AddressList;//会警告GetHostByName()已过期,我运行时且只返回了一个IPv4的地址

SystemNetIPAddress[] addressList = DnsGetHostAddresses(hostName);//会返回所有地址,包括IPv4和IPv6

foreach (IPAddress ip in addressList)

{

listBox1ItemsAdd(ipToString());

}

}

第二种:

static string GetLocalIp()

{

string hostname = DnsGetHostName();//得到本机名

//IPHostEntry localhost = DnsGetHostByName(hostname);//方法已过期,只得到IPv4的地址

<SPAN style="WHITE-SPACE: pre"> </SPAN> IPHostEntry localhost = DnsGetHostEntry(hostname);

IPAddress localaddr = localhostAddressList[0];

return localaddrToString();

}

第三种:

string strUrl = "提供IP查询的网站的链接";

Uri uri = new Uri(strUrl);

WebRequest webreq = WebRequestCreate(uri);

Stream s = webreq GetResponse()GetResponseStream();

StreamReader sr = new StreamReader(s, EncodingDefault);

string all = srReadToEnd();

int i = allIndexOf("[") + 1;

//分析字符串得到IP

return ip;

/

我用的是>

如果不想了解,请直接伸手 : android 获取局域网IP与MAC 地址(精简)

开始理清思路:主要使用 linux 两个命令(2017-07-21 fix:这个思路不好,后面使用udp取代毫秒级)

ping: 查询某个ip是否被设备占用

cat  :文本输出命令(其实可以使用 arp,但手机需要root权限)

ping:这个我就不说了,实在不知道的,这次度娘不会骗你的。主要讲讲 arp:这里只简单的介绍,推荐一篇博文: Android 平台上的 ARP 和 ARP欺骗 。我们的cat命令主要为了输出手机本地ARP缓存表, ARP命令 可用于查询本机ARP缓存中IP地址和 MAC地址 的对应关系

可以看到我们电脑中缓存的 ip地址与对应的mac地址,但我们手机上又要怎么获得呢?

哈哈其实到这里基本就结束了,也不算什么详解,目前这个方法还有个缺陷就是,耗时比较长,我计算了一下大概得花10秒才能得到局域网内的所有存在的ip与对应的mac。

还有待改善,其实想先取arp缓存,然后把arp中没有的ip地址通过ping测试,然后再取arp缓存,这样可以减少一部分的ping测试线程,但为了保证arp中ip对应的mac永远是新的,只能每次都循环ping测试所有网段内的ip。如果有更好的想法,希望来怼我。

改变思路:使用udp来替代原先多线程ping

具体怎么玩我就不写了,他人的思路,抄袭过来,有损我英俊的形象,写的还是比较好的。

Android 单线程也能极速刷新并获取局域网设备(IP+MAC)信息, 从4分30S 优化到 0150S 不是梦

如果觉得他的用起来麻烦,我的IpScanner类也更新了,可以直接copy使用,还是简单的。 

奉上项目地址: IpSanner (一个类一个回调就搞定了,简单的)

一、方法一 查询本机IP——窗口查看; 直接单击任务栏最右边的“本地连接”图标,会打开“本地连接状态”对话框。 单击d出对话框中的“支持”选项卡,在下面的“连接状态”中能够看到本机的基本IP信息。再单击“本地连接状态”对话框中的“详细信息”按钮,将d出“网络连接详细信息”对话框。该对话框中能够显示详细的本机网络信息,如IP地址、MAC地址、子网掩码和默认网关及NDS等信息。 二、方法二 查看本机IP——命令查看; 点击屏幕左下角任务栏左边的“开始”菜单,选择“运行”命令。 在d出“的运行”对话框的文本输入框中直接输入“cmd”,单击“确定”按钮,打开黑色背景的DOS“命令提示符”窗口。或者单“开始”按钮,选择“所有程序”,再选择“附件”,再从d出的菜单中选择“命令提示符”,同样能打开“DOS命令提示符”窗口。在DOS“命令提示符”窗口中输入“ipconfig /all”,同样可以查看本机的详细信息。在该结果窗口中,具体显示了本机详细的计算机名称、MAC地址、DHCP、DNS、网关等详细内容。 三、方法三 查看局域网内其它电脑名称和IP; 点击任务栏中的“开始”按钮,选择“所有程序”,再选择“附件”,再选择d出菜单中的“记事本”,打开记事本程序。将以下内容复制到记事本,另存为后缀为bat的批处理文件: COLOR 0A CLS @ECHO Off Title 查询局域网内在线电脑IP :send @ECHO off&setlocal enabledelayedexpansion ECHO 正在获取本机的IP地址,请稍等 for /f "tokens=3 skip=2 delims=: " %%i in ('nbtstat -n') do ( set "IP=%%i" set IP=!IP:~1,-1! ECHO 本机IP为:!IP! goto :next ) :next for /f "delims= tokens=1,2,3,4" %%i in ("%IP%") do set range=%%i%%j%%k ECHO&ECHO 正在获取本网段内的其它在线计算机名,请稍等 ECHO 本网段%range%内的计算机有: for /f "delims=" %%i in ('net view') do ( set "var=%%i" ::查询在线计算机名称 if "!var:~0,2!"=="\\" ( set "var=!var:~2!" ECHO !var! ping -n 1 !var!>nul )) ECHO ECHO 正在获取本网段内的其它在线计算机IP,请稍等 for /f "skip=3 tokens=1, delims= " %%i in ('arp -a') do ECHO IP: %%i 正在使用 ECHO ECHO 查询完毕,按任意键退出 pause>nul 3 在记事本窗口中,点击“文件”菜单,从d出菜单中选择“另存为”命令。 4 在“保存类型”中选择“所有文件”,将“文件名”保存为bat的文件,如“查看局域网在线IPbat”。 5打开刚才保存的“查看局域网在线IPbat”程序,可以看到执行结果。 四、方法四 查看对方电脑mac地址; 如方法二中打开DOS命令提示符窗口,在窗口中输入命令“nbtstat -a IP”,如以上面查到的“1010321”为例,输入“nbtstat -a 1010321”,在查询结果窗口中,我们通过IP就查询到了确切的以下信息:计算机名称、此电脑加入的工作组或域名称、MAC地址。 五、方法五 查看局域网内所有电脑的IP地址和mac地址; 如方法二中打开DOS命令提示符窗口,在窗口中输入命令“arp -a” 。 在查询结果窗口中,就会有其他电脑的IP和MAC地址了,这个PING的是局域网内IP

最简单的方法,安装网管软件

如聚生等等

然后直接点运行,搜索计算机,接着就能看见所有局域网内其他计算机的mac地址和ip,经过还能看见他们访问过什么网,有没有用聊天工具等等,非常方便简单的工具!

MAC地址的查看方式,是按 *** 作系统的不同,所查看的方式不同,以WINDOWS

XP为例有两种。1,在电脑的桌面上选择

开始-运行,输入CMD进入虚拟DOS,然后在DOS下输入IPCONFIG/ALL命令

对应PHYSICAL

ADDRESS

项后的以16进制数就是MAC地址,在上面还有IP的配置,及网关的地址等。另一种方式是

打开本地连接状态,在上面的选项卡上选择支持,然后点击详细信息,就可以看到MAC地址了,MAC地址与IP绑定方式是

在DOS下输入ARP

-S

IP

MAC地址,例如:arp

-s

19216802

80-00-0B-B4-36-70

点击“开始”菜单选择“控制面板”,点击“网络连接”

2

点击“本地连接”选择“状态”,点击“支持”选择“详细信息”,你想要知道的本机的ip地址和MAC地址就完全展示出来了。

END

win7系统查看办法:

1

点击“开始”菜单,选择“控制面板”,选择“网路和Internet连接”

2

选择“更改适配器设置”。也可以右键点击电脑右下方电脑标志,点击“打开网络和共享中心”

3

右键“本地连接”选择“状态”,查看详细信息即可。

END

DOS命令查看方法:

以xp为例:点击“开始”菜单,选择“运行”,输入cmd。

在DOS窗口中输入“ipconfig /all”,即可显示电脑的网路信息。

以上就是关于如何查看外网IP相对应的MAC全部的内容,包括:如何查看外网IP相对应的MAC、如何获取多网卡的IP地址和对应的MAC地址、android 获取局域网IP与MAC 地址 毫秒级(详解)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9497933.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存