`
jiangxiabeijing
  • 浏览: 27048 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CIP 传输协议

 
阅读更多

摘要

本文主要说明用于传输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<cr><lf>"。在现在的Whois++服务器上,如果实现了CIP版本1或2,就会导致500系列的响应,服务器中断连接,如果服务器实现了CIPv3,它会响应300。这个300中的3代表版本3,以后的版本也可以利用这种方法。下面是一个交换的例子:

注意:如果发送CIP能够确定服务器实现了CIPv3,它可以发送"# CIP-Version: 3"串,然后跟一个CIPv3请求,这个优化在已知的同构CIP网结构中是有用的,这样可以避免等待。

一旦发送CIP确定服务器支持CIPv3请求,它可以以MIME格式发送请求,每个请求以"<cr><lf>"结束。

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形式结束,数据以字节传输,除了看到<cr><lf>1*["."]<cr><lf>,这种情况下要加一个句号。在数据传输结束时以"<cr><lf>.<cr><lf>"表示。接收方要将结束标记略过。接收方的响应分为200,400和500系列。响应也以SMTP形式的消息界定。在返回响应后,接收CIP必须准备接收下一个请求,将状态返回到发送CIP刚刚确定版本时的状态。如果发送CIP不再发请求,则可以关闭连接。作为响应,接收CIP必须广放弃读入消息,并准备新的发送CIP连接。下面是一个例子,这里的行结束显式给出。中间的空间只为可读性而设置,注释在大括号内。

{ 发送CIP连接到接收CIP }

<<< % 220 Example CIP server ready<cr><lf>

>>> # CIP-Version: 3<cr><lf>

<<< % 300 CIPv3 OK!<cr><lf>

>>> Mime-Version: 1.0<cr><lf>

>>> Content-type: application/index.cmd.datachanged; type=

>>> x-tagged-index-1; dsi=1.2.752.17.5.10<cr><lf>

>>> <cr><lf>

>>> updatetype: incremental tagbased<cr><lf>

>>> thisupdate: 855938804<cr><lf>

>>> lastupdate: 855940000<cr><lf>

>>> .<cr><lf>

<<< % 200 Good MIME message received

>>> MIME-Version: 1.0<cr><lf>

>>> Content-Type: application/index.obj.tagged;

>>> dsi=1.2.752.17.5.10;

>>> base-uri="ldap://ldap.umu.se/dc=umu,dc=se"<cr><lf>

>>> <cr><lf>

>>> version: x-tagged-index-1<cr><lf>

>>> updatetype: incremental<cr><lf>

>>> lastupdate: 855940000<cr><lf>

>>> thisupdate: 855938804<cr><lf>

>>> BEGIN IO-schema<cr><lf>

>>> cn: TOKEN<cr><lf>

>>> sn: FULL<cr><lf>

>>> title: FULL<cr><lf>

>>> END IO-Schema<cr><lf>

>>> BEGIN Update Block<cr><lf>

>>> BEGIN Old<cr><lf>

>>> title: 3/testpilot<cr><lf>

>>> END Old<cr><lf>

>>> BEGIN New<cr><lf>

>>> title: 3/chiefpilot<cr><lf>

>>> END New<cr><lf>

>>> END Update Block<cr><lf>

>>> .<cr><lf>

<<< % 200 Good MIME message received

{ 发送CIP关闭写套接字 }

<<< % 222 Connection closing in response to sender-CIP shutdown

{ 接收CIP关闭,重新设置状态并等待新的发送CIP连接 }

如果版本不对,则会出现下面的情况:

{ 发送CIP连接到接收CIP }

<<< % 220 Whois++ server ready<cr><lf>

>>> # CIP-Version: 3<cr><lf>

<<< % 500 Syntax error<cr><lf>

{ 服务器关闭连接 }

发送CIP可以会尝试以版本1或2进行连接,而失败的结果会被缓冲以避免以后的失败。

2.1.1 传输特定的响应码

下面的响应码用于流传输:

Code

描述文本

发送CIP动作

200

MIME请求的接收和处理

无输出,继续会话

201

MIME请求的接收,处理与输出

请入以SMTP格式界定边界的响应

220

紧跟初始服务器标记信息

继续Whois++交互,或核对CIP版本

222

关闭连接

完成操作

300

接收请求的CIP版本

在特定的版本下继续操作

400

暂时不能处理请求

过一会儿再试。可以用于表示服务器现在没有资源接收索引

500

错误的MIME格式

以正确格式重试

501

未知或丢失请求

以正确的命令重试

502

请求没有需要的CIP属性

以正确的属性重试

520

因不明原因中断连接

通知本地管理员

530

请求需要合法的签名

对请求签名,如果可能重试,如果不能则向管理员报告问题

531

无效签名

报告管理员

532

无法检查签名

通知本地管理员,由他和远程的管理员协商处理问题

2.2 以邮件系统进行传输

除了TCP流以外,可以利用现有的邮件系统进行CIP操作。这样可以减少对叶子服务器的压力,在进行TCP连接时叶子服务器中包括一个数据库和一个检索程序。这样还可以有效地利用现有的网络技术。因为使用MIME消息,而MIME也可以用邮件进行传输,这样我们就可以利用与TCP完全不同的方法完成CIP传输。在使用邮件时基本请求和响应也是支持的。下面会说明一些特定的情况,在这些情况下,应该对邮件传输CIP对象另加考虑。通常,所有的邮件协议和邮件格式均可用于CIP邮件传输。

2.2.1 确定CIP版本

因为在MIME信息中未说明使用的CIP版本,所以要在信件头中包括这一消息。因此使用邮件传输时,必须包括CIP版本行,它的格式如下:

DIGIT = %x30-39

number = 1*DIGIT

cipversion = "CIP-Version:" <sp> number["." number]

2.2.2 返回路径

在双向流中进行CIP操作时,返回响应和错误是隐式的。使用邮件对于确定接收者就有困难。因为从信头有时不能确定谁发的信。CIP要求发送方必须接收一个返回地址,如果没有,CIP服务器将忽略这一请求,只会在日志里记一笔。接收方不能从信件的其它地方获得返回地址。如果响应不能返回给请求,发送方应该将地址包括在<>之内也放在返回地址中。我们不应该利用不能返回使错误信息不能返回,但有时这也是简化系统的一个好方法。

2.3 HTTP传输

HTTP也可用于传输CIP对象,操作可以使用POST方法进行,发送一个application/index.cmd,在HTTP应答中返回application/index.response或application/index.obj。URL是POST的目标,它也是CIP发送者和接收CIP之间配置参数的传输方法。下面是一个例子:

{ 客户打开连接发送POST }

>>> POST / HTTP/1.1<cr><lf>

>>> Host: cip.some.corp<cr><lf>

>>> Content-type: application/index.cmd.noop<cr><lf>

>>> Date: Thu, 6 Jun 1997 18:16:03 GMT<cr><lf>

>>> Content-Length: 2<cr><lf>

>>> Connection: close<cr><lf>

>>> <cr><lf>

{ 服务器处理请求 }

<<< HTTP/1.1 204 No Content<cr><lf>

{ 服务器关闭连接 }

利用HTTP时可以同时利用它的安全机制和其它属于HTTP的特点。CIP客户可以利用Accept-Charset和Accept-Language HTTP头来指定索引以特定的字符集返回。也可以使用Accept-Encoding来表示它可以处理压缩响应。也可以利用If-Modified-Since来防止在索引未改变的情况下再次传输再来的浪费。CIP服务器可以使用Retry-After要求客户过一会再进行请求。

3. 安全

索引信息有两层安全保护,一层是使用现有的安全MIME对象,另一层是利用现有的安全传输机制。我们上面已经说过了利用三种协议传输CIP对象,那这三个协议中的安全机制对安全传输CIP对象是有用的。


分享到:
评论

相关推荐

    CIP 传输协议与介绍

    本节说明用于传输CIP索引对象和维护网结构。本文主要定义定义消息格式,传输机制。CIP协议的设计思想是一种块设计思想。它不依赖于许多于协议定义工具,或文本编码方式,而是利用现有的协议技术进行设计。这样可以使...

    网络协议大全

    ARP协议 PPP(Point-to-Point Protocol点到点协议 RIP协议 1.矢量距离算法 2.RIP的原理 3.RIP报文的格式 ...CIP 传输协议 802.1x协议解析 X.25 协议 XKMS协议介绍及其工作原理 技术简述

    通用工业协议(CIP)

    CIP显式通信用于传输对时间没有苛求的数据,它是基于源/目的地模型的,只能用于两个节点之间的通信,客户发出请求,服务器做出响应。显式通信可以访问任何对象的任何可从外部访问的数据。

    TCP/IP协议详解卷1_017(TCP:传输控制协议)

    T C P连接,第1 9和第2 0章将了解正常的数据传输过程,包括交互使用(远程登录)和批量数 据传送(文件传输)。第2 1章提供T C P超时及重传的技术细节,第2 2和第2 3章将介绍两种其他 的定时器。最后,第2 4章概述T ...

    Ethernet/ip协议

    EtherNet/IP(ethernet/Industrial Protocol)是由洛克威尔自动化公司开发的工业以太网通讯协定,由开放DeviceNet厂商协会(ODVA)管理,可应用在程序控制及其他自动化的应用中,是通用工业...采用TCP/IP技术传输CIP报文

    bro-cip-enip

    有关文档,请参见: * THE CIP NETWORKS LIBRARY Volume 1 Edition 3.3 November, 2007: http://www.tud.ttu.ee/im/Kristjan.Sillmann/ISP0051 Rakenduslik Andmeside/CIP docs/CIP Vol1_3.3.pdf* THE CIP NETWORKS...

    Linux下基于TCP/IP协议的文件传输

    通过Linux C编程,设计一个基于TCP/IP的文件传输系统,实现服务器端和客户端之间网络文件的收发。

    类TCP/IP私有协议

    将TCP/IP协议从linux内核中摘出来,作为一个独立的模块运行(为与TCP/IP一起运行,我修改了IP协议号和TCP协议号部分,命名为 UCP/UNP,协议簇编号为28,三层协议号修改为0x7800,四层协议号修改为66)。由于时间有限...

    基于C/S模式的P2P文件传输系统 C# 采用UDP协议

    本项目为网络课程设计的作业,采用c#实现,使用UDP传输协议,在连接时采用TCP连接,拥有客户机和服务器端,客户机登录后能够在服务器端显示登录信息,服务器向该用户发送当前在线用户的ip信息,该用户选择所要发送...

    文件传输协议的简单设计与实现

    用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),该程序应能实现下述命令功能: get:取远方的一个文件 put:传给远方一个文件 pwd:显示远主当前目录 dir:列出远方当前目录 cd...

    TCP/IP协议与网络编程技术

    第4章:介绍TCP/IP协议层次结构中传输层及其相关知识。主要内容有端口的概念、TCP协议和UDP协议的协议数据格式、协议原理和TCP协议与UDP协议的比较等内容。 第5章:介绍TCP/IP协议层次结构中应用层及其相关知识。...

    基于TCP/IP协议的C/S异步通讯传输工具

    基于TCP/IP协议的C/S异步通讯传输工具,开发环境采用的是C#平台

    《TCP/IP详解,卷1:协议》

    第17章 TCP:传输控制协议 170 第18章 TCP连接的建立与终止 174 第19章 TCP的交互数据流 200 第20章 TCP的成块数据流 209 第21章 TCP的超时与重传 226 第22章 TCP的坚持定时器 245 第23章 TCP的保活定时器 251 第24...

    TCP_IP协议详解卷一

    第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 ...

    TCP-IP协议详解1,2卷

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    ping程序设计和文件传输协议的简单设计

    文件传输协议的简单设计与实现:用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),该程序应能实现下述命令功能: get:取远方的一个文件 put:传给远方一个文件 。。。。。。 ...

    TCP/IP文件传输

    纯TCP/IP文件传输,S端与C端代码。包含简易的登陆验证

    TCP_IP协议(全3卷高清HD).zip

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    TCP/IP协议分析及应用电子课件

    TCPIP协议分析及应用,主编张延双 ...中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议...

    i2c协议Verilog及仿真波形

    文字版,可复制,附带Verilog代码和modelsim仿真波形。。。。一 IP 核的理解 I2C 总线概述 三 I2C 总线上的数据传输和时序 四 时钟同步 五 总线仲裁 六 程序分析及仿真波形

Global site tag (gtag.js) - Google Analytics