我是靠谱客的博主 尊敬羽毛,最近开发中收集的这篇文章主要介绍linux 广播地址有误,linux ping广播地址无回应,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

看《TCP/IP详解 卷1:协议》第12章 广播和多播 时,说ping可以直接ping广播地址。

局域网发现功能。

具体就是:发现所有连接到路由器的设备。就是发现所有局域网主机。并列出主机名,mac,ip等。

当时网上搜了好长时间,最后发现,这不就是arp局域网内所有ip么,有回应的就用dns得一下域名(当时认为dns也得自己弄)。所以网上搜源码搜到了这个牛逼东西:arp-scan 在这里mark一下。

结果发现,编译时要使用libpcap库,运行需要管理员权限。

方案被否了,得自己用C/C++实现。心中一万个草泥马飞过。。。

之后又搜源码,结果发现,linux的socket函数要想发arp包就得要root权限。(socket函数,第二个参数如果是SOCK_RAW或SOCK_PACKET都需要root权限)

经讨论说不能给root权限,C使用arp行不通,还是java自己ping所有ip。(心里那个暗爽啊。哈哈哈)

剩下的任务就是怎么用dns查主机名了。

又经过一顿搜啊搜,发现Unix有个库函数gethostbyaddr就是根据跟定ip地址,返回对应的主机域名。它其实就是实现了dns解析器功能。(哎,基本常识都得搜半天,没文化真可怕啊)

后来又想了下,这种通用函数android能没有封装??结果查了下发现android确实有对应java类InetAddress的getByAddress函数。

最后。。。

最后,这个需求就跟自己没啥事了。。。

所以从上面的ping局域网内所有ip(根据子网掩码算出),是否可以ping广播地址??

linux运行如下命令:

$ ping 192.168.1.255

Do you want to ping broadcast? Then -b

$ ping 192.168.1.255 -b -c 1

WARNING: pinging broadcast address

PING 1192.168.1.255 (192.168.1.255) 56(84) bytes of data.

— 192.168.1.255 ping statistics —

1 packets transmitted, 0 received, 100% packet loss, time 10000ms

没有任何回应。

从baidu搜了半天,也没找出个所以然来。再次鄙视baidu和我天朝最牛B的墙。

还是自己找方法解决吧。

在该子网内的另一台机器运行tcpdump,然后再ping:

$ tcpdump -n icmp

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

17:30:21.300465 IP 192.168.1.89 > 192.168.1.255: ICMP echo request, id 41295, seq 1, length 64

发现tcpdump机器确实收到了ping,但是没reply。

最后几经挫折,发现linux有个配置项控制是否要回应icmp的广播。

$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

在使用ping就收到了该主机的回复了

$ ping 192.168.1.255 -b -c 1

WARNING: pinging broadcast address

PING 192.168.1.255 (192.168.1.255) 56(84) bytes of data.

64 bytes from 192.168.1.121: icmp_seq=1 ttl=64 time=2.11 ms

— 192.168.1.255 ping statistics —

1 packets transmitted, 1 received, 0% packet loss, time 2ms

rtt min/avg/max/mdev = 2.117/2.117/2.117/0.000 ms

最后mark一个文章:Linux网络服务参数配置说明及实战

最后

以上就是尊敬羽毛为你收集整理的linux 广播地址有误,linux ping广播地址无回应的全部内容,希望文章能够帮你解决linux 广播地址有误,linux ping广播地址无回应所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部