当前位置: 技术问答>linux和unix
gethostbyaddr()相关
来源: 互联网 发布时间:2016-04-21
本文导语: gethostbyaddr(const void *addr, int len, int type); 这个接口,查询的过程到底是怎么样的?我试了一下,www.google.cn的IP,失败,另试了一个ip :210.51.191.41却是可以调用成功的。 想问一下,这个系统调用,背后到底是怎么...
gethostbyaddr(const void *addr, int len, int type);
这个接口,查询的过程到底是怎么样的?我试了一下,www.google.cn的IP,失败,另试了一个ip :210.51.191.41却是可以调用成功的。
想问一下,这个系统调用,背后到底是怎么查询的。
这个接口,查询的过程到底是怎么样的?我试了一下,www.google.cn的IP,失败,另试了一个ip :210.51.191.41却是可以调用成功的。
想问一下,这个系统调用,背后到底是怎么查询的。
|
通过DNS查询的,但是目前中国电信劫持很多域名(DNS Hijack)
从国外的网络查:
ping www.google.cn
Pinging cn.l.google.com [64.233.179.160] with 32 bytes of data:
Reply from 64.233.179.160: bytes=32 time=294ms TTL=232
Reply from 64.233.179.160: bytes=32 time=299ms TTL=232
Reply from 64.233.179.160: bytes=32 time=294ms TTL=232
从国内的网络查:
ping www.google.cn
PING cn.l.google.com (203.208.37.99): 56 data bytes
64 bytes from 203.208.37.99: icmp_seq=0 ttl=245 time=1.834 ms
64 bytes from 203.208.37.99: icmp_seq=1 ttl=245 time=1.899 ms
64 bytes from 203.208.37.99: icmp_seq=2 ttl=245 time=1.900 ms
运行结果:
$ ./gethostbyaddr 203.208.37.99
gethostbyaddr: Unknown host
$ ./gethostbyaddr 64.233.179.160
official name of host:
hs-in-f160.google.com
alias list:
$ ./gethostbyaddr 210.51.191.41
official name of host:
mail.imcta.cn
alias list:
从国外的网络查:
ping www.google.cn
Pinging cn.l.google.com [64.233.179.160] with 32 bytes of data:
Reply from 64.233.179.160: bytes=32 time=294ms TTL=232
Reply from 64.233.179.160: bytes=32 time=299ms TTL=232
Reply from 64.233.179.160: bytes=32 time=294ms TTL=232
从国内的网络查:
ping www.google.cn
PING cn.l.google.com (203.208.37.99): 56 data bytes
64 bytes from 203.208.37.99: icmp_seq=0 ttl=245 time=1.834 ms
64 bytes from 203.208.37.99: icmp_seq=1 ttl=245 time=1.899 ms
64 bytes from 203.208.37.99: icmp_seq=2 ttl=245 time=1.900 ms
#include
#include
#include
#include
#include
#include
static void
usage(void)
{
fprintf(stderr, "usage: %sn", "gethostbyaddr addr");
exit(1);
}
int
main(int argc, char *argv[])
{
in_addr_t addr;
struct hostent *host;
char **alias;
if (argc != 2)
usage();
addr = inet_addr(argv[1]);
host = gethostbyaddr(&addr, sizeof(in_addr_t), AF_INET);
if (NULL == host) {
herror("gethostbyaddr");
exit(2);
}
(void)printf("official name of host:n");
(void)printf("%sn", host->h_name);
(void)printf("alias list:n");
for (alias = host->h_aliases; *alias; alias++) {
(void)printf("%sn", *alias);
}
return 0;
}
运行结果:
$ ./gethostbyaddr 203.208.37.99
gethostbyaddr: Unknown host
$ ./gethostbyaddr 64.233.179.160
official name of host:
hs-in-f160.google.com
alias list:
$ ./gethostbyaddr 210.51.191.41
official name of host:
mail.imcta.cn
alias list:
|
你配在/etc/hosts里的主机名
|
当时google不能访问? 呵呵。
我认为是通过 /etc/resolv.conf 里的DNS server去解析的把
我认为是通过 /etc/resolv.conf 里的DNS server去解析的把
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。