计算机网络日常作业二.docx
《计算机网络日常作业二.docx》由会员分享,可在线阅读,更多相关《计算机网络日常作业二.docx(20页珍藏版)》请在冰点文库上搜索。
计算机网络日常作业二
计算机网络日常作业
(二)
一、概念
1IP地址分类以及子网划分
国际规定:
把所有的IP地址划分为A,B,C,D,E
A类地址:
范围从0-127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回用的。
因此A类地址的范围其实是从1-126之间。
如:
10.0.0.1,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。
转换为2进制来说,一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围从0.0.0.1到126.0.0.0。
可用的A类网络有126个,每个网络能容纳1亿多个主机(2的24次方的主机数目)。
以子网掩码来进行区别:
255.0.0.0.
B类地址:
范围从128-191,如172.168.1.1,第一和第二段号码为网络号码,剩下的2段号码为本地计算机的号码。
转换为2进制来说,一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。
可用的B类网络有16382个,每个网络能容纳6万多个主机。
以子网掩码来进行区别:
255.255.0.0
C类地址:
范围从192-223,如192.168.1.1,第一,第二,第三段号码为网络号码,剩下的最后一段号码为本地计算机的号码。
转换为2进制来说,一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。
范围从192.0.0.0到223.255.255.255。
C类网络可达209万余个,每个网络能容纳254个主机。
以子网掩码来进行区别:
255.255.255.0
D类地址:
范围从224-239,D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。
它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。
多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
E类地址:
范围从240-254,以“11110”开始,为将来使用保留。
全零(“0.0.0.0”)地址对应于当前主机。
全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。
2TCP/IP和OSI体系结构比较
OSI和TCP/IP的相同点:
二者均采用层次结构,而且都是按功
能分层。
OSI和TCP/IP的不同点:
①OSI分七层,而TCP/IP分四层,严格讲,TCP/IP网间网协议只包括下三层,应用程序不算TCP/IP的一部分。
②OSI层次间存在严格的调用关系,两个(N)层实体的通信必须通过下一层(N-1)层实体,不能越级,而TCP/IP可以越过紧邻的下一层直接使用更低层次所提供的服务(这种层次关系常被称为“等级”关系),因而减少了一些不必要的开销,提高了协议的效率。
③OSI只考虑用一种标准的公用数据网将各种不同的系统互联在一起,后来认识到互联网协议的重要性,才在网络层划出一个子层来完成互联作用。
而TCP/IP一开始就考虑到多种异构网的互联问题,并将互联网协议IP作为TCP/IP的重要组成部分。
④OSI开始偏重于面向连接的服务,后来才开始制定无连接的服务标准,而TCP/IP一开始就有面向连接和无连接服务,无连接服务的数据报对于互联网中的数据传送以及分组话音通信都是十分方便的。
⑤OSI与TCP/IP对可靠性的强调也不相同。
对OSI的面向连接服务,数据链路层、网络层和传输层都要检测和处理错误,尤其在数据链路层采用校验、确认和超时重传等措施提供可靠性,而且网络和运输层也有类似技术。
而TCP/IP则不然,TCP/IP认为可靠性是端到端的问题,应由传输层来解决,因此它允许单个的链路或机器丢失数据或数据出错,网络本身不进行错误恢复,丢失或出错数据的恢复在源主机和目的主机之间进行,由传输层完成。
由于可靠性由主机完成,增加了主机的负担。
但是,当应用程序对可靠性要求不高时,甚至连主机也不必进行可靠性处理,在这种情况下,TCP/IP网的效率最高。
⑥在两个体系结构中智能的位置也不相同。
OSI网络层提供面向连接的服务,将寻径、流控、顺序控制、内部确认、可靠性带有智能性的问题,都纳入网络服务,留给末端主机的事就不多了。
相反,TCP/IP则要求主机参与几乎所有网络服务,所以对入网的主机要求很高。
⑦OSI开始未考虑网络管理问题,到后来才考虑这个问题,而TCP/IP有较好的网络管理。
目前计算机网络中已经形成的网络体系结构主要有两个:
OSI参考模型和TCP/IP参考模型。
TCP/IP参考模型是因特网(Internet)的基础。
和OSI的7层协议比较,TCP/IP参考模型中没有会话层和表示层。
通常说的TCP/IP是一组协议的总称,TCP/IP实际上是一个协议族(或协议包),包括100多个相互关联的协议,其中IP(InternetProtocol,网际协议)是网络层最主要的协议;TCP(TransmissionControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议)是传输层中最主要的协议。
一般认为IP、TCP、UDP是最根本的三种协议,是其它协议的基础。
TCP/IP也是使用协议栈来工作,栈是所有用来在两台机器间完成一个传输的所有协议的几个集合。
数据通过栈,从一台机器到另一台机器,在这过程中,一个复杂的查错系统会在起始机器和目的机器中执行。
栈分成五个层,每一层都能从相邻的层中接收或发送数据,每一层都与许多协议相联系。
3域名的概念与机制
域名的概念
通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。
网络是基于TCP/IP协议进行通信和连接的,每一台主机都有一个唯一的标识固定的IP地址,以区别在网络上成千上万个用户和计算机。
网络在区分所有与之相连的网络和主机时,均采用了一种唯一、通用的地址格式,即每一个与网络相连接的计算机和服务器都被指派了一个独一无二的地址。
为了保证网络上每台计算机的IP地址的唯一性,用户必须向特定机构申请注册,该机构根据用户单位的网络规模和近期发展计划,分配IP地址。
网络中的地址方案分为两套:
IP地址系统和域名地址系统。
这两套地址系统其实是一一对应的关系。
IP地址用二进制数来表示,每个IP地址长32比特,由4个小于256的数字组成,数字之间用点间隔,例如100.10.0.1表示一个IP地址。
由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址。
每一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易得多了。
这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名。
可见域名就是上网单位的名称,是一个通过计算机登上网络的单位在该网中的地址。
一个公司如果希望在网络上建立自己的主页,就必须取得一个域名,域名也是由若干部分组成,包括数字和字母。
通过该地址,人们可以在网络上找到所需的详细资料。
域名是上网单位和个人在网络上的重要标识,起着识别作用,便于他人识别和检索某一企业、组织或个人的信息资源,从而更好地实现网络上的资源共享。
除了识别功能外,在虚拟环境下,域名还可以起到引导、宣传、代表等作用。
域名的机制
2.1.定义和名词
域名空间是树状结构,每个结点和资源集相对应(这个资源集可能为空),域名系统不区别树内结点和叶子结点,统称为结点。
每个结点有一个标记,这个标记的长度为0到63个字节。
不同的结点可以使用相同的标记。
0长度的标记(空标记)为根记录保留。
结点的域名是从结点到根的标记组成的。
这些标记对大小写不敏感,这就是说,A和a对域名是等效的。
但是你在收到域名时最好保留它的大小写状态以便以后的服务扩展便于使用。
用户需要输入域名时,每个节点的标记长度不管多长,总要以点分隔。
绝对域名的最后总以点结束,例如"poneria.ISI.EDU.",而相对域名则不这样,它由本地域指明位置即可。
相对域名相对于一个公认的域名或相对于用作搜索列的一串域名。
相对名通常在用户接口出现,在用户接口,表示方法因实现不同而不同,相对域名也出现在主文件中,主文件相对于一个源域名而设立。
为了简化实现,整个域名的长度不得大于255个字节。
域由域名标记,它由其下的域组成。
如果一个域包括在另一域中,则称它为这个域的子域。
我们可能通过表示很直观的看出。
如A.B.C.D是B.C.D,C.D,D和""的子域。
2.2.管理规范
作为策略,DNS技术说明未说明一个特定的树结构或什么规则来选择标记,此说明希望达到的目的是越简单越好。
应用程序的开发可以不管名字空间的边界和名字服务器的存在。
这不是说没有规矩地乱来,而是把规则制定得开放以便于处理问题,树的不同部分可以有不同的规则。
例如IN-ADDR.ARPA分布在网络各处,用于将网络或主机号转换为主机名,而NetBIOS域是平面式的,原因很简单,这样便于应用。
但是,对于名字空间的通常部分,我们还是有规定的,目的是为了应用起来比较方便。
低层域名最终被分为多个区,这样的域应该在顶层域上提供一个标记使最终的解析可能不必重名字就可以完成。
在管理的时候,老的软件可能不支持结点标记中的数字,特殊字符。
2.3.技术规范
在DNS能够被用来为某些种类的结点保存名字信息前,必须满足下面两个条件:
∙要有在对象名和域之间映射的规则,这个规则描述了关于对象的信息如何被访问
∙需要有描述对象的RR类型和数据格式
这些规则可烦可简,规则者要考虑到对现在格式和以后格式的兼容问题。
多映射或映射分层是必须的。
对于主机,映射取决于主机名的现有格式,它是通常文本表示域名的子集,加上描述主机地址的RR格式。
因为我们需要从地址到主机的可靠映射,所以定义了将地址映射到IN-ADDR.ARPA域的方法。
对了邮箱,映射会复杂一些。
通常的邮件地址@,可以通过将转换为一个单独的标记,不要管里面的点,将通过平常的域名解析方法进行解析,这两部分组合形成一个域名。
因此邮件地址HOSTMASTER@SRI-NIC.ARPA,会变为HOSTMASTER.SRI-NIC.ARPA。
通常的用户不关心这些定义的规则,但用户应该理解它们使用的是一种的许多要求的综合产物,有要求兼容老产品的,有要求添加新功能的。
2.5.命名规则
DNS的命名规则是为了使对域名的命名比较统一。
也就是要将任何现存的对象都可以在最小改动的情况下变为域名。
谨慎的使用者会选择域名适合域名系统和应用程序。
例如在命名邮件域名时,使用者会同时遵守相应的邮件协议。
这就使对老软件的兼容性提高了。
下面的规则是一个较少引起问题的规则:
:
:
=|""
:
:
=
:
:
=[[]]
:
:
=|
:
:
=|"-"
:
:
=|
:
:
=大小写的A到Z,共52个
:
:
=0到9
请注意:
域名内不分大小写。
标记必须遵守ARPANET主机名规则,它要求主机名必须以字母开始,以字母或数字结束,中间的可以是数字字母或连字符,长度没有限制。
但标记必须少于63个字符。
下面的字符串就表示了APARNET中的主机:
A.ISI.EDUXX.LCS.MIT.EDUSRI-NIC.ARPA
2.6.资源记录
域名标记结点,每个结点都有资源信息集,些集可以为空。
资源信息集和由分离资源集(RR)的特殊名字相关联。
在集中的RR顺序没有关系,标记有这东西就是了,它不用由名字服务器,resovler或DNS的其它部分保存,只在这儿有。
特定的RR我们认为有以下几个:
owner
RR能够被找到的域名
它是一个16位值,指定RR内的资源类型,它指一个抽象资源,具体的标记有以下几个:
A
主机地址
CNAME
一个拟名的统一命名
HINFO
标记由主机使用折CPU和OS
MX
标记用于域的邮件交换资源
NS
此域的权威认证名字服务器
PTR
指向其它域名空间的指针
SOA
标记区认证权威的开始
class
它是一个16位值,标记协议族或某一个协议实例,本文中使用IN代表internet系统,CH代表Chaos系统
TTL
它是RR的生存时间,它是32位整数,单位是秒,它主要用于resolver缓存RR多长时间
它是一种类型,有时是依赖于数据的类,它描述了以下资源:
A
对于class是IN的,它是一个32位IP地址,对于CH,它是后面跟一个16位八进制Chaos地址的域名
CNAME
域名
MX
作为一个域的邮件服务资源的主机名,主机名后有一个16位的配置值
NS
主机名
PTR
域名
SOA
一些域
拥有资源的名字通常是隐式的,不构成RR的一部分。
TTL时间只影响缓冲内的数据,不影响区内的已经保存的认证数据。
TTL通常由管理员设置,TTL=0表示禁止缓冲。
RDATA内的数据是二进制串和域名的混合。
域名通常使用指针指向DNS内的其它数据。
2.6.1.RR的文本表示
RR在DNS中是以二进制形式表示的,而在名字服务器或resolver中保存的时是经过压缩编码处理的。
本文中我们采用相同于主文件中表示的表示方法,也就是不压缩的方法,以便显示RR的内容。
行开始时给出谁拥有RR,如果这一位置空出,就表示本行RR的拥有者和上面RR的拥有者是一个。
其后是TTL,type和RR的class。
RR的RDATA部分是在当前数据的表示类型的基础上得到的。
2.6.2.别名和统一命名
现存的系统中有时会对相同的资源有不同的命名,不但主机是这样,邮箱也是这样,不同的名字指向的是同一个位置。
大部分系统都能够对多个名字指定一个是统一命名的结果,另外的是别名。
域名系统提供使用统一命名的机制(CNAMERR),CNAMERR标记它的owner名为别名,并指出在RDATA部分的相应统一命名。
如果一个结点存在CNAMERR,不应该有其它的数据,这保证了统一命名和它的别名不能不同。
这也使得缓冲的CNAME可以不用检索认证权威服务器就可以提供服务。
在有CNAMERR时,DNS软件如果查询不到与域名相关的资源,它会检查资源集中是不是有一个有匹配class的CNAME,如果有,名字服务器返回的应答中包括这个CNAME记录,并根据在CNAME中指定的数据开始新的查询。
2.7.查询
查询就是发向名字服务器要求响应的一个请求。
在Internet上,这种请求以UDP或TCP传输,名字服务器的响应可以是查询结果,或是另一个名字名字器地址,要么就是一个错误信息。
通常用户并不直接发送请求,而是向resolver发送请求,由resolver依次将一个或多个请求发向名字服务器,并负责处理错误情况。
请求和响应有标准格式,它们包括一个头和数个固定的域,然后是包括查询参数和RR的四个部分。
头中最重要的域是称为操作符的东西,它指出要进行什么操作。
在所有可能的16个值中,标准查询是必须的,反向查询和状态查询是可选的,有一个完全查询已经过时,其它的还未指定。
而上面的提到的四个部分如下:
Question
包括查询名和其它参数
Answer
包括查询结果的RR
Authority
包括一个RR,但这个RR包括的是另一个名字服务器
Additional
包括了一个些在其它部分中使用RR时会有用的信息
请注意:
因头中操作符(码)的不同,这些部分的内容可能不同,但格式可是一样的。
2.7.1.标准查询
标准查询指定一个目标域名(QNAME),查询类型(QTYPE)和查询类(QCLASS),然后寻找相应的RR,这类的查询占了DNS查询的绝大部分,如果未有特殊说明,一般都指这种查询。
2.7.2.反向查询(可选)
名字服务器可以反映资源和域名之间的映射关系。
标准查询可以对将域名映射到SOARR,相应的反向查询则映射SOARR到域名。
对于名字服务器来说这种实现是可选的,但是所有的名字服务器必须至少能够理解反向查询消息,不能说发来的消息当不知道。
域名系统不保证反向查询的完全和唯一性,因为系统是按照域名而非主机地址或其它资源类型安排的。
反向查询主要用于调试,以及和数据库支持相关的活动中。
反向查询可以不返回正确的TTL,也不标明RR是某个集合中的一员,我们不知道它是不是唯一的,因此反向查询的结果不缓冲。
反向查询对于映射主机地址到主机名是不合适的,此时要用IN-ADDR.ARPA域。
3.1.介绍
名字服务器保存了许多信息,这些信息组成了域数据库。
数据库被分为区,这些区在不同的服务器上保存。
服务器可以有不同的可选函数和数据源,它最基本的工作是响应查询,它的响应是是一种简单的形式进行的,响应可以仅根据本地数据作出,也可以根据其它相关服务器而做出。
一个给定的区可以根据不同的服务器来保证其有效性,通过管理命令,用户可以查询由至少两台服务器保存的一个区上的数据,多台服务器保存信息保证了适当的冗余。
给定的名字服务器通常支持一个或多个区,但只充当域树一小部分的认证权威。
它有一些缓冲的非认证信息,这些信息是域树其它部分的,在响应查询时名字服务器会给出什么时它认证的,什么是它缓冲的。
3.2.数据库如何被划分为区
划分数据库有两种方法,一种是根据class,另一种是在名字空间的结点间进行分隔,而产生,我们称这种分隔为cut。
class(以下我们称为类)分隔比较简单,在传统上,名字空间和所有类是一回事,分隔的类可被认为是一系列平行的名字空间树。
创建新类的通常理由是要为已有的类型创建新的数据格式,或是为了对已有的名字空间进行分隔管理。
在一个类中可在两个相邻的结点进行cut(以下我们称为切分),在所有的切分完成后,相连空间的每个组就是一个独立的区。
此区是在相连区域内所有数据的认证权威。
这种方法意味着所有的区至少有一个结点,域名和所有特定区内的结点是相连的。
给定的树型结构一定有一个点更加靠近根,我们用这个点标记这个区。
虽然可能没什么用,也可以将每个域名分在不同的区中,也可以让所有的结点在一个区中。
另外,数据库也可根据不同企业对名字的控制进行划分,有些企业可能希望自己管理某一部分域名子树,这时这个企业就可以对域名进行相应的增加或删除操作,可以自己加入自己的下一级域名。
当然,这个企业也可以对自己管理的名字空间进行进一步划分。
3.2.1.技术问题
描述一个区的数据有四部分:
1.区中所有结点的认证数据
2.定义区内顶结点的数据(此数据可被认为是认证数据的一部分)
3.描述代表子区的数据
4.访问服务器子区的数据(我们也称为“相关”(glue)数据)
所有这些数据以RR的形式表示,所有区可以被RR集的形式描述。
通过传输RR,可以传输整个区,具体的方法可以是通过FTP传输相应的文本文件,或是通过网络消息的形式传输。
一个区的认证数据是所有的RR,这些RR和树中所有的结点是关联的,要么就是切分后的结点关联。
描述顶结点的RR对于区的管理特别重要,这些RR有两种类型,名字服务器RR,它描述了区中的服务器列表;另一种是SOARR,它描述的区的管理参数。
描述切分的RR是NSRR,因为切分是在结点间进行的,所有RR不是区认证数据的一部分,它应该和相应的在子区内的顶结点一致。
因为名字服务器通常和区边界相关,NSRR只在一些区的顶结点上有。
在组成一个区的数据中,NSRR在顶层结点和在边界底的切分处出现,不在其它地方。
区结构所要实现的一个目标是任何区都有足够的数据可以和任何子区建立通信。
也就是说,父区有足够的信息可以访问子区中的任何一台名字服务器。
NSRR命名了子区服务器,它不足以完成上面的要求,因此有了名字但仍然不知道地址。
特别地,如果名字服务器的名字在子区内是它自己,我们就无法知道通过它的任何信息了。
为了解决这一问题,区中包括了一个关联RR,它不是认证权威数据的一部分,但它表示了服务器的地址。
如果名字服务器名在切分下,就需要这些RR了。
3.2.2.管理问题
当有些组织希望掌握自己的域时,第一步是标记合适的父区,然后取得父区中管理结点的许可来管理。
管理的时候没有什么具体的技术问题,可是还是有一些规则的,对中型的区可以没有这些规定,但是小型的就不行了。
本文不具体讨论这一问题了,有兴趣可参阅相关的资料。
一旦选择了子区的名字,此区的新管理结点要冗余的名字服务器来支持。
注意:
没有要求一个区的服务器必须在此域中有名字的主机上。
在许多种情况下,一个区要想被更容易地访问到最好把内容放得分散一点,不要集中在一起。
现在许多国家的名字服务器是放置在别国的,这样在取得名字解析的时候不用把请求千里迢迢送到远程主机上去了。
作为配置的最后一步,就是要选择NSRR和关联RR。
3.3.深入名字服务器
3.3.1.查询和响应
名字服务器的主要内容就是响应标准查询。
查询和响应有专用的格式,查询包括QTYPE,QCLASS和QNAME,它描述了需要数据的类型,类(class)和名字。
服务器的响应取决于它支持不支持循环查询:
∙最简单的是不支持循环查询,它返回的要么是本地信息,要么是一个错误码,告诉用户你要的信息这里没有,然后再返回一个邻近服务器的地址,让用户到那里去查一查。
∙如果支持循环查询,那名字服务器如果未能在本地找到相应的信息,就代替用户向其它服务器进行查询,这时它是代替用户扮演了resolver的角色,直到最后把结果找到(也可能根本没有结果,那就返回错误),并返回给用户为止。
使用循环查询要客户和服务器双方都支持才行。
这个信息通过查询和响应中的两位来交换:
∙如果允许循环查询则设置RA位,服务器方可以不管客户是否进行请求而直接设置此位
∙查询中如果请求循环查询则设置RD位,客户只有在知道服务器方支持循环查询后才能够进行循环查询请求
客户可以在响应中同时设置RA和RD位来确认是否支持循环查询请求。
请注意:
服务器在客户未指明RD位时不会自己进行循环查询。
如果请求了循环查询,同时也支持循环查询,对查询的响应会是以下之一:
∙查询指定的CNAMERR有多个别名
∙指定的名字服务器不存在
∙临时错误
如果未请求循环查询或不支持循环查询,则响应可以可能是:
-认证权威服务器指出名字不存在
-临时错误
另外还会提供一些信息,指出所查询的RR是否从一个区来,或者是不是被缓存;另一种信息指明名字服务器指出还有一个服务器拥有相同的记录,这个服务器更靠近要查询的名字的祖先。
3.3.2.算法
名字服务器使用的算法和本地操作系统和数据结构相关,下面的算法假设RR以几个树型结构组织,一个树就是区,有一个树是用于缓冲的:
1.是不是支持循环查询要看服务器,如果支持,而且需要循环查询,转到第5步;
2.查询最靠近QNAME祖先的结点所在的区,如果未找到这个区,转第4步;
3.开始在区内从上到下进行匹配,匹配过程的结束条件有以下几个:
∙如果整个QNAME匹配了,我们就找到了。
如果数据所在结果是CNAME,QTYPE不匹配CNAME,复制CNAMERR到响应的应答区,将QNAME改变为CNAMERR中的标准形式后返回第1步;否则复制所有匹配QTYPE的RR到响应的应答区,然后转第6步;
∙如果匹