免费注册 查看新帖 |

Chinaunix

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

如何根据IP找相应的主机名 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-23 10:24 |只看该作者 |倒序浏览
各位大侠:
    我碰到一个问题,比如我有一个网址的IP地址,我用gethostbyaddr()去获取他的域名。为什么返回的都是一些奇怪的地址,不是我想要的地址。
    例如:外部IP为211.144.92.240。 我想得到他的hostname是www.sina.com.cn,可是执行后却是reserve.cableplus.com.cn
      请问如何才能正确获得远端主机的域名呢?
  1. #include <sys/socket.h>
  2. #include <stdio.h>
  3. #include <netinet/in.h>
  4. #include <arpa/inet.h>
  5. #include <netdb.h>
  6. #include <sys/socket.h>

  7. int main ()
  8. {
  9.         struct in_addr addr;
  10.         struct hostent *hostname;
  11.         addr.s_addr = inet_addr("211.144.92.240");
  12.         printf("loop ip:%s\n", inet_ntoa(addr));

  13.         hostname = gethostbyaddr((char *)&addr, 4, AF_INET);
  14.         if (hostname == NULL){
  15.                 printf("error, ");
  16.                 return -1;
  17.         }
  18.         printf("h_name:%s\n", hostname->h_name);
  19.         printf("h_alia:%s\n", hostname->h_aliases[0]);
  20.         printf("h_ip:%s\n", inet_ntoa(*((struct in_addr *)hostname->h_addr_list[0])));
  21.         return 0;
  22. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-06-23 10:34 |只看该作者
你已经获得了正确的 rDNS。
一个 IP 可以对应多个主机名,同样一个主机名可以对应多个 IP。
你要指定一个 IP 的反向解析结果就得联系 ISP,比如这里 211.144.64.0/19 属于 AS9812,请致电 96877 或发送电子邮件到 ipas@cnnic.net.cn

论坛徽章:
0
3 [报告]
发表于 2010-06-23 11:26 |只看该作者
我抓了报文,这个远端主机的名字reserve.cableplus.com.cn是从DNS上解析出来的。有没有办法可以让DNS解析出正确的名字?

论坛徽章:
0
4 [报告]
发表于 2010-06-23 11:48 |只看该作者
请问你有 rDNS 的控制权吗?如果有,自己改 PTR 记录;如果没有,联系 ISP。

论坛徽章:
0
5 [报告]
发表于 2010-06-23 12:36 |只看该作者
哦,那我没有,那么多的IP和域名总不能都联系ISP吧。我们也不能保证用户用什么样的IP去查域名啊。不管怎么说还是谢谢你!

论坛徽章:
0
6 [报告]
发表于 2010-06-23 13:31 |只看该作者
确实,你不能保证用户的正向查询与反向查询总能对应上,反向解析与正向解析的对应关系只在邮件服务器这一块比较看重。

通常呢,反向解析的结果只告诉你这个 IP 所在的运营商,或者机房地理位置,甚至具体的网卡编号都有。

例如

1) Google 的一个 IP 是 216.239.61.104,反向查询的结果是 sin01s01-in-f104.1e100.net

1e100.net 是 Google 的域名,以上 PTR 记录表明 216.239.61.104 是新加坡(sin)01s01 号机房的入口地址(in),IPv4 十进制(f),IP 编号 104。

2) Google 的一个 IPv6 地址是 2001:4860:8011::63,反向查询结果是 lax04s01-in-x63.1e100.net

洛杉矶(lax)04s01 号机房的入口地址,IPv6 十六进制(x),IP 编号 0x63。

3) 66.160.158.241 -> 10gigabitethernet1-2.core1.fmt1.he.net

Hurricane Electric 核心路由网络(core)在 Fremont, CA 1 号机房的 10GE 接口 1-2

论坛徽章:
0
7 [报告]
发表于 2010-06-23 13:45 |只看该作者
反向解析的结果是使用该IP的主机名吗?

论坛徽章:
0
8 [报告]
发表于 2010-06-23 13:47 |只看该作者
应该是域名或者主机名吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP