[root]#./client www.naver.com [10/client.c:12 main info] www.naver.com get host name: [10/client.c:13 main info] h_name:www.naver.com.nheos.com [10/client.c:14 main info] h_aliases: [10/client.c:17 main info] [0]:www.naver.com [10/client.c:19 main info] type:IPv4 [10/client.c:20 main info] h_length:4 [10/client.c:21 main info] h_addr_list: [10/client.c:24 main info] [0]:223.130.200.104 [10/client.c:24 main info] [1]:223.130.200.107 [root]#./server 223.130.200.104 [10/server.c:14 main error] gethostbyaddr failed Unknown host [root]#./server 223.130.200.107 [10/server.c:14 main error] gethostbyaddr failed Unknown host
并不能总是通过 IP 地址获取到域名
通过抓去端口 53 的报文(DNS)可以得到
通过 UDP 去发送 DNS 请求,一次返回多个 IP 地址,而无法获取域名则如下返回 No such name
structaddrinfo { int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ int ai_family; /* PF_xxx */ int ai_socktype; /* SOCK_xxx */ int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ socklen_t ai_addrlen; /* length of ai_addr */ char *ai_canonname; /* canonical name for hostname */ structsockaddr *ai_addr;/* binary address */ structaddrinfo *ai_next;/* next structure in linked list */ };
最终输出结果为
1 2 3
getaddrinfo: [10/client.c:55 main info] ip: 182.61.200.7 [10/client.c:55 main info] ip: 182.61.200.6