网络编程学习笔记(八)域名及网络地址

本文介绍了域名系统的工作原理,包括域名的概念、DNS服务器如何进行域名解析,以及在编程中为何选择使用域名而非IP地址。同时,展示了利用域名获取IP地址和IP地址获取域名的代码示例,探讨了在Windows环境下实现类似功能的方法。
摘要由CSDN通过智能技术生成

域名系统

何为域名

提供网络服务的服务器端也是通过IP地址区分的,但几乎不可能以非常难记的IP地址形式交换服务器端地址信息。因此,将容易记的,易于表述的域名分配并取代IP地址。

DNS服务器

DNS服务器实际上就是用来解析域名的,把域名的对应的IP地址找出来,返回给客户端。
默认DNS服务器收到自己无法解析的请求时,向上级DNS服务器询问。通过这种方式逐级向上传递信息,到达顶级服务器——根DNS服务器时,它知道该向哪个DNS服务器询问。向下级DNS传递解析请求,得到IP地址后原路返回,最后将解析的IP地址传递到发起请求的主机。DNS就是这样层次化管理的一种分布式数据库系统。

程序中有必要使用域名么

IP地址比域名发生变更的概率要高,所以利用IP地址编写程序并非上策。利用域名来编写程序会好一些,根据域名获取IP地址,这样程序就不再依赖IP地址。

利用域名获取IP地址

#inclue <netdb.h>
struct hostent * gethostname(const char * hostname);
成功时返回hostent结构体地址,失败时返回NULL指针
这个函数使用方便。只要传递域名字符串,就会返回域名对应的IP地址。只是返回时,地址信息装入hostent结构体。此结构体定义如下
struct hostent
{
    char * h_name; //official name
    char ** h_aliases; //alias list
    int h_addrtype; //host address type
    int h_length; //address length
    char ** h_addr_list; //address list
}
域名转IP时只需关注h_addr_list。
h_name
该变量中存有官方域名(Official domain name)官方域名代表某一主页,
但实际上,一些著名公司的域名并未用官方域名注册。
h_aliases
可以通过多个域名访问同一主页。同一IP可以绑定多个域名,
因此,除官方域名外还可以指定其他域名。这些信息可以通过h_aliases获得。
h_addrtype
gethostbyname函数不仅支持IPv4,还支持IPv6。
因此可以通过此变量获取保存在h_addr_list的IP地址的地址族信息。
若是Ipv4,则此变量存有AF_INET。
h_length
保存IP地址长度。若是IPv4地址,因为是4个字节,则保存4;IPv6时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值