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地址。
[cpp] view plaincopy
- #include <stdio.h>
- #include <windows.h>
- #include <Iphlpapi.h>
-
- #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;
- }
|