关键词网络定位服务解析协议规范关键词网络定位服务解析协议规范 目目 录录前 言1 引言2 范围3 规范性引用文件4 术语5 缩略语6 关键词网络定位服务解析协议遵循的原则7 关键词网络定位体系7.1 关键词解析体系结构7.2 关键词解析流程7.3 关键词语法定义8 关键词请求消息8.1 消息传输8.2 请求方法9 关键词应答消息9.1. 应答的状态行(Status-Line)9.2 应答标题域(Response-Header)9.3 转向应答10 关键词对象的属性10.1 必要属性10.2 附加属性10.3 用户属性11 缓存机制12 关键词与网络资源的映射12.1 关键词网络资源标识符12.2 HTTP 协议下关键词解析请求的语法12.3 http 协议下关键词网络资源定位应答的语法12.4 http 协议下关键词客户机的处理13 关键词网络定位服务解析应用实施实例13.1 关键词客户端13.2 本地解析服务器()13.3 顶级解析服务器()前 言 本规范规定了关键词网络定位服务的解析协议 本规范起草单位:中国互联网络信息中心 本规范发起单位: 中国互联网络信息中心 搜狐爱特信信息技术(北京)有限公司 广州网易计算机系统有限公司 深圳市腾讯计算机系统有限公司 百度网络技术(北京)有限公司 北京爱思美网科技发展有限公司 关键词网络定位服务解析协议规范 1 引言 关键词(Keyword)网络定位技术是继 DNS 域名技术之后发展起来的一种新型互联网访问技术。
在该技术框架下,网络用户能够使用企业名、产品名、商标名或其它通用名称,直接访问目标网站或其它 URI(统一资源定位标识)信息资源 Keyword 是应用级协议,它适应了分布式网络资源对灵活性及速度的要求它是一个一般的、无状态的、面向连接的协议,通过对其请求方法(request methods)进行扩展,可以被用于多种用途 该规范反映了“Keyword/1.0”基于 HTTP 协议的普通用法其后续版本会支持 XML 规范 2 范围 本规范规定了关键词的结构、语法,以及关键词与网络地址(主要是 IP 地址)之间的映射机制,同时规定了关键词网络定位的协议模式和标准的实施要求 本规范适用于关键词的命名、开发、系统运行、系统应用,以及建立在关键词网络定位技术基础之上的相关信息处理领域 返回3 规范性引用文件 GB/T 1988-1998 信息技术 信息交换用七位编码字符集 (ISO/IEC646:1991) GB 13000.1-1993 信息技术 通用多八位编码字符集 (UCS)第一部分:体系结构与基本多文种平面 (ISO/IEC10646.1:1993) GB 4754—84 国民经济行业分类和代码 RFC 3367 Common Name Resolution Protocol (CNRP) RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1 RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 RFC 1866 Hypertext Markup Language -2.0 RFC 1766 Tags for the Identification of Languages ISO 3166 Country and Region Codes 4 术语 本规范用了许多关键词及 HTTP 通讯相关的术语,如下: 关键词解析 关键词解析是在域名技术基础之上提出的、方便互联网用户访问网络资源的一种方法,它实现中文词汇(如:公司名称、产品名称、商标、人名等)到网络资源的直接定向解析处理。
关键词中允许的字符集包括:中文汉字、数字、字母、“-”,全角符号表示需要转为半角符号表示 连接(connection) 两个应用程序以通讯为目的在传输层建立虚拟电路 消息(message) 关键词通讯的基本单元,在连接中传输的结构化的、有顺序的字节(其含义在第四节中定义),可分为请求消息和回应消息 请求(request) 关键词的请求消息 回应(response) 关键词的回应消息 资源(resource) 网络上可以用 URI 来标识的数据对象或服务 客户端(client) 指以发出请求为目的而建立连接的应用程序 用户代理(user agent) 指初始化请求的客户端,如浏览器、编辑器、蜘蛛(web 爬行机器人)或其它终端用户工具 服务器(server) 指接受连接,并通过发送回应来响应服务请求的应用程序 原始服务器(origin server) 存放资源或产生资源的服务器 代理(proxy) 同时扮演服务器及客户端角色的中间程序,用来为其它客户产生请求请求经过变换,被传递到最终的目的服务器,在代理程序内部,请求或被处理,或被传递代理必须在消息转发前对消息进行解释,而且如有必要还得重写消息。
代理通常被用作经过防火墙的客户端出口,用以辅助处理用户代理所没实现的请求 缓存(cache) 指程序本地存储的回应消息和用来控制消息存储、重获、删除的子系统 缓存回应的目的是为减少请求回应时间,以及未来一段时间对网络带宽的消耗任何客户端及服务端都可以包含缓存 任何指定的程序都有能力同时做为客户端和服务器我们在使用这个概念时,不是看程序功能上是否能实现客户及服务器,而是看程序在特定连接时段上扮演何种角色(客户或服务器)同样,任何服务器可以扮演原始服务器、代理、缓存等角色,行为的切换取决于每次请求的内容 八位位组 Octet 在计算机技术和通信技术中,作为一个整体处理的 8 个二进制数5 缩略语 下列缩略语适用于本规范: Keyword 关键词 DNS (Domain name system) 域名系统 IP (Internet Protocol ) 互联网协议 URI (Uniform Resource Identifiers) 统一资源定位标识 HTTP (Hypertext Transfer Protocol) 超文本传输协议 6 关键词网络定位服务解析协议遵循的原则 1)一致性 同样的关键词定位请求产生的精确应答结果必须一致,精确应答结果与解析过程中所涉及的解析器、服务器的位置及其系统设置无关。
2)开放性 关键词网络定位体系为其它应用软件提供开放、标准的技术平台,支持关键词的网络解析服务 3)关键词网络定位服务具有健壮性、稳定性、安全性、可靠性 7 关键词网络定位体系 7.1 关键词解析体系结构 关键词命名空间是一个平面结构的空间其解析体系有两级构成:若干服务器构成的关键词顶级解析服务器集群、关键词本地解析服务器用户可以从任何解析服务器获得一致的应答结果 顶级解析服务器 顶级解析服务器的应答是权威的,它从关键词数据库中查询得到最新的记录应答最终用户或者各本地解析服务器的解析请求本地解析服务器 本地解析服务器在关键词解析体系中是可选的,它根据自身的缓存策略应答最终用户的请求,并缓存顶级解析服务器的应答设置本地解析服务器的目的是为了加速最终用户的访问速度和提高关键词的解析效率关键词解析器 解析器将用户的关键词定位请求,发到关键词解析服务器,并将解析的应答返回给浏览器等网络应用程序关键词客户端缺省设置一个或多个关键词解析服务器7.2 关键词解析流程 关键词网络定位服务解析协议是基于客户机-服务器结构的应用服务体系下面说明在客户机、本地解析服务器、顶级解析服务器三级体系下的关键词解析过程: 1)用户使用支持关键词解析服务的客户程序,输入所要的关键词名称,经过互联网传输到本地关键词解析服务器。
2)本地解析服务器查询自身的缓存,如果有匹配的结果,则转 4);否则,转发给顶级解析服务器 3)顶级解析服务器收到解析请求后,查询关键词数据库到应答资源记录,封装成符合 HTTP 协议的数据格式的数据包返回给本地解析服务器本地解析服务器对顶级解析服务器的应答进行缓存处理4)本地解析服务器将查询结果返回给用户程序 7.3 关键词语法定义 ::= | ::= “-“||| ::= 任何一个汉字 ::= a-z|A-Z ::= 0-9 8 关键词请求消息 从客户端到服务器端的解析请求消息如果关键词解析服务器收到请求消息,它必须返回一个应答消息 8.1 消息传输 请求消息通过 HTTP 协议来传输 8.2 请求方法 方法指明了将要以何种方式来定位由请求关键词指定的资源方法是大小写敏感的本规范中支持一种方法: Method= “GET“8.2.1 GET 方法 GET 方法就是以实体方式得到由请求关键词所指定资源的信息 GET 方法允许被缓存的解析结果在不必经过不必要的数据传输就能进行应答,从而有助于降低网络负载 9 关键词应答消息 在接收、解释请求消息后,服务器端通过 HTTP 协议返回关键词解析的应答消息: Response= Full-Response Full-Response = Status-Line ; 9.1 状态行 |Response-Header ; 9.2 应答标题域 9.1. 应答的状态行(Status-Line) 完整回应消息的第一行就是状态行,它依次由 http 协议版本、数字形式的状态代码、及相应的词语文本组成,各元素间以空格(SP)分隔,除了结尾的回车换行(CRLF)外,不允许出现单独的回车(CR)或换行(LF)符。
Status-Line = http-Version SP Status-Code SP Reason-Phrase CRLF9.1.1 状态代码和原因分析(Status Code and Reason Phrase) 状态代码(Status-Code)由 3 位数字组成,表示请求是否被理解或被满足状态代码用来支持自动操作 状态代码的第一位数字定义了回应的类别,后面两位数字没有具体分类首位数字有 5 种取值可能,其代码的分配兼容 HTTP 协议的状态码: 1xx::保留,将来使用 2xx:成功 - 操作被接收、理解、接受(received,understood, accepted) 3xx:重定向(Redirection)-要完成请求必须进行进一步操作 4xx:客户端出错 - 请求有语法错误或无法实现 5xx:服务器端出错 - 服务器无法实现合法的请求 Keyword/1.0 的状态代码、原因解释在下面给出 Status-Code = “200“ ; OK |“201“ ; Created |“202“ ; Accepted |“204“ ; No Content |“301“ ; Moved Permanently |“302“ ; Moved Temporarily |“304“ ; Not Modified |“400“ ; Bad Request |“401“ ; Unauthorized |“403“ ; Forbidden |“404“ ; Not Found |“500“ ; Internal Server Error |“501“ ; Not Implemented |“502“ ; Bad Gateway |“503“ ; Service Unavailable |extension-code extension-code = 3 个数字 Reason-Phrase = * http 状态代码是可扩展的,而只有上述代码才可以被当前全部的应用所识别。
http 应用不要求了解全部注册的状态代码实际上,应用程序必须理解任何一种状态代码,如果碰到不识别的情况,可根据其首位数字来判断其类型并处理 例如,如果客户端收到一个无法识别的状态码 431,可以安全地假定是请求出了问题,可认为应答的状态码就是 400 9.2 应答标题域(Response-Header) 应答标题域中包括不能放在状态行中的附加。