php 中 gethostbyaddr 返回的主机名不正确

新手上路,请多包涵

公司网络为AD域环境,想通过 php 的gethostbyaddr() 函数获取到一段IP地址的电脑名称,但通过测试发现gethostbyaddr() 函数返回的电脑名称并非该IP所使用的电脑名称。不知道 gethostbyaddr() 底层的实现原理是什么,望大家赐教。

实验环境:

  • centos 6.9 32bit
  • php 5.6
  • 局域网 AD 域环境

问题说明:

实例代码

$ip = "192.168.32.100"; //ip存在且电脑名称为 it-a20170818.domain.com
$hostname = gethostbyaddr($ip);
echo $hostname;

打印出 $hostname 并不是 it-a20170818.domain.com 而是其他电脑的名称如 hr-a20160818.dommain.com,通过 nslookup hr-a20160818.domain.com 查询到的IP为 192.168.30.100
通过远程确认IP为192.168.30.100的主机名称的确为 hr-a20160818.domain.com
如果通过 gethostbyname 函数访问

$hostname = "it-a20170818.domain.com"; //ip为 192.168.32.100 
$ip = gethostbyname($hostname);
echo $ip;

此时打印的ip为正确的 ip 192.168.32.100

疑惑:

  1. gethostbyaddr() 实现原理是什么?
  2. gethostbyaddr() 虽然获取到的是与指定IP不一致的电脑名称,但是获取到的电脑名称确实是存在于局域网中的
阅读 4.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题