DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由解析器以及域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。[1]
其中域名必须对应一个IP地址,而IP地址不一定只对应一个域 动态dns名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。在Internet上域名与IP地址之间是一对一(或者多对一)的,也可采用DNS轮询实现一对多,域名虽然便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。DNS 命名用于 Internet的 TCP/IP网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。[2]
在IPV4中IP是由32位二进制数组成的,将这32位二进制数分成4组每组8个二进制数,将这8个二进制数转化成十进制数,就是我们看到的IP地址,其范围是在0~255之间。因为,8个二进制数转化为十进制数的最大范围就是0~255。现在已开始试运行、将来必将代替IPv4的IPV6中,将以128位二进制数表示一个IP地址。
#include #include #include #pragma comment(lib, "Iphlpapi.lib")int main(){ FIXED_INFO fi; ULONG ulOutBufLen = sizeof(fi); // 获取本地电脑的网络参数 if(::GetNetworkParams(&fi, &ulOutBufLen) != ERROR_SUCCESS) { printf(" GetNetworkParams() failed \n"); return -1; } // 主机名称 printf(" Host Name: %s \n", fi.HostName); // 电脑注册的域名 printf(" Domain Name: %s \n", fi.DomainName); // 打印出所有的DNS服务器 printf(" DNS Servers: \n"); printf(" \t%s \n", fi.DnsServerList.IpAddress.String); IP_ADDR_STRING *pIPAddr = fi.DnsServerList.Next; while(pIPAddr != NULL) { printf(" \t%s \n", pIPAddr->IpAddress.String); pIPAddr = pIPAddr->Next; } return 0;}