免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2577 | 回复: 5
打印 上一主题 下一主题

怎样编程获得以太网下一跳的mac地址 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-21 14:48 |只看该作者 |倒序浏览
想编写一个程序,每次启动的时候自动获得主机下一跳的MAC地址,该怎么编程实现呢?想使用系统api编程,哪些api能达到目的?
可能主机在一个局域网里,那么下一跳MAC就应该是路由器的入口MAC,如果主机有固定公网IP地址同理。
查询arp缓存会得到一大堆数据,查找路由表也是一大堆数据,我想准确的找到下一跳的MAC地址,该怎么办?
感谢给位不吝赐教

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2012-02-21 18:12 |只看该作者
回复 1# EasyIOCP
每次启动的时候自动获得主机下一跳的MAC地址,该怎么编程实现呢?

这块内容在内核的neighbor部分会自动实现啊,为什么要自己获取呢?
可以查询ip neigh的返回值获取。
   

论坛徽章:
0
3 [报告]
发表于 2012-02-21 20:47 |只看该作者
本帖最后由 EasyIOCP 于 2012-02-21 20:47 编辑

回复 2# 瀚海书香


    ip neigh 获得了所有邻居的mac和ip,可能有三四条信息,但是哪个是出口网关的mac呢,怎么确定网接到外网的网关的mac呢?

[root@localhost ~]# ip n
192.168.1.12 dev eth0 lladdr 00:1e:c9:e9:30:b5 STALE
192.168.1.4 dev eth0 lladdr 00:15:c5:e6:44:84 REACHABLE
192.168.1.5 dev eth0 lladdr 00:15:c5:e6:b8:84 REACHABLE
192.168.1.1 dev eth0 lladdr 00:22:a1:01:ab:cb DELAY

论坛徽章:
0
4 [报告]
发表于 2012-02-21 22:00 |只看该作者
主机下一跳是往哪跳。。。
是网关的mac地址吗,那样的话可以通过路由来确定

论坛徽章:
2
申猴
日期:2013-12-26 22:11:31天秤座
日期:2014-12-23 10:23:19
5 [报告]
发表于 2012-02-22 08:44 |只看该作者
本帖最后由 goter 于 2012-02-22 08:44 编辑

ip route get 2.2.2.2
2.2.2.2 via 1.1.1.1 dev eth0  src 1.1.1.2

论坛徽章:
0
6 [报告]
发表于 2012-02-23 21:19 |只看该作者
谢谢 通过 ip route得到网关IP 再通过网关ip在arp缓存找到网关的mac
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP