下一页 1 2
摘要 本文主要说明用于传输CIP请求/响应,索引对象,实现它们在TCP,邮件和HTTP上传输的三个协议。相关的资料请在其它资料中查询。 1. 协议 本节说明用于传输CIP索引对象和维护网结构。本文主要定义定义消息格式,传输机制。CIP协议的设计思想是一种块设计思想。它不依赖于许多于协议定义工具,或文本编码方式,而是利用现有的协议技术进行设计。这样可以使设计和实现简化。这也是利用现有的Internet技术实现应用层服务的方法。 2 MIME消息交换机制 CIP的消息交互是通过交换MIME消息进行的。消息在双向可靠传输的基础上进行。本文利用TCP,HTTP和邮件传输进行消息传输。CIP服务器开始连接,它称为发送CIP,而响应发送CIP的服务器称为接收CIP。 2.1 流传输 CIP在双向TCP连接上通过简单文本协议传输,它的操作可以在任何TCP端口上进行,因此配置信息也包括了主机名和端口号。发送CIP的动作由接收CIP的响应码加以确定。这些码的格式见下文。为了进行向后兼容Whois++服务器, CIPv3发送CIP必须首先确定支持新协议。通过发送下面非法的Whois++系统命令完成上述功能:"# CIP-Version: 3 注意:如果发送CIP能够确定服务器实现了CIPv3,它可以发送"# CIP-Version: 3"串,然后跟一个CIPv3请求,这个优化在已知的同构CIP网结构中是有用的,这样可以避免等待。 一旦发送CIP确定服务器支持CIPv3请求,它可以以MIME格式发送请求,每个请求以" Cip-Req = Req-Hdrs CRLF Req-Body Req-Hdrs = *( Version-Hdr | Req-Cntnt-Hdr ) Req-Body = Body ; format of request body as in [CIP-MIME] Body = Data CRLF "." CRLF Data = ; data with CRLF "." CRLF replaced by CRLF ".." CRLF Version-Hdr = "Mime-Version:" "1.0" CRLF Req-Cntnt-Hdr = "Content-Type:" Req-Content CRLF Req-Content = ; format is specified in [CIP-MIME] Cip-Rsp = Rsp-Code CRLF [ Rsp-Hdrs CRLF Rsp-Body ] [ Indx-Cntnt-Hdr CRLF Index-Body ] Rsp-Code = DIGIT DIGIT DIGIT Comment Comment = ; any chars except CR and LF Rsp-Hdrs = *( Version-Hdr | Rsp-Cntnt-Hdr ) Rsp-Cntnt-Hdr = "Content-Type:" Rsp-Content CRLF Rsp-Content = ; format is specified in [CIP-MIME] Rsp-Body = Body ; format of response body as in [CIP-MIME] Indx-Cntnt-Hdr = "Content-Type:" Indx-Obj-Type CRLF Indx-Obj-Type = ; any registered index object's MIME-type the format is specified in [RFC2045] Index-Body = Body ; format defined in each index specifications CRLF = CR LF ; Internet standard newline CR = %x0D ; carriage return LF = %x0A ; linefeed DIGIT = %x30-39 消息以SMTP形式结束,数据以字节传输,除了看到 { 发送CIP连接到接收CIP } <<< % 220 Example CIP server ready >>> # CIP-Version: 3 <<< % 300 CIPv3 OK! >>> Mime-Version: 1.0 >>> Content-type: application/index.cmd.datachanged; type= >>> x-tagged-index-1; dsi=1.2.752.17.5.10 >>> >>> updatetype: incremental tagbased >>> thisupdate: 855938804 >>> lastupdate: 855940000 >>> . <<< % 200 Good MIME message received >>> MIME-Version: 1.0 >>> Content-Type: application/index.obj.tagged; >>> dsi=1.2.752.17.5.10; >>> base-uri="ldap://ldap.umu.se/dc=umu,dc=se" >>> >>> version: x-tagged-index-1 >>> updatetype: incremental >>> lastupdate: 855940000 >>> thisupdate: 855938804 >>> BEGIN IO-schema >>> cn: TOKEN >>> sn: FULL >>> title: FULL >>> END IO-Schema >>> BEGIN Update Block >>> BEGIN Old >>> title: 3/testpilot >>> END Old >>> BEGIN New >>> title: 3/chiefpilot >>> END New >>> END Update Block >>> . <<< % 200 Good MIME message received { 发送CIP关闭写套接字 } <<< % 222 Connection closing in response to sender-CIP shutdown { 接收CIP关闭,重新设置状态并等待新的发送CIP连接 } 如果版本不对,则会出现下面的情况: { 发送CIP连接到接收CIP } <<< % 220 Whois++ server ready >>> # CIP-Version: 3 <<< % 500 Syntax error { 服务器关闭连接 } 发送CIP可以会尝试以版本1或2进行连接,而失败的结果会被缓冲以避免以后的失败。
CIP 传输协议