|
1000BASE-LX |
IEEE 802.3系列的技术规范,在单模或多模光纤上以长波实现1000Mbps以太网的标准 |
|
1000BASE-SX |
IEEE 802.3系列的技术规范,在短波光纤上实现1000Mbps以太网的标准 |
|
1000BASE-T |
IEEE 802.3系列的技术规范,在5类或更高类的双绞线上实现1000Mbps以太网的标准 |
|
100BASE-TX |
IEEE 802.3系列的技术规范,在5类双绞线上实现100Mbps以太网的标准 |
|
10BASE-T |
IEEE 802.3系列的技术规范,在3类或更高类的双绞线上实现10Mbps以太网的标准 |
|
ARP |
Address Resolution Protocol,地址解析协议 |
|
auto-negotiation |
自动协商工作模式 |
|
baud |
波特率,传输线上的信号速率 |
|
Broadcast |
广播,数据包向网络上的所有设备发送 |
|
CoS |
Class of Service,服务等级 |
|
CSMA/CD |
Carrier-sense Multiple Access with Collision Detection,带碰撞检测的载波侦听多路访问 |
|
DiffServ |
Differentiated Service,区分服务 |
|
DLF |
Destination Lookup Failure,目的查找失败 |
|
Ethernet |
以太网,使用CSMA/CD协议 |
|
filtering |
过滤,对数据包进行扫描,提取特征,并根据这些特征对数据包做不同的处理或操作 |
|
flow control |
流量控制,一种拥塞控制机制,抑制发送设备在拥塞结束前产生过多流量,防止数据包丢失 |
|
forwarding |
转发,网络设备将数据包发向目的地址 |
|
Full-Duplex |
全双工,设备端口在同一时刻既发送数据又接收数据的工作方式 |
|
Half-Duplex |
半双工,设备端口在同一时刻只能发送数据或接收数据的工作方式 |
|
HTTP |
Hyper Text Transfer Protocol,一种应用层协议,WWW主要使用的协议 |
|
ICMP |
Internet Control Message Protocol,Internet控制报文协议 |
|
IEEE |
Institute of Electrical and Electronics Engineers,(美国)电气与电子工程师协会 |
网络术语解释
三层交换机技术解析 三层交换技术的出现,解决了局域网中网段划分之后,网段中子网必须依赖路由器进行管理的局面,解决了传统路由器低速、复杂所造成的网络瓶颈等问题。
三层交换原理 :
一个具有三层交换功能的设备,相当于是一个带有第三层路由功能的第二层交换机,但它是二者的有机结合,并不是简单地把路由器设备的硬件及软件叠加在局域网交换机上。
其原理是:假设两个使用IP协议的主机A、B通过第三层交换机进行通信,发送主机A在开始发送时,把自己的IP地址与B主机的IP地址比较,判断B主机是否与自己在同一子网内。若B与A在同一子网内,则进行二层的转发。若两个主机不在同一子网内,如A要与目的主机B通信,发送主机A要向“缺省网关”发出 ARP(地址解析)封包,而“缺省网关”的IP地址其实是三层交换机的三层交换模块。当发送主机A对“缺省网关”的IP地址广播出一个ARP请求时,如果三层交换模块在以前的通信过程中已经知道B主机的MAC地址,则向A回复B的MAC地址;否则三层交换模块根据路由信息向B广播一个ARP请求,B得到此 ARP请求后向三层交换模块回复其MAC地址,三层交换模块保存此地址并回复给发送主机A,同时将B主机的MAC地址发送到二层交换引擎的MAC地址表中。从这以后,当A向B发送的数据包便全部交给二层交换处理,信息得以高速交换。由于仅仅在路由过程中才需要三层处理,绝大部分数据都通过二层交换转发,因此三层交换机的速度很快,接近二层交换机的速度,同时比相同路由器的价格低很多。
因为通信双方并没有通过路由器进行“拆包”和“打包”的过程,所以那怕主机A、B或C分属于不同的子网,它们之间也可直接知道对方的MAC地址来进行通信,最重要的是,第三层交换机并没有像其它交换机一样把广播封包扩散,第三层交换机之所以叫三层交换机就是因为它可以看懂三层信息,比如IP地址、 ARP等。所以,三层交换机便能洞悉某一广播封包目的何在,在没有把它扩散出去的情形下,同时满足了发出该广播封包的人的需求(不论它们在任何子网里)。因为第三层交换机没做任何“拆、打”数据包的工作,所有经过它的数据包都不会被修改并以交换的速度传到目的地。所以,应用第三层交换技术即可实现网络路由的功能,又可以根据不同的网络状况做到最优的网络性能。
三层交换机种类
三层交换机可以根据其处理数据的不同而分为纯硬件和纯软件两大类。
(1)纯硬件的三层技术相对来说技术复杂,成本高,但是速度快,性能好,负载能力强。其原理是,采用ASIC芯片,采用硬件的方式进行路由表的查找和刷新。如图1所示。
当数据由端口接口芯片接收进来以后,首先在二层交换芯片中查找相应的目的MAC地址,如果查到,就进行二层转发,否则将数据送至三层引擎。在三层引擎中,ASIC芯片查找相应的路由表信息,与数据的目的IP地址相比对,然后发送ARP数据包到目的主机,得到该主机的MAC地址,将MAC地址发到二层芯片,由二层芯片转发该数据包。
(2)基于软件的三层交换机技术较简单,但速度较慢,不适合作为主干。其原理是,采用CPU用软件的方式查找路由表。如图2所示。
当数据由端口接口芯片接收进来以后,首先在二层交换芯片中查找相应的目的MAC地址,如果查到,就进行二层转发否则将数据送至CPU。CPU查找相应的路由表信息,与数据的目的IP地址相比对,然后发送ARP数据包到目的主机得到该主机的MAC地址,将MAC地址发到二层芯片,由二层芯片转发该数据包。因为低价CPU处理速度较慢,因此这种三层交换机处理速度较慢。
SNMP的发展简单 网络管理 协议(SNMP)是目前TCP/IP 网络中应用最为广泛的 网络管理 协议。1990年5月,RFC1157定义了SNMP(simplenetworkmanagementprotocol)的第一个版本SNMPv1。RFC1157和另一个关于管理信息的 文件RFC1155一起,提供了一种监控和管理计算机 网络的 系统方法。因此,SNMP得到了广泛应用,并成为 网络管理的事实上的标准。 SNMP在90年代初得到了迅猛发展,同时也暴露出了明显的不足,如,难以实现大量的数据传输,缺少身份验证(Authentication)和加密(Privacy)机制。因此,1993年发布了SNMPv2,具有以下特点: 支持分布式 网络管理 扩展了数据类型 可以实现大量数据的同时传输,提高了效率和性能 丰富了故障处理能力 增加了集合处理功能 加强了数据定义语言
SNMP的5种协议数据单元
SNMP规定了5种 协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。get-request操作:从代理进程处提取一个或多个参数值get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值set-request操作:设置代理进程的一个或多个参数值get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。 前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。
(1)公共SNMP首部 共三个字段: 版本 写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。 共同体(community) 共同体就是一个 字符串,作为管理进程和代理进程之间的明文口令,常用的是6个 字符“public”。 PDU类型 根据PDU的类型,填入0~4中的一个数字,其对应关系如表2所示意图。
表2 PDU类型
|
|
名称 |
|
0 |
get-request |
|
1 |
get-next-request |
|
2 |
get-response |
|
3 |
set-request |
|
4 |
trap |
2)get/set首部 请求标识符(request ID) 这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文 差错状态(error status) 由代理进程回答时填入0~5中的一个数字,见表3的描述
表3 差错状态描述
|
差错状态 |
名字 |
说明 |
|
0 |
noError |
一切正常 |
|
1 |
tooBig |
代理无法将回答装入到一个SNMP报文之中 |
|
2 |
noSuchName |
操作指明了一个不存在的变量 |
|
3 |
badValue |
一个set操作指明了一个无效值或无效语法 |
|
4 |
readOnly |
管理进程试图修改一个只读变量 |
|
5 |
genErr |
某些其他的差错 |
差错索引(error index) 当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。 (3)trap首部 企业(enterprise) 填入trap报文的 网络设备的对象标识符。此对象标识符肯定是在图3的对象命名树上的enterprise结点{1.3.6.1.4.1}下面的一棵子树上。 trap类型 此字段正式的名称是generic-trap,共分为表4中的7种。
|
trap类型 |
名字 |
说明 |
|
0 |
coldStart |
代理进行了初始化 |
|
1 |
warmStart |
代理进行了重新初始化 |
|
2 |
linkDown |
一个接口从工作状态变为故障状态 |
|
3 |
linkUp |
一个接口从故障状态变为工作状态 |
|
4 |
authenticationFailure |
从SNMP管理进程接收到具有一个无效共同体的报文 |
|
5 |
egpNeighborLoss |
一个EGP相邻路由器变为故障状态 |
|
6 |
enterpriseSpecific |
代理自定义的事件,需要用后面的“特定代码”来指明 |
当使用上述类型2、3、5时,在报文后面变量部分的第一个变量应标识响应的接口。 特定代码(specific-code) 指明代理自定义的时间(若trap类型为6),否则为0。 时间戳(timestamp) 指明自代理进程初始化到trap报告的事件发生所经历的时间,单位为10ms。例如时间戳为1908表明在代理初始化后1908ms发生了该时间。 (4)变量绑定(variable-bindings) 指明一个或多个变量的名和对应的值。在get或get-next报文中,变量的值应忽略。
SNMP与CMIP的比较
SNMP与CMIP是 网络界最主要的两种 网络管理 协议。在未来的 网络管理中,究竟哪一种将占据优势,一直是业界争论的话题。 总的来说,SNMP和CMIP两种 协议是同大于异。两者的管理目标、基本组成部分都基本相同。在MIB库的结构方面,很多厂商将SNMP的MIB扩展成与CMIP的MIB结构相类似,而且两种 协议的定义都采用相同的抽象语法符号(ASN.1)。 不同之处,首先,SNMP面向单项信息检索,而CMIP则面向组合项信息检索。其次,在信息获得方面,SNMP主要基于轮询方式,而CMIP主要采用报告方式。再次,在传送层支持方面,SNMP基于无连接的UDP,而CMIP倾向于有连接的数据传送。此外,两者在功能、 协议规模、性能、标准化、产品化方面还有相当多的不同点。
什么是ftp及ftp服务器
FTP(File Transfer Protocol)是 文件传输 协议的简称。 FTP的作用 正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP 服务器程序)察看远程计算机有哪些 文件,然后把 文件从远程计算机上拷到本地计算机,或把本地计算机的 文件送到远程计算机去。 FTP工作原理 拿下传 文件为例,当你启动FTP从远程计算机拷贝 文件时,你事实上启动了两个 程序:一个本地机上的FTP客户 程序:它向FTP 服务器提出拷贝 文件的请求。另一个是启动在远程计算机的上的FTP 服务器程序,它响应你的请求把你指定的 文件传送到你的计算机中。FTP采用“客户机/ 服务器”方式,用户端要在自己的本地计算机上安装FTP客户 程序。FTP客户 程序有 字符界面和图形界面两种。 字符界面的FTP的命令复杂、繁多。图形界面的FTP客户 程序,操作上要简洁方便的多。 简单地说,支持FTP 协议的 服务器就是FTP 服务器,下面介绍一下什么是FTP 协议( 文件传输 协议) 一般来说,用户联网的首要目的就是实现信息共享, 文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输 文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作 系统,有运行Unix的 服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作 系统之间的 文件交流问题,需要建立一个统一的 文件传输 协议,这就是所谓的FTP。基于不同的操作 系统有不同的FTP应用 程序,而所有这些应用 程序都遵守同一种 协议,这样用户就可以把自己的 文件传送给别人,或者从其它的用户环境中获得 文件。 与大多数Internet服务一样,FTP也是一个客户机/ 服务器系统。用户通过一个支持FTP 协议的客户机 程序,连接到在远程主机上的FTP 服务器程序。用户通过客户机 程序向 服务器程序发出命令, 服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求 服务器向用户传送某一个 文件的一份拷贝, 服务器会响应这条命令,将指定 文件送至用户的机器上。客户机 程序代表用户接收到这个 文件,将其存放在用户目录中。 在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上载"(Upload)。"下载" 文件就是从远程主机拷贝 文件至自己的计算机上;"上载" 文件就是将 文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机 程序向(从)远程主机上载(下载) 文件。 使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下载 文件。也就是说,要想同哪一台计算机传送 文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送 文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。 匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载 文件,而无需成为其注册用户。 系统管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。 通过FTP 程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的 字符串。习惯上,用自己的E-mail地址作为口令,使 系统维护 程序能够记录下来谁在存取这些 文件。 值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。 当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。 系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载 文件,而不允许用户向其上载 文件,也就是说,用户可将匿名FTP主机上的所有 文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个 文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上载 文件,用户也只能将 文件上载至某一指定上载目录中。随后, 系统管理员会去检查这些 文件,他会将这些 文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上载有问题的 文件,如带病毒的 文件。 作为一个Internet用户,可通过FTP在任何两台Internet主机之间拷贝 文件。但是,实际上大多数人只有一个Internet帐户,FTP主要用于下载公共 文件,例如共享软件、各公司技术支持 文件等。 Internet上有成千上万台匿名FTP主机,这些主机上存放着数不清的 文件,供用户免费拷贝。实际上,几乎所有类型的信息,所有类型的计算机 程序都可以在Internet上找到。这是Internet吸引我们的重要原因之一。 匿名FTP使用户有机会存取到世界上最大的信息库,这个信息库是日积月累起来的,并且还在不断增长,永不关闭,涉及到几乎所有主题。而且,这一切是免费的。 匿名FTP是Internet网上发布软件的常用方法。Internet之所以能延续到今天,是因为人们使用通过标准 协议提供标准服务的 程序。像这样的 程序,有许多就是通过匿名FTP发布的,任何人都可以存取它们。 Internet中的有数目巨大的匿名FTP主机以及更多的 文件,那么到底怎样才能知道某一特定 文件位于哪个匿名FTP主机上的那个目录中呢?这正是Archie 服务器所要完成的工作。Archie将自动在FTP主机中进行搜索,构造一个包含全部 文件目录信息的 数据库,使你可以直接找到所需 文件的位置信息。
TCP/IP协议简介
TCP/IP(TransmissionControlProtocol/InternetProtocol的简写,中文译名为传输控制 协议/互联 网络协议) 协议是Internet最基本的 协议,简单地说,就是由底层的IP 协议和TCP 协议组成的。TCP/IP 协议的开发工作始于70年代,是用于互联网的第一套 协议。
1.1 TCP/IP参考模型
TCP/IP 协议的开发研制人员将Internet分为五个层次,以便于理解,它也称为互联网分层模型或互联网分层参考模型,
·物理层:对应于 网络的基本硬件,这也是Internet物理构成,即我们可以看得见的硬件设备,如PC机、互连网 服务器、 网络设备等,必须对这些硬件设备的电气特性作一个规范,使这些设备都能够互相连接并兼容使用。 · 网络接口层:它定义了将数据组成正确帧的规程和在 网络中传输帧的规程,帧是指一串数据,它是数据在 网络中传输的单位。 ·互联网层:本层定义了互联网中传输的“信息包”格式,以及从一个用户通过一个或多个路由器到最终目标的"信息包"转发机制。 ·传输层:为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连接。 ·应用层:它定义了应用 程序使用互联网的规程。 1. 2 网间 协议IP
Internet上使用的一个关键的底层 协议是网际 协议,通常称IP 协议。我们利用一个共同遵守的通信 协议,从而使Internet成为一个允许连接不同类型的计算机和不同操作 系统的 网络。要使两台计算机彼此之间进行通信,必须使两台计算机使用同一种"语言"。通信 协议正像两台计算机交换信息所使用的共同语言,它规定了通信双方在通信中所应共同遵守的约定。 计算机的通信 协议精确地定义了计算机在彼此通信过程的所有细节。例如,每台计算机发送的信息格式和含义,在什么情况下应发送规定的特殊信息,以及接收方的计算机应做出哪些应答等等。 网际 协议IP 协议提供了能适应各种各样 网络硬件的灵活性,对底层 网络硬件几乎没有任何要求,任何一个 网络只要可以从一个地点向另一个地点传送二进制数据,就可以使用IP 协议加入Internet了。 如果希望能在Internet上进行交流和通信,则每台连上Internet的计算机都必须遵守IP 协议。为此使用Internet的每台计算机都必须运行IP软件,以便时刻准备发送或接收信息。 IP 协议对于 网络通信有着重要的意义: 网络中的计算机通过安装IP软件,使许许多多的局域 网络构成了一个庞大而又严密的通信 系统。从而使Internet看起来好像是真实存在的,但实际上它是一种并不存在的虚拟 网络,只不过是利用IP 协议把全世界上所有愿意接入Internet的计算机局域 网络连接起来,使得它们彼此之间都能够通信。 1.3 传输控制 协议TCP
尽管计算机通过安装IP软件,从而保证了计算机之间可以发送和接收数据,但IP 协议还不能解决数据分组在传输过程中可能出现的问题。因此,若要解决可能出现的问题,连上Internet的计算机还需要安装TCP 协议来提供可靠的并且无差错的通信服务。 TCP 协议被称作一种端对端 协议。这是因为它为两台计算机之间的连接起了重要作用:当一台计算机需要与另一台远程计算机连接时,TCP 协议会让它们建立一个连接、发送和接收数据以及终止连接。 传输控制 协议TCP 协议利用重发技术和拥塞控制机制,向应用 程序提供可靠的通信连接,使它能够自动适应网上的各种变化。即使在Internet暂时出现堵塞的情况下,TCP也能够保证通信的可靠。 众所周知,Internet是一个庞大的国际性 网络,网路上的拥挤和空闲时间总是交替不定的,加上传送的距离也远近不同,所以传输数据所用时间也会变化不定。TCP 协议具有自动调整"超时值"的功能,能很好地适应Internet上各种各样的变化,确保传输数值的正确。 因此,从上面我们可以了解到:IP 协议只保证计算机能发送和接收分组数据,而TCP 协议则可提供一个可靠的、可流控的、全双工的信息流传输服务。 综上所述,虽然IP和TCP这两个 协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个 协议来设计的,并且在功能上也是互补的。只有两者的结合,才能保证Internet在复杂的环境下正常运行。凡是要连接到Internet的计算机,都必须同时安装和使用这两个 协议,因此在实际中常把这两个 协议统称作TCP/IP 协议。 1. 4 IP地址及其分类
在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的 网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输数据时出现混乱。 Internet的 网络地址是指连入Internet 网络的计算机的地址编号。所以,在Internet 网络中, 网络地址唯一地标识一台计算机。 我们都已经知道,Internet是由几千万台计算机互相连接而成的。而我们要确认 网络上的每一台计算机,靠的就是能唯一标识该计算机的 网络地址,这个地址就叫做IP(InternetProtocol的简写)地址,即用Internet 协议语言表示的地址。 目前,在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,而且,用点分开的每个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫做点数表示法。 IP地址可确认 网络中的任何一个 网络和计算机,而要识别其他 网络或其中的计算机,则是根据这些IP地址的分类来确定的。一般将IP地址按节点计算机所在 网络规模的大小分为A,B,C三类,默认的 网络掩码是根据IP地址中的第一个字段确定的。 1.A类地址 A类地址的表示范围为:0.0.0.0~126.255.255.255,默认 网络掩码为:255.0.0.0;A类地址分配给规模特别大的 网络使用。A类 网络用第一组数字表示 网络本身的地址,后面三组数字作为连接于 网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域 网络个数较少的大型 网络。例如 IBM公司的 网络。 2.B类地址 B类地址的表示范围为:128.0.0.0~191.255.255.255,默认 网络掩码为:255.255.0.0;B类地址分配给一般的中型 网络。B类 网络用第一、二组数字表示 网络的地址,后面两组数字代表 网络上的主机地址。 3.C类地址 C类地址的表示范围为:192.0.0.0~223.255.255.255,默认 网络掩码为:255.255.255.0;C类地址分配给小型 网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。C类 网络用前三组数字表示 网络的地址,最后一组数字作为 网络上的主机地址。 实际上,还存在着D类地址和E类地址。但这两类地址用途比较特殊,在这里只是简单介绍一下:D类地址称为广播地址,供特殊 协议向选定的节点发送信息时用。E类地址保留给将来使用。 连接到Internet上的每台计算机,不论其IP地址属于哪类都与 网络中的其他计算机处于平等地位,因为只有IP地址才是区别计算机的唯一标识。所以,以上IP地址的分类只适用于 网络分类。 在Internet中,一台计算机可以有一个或多个IP地址,就像一个人可以有多个通信地址一样,但两台或多台计算机却不能共用一个IP地址。如果有两台计算机的IP地址相同,则会引起异常现象,无论哪台计算机都将无法正常工作。 顺便提一下几类特殊的IP地址: 1. 广播地址目的端为给定 网络上的所有主机,一般主机段为全0 2. 单播地址目的端为指定 网络上的单个主机地址 3. 组播地址目的端为同一组内的所有主机地址 4. 环回地址127.0.0.1在环回测试和广播测试时会使用 1.5 子网的划分
若公司不上Internet,那一定不会烦恼IPAddress的问题,因为可以任意使用所有的IPAddress,不管是AClass或是BClass,这个时候不会想到要用SubNet,但若是上Internet那IPAddress便弥足珍贵了,目前全球一阵Internet热,IPAddress已经愈来愈少了,而所申请的IPAddress目前也趋保守,而且只有经申请的IPAddress能在Internet使用,但对某些公司只能申请到一个CCLass的IPAddress,但又有多个点需要使用,那这时便需要使用到Subnet,这就需要考虑子网的划分,下面简介Subnet的原理及如何规划。 1.5.1 Subnet Mask的介绍
设定任何网路上的任何设备不管是主机、PC、Router等皆需要设定IPAddress,而跟随着IPAddress的是所谓的NetMask,这个NetMask主要的目的是由IPAddress中也能获得NetworkNumber,也就是说IPAddress和NetMask作AND而得到NetworkNumber,如下所示: IPAddress 192.10.10.611000000.00001010.00001010.00000110 NetMask 255.255.255.011111111.11111111.11111111.00000000 AND ------------------------------------------------------------------- NetworkNumber 192.10.10.011000000.00001010.00001010.00000000 NetMask有所谓的预设值,如下所示 ClassIPAddress范围NetMask A 1.0.0.0-126.255.255.255255.0.0.0 B 128.0.0.0-191.255.255.255255.255.0.0 C 192.0.0.0-223.255.255.255255.255.255.0 在预设的NetMask都只有255的值,在谈到SubnetMask时这个值便不一定是255了。在完整一组CClass中如203.67.10.0-203.67.10.255NetMask255.255.255.0,203.67.10.0称之NetworkNumber(将IPAddress和Netmask作AND),而203.67.10.255是Broadcast的IPAddress,所以这两者皆不能使用,实际只能使用203.67.10.1--203.67.10.254等254个IPAddress,这是以255.255.255.0作NetMask的结果,而所谓SubnetMsk尚可将整组CClass分成数组NetworkNumber,这要在NEtMask作手脚,若是要将整组CCLass分成2个NetworkNumber那NetMask设定为255.255.255.192,若是要将整组CCLass分成8组NetworkNumber则NetMask要为255.255.255.224,这是怎麽来的,由以上知道NetworkNumber是由IPAddress和NetMask作AND而来的,而且将NetMask以二进位表示法知道是1的会保留,而为0的去掉 192.10.10.193--11000000.00001010.00001010.10000001 255.255.255.0--11111111.11111111.11111111.00000000 -------------------------------------------------------------- 192.10.10.0--11000000.00001010.00001010.00000000 以上是以255.255.255.0为NetMask的结果,NetworkNumber是192.10.10.0,若是使用255.255.255.224作NetMask结果便有所不同 192.10.10.193--11000000.00001010.00001010.10000000 255.255.255.224--11111111.11111111.11111111.11100000 -------------------------------------------------------------- 192.10.10.192--11000000.00001010.00001010.10000000 此时NetworkNumber变成了192.10.10.192,这便是Subnet。那要如何决定所使用的NetMask,255.255.255.224以二进位表示法为11111111.11111111.11111111.11100000,变化是在最後一组,11100000便是224,以三个Bit可表示2的3次方便是8个NetworkNumber NetMask二进位表示法可分几个Network 255.255.255.011111111.11111111.11111111.000000001 255.255.255.128 11111111.11111111.11111111.100000002 255.255.255.192 11111111.11111111.11111111.110000004 255.255.255.224 11111111.11111111.11111111.111000008 255.255.255.240 11111111.11111111.11111111.1111000016 255.255.255.248 11111111.11111111.11111111.1111100032 255.255.255.252 11111111.11111111.11111111.1111110064 以下使用255.255.255.224将C Class203.67.10.0分成8组NetworkNumber,各个NetworkNumber及其BroadcastIPAddress及可使用之IPAddress序号NetworkNumberBroadcast可使用之IPAddress (1)203.67.10.0--203.67.10.31 203.67.10.1--203.67.10.30 (2)203.67.10.32--203.67.10.63 203.67.10.33--203.67.10.62 (3)203.67.10.64--203.67.10.95 203.67.10.65--203.67.10.94 (4)203.67.10.96--203.67.10.127 203.67.10.97--203.67.10.126 (5)203.67.10.128--203.67.10.159 203.67.10.129--203.67.10.158 (6)203.67.10.160--203.67.10.191 203.67.10.161--203.67.10.190 (7)203.67.10.192--203.67.10.223 203.67.10.193--203.67.10.222 (8)203.67.10.224--203.67.10.255 203.67.10.225--203.67.10.254 可验证所使用的IPAddress是否如上表所示 203.67.10.115--11001011.01000011.00001010.01110011 255.255.255.224--11111111.11111111.11111111.11100000 -------------------------------------------------------------- 203.67.10.96--11001011.01000011.00001010.01100000 203.67.10.55--11001011.01000011.00001010.00110111 255.255.255.224--11111111.11111111.11111111.11100000 -------------------------------------------------------------- 203.67.10.32--11001011.01000011.00001010.00100000 其他的NetMask所分成的NetworkNumber可自行以上述方法自行推演出来。 1.5.2 Subnet的应用
使用Subnet是要解决只有一组CClass但需要数个NetworkNumber的问题,并不是解决IPAddress不够用的问题,因为使用Subnet反而能使用的IPAddress会变少,Subnet通常是使用在跨地域的 网络互联之中,两者之间使用Router连线,同时也上Internet,但只申请到一组CClassIPAddress,过Router又需不同的Network,所以此时就必须使用到Subnet,当然二 网络间也可以RemoteBridge连接,那便没有使用Subnet的问题。 1.6 几个常用的 程序1.6.1 ping
这个 程序用来检测一帧数据从当前主机传送到目的主机所需要的时间。当 网络运行中出现故障时,采用这个实用 程序来预测故障和确定故障源是非常有效的。如果执行ping不成功,则可以预测故障出现在以下几个方面:网线是否连通, 网络适配器配置是否正确,IP地址是否可用等;如果执行ping成功而 网络仍无法使用,那么问题很可能出在 网络系统的软件配置方面,ping成功只能保证当前主机与目的主机间存在一条连通的物理路径。它还提供了许多参数,如-t使当前主机不断地向目的主机发送数据,直到使用Ctrl-C中断;-n可以自己确定向目的主机发送的数据帧数等等。 1.6.2 winipcfg
它用来显示主机内IP 协议的配置信息。它采用Windows窗口的形式显示具体信息。这些信息包括: 网络适配器的物理地址、主机的IP地址、子网掩码以及默认网关等,还可以查看主机的相关信息如:主机名、DNS 服务器、节点类型等。其中 网络适配器的物理地址在检测 网络错误时非常有用。 1.6.3 tracert 这个 程序的功能是判定数据包到达目的主机所经过的路径、显示数据包经过的中继节点清单和到达时间。还可以使用参数-d决定是否解析主机名。 1.6.4 netstat 这个 程序有助于我们了解 网络的整体使用情况。它可以显示当前正在活动的 网络连接的详细信息,如采用的 协议类型、当前主机与远端相连主机(一个或多个)的IP地址以及它们之间的连接状态等。它提供的较为常用的参数是:-e用以显示以太网的统计信息;-s显示所有 协议的使用状态,这些 协议包括TCP、UDP和IP,一般这两个参数都是结合在一起使用的。另外-p可以选择特定的 协议并查看其具体使用信息,-a可以显示所有主机的端口号,-r则显示当前主机的详细路由信息。 要运行以上这些 程序,只要在DOS方式或Windows开始菜单的运行栏中以命令行的形式键入 程序名即可。灵活使用这几个 程序可以使你大体了解自己主机对 网络的使用情况。
解析IP地址与MAC地址
一、IP地址 对于IP地址,相信大家都很熟悉,即指使用TCP/IP 协议指定给主机的32位地址。IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种写法叫点分十进制格式。IP地址由 网络地址和主机地址两部分组成,分配给这两部分的位数随地址类(A类、B类、C类等)的不同而不同。 网络地址用于路由选择,而主机地址用于在 网络或子网内部寻找一个单独的主机。一个IP地址使得将来自源地址的数据通过路由而传送到目的地址变为可能。 二、MAC地址 对于MAC地址,由于我们不直接和它接触,所以大家不一定很熟悉。在OSI(Open System Interconnection,开放 系统互连)7层 网络协议(物理层,数据链路层, 网络层,传输层,会话层,表示层,应用层)参考模型中,第二层为数据链路层(Data Link)。它包含两个子层,上一层是逻辑链路控制(LLC:Logical Link Control),下一层即是我们前面所提到的MAC(Media Access Control)层,即介质访问控制层。所谓介质(Media),是指传输信号所通过的多种物理环境。常用 网络介质包括电缆(如:双绞线,同轴电缆,光纤),还有微波、激光、红外线等,有时也称介质为物理介质。MAC地址也叫物理地址、硬件地址或链路地址,由 网络设备制造商生产时写在硬件内部。这个地址与 网络无关,也即无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入到 网络的何处,它都有相同的MAC地址,MAC地址一般不可改变,不能由用户自己设定。 三、MAC地址的长度、表示方法、分配方法及其唯一性 MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20:0A:8C:6D就是一个MAC地址,其中前6位16进制数08:00:20代表 网络硬件制造商的编号,它由IEEE(Istitute of Electrical and Electronics Engineers,电气与电子工程师协会)分配,而后3位16进制数0A:8C:6D代表该制造商所制造的某个 网络产品(如网卡)的系列号。每个 网络制造商必须确保它所制造的每个以太网设备都具有相同的前三字节以及不同的后三个字节。这样就可保证世界上每个以太网设备都具有唯一的MAC地址。 四、IP地址与MAC地址在互连网中的作用 既然每个以太网设备在出厂时都有一个唯一的MAC地址了,那为什么还需要为每台主机再分配一个IP地址呢?或者说为什么每台主机都分配唯一的IP地址了,为什么还要在 网络设备(如网卡,集线器,路由器等)生产时内嵌一个唯一的MAC地址呢?主要原因有以下几点:(1)IP地址的分配是根据 网络的拓朴结构,而不是根据谁制造了 网络设置。若将高效的路由选择方案建立在设备制造商的基础上而不是 网络所处的拓朴位置基础上,这种方案是不可行的。(2)当存在一个附加层的地址寻址时,设备更易于移动和维修。例如,如果一个以太网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个 网络移到另一个 网络,可以给它一个新的IP地址,而无须换一个新的网卡。(3)无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的移动都是由ARP(Address Resolution Protocol:地址解析 协议)负责将IP地址映射到MAC地址上来完成的。下面我们来通过一个例子看看IP地址和MAC地址是怎样结合来传送数据包的。
假设 网络上要将一个数据包(名为PAC)由北京的一台主机(名称为A,IP地址为IP_A,MAC地址为MAC_A)发送到华盛顿的一台主机(名称为B,IP地址为IP_B,MAC地址为MAC_B)。这两台主机之间不可能是直接连接起来的,因而数据包在传递时必然要经过许多中间节点(如路由器, 服务器等等),我们假定在传输过程中要经过C1、C2、C3(其MAC地址分别为M1,M2,M3)三个节点。A在将PAC发出之前,先发送一个ARP请求,找到其要到达IP_B所必须经历的第一个中间节点C1的MAC地址M1,然后在其数据包中封装(Encapsulation)这些地址:IP_A、IP_B,MAC_A和M1。当PAC传到C1后,再由ARP根据其目的IP地址IP_B,找到其要经历的第二个中间节点C2的MAC地址M2,然后再将带有M2的数据包传送到C2。如此类推,直到最后找到带有IP地址为IP_B的B主机的地址MAC_B,最终传送给主机B。在传输过程中,IP_A、IP_B和MAC_A不变,而中间节点的MAC地址通过ARP在不断改变(M1,M2,M3),直至目的地址MAC_B。 综合上面所述,我们可以归纳出IP地址和MAC地址相同点是它们都唯一,不同的特点主要有: 1. 对于 网络上的某一设备,如一台计算机或一台路由器,其IP地址可变(但必须唯一),而MAC地址不可变。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一 网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址永远唯一且不能由用户改变。 2. 长度不同。IP地址为32位,MAC地址为48位。 3. 分配依据不同。IP地址的分配是基于 网络拓朴,MAC地址的分配是基于制造商。 4. 寻址 协议层不同。IP地址应用于OSI第三层,即 网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层 协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而 网络层 协议使数据可以从一个 网络传递到另一个 网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的 网络)。
TFTP协议简介
1. 目的
TFTP是一个传输 文件的简单 协议,它其于UDP 协议而实现,但是我们也不能确定有些TFTP 协议是基于其它传输 协议完成的。此 协议设计的时候是进行小 文件传输的。因此它不具备通常的FTP的许多功能,它只能从 文件服务器上获得或写入 文件,不能列出目录,不进行 认证,它传输8位数据。传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为 文件。
2. 概况
任何传输起自一个读取或写入 文件的请求,这个请求也是连接请求。如果 服务器批准此请求,则 服务器打开连接,数据以定长512字节传输。每个数据包包括一块数据, 服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。如果一个数据包的大小小于512字节,则表示传输结构。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。通信的双方都是数据的发出者与接收者,一方传输数据接收应答,另一方发出应答接收数据。大部分的错误会导致连接中断,错误由一个错误的数据包引起。这个包不会被确认,也不会被重新发送,因此另一方无法接收到。如果错误包丢失,则使用超时机制。错误主要是由下面三种情况引起的:不能满足请求,收到的数据包内容错误,而这种错误不能由延时或重发解释,对需要资源的访问丢失(如硬盘满)。TFTP只在一种情况下不中断连接,这种情况是源端口不正确,在这种情况下,指示错误的包会被发送到源机。这个 协议限制很多,这是都是为了实现起来比较方便而进行的。
因为TFTP使用UDP,而UDP使用IP,IP可以还使用其它本地通信方法。因此一个TFTP包中会有以下几段:本地媒介头,IP头,数据报头,TFTP头,剩下的就是TFTP数据了。TFTP在IP头中不指定任何数据,但是它使用UDP中的源和目标端口以及包长度域。由TFTP使用的包标记(TID)在这里被用做端口,因此TID必须介于0到65,535之间。对它的初始化我们在后面讨论。TFTP头中包括两上字节的操作码,这个码指出了包的类型下面我们看看大体上的TFTP包格式,相关的内容我们在后面的章节中进行讨论。
--------------------------------------------------- | Local Medium | Internet | Datagram | TFTP | --------------------------------------------------- 图3-1: 包头次序
4. 初始连接
初始连接时候需要发出WRQ(请求写入远程 系统)或RRQ(请求读取远程 系统),收到一个确定应答,一个确定可以写出的包或应该读取的第一块数据。通常确认包包括要确认的包的包号,每个数据包都与一个块号相对应,块号从1开始而且是连续的。因此对于写入请求的确定是一个比较特殊的情况,因此它的包的包号是0。如果收到的包是一个错误的包,则这个请求被拒绝。创建连接时,通信双方随机选择一个TID,因此是随机选择的,因此两次选择同一个ID的可能性就很小了。每个包包括两个TID,发送者ID和接收者ID。这些ID用于在UDP通信时选择端口,请求主机选择ID的方法上面已经说过了,在第一次请求的时候它会将请求发到TID 69,也就是 服务器的69端口上。应答时, 服务器使用一个选择好的TID作为源TID,并用上一个包中的TID作为目的ID进行发送。这两个被选择的ID在随后的通信中会被一直使用。下例是一个写入的例子,其中WRQ,ACK和DATA代表写入请求,确认和数据。
1. 主机A向主机B发出WRQ,其中端口为69 2. B机向A机发出ACK,块号为0,包括B和A的TID
此时连接建立,第一个数据包以序列号1从主机开始发出。以后两台主机要保证以开始时确定的TID进行通信。如果源ID与原来确定的ID不一样,这个包会被认识为发送到了错误的地址而被抛弃。错误的包是被发送到正确端口的,但是包本身有错误。设想发送方发出一个请求,这个请求在 网络的那个设备中被复制成两个包,接收方先后接收到两个包。接收方会认为为这是两个独立的请求,会返回两个应答。当这两个应答其中之一被接收到时,连接已经建立。第二个应答再到达时,这个包会被抛弃,而不会因为接收到第二个应答包而导致第一个建立的连接失败。
5. TFTP包
TFTP支持五种类型的包,我们在以上已经说明这五种类型的包: opcode operation 1 Read request (RRQ) 2 Write request (WRQ) 3 Data (DATA) 4 Acknowledgment (ACK) 5 Error (ERROR)
包头中包括了这个包所指定的操作码。 2 bytes string 1 byte string 1 byte ------------------------------------------------ | Opcode | Filename | 0 | Mode | 0 | ------------------------------------------------
Figure 5-1: RRQ/WRQ包
RRQ和WRQ包(代码分别为1和2)的格式如上所示。 文件名是NETASCII码 字符,以0结束。 而MODE域包括了 字符串"netascii","octet"或"mail",名称不分大小写。接收到NETASCII格式数据的主机必须将数据转换为本地格式。OCTET模式用于传输 文件,这种 文件在源机上以8位格式存储。假设每个机器都存在一个8位的格式,这样的假设是最一般的。比如DEC-20,这是一种36位机,我们可以假设它是4个8位外加另外4位而构成。如果机器收到OCTET格式 文件,返回时必须与原来 文件完全一样。在使用MAIL模式时,用户可以在FILE处使用接收人地址,这个地址可以是用户名或用户名@主机的形式,如果是后一种形式,允许主机使用电子邮件传输此 文件。如果使用MAIL类型,包必须以WRQ开始,否则它与NETASCII完全一样。我们的讨论建立在发送方和接收方都在相同模式的情况下,, 但是双方可以以不同的模式进行传输。例如一个机器可以是一台存储 服务器,这样一台 服务器需要将NETASCII格式转换为自己的格式。另外,我们可以设想DEC-20这种机器,它使用36位字长,用户这边可以使用特殊的机制一次读取36位,而 服务器却可以仍然使用8位格式。在这两种情况下,我们看到了两台机器使用不同格式的情况。可以在两台主机间定义其它的传输方式,但是定义要小心,因为这种传输方式不为人知,而且也没有权威机构为其指定名称或定义它的模式。
2 bytes 2 bytes n bytes ---------------------------------- | Opcode | Block # | Data | ---------------------------------- Figure 5-2: DATA包
数据在数据包中传输,其格式如上图所示。数据包的OP码为3,它还包括有一个数据块号和数据。数据块号域从1开始编码,每个数据块加1,这样接收方可以确定这个包是新数据还是已经接收过的数据。数据域从0字节到512字节。如果数据域是512字节则它不是最后一个包,如果小于512字节则表示这个包是最后一个包。除了ACK和用于中断的包外,其它的包均得到确认。发出新的数据包等于确认上次的包。WRQ和DATA包由ACK或ERROR数据包确认,而RRQ数据包由DATA或ERROR数据包确认。下图即是一个ACK包,操作码为4。其中的包号为要确认的数据包的包号。
2 bytes 2 bytes --------------------- | Opcode | Block # | --------------------- Figure 5-3: ACK包
WRQ数据包被ACK数据包确认,WRQ数据包的包号为0。
2 bytes 2 bytes string 1 byte ----------------------------------------- | Opcode | ErrorCode | ErrMsg | 0 | ----------------------------------------- Figure 5-4: ERROR包
一个ERROR包,它的操作码是5,它的格式如上所示。此包可以被其它任何类型的包确认。错误码指定错误的类型。错误的值和错误的意义在附录中。错误信息是供 程序员使用的。
6. 正常终止
传输的结束由DATA数据标记,其包括0-511个 字符。这个包可以被其它数据包确认。接收方在发出对最后数据包的确认后可以断开连接,当然,适当的等待是比较好的,如果最后的确定包丢失可以再次传输。如果发出确认后仍然收到最后数据包,可以确定最后的确认丢失。发送最后一个DATA包的主机必须等待对此包的确认或超时。如果响应是ACK,传输完成。如果发送方超时并不准备重新发送并且接收方有问题或 网络有问题时,发送也正常结束。当然实现时也可以是非正常结束,但无论如何连接都将被关闭。
7. 早终结
如果请求不能被满足,或者在传输中发生错误,需要发送ERROR包。这仅是一种传输友好的方式,这种包不会被确认也不会被重新传输,因此这种包可能永远不会被接收到。因此需要用超时来侦测错误。
I. 附录
包头的次序
2 bytes ---------------------------------------------------------- | Local Medium | Internet | Datagram | TFTP Opcode | ----------------------------------------------------------
TFTP格式
Type Op # 没有包头的格式
2 bytes string 1 byte string 1 byte ----------------------------------------------- RRQ/ | 01/02 | Filename | 0 | Mode | 0 | WRQ -----------------------------------------------
2 bytes 2 bytes n bytes --------------------------------- DATA | 03 | Block # | Data | ---------------------------------
2 bytes 2 bytes ------------------- ACK | 04 | Block # | --------------------
2 bytes 2 bytes string 1 byte ---------------------------------------- ERROR | 05 | ErrorCode | ErrMsg | 0 | ----------------------------------------
1. 主机A发RRQ到A,包括源=A的ID和目的=69 2. 主机B发送DATA,其中包号=1,这个包被传送到A,源=B的ID,目的=A的ID
错误码
Value Meaning 0 未定义,请参阅错误信息(如果提示这种信息的话) 1 文件未找到 2 访问非法 3 磁盘满或超过分配的配额 4 非法的TFTP操作 5 未知的传输ID 6 文件已经存在 7 没有类似的用户
Internet用户数据报头
(TFTP不一定非要在UDP上实现。)
Format
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Length | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
域的值
Source Port 由传输发起方选择 Dest. Port 由目的地选择(如果是RRQ或WRQ,其值为69) Length 包括UDP包头的包长度 Checksum 校验码,如果是0,则未使用校验
注意:TFTP将传输标记TID传送给UDP作为源和目的端口
安全问题
因为TFTP没有安全控制机制,因此安全问题应该多加考虑。通常TFTP允许下载数据而不允许上传数据。
DNS协议概述
1. 介绍 本文主要介绍域名(DNS)的一些机制及实现方法,下面我们就具体看一下它的情况。 1.1. 域名的历史 产生域名的的根本动机在于管理方便,原来的主机名与IP地址映射是保存在NIC的hosts.txt 文件中的,当时因为主机数量少,这个 文件也不经常变化,因此其它主机几天一次从NIC的主机上下载这个 文件进行主机名和IP地址映射就可以了。但随着 网络的发展,这种方法变得无法使用,因为经常会有主机要求下载,对NIC的主机造成巨大的压力,而且也不能保证服务的质量。许多局域网用户希望自己管理自己的主机名,而不希望等NIC许多天把自己的主机名加在hosts.txt 文件中,有些组织也希望有自己的名字空间配置。是需要一个能够简单管理的方法了。最后决定使用层次式的名字空间组织方案,以.为分隔标准不同的层次。整个名字空间以分布式 数据库管理。请看阅读前不要把平常的域名和这里的域名 系统混在一起。最好的方法就是把原来的观念忘记了,看现在的新东西。 1.2. DNS设计目标 DNS的设置目标影响了它的结构,主要目标是对资源有一个一致的名字空间,为了避免不同编码带来的问题,需要包括 网络标记,地址,路由或其它信息作为名字的一部分。出于对实验数据的分析,看来分布式的存储条件是必须的。要在获取数据的代价和数据准确性之间有一个平衡。需要对名字所代表的资源类型有一个标记。要支持多 协议访问。名字 服务器操作独立于通信 系统。应该能够使用不同的机器都能够使用这一 系统,使用的方法可能不同,但是都要能够使用。 1.3. 基于使用的一些假设 设计 系统时是基于下面假设进行的: 数据库的初始大小和使用 系统的主机成正比,但最后 数据库的大小会和用户的数目成正比,这一过程会发生在一些资源(如邮箱和其它一些要加入到域名 系统中的信息)进入 系统开始;大部分的数据改变比较慢,但 系统能够对改变有一些快速的适应。由相应的组织负责分布式 数据库的维护。域名 系统的用户可以选择自己喜欢的主机。因为其中的数据十分敏感而且重要,因此一定要保证正确性,如果因为主机或 网络失败而造成无法为用户服务,用户要以原来的数据为准,不要自己胡乱想一个数据就用。在查询的时候要避免循环查询,一种方法是将未找到这一信息返回给用户,让用户再找新的主机寻找相应的地址,一种是由主机找别的主机寻找相应的地址,找到后由相应的主机返回地址给用户,这两个方法各有好处。域名 系统假设所有的数据是在一个主 文件中保存,这个主 文件的内容分布存储于 系统中的各台主机上。用户通过标准的查询 程序resolover查询。主 文件的标准形式使得它可以在不同主机间进行传输(利用FTP,电子邮件等方式)。本地可以使用文本编辑器进行管理,然后将这个 文件传输到名字 服务器那里,然后通知名字 服务器的管理员加载这个 文件就是了。对于resolver来说,配置好的名字 服务器是地址信息的主要来源。域名 系统定义了访问数据的过程和访问其它名字 服务器的方法,它还定义了缓冲的大小和更新缓冲的时间等配置信息。 系统管理员需要提供: 区域(zone)边界定义 主 文件数据 主 文件的更新 更新策略描述 域名 系统需要提供: 源数据的标准格式 查询 数据库的标准方法 多其它名字 服务器上更新数据的标准方法 1.4. DNS组成 DNS由下面三个部分组成: 域名空间和资源记录,域名空间是一个树状结构,资源记录是与名字相关的一些数据。从概念上说,每个结点和域名空间树的叶子结点都有一定的信息,而查询是要查询出一些与之相关的特定信息。 名字 服务器是 服务器程序,它保留域名树结构和相应的信息,它可以缓冲各种数据,保存域名树中的任何部分,但是通常它保存域名空间的一个子集,如果需要查询其它信息可以通过指向其它名字 服务器的地址寻找。这个名字 服务器是这一部分的 认证权威,所有的 认证信息组成一个单元称为区,这些区可以分布于不同的 服务器上以保证数据的冗余。 resolver是向名字 服务器提出查询请求并将结果返回给客户的 程序,它必须可以访问至少一个名字 服务器,并将结果直接返回给用户或向别的名字 服务器查询。它通常是用户可以访问的 系统方法,在resolver和用户 程序之间不需要 协议。 下面我们通过三个不同的角度来看看它们的相互关系: 从用户的角度,域名 系统可以通过简单的过程或操作 系统调用来调用本地resolver进行查询。域名空间包括一个单独的树,用户可以从树中的任何一个部分查询信息。 从resolver的角度,域名 系统由一些名字 服务器组成,每个 服务器有域树的整个或部分数据,resolver将这些 数据库视为基本是静态的。 从名字 服务器的角度,域名 系统由称为区(zone)的本地数据集组成,名字 服务器必须定期从主备份上更新自己区内的数据,它还必须处理从resovler传送来的查询请求。 2. 域名空间和资源记录 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域的方法。 对了邮箱,映射会复杂一些。通常的邮件地址<local-part>@<mail-domain>,可以通过将<local-part>转换为一个单独的标记,不要管里面的点,将<mail-domain>通过平常的域名解析方法进行解析,这两部分组合形成一个域名。因此邮件地址HOSTMASTER@SRI-NIC.ARPA,会变为HOSTMASTER.SRI-NIC.ARPA。通常的用户不关心这些定义的规则,但用户应该理解它们使用的是一种的许多要求的综合产物,有要求兼容老产品的,有要求添加新功能的。 2.4. 例子 下图是现在域名 系统的一个部分,它在本文中还会经常被用到。请注意,这个树只是实际树的一个小小的子树。 | +---------------------+------------------+ | | | MIL EDU ARPA | | | +-----+-----+ | +------+-----+-----+ | | | | | | | BRL NOSC DARPA | IN-ADDR SRI-NIC ACC | +--------+------------------+---------------+--------+ | | | | | UCI MIT | UDEL YALE | ISI | | +---+---+ | | | | LCS ACHILLES +--+-----+-----+--------+ | | | | | | XX A C VAXA VENERA Mockapetris 在此例中,根域有三个子域:MIL,EDU和ARPA,而LCS.MIT.EDU域有一个子域XX.LCS.MIT.EDU,其它的节点也是域。 2.5. 命名规则 DNS的命名规则是为了使对域名的命名比较统一。也就是要将任何现存的对象都可以在最小改动的情况下变为域名。谨慎的使用者会选择域名适合域名 系统和应用 程序。例如在命名邮件域名时,使用者会同时遵守相应的邮件 协议。这就使对老软件的兼容性提高了。下面的规则是一个较少引起问题的规则: <domain> ::= <subdomain> | " " <subdomain> ::= <label> | <subdomain> "." <label> <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ] <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str> <let-dig-hyp> ::= <let-dig> | "-" <let-dig> ::= <letter> | <digit> <letter> ::= 大小写的A到Z,共52个 <digit> ::= 0到9 请注意:域名内不分大小写。标记必须遵守ARPANET主机名规则,它要求主机名必须以字母开始,以字母或数字结束,中间的可以是数字字母或连 字符,长度没有限制。但标记必须少于63个 字符。下面的 字符串就表示了APARNET中的主机: A.ISI.EDU XX.LCS.MIT.EDU SRI-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部分是在当前数据的表示类型的基础上得到的。下面是一些RR的例子: ISI.EDU. MX 10 VENERA.ISI.EDU. MX 10 VAXA.ISI.EDU. VENERA.ISI.EDU. A 128.9.0.32 A 10.1.0.52 VAXA.ISI.EDU. A 10.2.0.27 A 128.9.0.33 其中我们注意到MX那一部分,它的RDATA部分有是一个16位数后面跟一个域名组成。其它的也就不说了。本例子显示了6个RR,第三个域名有两个RR。下面是一个例子,它显示在不同的class下如何表示: XX.LCS.MIT.EDU. IN A 10.0.0.44 CH A MIT.EDU. 2420 2.6.2. 别名和统一命名 现存的 系统中有时会对相同的资源有不同的命名,不但主机是这样,邮箱也是这样,不同的名字指向的是同一个位置。大部分 系统都能够对多个名字指定一个是统一命名的结果,另外的是别名。域名 系统提供使用统一命名的机制(CNAME RR),CNAME RR标记它的owner名为别名,并指出在RDATA部分的相应统一命名。如果一个结点存在CNAME RR,不应该有其它的数据,这保证了统一命名和它的别名不能不同。这也使得缓冲的CNAME可以不用检索 认证权威 服务器就可以提供服务。在有CNAME RR时,DNS软件如果查询不到与域名相关的资源,它会检查资源集中是不是有一个有匹配class的CNAME,如果有,名字 服务器返回的应答中包括这个CNAME记录,并根据在CNAME中指定的数据开始新的查询。下面我们看一个例子,假设名字 服务器处理对USC-ISIC.ARPA的查询,它要求查询A信息,下面是RR的内容: USC-ISIC.ARPA IN CNAME C.ISI.EDU C.ISI.EDU IN A 10.0.0.52 这两个RR都作为响应返回,而只查询CNAME的*查询则只返回CNAME。 RR中指向其它名字的域名应该指向主名而不是别名,这就避免了查询中过多的转向查询。例如,对于上面的RR,它的IN-ADDR.ARPA记录应该是: 52.0.0.10.IN-ADDR.ARPA IN PTR C.ISI.EDU 最后指向的是C.ISI.EDU,而不是USC-ISIC.ARPA,当然一个健壮的域名软件不会因为提供了循环的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查询的绝大部分,如果未有特殊说明,一般都指这种查询。 QTYPE和QCLASS域为16位,是定义的type和class的超集。QTYPE域可以包括: <any type>:和相应类型相匹配的RR matches just that type. (e.g., A, PTR). AXFR:由QTYPE指定的特定区 MAILB:和RR相关的所有邮箱 *:所有RR类型 QCLASS域可以包括: <any class>:和相应类相匹配的RR *:所有的RR类 使用查询域名,QTYPE和QCLASS,名字 服务器就会检查相应的RR, 服务器可以返回一个可能包括相应RR的 服务器名。例如:希望向Mockapetris@ISI.EDU发邮件,应用 程序会向resolver要求了解关于ISI.EDU的信息,会产生下面的查询:QNAME=ISI.EDU,QTYPE=MX,QCLASS=IN,可能产生响应的区可能是: ISI.EDU. MX 10 VENERA.ISI.EDU. MX 10 VAXA.ISI.EDU. 随此以外还有: VAXA.ISI.EDU. A 10.2.0.27 A 128.9.0.33 VENERA.ISI.EDU. A 10.1.0.52 A 128.9.0.32 服务器假设如果请求者希望得到邮件交换(exchange)信息,它会马上请求交换 服务器的地址,所以找到两个。这里需要注意QCLASS=*类型的查询,因为 服务器不可能知道了解域名 系统中所有类的可用信息,它也不是所有类的 认证权威,因此这类查询不能得到 认证。 2.7.2. 反向查询(可选) 名字 服务器可以反映资源和域名之间的映射关系。标准查询可以对将域名映射到SOA RR,相应的反向查询则映射SOA RR到域名。 对于名字 服务器来说这种实现是可选的,但是所有的名字 服务器必须至少能够理解反向查询消息,不能说发来的消息当不知道。域名 系统不保证反向查询的完全和唯一性,因为 系统是按照域名而非主机地址或其它资源类型安排的。反向查询主要用于调试,以及和 数据库支持相关的活动中。反向查询可以不返回正确的TTL,也不标明RR是某个集合中的一员,我们不知道它是不是唯一的,因此反向查询的结果不缓冲。反向查询对于映射主机地址到主机名是不合适的,此时要用IN-ADDR.ARPA域。 2.8. 状态查询(实验中) 没有定义 2.9. 完整查询(过时的) 这里就不说了,以后可能会支持重设计(redegsign)服务。 3. 名字 服务器 3.1. 介绍 名字 服务器保存了许多信息,这些信息组成了域 数据库。 数据库被分为区,这些区在不同的 服务器上保存。 服务器可以有不同的可选函数和数据源,它最基本的工作是响应查询,它的响应是是一种简单的形式进行的,响应可以仅根据本地数据作出,也可以根据其它相关 服务器而做出。一个给定的区可以根据不同的 服务器来保证其有效性,通过管理命令,用户可以查询由至少两台 服务器保存的一个区上的数据,多台 服务器保存信息保证了适当的冗余。 给定的名字 服务器通常支持一个或多个区,但只充当域树一小部分的 认证权威。它有一些缓冲的非 认证信息,这些信息是域树其它部分的,在响应查询时名字 服务器会给出什么时它 认证的,什么是它缓冲的。 3.2. 数据库如何被划分为区 划分 数据库有两种方法,一种是根据class,另一种是在名字空间的结点间进行分隔,而产生,我们称这种分隔为cut。class(以下我们称为类)分隔比较简单,在传统上,名字空间和所有类是一回事,分隔的类可被认为是一系列平行的名字空间树。创建新类的通常理由是要为已有的类型创建新的数据格式,或是为了对已有的名字空间进行分隔管理。在一个类中可在两个相邻的结点进行cut(以下我们称为切分),在所有的切分完成后,相连空间的每个组就是一个独立的区。此区是在相连区域内所有数据的 认证权威。 这种方法意味着所有的区至少有一个结点,域名和所有特定区内的结点是相连的。给定的树型结构一定有一个点更加靠近根,我们用这个点标记这个区。虽然可能没什么用,也可以将每个域名分在不同的区中,也可以让所有的结点在一个区中。另外, 数据库也可根据不同企业对名字的控制进行划分,有些企业可能希望自己管理某一部分域名子树,这时这个企业就可以对域名进行相应的增加或删除操作,可以自己加入自己的下一级域名。当然,这个企业也可以对自己管理的名字空间进行进一步划分。 3.2.1. 技术问题 描述一个区的数据有四部分: 区中所有结点的 认证数据 定义区内顶结点的数据(此数据可被认为是 认证数据的一部分) 描述代表子区的数据 访问 服务器子区的数据(我们也称为?#30456;关?#65288;glue)数据) 所有这些数据以RR的形式表示,所有区可以被RR集的形式描述。通过传输RR,可以传输整个区,具体的方法可以是通过FTP传输相应的文本 文件,或是通过 网络消息的形式传输。一个区的 认证数据是所有的RR,这些RR和树中所有的结点是关联的,要么就是切分后的结点关联。描述顶结点的RR对于区的管理特别重要,这些RR有两种类型,名字 服务器RR,它描述了区中的 服务器列表;另一种是SOA RR,它描述的区的管理参数。 描述切分的RR是NS RR,因为切分是在结点间进行的,所有RR不是区 认证数据的一部分,它应该和相应的在子区内的顶结点一致。因为名字 服务器通常和区边界相关,NS RR只在一些区的顶结点上有。在组成一个区的数据中,NS RR在顶层结点和在边界底的切分处出现,不在其它地方。 区结构所要实现的一个目标是任何区都有足够的数据可以和任何子区建立通信。也就是说,父区有足够的信息可以访问子区中的任何一台名字 服务器。NS RR命名了子区 服务器,它不足以完成上面的要求,因此有了名字但仍然不知道地址。特别地,如果名字 服务器的名字在子区内是它自己,我们就无法知道通过它的任何信息了。为了解决这一问题,区中包括了一个关联RR,它不是 认证权威数据的一部分,但它表示了 服务器的地址。如果名字 服务器名在切分下,就需要这些RR了。 3.2.2. 管理问题 当有些组织希望掌握自己的域时,第一步是标记合适的父区,然后取得父区中管理结点的许可来管理。管理的时候没有什么具体的技术问题,可是还是有一些规则的,对中型的区可以没有这些规定,但是小型的就不行了。本文不具体讨论这一问题了,有兴趣可参阅相关的资料。 一旦选择了子区的名字,此区的新管理结点要冗余的名字 服务器来支持。注意:没有要求一个区的 服务器必须在此域中有名字的主机上。在许多种情况下,一个区要想被更容易地访问到最好把内容放得分散一点,不要集中在一起。现在许多国家的名字 服务器是放置在别国的,这样在取得名字解析的时候不用把请求千里迢迢送到远程主机上去了。作为配置的最后一步,就是要选择NS RR和关联RR。 3.3. 深入名字 服务器 3.3.1. 查询和响应 名字 服务器的主要内容就是响应标准查询。查询和响应有专用的格式,查询包括QTYPE,QCLASS和QNAME,它描述了需要数据的类型,类(class)和名字。 服务器的响应取决于它支持不支持循环查询: 最简单的是不支持循环查询,它返回的要么是本地信息,要么是一个错误码,告诉用户你要的信息这里没有,然后再返回一个邻近 服务器的地址,让用户到那里去查一查。 如果支持循环查询,那名字 服务器如果未能在本地找到相应的信息,就代替用户向其它 服务器进行查询,这时它是代替用户扮演了resolver的角色,直到最后把结果找到(也可能根本没有结果,那就返回错误),并返回给用户为止。 使用循环查询要客户和 服务器双方都支持才行。这个信息通过查询和响应中的两位来交换: 如果允许循环查询则设置RA位, 服务器方可以不管客户是否进行请求而直接设置此位 查询中如果请求循环查询则设置RD位,客户只有在知道 服务器方支持循环查询后才能够进行循环查询请求 客户可以在响应中同时设置RA和RD位来确认是否支持循环查询请求。请注意: 服务器在客户未指明RD位时不会自己进行循环查询。 如果请求了循环查询,同时也支持循环查询,对查询的响应会是以下之一: 查询指定的CNAME RR有多个别名 指定的名字 服务器不存在 临时错误 如果未请求循环查询或不支持循环查询,则响应可以可能是: - 认证权威 服务器指出名字不存在 - 临时错误 另外还会提供一些信息,指出所查询的RR是否从一个区来,或者是不是被缓存;另一种信息指明名字 服务器指出还有一个 服务器拥有相同的记录,这个 服务器更靠近要查询的名字的祖先。 3.3.2. 算法 名字 服务器使用的算法和本地操作 系统和数据结构相关,下面的算法假设RR以几个树型结构组织,一个树就是区&
什么是IP/IPv4/IPv6
目前的全球因特网所采用的 协议族是TCP/IP 协议族。IP是TCP/IP 协议族中 网络层的 协议,是TCP/IP 协议族的核心 协议。目前IP 协议的版本号是4(简称为IPv4,v是version——版本),它的下一个版本就是IPv6。IPv6正处在不断发展和完善的过程中,它在不久的将来将取代目前被广泛使用的IPv4。
IPv6与IPv4相比有以下特点和优点:
(1)更大的地址空间。IPv4中规定IP地址长度为32,即有232-1个地址;而IPv6中IP地址的长度为128,即有2128-1个地址。
⑵更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
(3)增强的组播(Multicast)支持以及对流的支持(Flow-control)。这使得 网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的 网络平台。
(4)加入了对自动配置(Auto-configuration)的支持。这是对DHCP 协议的改进和扩展,使得 网络(尤其是局域网)的管理更加方便和快捷。
(5)更高的安全性。在使用IPv6 网络中,用户可以对 网络层的数据进行加密并对IP报文进行校验,这极大地增强了 网络安全。
什么是WINS解析
Windows Internet Name Service 微软开发的域名服务 系统。
WINS是Windows Internet Name Server(Windows网际名字服务)的简称。WINS为NetBIOS名字提供名字注册、更新、释放和转换服务,这些服务允许WINS 服务器维护一个将NetBIOS名链接到IP地址的动态 数据库,大大减轻了对 网络交通的负担。
一.我们为什么需要WINS服务
在默认状态中, 网络上的每一台计算机的NetBIOS名字是通过广播的方式来提供更新的,也就是说,假如 网络上有n台计算机,那么每一台计算机就要广播n-1次,对于小型 网络来说,这似乎并不影响 网络交通,但是当大型 网络来说,加重了 网络的负担。因此WINS对大中型企业来说尤其重要。
二.WINS工作原理
上面说过,WINS 服务器为客户端提供名字注册了、更新、释放和转换服务,下面就详细介绍这四个基本服务的工作原理:
1.名字注册
名字注册就是客户端从WINS 服务器获得信息的过程,在WINS服务中,名字注册是动态的。
当一个客户端启动时,它向所配置的WINS 服务器发送一个名字注册信息(包括了客户机的IP地址和计算机名),如果WINS 服务器正在运行,并且没有没有其它客户计算机注册了相同的名字, 服务器就向客户端计算机返还一个成功注册的消息(包括了名字注册的存活期----TTL)。
与IP地址一样,每个计算机都要求有唯一的计算机名,否则就无法通信。如果名字已经被其它计算机注册了,WINS服务将会验证该名字是否正在使用。如果该名字正在使用则注册失败(发回一个负确认的信息),否则就可以继续注册。
2.名字更新
因为客户端被分配了一个TTL(存活期),所有它的注册也有一定的期限,过了这个期限,WINS 服务器将从 数据库中删除这个名字的注册信息。它的过程是这样的:
(1).在过了存活期的1/8后,客户端开始不断试图更新它的名字注册,如果收到不到任何响应,WINS客户端每过2分钟重复更新浓度,直到存活期过了一半。
(2).当存活期过了一半时,WINS客户端将尝试与次选WINS 服务器更新它的租约,它的过程与首选WINS 服务器一样。
(3).如果时间过了一半后仍然没有成功的话,该客户端又回到它的首选WINS 服务器了。
在该过程中,不管是与首选还是次选WINS 服务器,一旦名字注册成功之后,该WINS客户端的名字注册将被提供一个新的TTL值。 3.名字释放
在客户端的正常关机过程中,WINS客户端向WINS 服务器发送一个名字释放的请求,以请求释放其映射在WINS 服务器数据库中的IP地址和NetBIOS名字。收到释放请求后,WINS 服务器验证一下在它的 数据库中是否有该IP地址和NetBIOS名,如果有就可以正常释放了,否则就会出现错误(WINS 服务器向WINS客户端发送一个负响应)。
如果计算机没有正常关闭,WINS 服务器将不知道其名字已经释放了,则该名字将不会失效,直到WINS名字注册记录过期。
4.名字解析
当客户端在许多 网络操作中需要WINS 服务器解析名字,例如当使用 网络上其它计算机的共享 文件时,为了得到共享 文件,用户需要指定两件事: 系统名和共享名,而 系统名就需要转换成IP地址。
名字解析过程是这样的:
(1).当客户端计算机想要转换一个名字时,它首先检查本地NetBIOS名字缓存器。
(2).如果名字不在本地NetBIOS名字缓存器中,便发送一个名字查询到首选WINS 服务器(每隔15秒发送一次,共发三次),如果请求失败,则向次选WINS发送同样的请求。
(3).如果都失败了,那么名字解析可以通过其它途径来转换(例如本地广播、lmhosts 文件和hosts 文件、或者DNS来进行名字解析。
(1).至少提供一个首选WINS 服务器和一个次选WINS 服务器来提供容错功能。
(2).一个WINS 服务器每分钟可以处理近1500个名字注册和约4500个名字查询。因此我们强烈建议你一个首选和一个次选WINS 服务器可以带动10000个客户端。
(3).如果WINS 服务器与客户机不在同一个子网上,就要考虑到路由器的性能了。
2.客户端的需求
几乎所有的支持 网络互联的Microsoft客户端都可以是WINS客户端,下面列出了可以与WINS一起工作的客户端:
*Windows NT Server 3.5x,4.0
*Windows NT Workstation 3.5x,4.0
*Windows 9x/me/2000
*Windows for Workgroups with TCP/IP-32
*Microsoft Network Client 3.0 for MS-DOS
*LAN Manager 2.2c for MS-DOS
基于DOS的客户端也可以用WINS 服务器进行名字解析,但你必须为它们在WINS 服务器中添加静态词条。
2000以后wins几乎被抛弃
DHCP简介
DHCP是BOOTP的扩展,是基于C/S模式的,它提供了一种动态指定IP地址和配置参数的机制。这主要用于大型 网络环境和配置比较困难的地方。DHCP 服务器自动为客户机指定IP地址,指定的配置参数有些和IP 协议并不相关,但这必没有关系,它的配置参数使得 网络上的计算机通信变得方便而容易实现了。DHCP使IP地址的可以租用,对于许多拥有许多台计算机的大型 网络来说,每台计算机拥有一个IP地址有时候可能是不必要的。租期从1分钟到100年不定,当租期到了的时候, 服务器可以把这个IP地址分配给别的机器使用。客户也可以请求使用自己喜欢的 网络地址及相应的配置参数。 DHCP是对BOOTP的扩展,它的包格式和BOOTP也一样,这样它就可以使用BOOTP的中转发代理来发送DHCP包了,这使得BOOTP和DHCP之间可以实现互操作。对于BOOTP转发代理来说,发的是DHCP包还是BOOTP包,它根本分不清楚。它们使用的 服务器端口号是67和68,但是有些地方还有些不同: DHCP定义了一种可以使IP地址使用一段有限时间的机制,在客户期限到了的时候可以重新分配这个IP地址。 DHCP为用户提供所有IP配置参数。 DHCP包长度比BOOTP包长度稍长。既然包比BOOTP的长,那也不是白带的,这多出的长度里包括了 网络配置参数。 DHCP的包都比BOOTP的长,那 协议也复杂了。DHCP有七种消息类型,而BOOTP只有两种。 下图中我们可以清楚地看到客户机请求获得 网络地址和配置参数的最初几个步骤: 第一步的时候客户发出包的名称叫DHCPDISCOVER,而 服务器返回包的名称叫DHCPOFFER。 1.BOOTP转发代理接收到请求包,并负责向DHCP其它 网络内的DHCP 服务器转发。 2.DHCP 服务器以DHCPOFFER响应客户的要求,这个包内包括可用的IP地址和参数。 3.BOOTP转发代理接收包,并对它进行检查。如果它觉得没有问题,就向客户转发。 4.如果客户在发出DHCPOFFER包后一段时间内没有接收到回应,它有机会重新发送请求10次,否则就通知用户。客户机可以同时接收到许多个 服务器的应答,它可以自己决定用哪一个。下图是客户决定了以后,向 服务器发送应答时的情况。 5.当客户选定了某个目标 服务器后,它会广播DHCPREQUEST包,用以通知选定的 服务器和未选定的 服务器。 6.转发工作仍然由BOOTP转发担任。 7.收到DHCPREQUEST包 服务器会检查收到的包,如果包内的地址和提供的地址一致,证明现在客户机选择的是这台 服务器提供的地址,如果不是,自己提供的地址被拒绝了。 8.被选定的 服务器在接收到DHCPREQUEST包以后,因为某些原因可能不能向客户提供这个 网络地址或参数,它可以向客户发送DHCPNAK包,如果可以提供则可以发送DHCPACK包。 客户在收到包后,检查内部的 网络地址和租用时间,如果客户觉得这个包有问题,它可以发送DHCPDECLINE包拒绝这个地址,然后重新发送DHCPDISCOVER包。如果觉得没有问题,就可以接受这个配置参数。同样当客户接收到DHCPNAK包时,它也可以发送DHCPDISCOVER包。客户可以在租期到期之前释放 网络地址,这通过发送DHCPRELEASE包来实现。 用户下一次可以再次获得相同的IP地址。在这一过程中,许多步骤就可以不用麻烦了,老客户当然要方便一点了。 1.客户在发送的DHCPREQUEST包内包括自己以前使用的IP地址。 2.此包由BOOTP转发代理转发。 3.DHCP 服务器检查DHCPREQUEST包内包括的配置参数。 4.它如果是原来提供这个 网络地址的参数的 服务器,它会认出这些数来,并以DHCPACK包回应。 5.客户接收到DHCPACK包后,它可以接收或拒绝,如果拒绝它可以申请新的 网络地址。 当然了,如果 服务器觉得客户的请求是无效的, 服务器会以DHCPNAK包响应,客户接收到这个包后,会重新会获得 网络地址而发送DHCPDISCOVER包。
Telnet协议概述
Telnet 协议可以工作在任何主机(例如,任何操作 系统)或任何终端之间。RFC854[Postel和Reynolds1983a]定义了该 协议的规范,其中还定义了一种通用 字符终端叫做 网络虚拟终端NVT(NetworkVirtualTerminal)。NVT是虚拟设备,连接的双方,即客户机和 服务器,都必须把它们的物理终端和NVT进行相互转换。也就是说,不管客户进程终端是什么类型,操作 系统必须把它转换为NVT格式。同时,不管 服务器进程的终端是什么类型,操作 系统必须能够把NVT格式转换为终端所能够支持的格式。 NVT是带有键盘和打印机的 字符设备。用户击键产生的数据被发送到 服务器进程, 服务器进程回送的响应则输出到打印机上。默认情况下,用户击键产生的数据是发送到打印机上的,但是我们可以看到这个选项是可以改变的。 NVTASCII 术语NVTASCII代表7比特的ASCII 字符集,网间网 协议族都使用NVTASCII。每个7比特的 字符都以8比特格式发送,最高位比特为0。行结束符以两个 字符CR(回车)和紧接着的LF(换行)这样的序列表示。以\r\n来表示。单独的一个CR也是以两个 字符序列来表示,它们是CR和紧接着的NUL(字节0),以\r\0表示。 Telnet命令 Telnet通信的两个方向都采用带内信令方式。字节0xff(十进制的255)叫做IAC(interpretascommand,意思是“作为命令来解释”)。该字节后面的一个字节才是命令字节。如果要发送数据255,就必须发送两个连续的字节255(在前面一节中我们讲到数据流是NVTASCII,它们都是7bit的格式,这就暗示着255这个数据字节不能在Telnet上传输。其实在Telnet中有一个二进制选项,在RFC856[Postel和Reynolds1983b]中有定义,关于这点我们没有讨论,该选项允许数据以8bit进行传输)。图26-8列出了所有的Telnet命令。由于这些命令中很多命令很少用到,所以对于一些重要的命令,如果在下面章节的例子或叙述中遇到,我们再做解释。
|
名称 |
代码(十进制) |
描述 |
|
|
E O F |
2 3 6 |
|
|
|
S U S P |
2 3 7 |
挂起当前进程(作业控制) |
|
|
A B O RT |
2 3 8 |
异常中止进程 |
|
|
E O R |
2 3 9 |
记录结束符 |
|
|
S E |
2 4 0 |
子选项结束 |
|
|
N O P |
2 4 1 |
无操作 |
|
|
D M |
2 4 2 |
数据标记 |
|
|
B R K |
2 4 3 |
中断 |
|
|
I P |
2 4 4 |
中断进程 |
|
|
A O |
2 4 5 |
异常中止输出 |
|
|
AY T |
2 4 6 |
对方是否还在运行? |
|
|
E C |
2 4 7 |
|
|
|
E L |
2 4 8 | |