tcp/ip primer plus 第十四章 名字解析dns

原创 2007年09月29日 22:36:00

14.1名字解析的重要

在网络的发展初期,用户只能用长的麻烦的数字地址来标识和指定机器,(难道是  mac地址)然而网络点额互联带来了一个层次式的IP编址策略,即使用油类地址(网络层)和可以将地址转换为低层地址的协议软件(如ARP),  低层地址(MAC地址)是极其可以理解的唯一的编号,并借它在本地以点到点的方式来转发数据报。(自己觉得DNS就是把网络域名转化成ip地址)互联网上的主机有自己的IP和名字。为了到达一个主机可以使用名字而不是IP,把一个名字解析成一个地址就需要一个DNS服务器。

14.2DNS权限委派

DNS以一个层次化树的方式运行,其中NIC(网络信息中心)控制顶级域而把其他的任务给名字服务器。名字服务器提供了资源记录,资源记录使得你可以为一个域名解析或者找到IP地址。反之亦然。

主要的执行者NIC维护层次树的顶部(顶级域),将你输入的域名隔开到特定的区域。每一个区域(域名的层次划分)有一个主要的名字服务器及一个或者多个次要的名字服务器。主要的名字服务器从硬盘文件上装入信息,而次要的服务器则从主要的服务器上获取信息。

为了一个区域增加一个新的主机,需要向主要服务器工作的硬盘文件中输入必要的信息————或者至少是名字和IP地址,此动作会警告主要的服务器并且它会开始重新读配置文件。次要的服务器每三小时就像主要的服务器请求新的信息。如果次要的服务器发现任何新的信息,他就用区域传输方法 从主要服务器上获取信息。

当服务器没有你请求的信息时,服务器就访问另外一个名字服务器,他把名字解析请求提交给那个服务器并希望他可以解析此名字或者IP地址。或者他可以将请求传给真正具有所请求的信息的服务器。 (权威服务器和非权威服务器)名字服务器不必知道如何到达每一个其他的名字服务器,摊儿他们必须知道根名字服器的IP地址。它知道所有二级域的权威的服务器的名字和IP地址,此务器查询了根服务器之后,跟服务器就告诉服务器与另一个服务器联系。这种提名过程使得一个请求可以遍历名字空间树知道它找到一个知道此名字并且能解析此名字的名字服务器,必将IP地址提供给提出请求的客户。

14.3查询和影射

DNS服务器使用映射和查询从域名解析IP地址,或者反之亦然。DNS服务器通过把映射信息存到硬盘上或者换存到RAM中来保存映射信息。逆向查询起着产生你想映射的命令功能。逆向查询通常要求服务器查找整个服务器集,这是很少用的。

14.4缓存

缓存要经过下列不同的步骤来解析一个IP地址;

1.当服务器收到解析某个名字的请求是,他就检查该名字是否是它的区域的一部分(及服务器是否对此信息有权威)。

2.如果不是,服务器就检查保留有两天信息的缓存。

3.如果在缓存中找到了信息,就将此报告给客户。

4.当服务器敬爱那个此信息交给客户时,它就让客户知道他是从本地的到了信息还是从其他有权威的服务器得到恶劣此信息,(不再本地列表中)。而后它就给出域名和绑定(映射到所请求的名字的IP地址)

5.信息有可能是过时的,如果你需要速度,就利用服务器给你的信息,如果你需要准确性,就与权威服务器联系以检验你的信息。

14.5域名服务器报文格式

如果服务器在检查了缓存后还找不到答案,它就变成了一个客户(元主机的一个委托代理)并且使用某种报文格式在一个报文中享有权威的服务器请求多个问题。

  • 每一个报文包括三件事情:
  • 要解析的一个域名
  • 域名用的类或者协议簇

域名类型

被查询的服务器用对此问题的答案作为响应,如果服务器仍然没有答案,它的应答就包含信息和有可能具有此信息的服务器IP地址。DNS报文格式

14.7NETBIOS

NetBios(网络基本输入输出系统)是对代表一个主机访问自己的本地资源的基本能力的Bios(基本输入输出)的扩展。IBM和Sytek扩展了此功能以便可以访问远程主机上的资源并且将其称为NetBios。它们的目的是为用户提供一种能使用名字而不是地址访问远程资源和服务的简单方式。

每一个NetBios设备都有一个唯一的15 字符的名字。运行于此主机上的服务也由于自己相关联的名字。这些唯一的名字可以使用户能通过指定名字就找到运行于某个主机内的特定服务。

早期的NetBios(看书)

14.7.1运行于tcp/ip之上的NetBios

会话层协议NetBios有一个编程分支,这使得NetBios 能够转向可做路由的协议tcp、ip,然而本质上NetBios是采用广播的,这意味着路由器不用转发它。为了解决网络布局和上面的矛盾;修改过的NetBios就允许他可以在tcp、ip的常用udp和tcp端口137,138,和139上传送。尽管NetBios有其他定义的端口,但他首先使用这些端口。

用户可以使用一个由计算机明及其随后的共享名和到某远程主机上的共享资源的应用路径组成的UNC(全局名字规则)访问一个远程主机上的资源。

UNC也可以用于创建到一个远程主机的文件系统的永久链接,即映射为一个本地主机的驱动器。

当使用一个UNC访问远程主机上的资源时,必须将名字解析位逻辑网络的IP地址。一旦发现了目的主机的IP地址,就必须将此地址解析为用于点到点的本地MAC地址。记住NetBios一直使用广播

14.7.2节点类型

