热线电话:13121318867

登录
2018-11-29 阅读量: 989
DNS解析是什么?

每个Web服务器(实际上连接到Internet的任何主机)都具有唯一性IP地址以文本形式,将其转换成一个IP地址(在这种情况下,207.142.131.248)是公知的作为一个过程DNS解析或DNS查找;这里DNS代表域名服务。在DNS解析期间,希望执行此转换的程序(在我们的示例中,是Web爬网程序的一个组件)与a联系返回已转换IP地址的DNS服务器。(实际上,整个翻译可能不会发生在单个DNS服务器上;相反,最初联系的DNS服务器可能会递归调用其他DNS服务器来完成翻译。)对于更复杂的URL,例如en.wikipedia.org/wiki/ Domain_Name_System,负责DNS解析的爬虫组件提取主机名 - 在本例中为en.wikipedia.org - 并查找主机en.wikipedia.org的IP地址。

DNS解析是Web爬行中众所周知的瓶颈。由于域名服务的分布式特性,DNS解析可能需要在互联网上进行多次请求和往返,需要几秒甚至更长时间。马上,这会危及我们每秒获取数百个文档的目标。标准的补救措施是介绍缓存:我们最近执行DNS查找的URL很可能在DNS缓存中找到,从而无需转到Internet上的DNS服务器。但是,遵守礼貌限制会限制缓存命中率。

DNS解析还有另一个重要的难点; 标准库中的查找实现(可能由开发爬虫的任何人使用)通常是同步的。这意味着一旦向域名服务发出请求,该节点上的其他爬网程序线程将被阻止,直到第一个请求完成为止。为了避免这种情况,大多数Web爬网程序将自己的DNS解析程序实现为爬网程序的一个组件。线执行解析器代码会向DNS服务器发送一条消息,然后执行定时等待:它会在被另一个线程发出信号或者设置的时间段到期时恢复。单个独立的DNS线程在标准DNS端口(端口53)上侦听来自名称服务的传入响应数据包。收到响应后,它会发出相应的爬虫线程信号(在这种情况下并将响应数据包交给它还没有恢复,因为它的时间量已经到期。由于等待时间量已过期而恢复的爬网程序线程会重试固定次数,向DNS服务器发送新消息并每次执行定时等待; 墨卡托的设计师推荐五次尝试。等待的时间量随着这些尝试中的每一次呈指数增长; 墨卡托以一秒钟开始,大约90秒结束,考虑到主机名需要几十秒才能解决。

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子