版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Bepthslowly/article/details/81637139
一直搞不明白,通过域名访问网页的时候计算机是在什么时候进行域名的解析,最近通过阅读《网络是怎样连接的》得到了答案,
下面就是我的简单理解和实验,仅供参考:
浏览器在根据HTTP协议生成HTTP请求消息之后,会将URL中的域名发送给你电脑上的DNS解析器(DNS客户端),调用解析器后,解析器会向 DNS 服务器发送查询消息,然后DNS服务器会返回包含IP 地址响应消息,解析器会取出 IP 地址,并将其写入浏览器指定的内存地址中。下面是用C++模拟解析器接收浏览器发过来的域名并将其解析成IP地址的过程
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
int main()
{
char *name;
struct hostent *hptr;
char str[INET_ADDRSTRLEN];
name="www.zhangdidi.com";
hptr = gethostbyname(name);//向DNS服务器索取域名对应IP地址
if (hptr == NULL) {
printf("gethostbyname error for host: %s: %s\n", name, hstrerror(h_errno));
return -1;
}
printf("official: %s\n", hptr->h_name);
//输出ip地址
if (hptr->h_addrtype==AF_INET)
printf("address: %s\n", inet_ntop(hptr->h_addrtype, hptr->h_addr, str, sizeof(str)));
else
printf("unknown address type\n");
return 0;
}