一个主机总是先查看其本地的名字缓存以判断他最近是否将请求的名字解析为一个iP地址。如果主机在名字缓存中没有任何项并且不能通过查询找到一个,则它就依靠客户的配置尝试某一节点类型。

  • b节点(广播类节点)现尝试广播,然后是LMHost文件
  • p节点(点到点节点类型),只尝试NBNS服务器
  • M节点(混合节点类型)客户尝试b节点,p节点,然后是LMHost文件
  • H节点(杂节点类型)客户尝试P节点,b节点,然后是LMHost文件

14.7.3WNS(windows互联网名字服务器)

microsoft的NBNS 实现称为wins,他为NetBios主机提供动态的NetBios名字解析。wins服务器了一个NetBios到IP地址映射的数据库,管理员可以采取一定的策略将这些wins服务器部署到一个IP网络中以便服务于客户发送名字倒地址的解析。管理员可以手工的建立这个数据库,或者wins服务器可以动态的给这个表中加入学习到的名字和地址。

当客户时在线的并且配置了wins服务器的IP地址时,wins客户就可以将它们的名字和地址注册到这个服务器以防止有些主机想解析这个名字。当启动时,不知道它们的wins服务器是哪一个的主机将广播它们的NetBios名字以宣布它们入网了。方出现这种情形时,一个本地wins服务器将接受此广播,学习名字和地址,并将这些信息输入到他的数据库中。

14.7.3.1wins委托代理

大多数的microsoft操作系统产品和一些路由器通过对不具备p节点能力的本地主机起着wins委托代理或者服务器的作用来支持名字解析。不具备p节点能力的客户可以只在本地网段上广播解析请求,这样可以防止它们通过远程wins服务器来注册和解析名字。

一个委托代理是配置了可以截获本地解析广播请求并把这些请求一定向数据报的方式转送给远程wins服务器实现名字解析的任何主机。当响应回来时,中级代理将本地请求缓粗已备将来用。并把这个信息传递给源 主机。这使得可以向后与只支持b节点的早期实现兼容。

c++ Primer Plus(第六版)第十四章习题,写代码之路

c++ Primer Plus(习题14.1) //书上的测试文件,相当于客户的使用说明书 //对于书上那个Pair对象,不认真的人都怀疑是否学过 //竟然是一个模板,这道题目想了很久很久,还是没思...
  • Robot_x
  • Robot_x
  • 2017年02月08日 19:57
  • 275

C++ Primer Plus第六版 第十四章 编程练习答案

这章有点难的= =。。。那个虚MI和模板把我看的有点晕QAQ //main.cpp #include #include "winec.h" int main() { using std::cin...
  • zhaoshu01234
  • zhaoshu01234
  • 2015年12月05日 13:52
  • 1532

《C++ primer plus》第十四章:C++的代码重用 学习笔记

《C++ primer plus》第十四章:C++的代码重用 学习笔记 这一章主要讲述了C++中的模板问题 1.valarray类的使用 valarray v1; int gpa[4] = ...
  • Donny_33
  • Donny_33
  • 2017年03月20日 20:25
  • 285

C++primer plus第六版课后编程题答案14.1

Pair.cpp #include using namespace std; //p580 template class Pair{ private: T1 a; T2 b; public:...
  • guang_jing
  • guang_jing
  • 2014年04月24日 13:09
  • 1860

《C++ Primer Plus(第六版)》(30)(第十四章 C++中的代码重用 编程题答案)

14.7 编程练习 1.Wine类有一个string类对象成员(参见第4章)和一个Pair对象(参见本章):其中前者用来存储葡萄酒的名称,而后者有2个valarry对象(参见本章),这两个valar...
  • u012175089
  • u012175089
  • 2016年12月29日 11:24
  • 2851

《C Primer Plus(第五版)中文版》第14章第1至11题

/* *1.重做复习题3,但用月份名的拼写代替月份号(别忘记了可以使用strcmp())。 *2.编写一个程序,请求用户键入日,月,年,月份可以月份号、月份名或是月份缩写,然后 *程序返回一年中...
  • vs9841
  • vs9841
  • 2015年08月31日 15:04
  • 1587

(2011.07.31)自学《C++ Primer Plus》时敲过的书上的代码!

经过几个月的自学,最后在暑假自学完这本《C++ Primer Plus》啦!学到的东西跟细节很多,现在先不总结了,先把自己所敲过的代码放上来,重温一下。 下面这些是自学《C++ Primer Plu...
  • neicole
  • neicole
  • 2011年07月31日 19:33
  • 3971

[阶段总结]写在C++ Primer Plus后,C++ Primer前

这篇总结分为三个部分 一、总结这半年的学习生活情况。 二、总结学习C++ Primer Plus的一些收获 三、展望一下接下来半年应该如何开展学习工作 Ⅰ前半年的学习生活 1.参加了一次网易游戏...
  • xy_cpp
  • xy_cpp
  • 2017年06月07日 09:17
  • 866

图解HTTP之一--网络基础(TCP/IP、DNS)

网络基础TCP/IP1. TCP/IP协议族计算机与网络设备要相互通信,双方就必须基于相同的方法。比如:如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。...
  • u014346301
  • u014346301
  • 2017年01月10日 17:05
  • 1273

C Primer Plus(第五版)中文版勘误

C Primer Plus(第五版)中文版勘误        看《C Primer Plus(第五版)中文版》发现些错误,记录如下,希望对大家有用,转载请注明出处,谢谢。P49 倒数第九行 “prin...
  • js333
  • js333
  • 2009年09月06日 18:32
  • 6920
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tcp/ip primer plus 第十四章 名字解析dns
举报原因:
原因补充:

(最多只允许输入30个字)