当前位置:文档之家› AMF3协议中文版

AMF3协议中文版

翻译:许江华

Adobe Systems Inc.

AMF3Specification

Category:ActionScript Serialization类别:AS序列化

Action Message Format--AMF3

Copyright Notice

Copyright(c)Adobe Systems Inc.(2002-2006).All Rights Reserved.

Abstract概览

Action Message Format(AMF)is a compact binary format that is used to serialize ActionScr ipt object graphs.Once serialized an AMF encoded object graph may be used to persist and retrieve the public state of an application across sessions or allow two endpoints to communicate through the exchange

of strongly typed data.

AMF(Act ion Message Format动作信息格式)是用来序列化AS(ActionScr ipt动作脚本)实例对象(object graphs)的压缩的二进制格式。序列化的AMF编码的实例对象可用来持久化,并且在不同的会话中获得应用的公共状态,或者允许在两个端点(比如客户端和服务器端--译者注)通过强类型数据交换进行通信。

AMF was introduced in Flash Player6in2001and remained unchanged with the introduction of ActionScr ipt2.0in Flash Player7and with the release of Flash Player8.This version of AMF is referred to as AMF0(See[AMF0]).In Flash Player9,Action Script3.0was introduced along with a new ActionScr ipt Virtual Machine(AVM+)-the new data types and language features made possible by these improvements prompted AMF to be updated.Given the opportunity to release a new version of AMF,several opt imiza tions were also made to the encoding format to remove redundant information from serialized data.This specif ication defines this updated version of AMF,namely AMF3.

AMF引进于2001年的FlashPlayer6,并且在引入AS2.0的FlashPlayer7和FlashPlayer8中没有改变的保留了。这个版本的AMF参考于AMF0(查阅[AMF0])。在FlashPla yer9中,AS3.0同新的AS虚拟机(AVM+)一起被引进—新的数据类型和语言特性的改进致使AMF升级成为可能,给了一个发布新的AMF版本的机会,新版本的AMF在序列化数据的时候做了一些优化,使得编码格式去除了一些冗余信息。升级后的AMF版本便是AMF3。

Table of Contents目录(略)

1Introduction介绍

1.1Purpose目的

Action Message Format(AMF)is a compact binary format that is used to serialize ActionScr ipt object graphs.Once serialized an AMF encoded object graph may be used to persist and retrieve the public state of an application across sessions or allow two endpoints to communicate through the exchange

of strongly typed data.(译者注:之前有翻译)

The first version of AMF,referred to as AMF0,supports sending complex objects by reference which helps to avoid sending redundant instances in an object graph.

第一个版本的AMF,即AMF0,支持在避免了在对象图中发送冗余的实例的通过引用发送复杂的对象。

It also allows endpoints to restore object relationships and support circular references while avoiding problems such as infinite recursion during serialization.

他也允许端点存储对象关系,并且支持在避免问题--如在序列化时无穷的递归--的情况下的循环

引用。

A new version of AMF,referred to as AMF3to coincide with the release of ActionScr ipt3.0, improves on AMF0by sending object traits and strings by reference in addition to object instances.

新版本的AMF,即AMF3,与AS3.0版本保持一致,在通过引用发送除对象实例外的对象特性和字符串做了改进。

AMF3also supports some new data types introduced in ActionScr ipt3.0.

AMF3也支持在AS3.0中的一些新的数据类型。

1.2Notational Conventions标记转换

1.2.1Augmented BNF参数化的BNF

Type definitions in this specif ication use Augmented Backus-Naur Form(ABNF)syntax[RFC2234].在这个规格中类型定义使用参数化的巴克斯范式(ABNF)语法[RFC2234]。

(译者注:

BNF is a formal meta-syntax used to express context-free Grammars.BNF is one of the most commonly used meta-syntactic notation s for specifying the syntax of programming languages,command sets,PDUs,and similar things.However,pure BNF is rather limited,so the two variations EBNF and ABNF have become more popular.)

The reader should be familiar with this notation before reading this document.

读者在阅读这个文档之前应该熟悉这个注解。

1.3Basic Rules基本规则

Throughout this document bytes are assumed to be octets,or8-bits.

这个文档的字节是8位的。

U8An unsigned byte(8-bits,an octet)

无符号字节(8位,一个8位字节)

U16An unsigned16-bit integer in big endian

(network)byte order

在网络中的字节顺序中的无符号的占用16个二进制位的

整数

U32An unsigned32-bit integer in big endian

(network)byte order

在网络中的字节顺序中的无符号的占用32个二进制位的

整数

DOUBLE8byte IEEE-754double precision

floating point value in network byte

order(sign bit in low memory).

在网络中的字节循序的(符号位在低存储)8字节的

IEEE-754双精度浮点数

MB A megabyte or1048576bytes.

兆字节

More complicated data type rules require special treatment which is outlined below.

更多的复杂的数据类型规则需要特殊的处理,概括如下:

1.3.1Variable Length Unsigned29-bit Integer Encoding

可变长度的无符号29位整数的编码

AMF3makes use of a special compact format for writing integers to reduce the number of bytes required for encoding.

AMF3使用一种特别的压缩格式来写整数,用于压缩编码的字节数量。

As with a normal32-bit integer,up to4bytes are required to hold the value however the high bit of the first3bytes are used as flags to determine whether the next byte is part of the integer.

对于一个正常的32-bit的整数,需要4个字节来存储,然而前3个字节的最高位是用于标识下一个字节是不是整数的一部分

With up to3bits of the32bits being used as flags,only29significant bits remain for encoding an integer.This means the largest unsigned integer value that can be represented is229–1

在32-bit中多达3个bit是用来标志的,所以对编码的一个整数仅仅有29个bit有意义。这意味着最大的无符号的整数值是229-1。

In ABNF syntax,the variable length unsigned29-bit integer type is described as follows:

在ABNF语法中,可变长度的无符号的29位的整型数据类型描述如下:

1.3.2Strings and UTF-8

AMF0and AMF3use(non-modif ied)UTF-8to encode strings.UTF-8is the abbreviation for8-bit Unicode Transformation Format.UTF-8strings are typically preceded with a byte-length header followed by a sequence of variable length(1to4octets)encoded Unicode code-points.

AMF0和AMF3使用UTF-8来编码字符串(没有变化的)。UTF-8是8-bit的Unicode Transformation Format(统一的传输格式)的缩写。UTF-8字符串是典型的字节长度为头,紧跟着编码Unicode 编码点的可变长度(1到4个字节)的字节序列。

AMF3uses a slightly modif ied byte-length header;a detailed descript ion is provided below and referred to throughout the document.

AMF3使用一个轻微改变的字节长度头;适用于整个文档的具体描述如下。

In ABNF syntax,[RFC3629]describes UTF-8as follows:

在ABNF句法,[RFC3629]描述UTF-8如下:

For AMF3a string can be encoded as a string literal or a string reference.

对于AMF3,一个字符串可以作为字面值或引用来编码。

A variable length unsigned29-bit integer is used for the header and the first bit is flag that specif ies which type of string is encoded.

可变长度的无符号的29-bit的整数用于头,并且第一个bit标识字符串的编码。

If the flag is0,a string literal is encoded and the remaining bits are used to encode the byte-length of the UTF-8encoded String.

标识为0时,字符串是字面上编码的,余下的位数是用来编码UTF-8的编码的字节的长度。

If the flag is1,then a string reference is encoded and the remaining bits are used to encode an index to the implicit string reference table.

标识为1时,是字符串引用的编码,余下的位数是用来编码直指隐含的字符串引用表的一个索引。

(译者注:标识位的意义前后定义的不一样)

Note that this encoding imposes some theoret ical limits on the use of Strings.

注意:这个编码增加了字符串使用上的理论上的限制。

The number of unique Strings that can be sent by reference is limited to228-1,and the byte-length of each UTF-8encoded String is limited to228-1bytes(approx256MB).

一个被引用发送的字符串的最大长度是:228-1,每一个UTF-8编码的字符串长度是228-1字节(大概256MB)。

2.Technical Summary技术摘要

2.1Summary of improvements改进的摘要

The follow ing is a table of the improvements and changes in AMF3:

以下是AMF3的改进和改变的目录:

Object traits can now be sent by reference

对象的特性现在可以被引用发送

Strings can now be sent by reference

字符串可以被引用发送

int/uint type support

对int/uint类型的支持

flash.utils.ByteArray type support,can also be sent by reference

对flash.utils.ByteArray类型的支持,也可以通过引用发送

flash.utils.IExternalizable support

对flash.utils.IExternalizable的支持。

Variable length encoding scheme for integers to reduce data size

旨在压缩数据大小的可变长度的整数的编码策略

References are sent using variable length integer

可变长度的整数的引用发送

String UTF-8length uses variable length integer

UTF-8的字符串长度使用可变长度的整数

Array count uses variable length integer

数组的长度使用可变长度的整数

A single Array type marker covers both strict and ECMA Arrays

一个单独的Array数组数据类型覆盖了严格的和ECMA两个数组

Dates no longer send timezone information

日期不再发送时区信息

Dates can now be sent by reference

日期可以通过引用发送

XMLDocument UTF-8length uses variable length integer

XMLDocument的UTF-8的长度使用可变长度整数

XMLDocument can now be sent by reference

XMLDocument可以通过引用发送

XML type support,can also be sent by reference

XML也可以通过应用发送

XML UTF-8length uses variable length integer

ByteArray type length uses variable length integer

Boolean true and false are now sent as one byte type markers

Boolean类型使用一个字节标识。

Unsupported type marker has been removed

不支持类型标志被删除了

Reserved RecordSet and Movieclip type markers have been removed

保留了RecordSet和Movieclip类型标识被删除了。

2.2Reference Tables

In AMF3,Strings,Complex Objects(which in AMF3are defined as anonymous Objects,typed Objects,Arrays,Dates,XMLDocument,XML,and ByteArrays)and an Object Type's Traits can now be sent by reference.

在AMF3中,字符串,复杂对象(他是AMF3中定义的匿名对象,类型化的对象,数组,日期,xml 文档,xml,字节数组)

This means that instead of sending redundant information,these components of AMF can simply refer to an earlier occurrence of a component.

这意味着不发送冗余信息,这些AMF组件可以简单的参考先前的版本。

This reference is an integer forming a zero-based index that is encoded in the component information, typically in the first number that appears after the relevant type marker(see the type definitions for Object,Array,Date,XMLDocument,XML and ByteArray below for exact details).

这个引用从0开始索引的整数,被编码在组件信息中,典型地出现在相关的类型标识(详细情况查阅下面Object,Array,Date,XMLDocument,XML and ByteArray类型定义)之后第一个数字。These indexes form a virtual"table"of references that a deserializer and serializer must maintain when reading and writing AMF3formatted data.

这些索引形式是一个引用的虚拟表,在读写AMF3格式的数据的时候必须有一个反序列化器和序列化其来维护这个表。

Note that3separate reference tables are used for Strings,Complex Objects and

Object Traits respectively.

注意:不同的引用表被用于对应的字符串,复杂对象和对象特性。

3AMF3Data Types

3.1Overview

There are13types in AMF3.A type marker is one byte in length and describes the type of encoded data that follows.

有13个AMF3的类型。一个类型标识占用一个字节,描述跟着他的编码的数据类型。

The set of possible type markers are listed below(values are represented in hexadecimal format):

所有可能的类型标识罗列如下(值是用16进制表示的):

Type markers may be followed by the actual encoded type data,or if the marker represents a single possible value(such as null)then no further information needs to be encoded.

典型的标识后有真正的比啊类型数据,或者如果标识标识一个单独可能的值(如null),就没有编码的信息了。

AMF3makes use of three reference tables for strings,objects and traits(the characterist ics of objects that define a strong type such as the class name and public member names).

AMF3使用三个引用表,分别用于字符串,对象和特性(一个强类型的对象特征有如类的名字和公共成员名字)

These tables are considered implicit as they are not encoded as a unique entity in the format.

这些表是隐含着的,因为他们不是作为一个在格式上唯一编码的实体。

Each type that can be sent by reference may instead be encoded using an index to the appropr iate reference table.

每一个可以被引用发送的实体,会使用合适的引用表中的一个索引来编码。

Strings can be sent by reference using an index to the string table.

字符串能使用字符串引用表中的索引被发送。

Object,Array,XML,XMLDocument,ByteArray,Date and instances of user defined Classes can be sent by reference using an index to the object table.

对象,数组,XML,XMLDocument,ByteArray,Date和用法定义的类实例可以使用对象表的索引来进行引用发送。

Objects and instances of user defined Classes have trait information which can also be sent by reference using an index to the traits table.

对象和自定义实例的特性信息也使用特性表中的索引来进行引用发送。

3.2undefined Type未定义类型

The undef ined type is represented by the undef ined type marker.No further information is encoded for this value.

未定义类型由未定义类型标识来表示。对于这个值没有其他的信息。

Note that endpoints other than the AVM may not have the concept of undef ined and may choose to represent undef ined as null.

注意:不是AVM的其他终端可能没有未定义的概念,可能会选择null来表示未定义的类型。

3.3null Type

The null type is represented by the null type marker.No further information is encoded for this value. Null类型由null类型标识来表示。对于这个值没有其他的信息。

3.4false Type

The false type is represented by the false type marker and is used to encode a Boolean value of false. False类型用false类型标识来表示,并且用false的Boolean值来编码。

Note that in ActionScr ipt3.0the concept of a primitive and Object form of Boolean does not exist.No further information is encoded for this value.

注意:在AS3.0中,基本的Object形式的Boolean概念不复存在。对于这个值没有其他的信息。

3.5true type

The true type is represented by the true type marker and is used to encode a Boolean value of true. Note that in ActionScr ipt3.0the concept of a primitive and Object form of Boolean does not exist.No further information is encoded for this value.

(译者:和false类似)

3.6integer type

In AMF3integers are serialized using a variable length unsigned29-bit integer.

在AMF3中,整数是使用可变长度的无符号的29-bit整数来序列化。

The ActionScr ipt3.0integer types-a signed'int'type and an unsigned'uint'type-are also represented using29-bits in AVM+.

AS3.0的整数类型,int表示有符号的,uint标识无符号的,在AVM+中也使用29-bit来表示。

If the value of an unsigned integer(uint)is greater or equal to229or if the value of a signed integer(int) is greater than or equal to228then it will be represented by AVM+as a double and thus serialized in using the AMF3double type.

如果uint整数大于或等于229,int整数大于等于228,在AVM+中会用双精度浮点数来表示,并用AMF3的双精度浮点数来序列化他。

3.7double type

The AMF3double type is encoded in the same manner as the AMF0Number type.

AMF3的双精度浮点型和AMF0的的双精度浮点型的编码是一样的。

This type is used to encode an ActionScr ipt Number or an ActionScr ipt int of value greater than or equal to228or an ActionScr ipt uint of value greater than or equal to229.

The encoded value is always an8byte IEEE-754double precision floating point value in network byte order(sign bit in low memor y).

编码的值在网络序列中总是一个8个字节的IEEE-754的双精度浮点值(符号位在低位内存)

3.8String type

ActionScr ipt String values are represented using a single string type in AMF3-the concept of string and long string types from AMF0is not used.

AMF3中,AS的字符串的值用一个字符串类型来表示,AMF0中的字符串和长字符串的概念不使用了。

Strings can be sent as a reference to a previously occurring String by using an index to the implicit string reference table.

Strings are encoding using UTF-8-however the header may either describe a string literal or a string reference.

(译者:以上都是之前翻译了的)

The empty String is never sent by reference.

空的字符串不会被应用发送

3.9XMLDocument type

ActionScr ipt3.0introduced a new XML type(see3.13)however the legacy XMLDocument type is

retained in the language as flash.xml.XMLDocument.

虽然遗产类XMLDocument被保留了下了,AS3.0还是引进了XML类型。

Similar to AMF0,the structure of an XMLDocument needs to be flattened into a string representation for serialization.

和AMF0类似,XMLDocument的结构需要转换为字符串表示来序列化。

As with other strings in AMF,the content is encoded in UTF-8.

在AMF中,因为需要字符串,其内容用UTF-8来编码。

XMLDocuments can be sent as a reference to a previously occurring XMLDocument instance by using an index to the implicit object reference table.

对于当前产生的XMLDocument实例,可以使用隐含的对象引用表的一个索引来进行引用发送。

Note that this encoding imposes some theoret ical limits on the use of XMLDocument.The byte-length of each UTF-8encoded XMLDocument instance is limited to228-1bytes(approx256MB).

(译者:以上都是之前翻译了的)

3.10Date type

In AMF3an ActionScr ipt Date is serialized simply as the number of milliseconds elapsed since the epoch of midnight,1st Jan1970in the UTC time zone.

在AMF3中,AS日期简单地序列化为一个从公元1970年1月1日零点,使用UTC时区的到现在的毫秒数。

Local time zone information is not sent.

本地时区信息不被发送。

Dates can be sent as a reference to a previously occurring Date instance by using an index to the implicit object reference table.

3.11Array type

ActionScr ipt Arrays are described based on the nature of their indices,i.e.their type and how they are positioned in the Array.

AS的数组是基于他的自然索引来描述的,例如:他们的类型和他们在数组中的位置

The follow ing table outlines the terms and their meaning:

术语和他的意义列出如下:

AMF considers Arrays in two parts,the dense portion and the associative portion.

AMF 把数组分为两个部分,密集部分和关联部分。

The binary representation of the associative portion consists of name/value pairs (potentia lly none)terminated by an empty string.

对于关联部分的二进制表示由以空字符串结束的名/值对(可能没有)组成。

The binary representation of the dense portion is the size of the dense portion (potentially zero)

followed by an ordered list of values (potentia lly none).

密集部分的二进制表示是跟着顺序的列表值(可能没有)的密集部分的大小(可能是零)The order these are written in AMF is first the size of the dense portion,an empty string terminated list of name/value pairs,followed by size values .

在AMF

中写入的顺序是第一个密集部分的大小,空的字符串。

3.12Object type

A single AMF 3type handles ActionScr ipt Objects and custom user classes.The term 'traits'is used to describe the defining characterist ics of a class.In addition to 'anonymous'objects and 'typed'objects,ActionScr ipt 3.0introduces two further traits to describe how objects are serialized,namely 'dynamic'and 'externaliza ble'.The follow ing table outlines the terms and their meanings:strict

contains only ordinal (numeric)indices 仅仅包含索引dense

ordinal indices start at 0and do not contain gaps between successive indices (that is,every index is defined from 0for the length of the array)索引从0开始,不包含连续索引中的间隙(也就是说:每一个索引对于数组的长度来说都是从0开始定义的)sparse

contains at least one gap between two indices 在两个索引中至少包含一个间隙associative contains at least one non-ordinal (string)index (somet imes referred to as an ECMA

Array)

至少包含一个非顺序(字符串)索引(一些时候是ECMA 数组)

Anonymous an instance of the actual ActionScr ipt Object type or an instance of a Class without a

registered alias (that will be treated like an Object on deserialization)

真实的AS 对象实例或没有别名注册的类对象实例(反序列化时,他会像对象一样

处理)

Typed an instance of a Class with a registered alias

有别名注册的类对象实例

Dynamic an instance of a Class definition with the dynamic trait declared;

使用动态特性声明的类定义的实例

public variable members can be added and removed from instances dynamically at

runtime

在运行时,可以动态的给实例添加和删除公共成员变量。

Externalizable an instance of a Class that implements flash.utils.IExternalizable and completely

controls the serialization of its members(no property names are included in the trait

information).

实现了flash.utils.IExternalizable接口的类实例并且完全控制他的成员的序列化(在

他们的特性信息中没有属性名)

In addition to these characterist ics,an object's traits information may also include a set of public

variable and public read-writeable property names defined on a Class(i.e.public members that are not Functions).

除了这些特性,对象特性信息也可能包括一组在类中定义公共变量和公共可读写的属性名(例

如:公共成员但不是函数)。

The order of the member names is important as the member values that follow the traits information

will be in the exact same order.

成员名字的顺序是重要的,因为在特性信息中的成员值也是同样的顺序。

These members are considered sealed members as they are explicitly defined by the type.

这些成员是封装的成员,因为他们是被类型显示定义的。

If the type is dynamic,a further section may be included after the sealed members that lists dynamic members as name/value pairs.

如果类型是动态的,在封装好的成员之后的部分会列出动态成员的名/值对

One continues to read in dynamic members until a name that is the empty string is encountered.

读取动态成员指导名称是空的字符串。

Objects can be sent as a reference to a previously occurring Object by using an index to the implicit

object reference table.Further more,trait information can also be sent as a reference to a previously occurring set of traits by using an index to the implicit traits reference table.

U29O-ref U29;The first(low)bit is a flag

低位第一位(bit)是一个标志。

;(representing whether an instance

;follows表示是否跟着个实例对象)with value0to imply that

;this is not an instance but a

;reference.

为0时表示不是一个实例而是一个引用。

The remaining1to28

;significant bits are used to encode an

;object reference index(an integer).

余下的1到28个有效的位是用来编码一个对象引用的索引(一个整数)

U29O-

traits-ref U29;The first(low)bit is a flag with ;value 1.

第一个低位标志位值为1

The second bit is a flag

;(representing whether a trait

;reference follows)with value0to

;imply that this objects traits are

;being sent by reference.

第二个位是个标志位,0表示引用发送对象特性

The remaining

;1to27significant bits are used to

;encode a trait reference index(an

;integer).

余下的27位表示引用值(一个整数)

U29O-

traits-ext U29;The first(low)bit is a flag with ;value 1.The second bit is a flag with

;value 1.The third bit is a flag with

;value 1.

前三位标志位都是1

The remaining1to26

;significant bits are not significant

;(the traits member count would always

;be0).

余下的26位无意义(特性成员的数量必须是0)

U29O-traits U29;The first(low)bit is a flag with

;value 1.The second bit is a flag with

;value 1.The third bit is a flag with

;value0.

第一个标志位为1,第二个标志位为1,第三个标志位为0。

The fourth bit is a flag

;specifying whether the type is

;dynamic.

第四个标志位表示类型是不是动态的。

A value of0implies not

;dynamic,a value of1implies dynamic.

0表示不是动态的,1表示是动态的。

;Dynamic types may have a set of name

;value pairs for dynamic members after

;the sealed member section.

在封装好的成员之后,动态类型可能拥有一组动态成员的名/值对。

The remaining1to25significant bits are

;used to encode the number of sealed

;traits member names that follow after

;the class name(an integer).

余下的25位用来编码封装好的特性成员的名成的数量(一个整数),在他之后是类名。

class-name UTF-8-vr;Note:use the empty string for

;anonymous classes.

注意:对于匿名类,使用空的字符串。

dynamic-member UTF-8-vr value-

type

;Another dynamic member follows

;until the string-type is the

;empty string.

跟着的另一个动态成员,直到是个空的字符串类型。object-type object-marker(U29O-ref|(U29O-traits-ext class-name*(U8))| U29O-traits-ref|(U29O-traits class-name*(UTF-8-vr)))

*(value-type)*(dynamic-member)))

Note that for U29O-traits-ext,after the class-name follows an indeter minable number of bytes as

*(U8).

注意对于U29O-traits-ext,类名之后跟着的*(U8)字节的不可决定的成员。

This represents the completely custom serialization of"externalizable"types.

这是表示的完全自定义序列化的外部化类型。

The client and server have an agreement as to how to read in this information.

客户和服务端有一个协议读取这部分信息。

3.13XML type

ActionScr ipt3.0introduces a new XML type that supports E4X syntax.

AS3.0引进了一个新的XML类型,支持E4X句法。

For serialization purposes the XML type needs to be flattened into a string representation.

XML类型转换为字符串表示进行序列化。

As with other strings in AMF,the content is encoded using UTF-8.

像AMF的其他字符串一样,使用UTF-8进行编码。

XML instances can be sent as a reference to a previously occurring XML instance by using an index

to the implicit object reference table.

Note that this encoding imposes some theoret ical limits on the use of XML.The byte-length of each

UTF-8encoded XML instance is limited to228-1bytes(approx256MB).

3.14ByteArray type

ActionScr ipt3.0introduces a new type to hold an Array of bytes,namely ByteArray.

AS3.0引进了新的类型表示字节数组,即ByteArray。

AMF3serializes this type using a variable length encoding29-bit integer for the byte-length prefix

followed by the raw bytes of the ByteArray.

AMF3用可变长度的29-bit的整数编码字节的长度作为前缀,其后跟着ByteArray的原始字节

来序列化。

ByteArray instances can be sent as a reference to a previously occurring ByteArray instance by using

an index to the implicit object reference table.

Note that this encoding imposes some theoret ical limits on the use of ByteArray.The maximum byte-length of each ByteArray instance is limited to228-1bytes(approx256MB).

https://www.doczj.com/doc/e313044909.html,ages of AMF3

4.1NetConnection and AMF3

In addition to serializing ActionScr ipt types,AMF can be used in the asynchronous invocations of remote services.

因为序列化的AS类型,AMF可用于异步的远程调用服务。

A simple messaging structure is used to send a batch of requests to a remote endpoint.

一个简单的消息结构是使用对远程端点发送一批请求。

The format of this messaging structure is AMF0(See[AMF0].

这个消息结构的格式AMF0(参考[AMF0])

A context header value or message body can switch to AMF3encoding using the special avmplus-object-marker type.

使用一个特殊的avmplus-object-marker的类型可使一个上下文头值或消息体切换到AMF3编码。

Similar to AMF0,AMF3object reference tables,object trait reference tables and string reference tables must be reset each time a new context header or message is processed.

和AMF0类似,AMF3对象引用表,对象特性引用表和字符串引用表必须在每次新的上下文头或消息处理完时复位一次。

4.1.1NetConnection in ActionScript3.0

The qualif ied class name for NetConnection in ActionScr ipt3.0is https://www.doczj.com/doc/e313044909.html,Connection. NetConnection在AS3.0中的合适的类名是https://www.doczj.com/doc/e313044909.html,Connection。

This class continues to use a responder to handle result and status responses from a remote endpoint, however,a strongly typed Responder class is now required.The fully qualif ied class name is

https://www.doczj.com/doc/e313044909.html,.Responder.

这个类继续使用一个响应器处理从远程端点来的结果和状态,然而,现在需要强类型的响应器类,类的全名是https://www.doczj.com/doc/e313044909.html,.Responder

For events other than normal result and status responses NetConnection dispatches events for which the developer can add listeners.

除了结果和状态响应的事件,也可以响应开发真可能添加的监听器分派的事件。

These events are outlined below:

这些事件有:

asyncError Dispatched when an exception is thrown asynchronously-i.e.from native

asynchronous code.

当异步的抛出异常时分派,如从本地异步代码

ioError Dispatched when an input or output error occurs that causes a network

operation to fail.

引起网络运行失败的输入/输出错误发生时分派

netStatus Dispatched when a NetConnection object is reporting its status or error

condition.

NetConnection对象报告他的状态或错误的条件时分派

securityError Dispatched if a call to NetConnection.call()attempts to connect to a server

outside the caller's security sandbox.

当NetConnection试图连接调用者的安全沙箱之外的服务器时发布

To handle an AMF context header a suitable method needs to be available,matching the header name.为了处理AMF上下文头,需要一个可用的合适的方法,并且和头的名称相匹配。

NetConnection is now a sealed type so either it must be subclassed or an object with a suitable implementation needs to be set for the NetConnection client property.

NetConnection现在是一个封装好的类型,因为他必须是某个子类或者实现合适的接口可以对他

的客户属性做需要的设定。

4.2ByteArray,IDataInput and IDataOutput

ActionScr ipt3.0introduced a new type to support the manipulation of raw data in the form of an

Array of bytes,namely flash.utils.ByteArray.

为了支持字节数组形式的原始数据的操作,AS3.0引入了一个新的数据类型,即

flash.utils.ByteArray。

To assist with ActionScr ipt Object serialization and copying,ByteArray implements

flash.utils.IDataInput and flash.utils.IDataOutput.

为了辅助AS对象的序列化和复制,ByteArray实现了flash.utils.IDataInput和flash.utils.IDataOutput

两个接口。

These interfaces specif y utility methods that help write common types to byte streams.

这两个接口定义了使得常用类型转换为字节流的工具方法。

Two methods of interest are IDataOutput.writeObject and IDataInput.readObject.

常用的两个方法是DataOutput.writeObject和IDataInput.readObject。

These methods encode objects using AMF.

这两个方法使用AMF格式编码实例对象。

The version of AMF used to encode object data is controlled by the ByteArray.

编码实例对象的AMF版本是由ByteArray控制的。

objectEncoding method,which can be set to either AMF3or AMF0.

objectEncoding方法,可以适当是AMF3或者AMF0。

An enumeration type,https://www.doczj.com/doc/e313044909.html,.ObjectEncoding,holds the constants for the versions of AMF-ObjectEncoding.AMF0and ObjectEncoding.AMF3respectively.

一个枚举的类型https://www.doczj.com/doc/e313044909.html,.ObjectEncoding,拥有AMF版本的常量,分别为ObjectEncoding.AMF0

和ObjectEncoding.AMF3。

Note that ByteArray.writeObject uses one version of AMF to encode the entire object.Unlike NetConnection,ByteArray does not start out in AMF0and switch to AMF3(with the

objectEncoding property set to AMF3).

注意:ByteArray使用AMF的一个版本编码整个对象。不像NetConnection,ByteArray不在AMF0

中开始输出并且切换到AMF3(通过设定objectEncoding属性到AMF3)

Also note that ByteArray uses a new set of implicit reference tables for objects,object traits and

strings for each readObject and writeObject call.

还有注意:ByteArray对每一个对象的读写调用都使用一组新的对象,对象特性和字符串引用表。

5.Normative References标准的参考文档

[AMF0]Adobe Systems Inc."Action Message Format-AMF0",June2006.

[RFC2234] D.Crocker.,et.al."Augmented BNF for Syntax Specif ications:ABNF",RFC2234, November1997.

[RFC3629]Yergeau,F.,"UTF-8,a transformation format of ISO10646",RFC3629,November2003.

RTP协议分析

RTP协议分析 第1章. RTP概述 1.1. RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议)。RTP用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP为Internet上端到端的实时传输提供时间信息和流同步,但并不保证服务质量,服务质量由RTCP来提供。 1.2. RTP的应用环境 RTP用于在单播或多播网络中传送实时数据。它们典型的应用场合有如下几个。 简单的多播音频会议。语音通信通过一个多播地址和一对端口来实现。一个用于音频数据(RTP),另一个用于控制包(RTCP)。 音频和视频会议。如果在一次会议中同时使用了音频和视频会议,这两种媒体将分别在不同的RTP会话中传送,每一个会话使用不同的传输地址(IP地址+端口)。如果一个用户同时使用了两个会话,则每个会话对应的RTCP包都使用规范化名字CNAME(Canonical Name)。与会者可以根据RTCP包中的CNAME来获取相关联的音频和视频,然后根据RTCP 包中的计时信息(Network time protocol)来实现音频和视频的同步。 翻译器和混合器。翻译器和混合器都是RTP级的中继系统。翻译器用在通过IP多播不能直接到达的用户区,例如发送者和接收者之间存在防火墙。当与会者能接收的音频编码格式不一样,比如有一个与会者通过一条低速链路接入到高速会议,这时就要使用混合器。在进入音频数据格式需要变化的网络前,混合器将来自一个源或多个源的音频包进行重构,并把重构后的多个音频合并,采用另一种音频编码进行编码后,再转发这个新的RTP包。从一个混合器出来的所有数据包要用混合器作为它们的同步源(SSRC,见RTP的封装)来识别,可以通过贡献源列表(CSRC表,见RTP的封装)可以确认谈话者。 1.3. 相关概念 1.3.1. 流媒体 流媒体是指Internet上使用流式传输技术的连续时基媒体。当前在Internet上传输音频和视频等信息主要有两种方式:下载和流式传输两种方式。 下载情况下,用户需要先下载整个媒体文件到本地,然后才能播放媒体文件。在视频直播等应用场合,由于生成整个媒体文件要等直播结束,也就是用户至少要在直播结束后才能看到直播节目,所以用下载方式不能实现直播。 流式传输是实现流媒体的关键技术。使用流式传输可以边下载边观看流媒体节目。由于Internet是基于分组传输的,所以接收端收到的数据包往往有延迟和乱序(流式传输构建在UDP上)。要实现流式传输,就是要从降低延迟和恢复数据包时序入手。在发送端,为降低延迟,往往对传输数据进行预处理(降低质量和高效压缩)。在接收端为了恢复时序,采用了接收缓冲;而为了实现媒体的流畅播放,则采用了播放缓冲。

SIP协议呼叫流程及协议分析

一、SIP协议介绍: 会话发起协议SIP(Session Initiation Protocol)是一个应用层控制信令协议,用于建立、更改和终止多媒体会话或呼叫。SIP作为一个基础,可以在其上提供很多不同的服务。目前已经定义的媒体类型有音频、视频、应用、数据、控制。 二、SIP呼叫流程: 注册流程: (1)用户首次试呼时,终端代理A 向代理服务器发送REGISTER 注册请求; (2)代理服务器通过后端认证/计费中心获知用户信息不在数据库中,便向终端代理回送401Unauthorized 质询信息,其中包含安全认证所需的令牌; (3)终端代理提示用户输入其标识和密码后,根据安全认证令牌将其加密后,再次用REGISTER 消息报告给代理服务器; (4)代理服务器将REGISTER 消息中的用户信息解密,通过认证/计费中心验证其合法后,将该用户信息登记到数据库中,并向终端代理A 返回成功响应消息200 OK。 呼叫流程:

(1)用户摘机发起一路呼叫,终端代理A 向该区域的代理服务器发起Invite 请求;(2)代理服务器通过认证/计费中心确认用户认证已通过后,检查请求消息中的Via 头域中是否已包含其地址。若已包含,说明发生环回,返回指示错误的应答;如果没有问题,代理服务器在请求消息的Via 头域插入自身地址,并向Invite 消息的To 域所指示的被叫终端代理B 转送Invite 请求; (3)代理服务器向终端代理A 送呼叫处理中的应答消息,100 Trying; (4)终端代理B 向代理服务器送呼叫处理中的应答消息,100 Trying; (5)终端代理B 指示被叫用户振铃,用户振铃后,向代理服务器发送180 Ringing 振铃信息; (6)代理服务器向终端代理A 转发被叫用户振铃信息; (7)被叫用户摘机,终端代理B 向代理服务器返回表示连接成功的应答(200 OK);(8)代理服务器向终端代理A 转发该成功指示(200 OK); (9)终端代理A 收到消息后,向代理服务器发ACK 消息进行确认; (10)代理服务器将ACK 确认消息转发给终端代理B; (11)主被叫用户之间建立通信连接,开始通话; 结束流程:

MIPI_协议详细介绍

Protocol Introduction MIPI Development Team 2010-9-2

What is MIPI? v MIPI stands for M obile I ndustry P rocessor I nterface §MIPI Alliance is a collaboration of mobile industry leaders. §Objective to promote open standards for interfaces to mobile application processors. §Intends to speed deployment of new services to mobile users by establishing Spec. v Board Members in MIPI Alliance §Intel, Motorola, Nokia, NXP,Samsung, ST, TI

What is MIPI? v MIPI Alliance Specification for display §DCS (D isplay C ommand S et) ?DCS is a standardized command set intended for command mode display modules. §DBI, DPI (D isplay B us I nterface, D isplay P ixel I nterface)?DBI:Parallel interfaces to display modules having display controllers and frame buffers. ?DPI:Parallel interfaces to display modules without on-panel display controller or frame buffer. §DSI, CSI (D isplay S erial I nterface, C amera S erial I nterface)?DSI specifies a high-speed serial interface between a host processor and display module. ?CSI specifies a high-speed serial interface between a host processor and camera module. §D-PHY ?D-PHY provides the physical layer definition for DSI and CSI.

sip协议原理分析及总结

SIP协议学习总结 1、SIP协议定义 SIP(Session Initiation Protocol,即初始会话协议)是IETF提出的基于文本编码的IP电话/多媒体会议协议。用于建立、修改并终止多媒体会话。SIP 协议可用于发起会话,也可以用于邀请成员加入已经用其它方式建立的会话。多媒体会话可以是点到点的话音通信或视频通信,也可以是多点参与的话音或视频会议等。SIP协议透明地支持名字映射和重定向服务,便于实现ISDN,智能网以及个人移动业务。SIP协议可以用多点控制单元(MCU)或全互连的方式代替组播发起多方呼叫。与PSTN相连的IP电话网关也可以用SIP协议来建立普通电话用户之间的呼叫。 SIP协议在IETF多媒体数据及控制体系协议栈结构的位置 H.323SIP RTSP RSVP RTCP H.263 etc. RTP TCP UDP IP PPP Sonet AAL3/4AAL5 ATM Ethernet PPP V.34 SIP协议支持多媒体通信的五个方面: ◆用户定位:确定用于通信的终端系统; ◆用户能力:确定通信媒体和媒体的使用参数; ◆用户有效性:确定被叫加入通信的意愿; ◆会话建立:建立主叫和被叫的呼叫参数; ◆会话管理:包括呼叫转移和呼叫终止; SIP协议的结构 SIP是一个分层的协议,也就是说SIP协议由一组相当无关的处理层次组成,这些层次之间只有松散的关系。 SIP最底层的是它的语法和编码层。编码方式是采用扩展的Backus-Naur Form grammar (BNF范式)。 第二层是传输层。它定义了一个客户端发送请求和接收应答的方式,以及一 个服务器接收请求和发送应答的方式。所有的SIP要素都包含一个通讯层。 第三层是事务层。事务是SIP的基本组成部分。一个事务是UAC向UAS发送的一个请求以及UAS向UAC发送的一系列应答。事务层处理应用服务层的重发,匹配请求的应答,以及应用服务层的超时。任何一个用户代理客户端完成的事情都是

FlexRay通信协议中文版

一、FlexRay介绍 FlexRay通讯协议运用于可靠的车内网络中,是一种具备故障容错的高速汽车总线系统。它已经成为同类产品的基准,将在未来很多年内,引导汽车电子产品控制结构的发展方向。FlexRay协议标准中定义了同步和异步帧传输,同步传输中保证帧的延迟和抖动,异步传输中有优先次序,还有多时钟同步,错误检测与避免,编码解码,物理层的总线监控设备等。 1.1汽车网络通信协议综述 汽车网络通信协议在保证整个系统正常运行方面起着非常重要的作用。它可以帮助解决系统很多问题,如数据共享、可扩展性、诊断接口等。目前,应用于汽车领域的网络标准除了FlexRay还有很多,如CAN、LIN、J1850及MOST等。 CAN总线全称为“控制器局域网总线(Controller Area Network)”,是德国博世公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。CAN通信速率可达1Mbit/s,每帧的数据字节数为8个。 LIN(Local Interconnect Network,控制器局域网)总线是由LIN 协会发布的一种新型低成本串行通信总线,也称为经济型CAN网络。LIN的目标是为现有汽车网络(例如CAN 总线)提供辅助功能,因此LIN总线是一种辅助的总线网络,在不需要CAN 总线的带宽和多功能的场合比如智能传感器和制动装置之间的通信使用LIN总线可大大节省成本。 J1850总线是1994年由汽车工程师协会颁布的标准,之后普及运用于美国车厂的汽车中。不过,虽然美国各厂多采用J1850标准,但是各厂的实际做法又不相同,因此相对其他标准来说比较混乱。由于J1850总线通信速率低,只适合用于车身控制系统及诊断系统,目前在美国逐步被CAN 所取代。 MOST(Media Oriented System Transport,面向媒体的系统传输)总线是采用光纤并用于智能交通及多媒体的网络协议,能够支持24.8Mbps的数据速率,与以前的铜缆相比具有减轻重量和减小电磁干扰的优势。 1.2 FlexRay特点 作为一种灵活的车载网络系统,FlexRay具有高速、可靠及安全的特点,它不仅能简化车载通信系统的架构,而且还有助于汽车电子单元获得更高的稳定性和可靠性。在宝马新款SUV “X5”的电子控制减震器系统中,首次采用了控制系列车内LAN接口规格FlexRay,此次实际应用预示着FlexRay在高速车载通信网络中的大规模应用已经指日可待。

RTP协议全解(H264码流和PS流)-2015-4-22

RTP协议全解(H264码流和PS流) 写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析, 其中借鉴了很多文章,我都列在了文章最后,在此表示感谢。 互联网的发展离不开大家的无私奉献,我决定从我做起,希望大家支持。 原创不易,转载请附上链接,谢谢https://www.doczj.com/doc/e313044909.html,/chen495810242/article/details/39207305 1、RTP Header解析 图1 1) V:RTP协议的版本号,占2位,当前协议版本号为2 2) P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。 3) X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头

4) CC:CSRC计数器,占4位,指示CSRC 标识符的个数 5) M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。 6) PT: 有效荷载类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等,在流媒体中大部分是用来区分音频流和视频流的,这样便于客户端进行解析。 7) 序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。这个字段当下层的承载协议用UDP的时候,网络状况不好的时候可以用来检查丢包。同时出现网络抖动的情况可以用来对数据进行重新排序,序列号的初始值是随机的,同时音频包和视频包的sequence是分别记数的。 8) 时戳(Timestamp):占32位,必须使用90 kHz 时钟频率。时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。 9) 同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。 10) 特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。 注:基本的RTP说明并不定义任何头扩展本身,如果遇到X=1,需要特殊处理 取一段码流如下: 80 e0 00 1e 00 00 d2 f0 00 00 00 0041 9b 6b 49 €?....??....A?kI e1 0f 26 53 02 1a ff06 59 97 1d d2 2e 8c 50 01 ?.&S....Y?.?.?P. cc 13 ec 52 77 4e e50e 7b fd 16 11 66 27 7c b4 ?.?RwN?.{?..f'|? f6 e1 29 d5 d6 a4 ef3e 12 d8 fd 6c 97 51 e7 e9 ??)????>.??l?Q?? cfc7 5e c8 a9 51 f6 82 65 d6 48 5a 86 b0 e0 8c ??^??Q??e?HZ???? 其中,

SIP协议相关文件

Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。 eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。 一、介绍 Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。但缺点也专门明显,首先确实是可用性差,没有专门好的api封装,使得上层应用在调用协议栈时专门破裂;其次,只做到了transaction层次的协议过程解析,

缺少call、session、dialog等过程的解析,这也增加了使用的难度;再次,缺少线程并发处理的机制,使得它的处理能力有限。 eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。eXosip增加了call、dialog、registration、subscription等过程的解析,使得有用性更强。然而eXosip局限于UA的实现,使得它用于registrar、sip server等应用时极其不容易。另外,它并没有增加线程并发处理的机制。而且只实现了音频支持,缺少对视频和其它数据格式的支持。 综合来讲,Osip2加上eXosip协议栈仍然是个实现Sip协议不错的选择。因此需要依照不同的需求来增加更多的内容。 二、Osip2协议栈的组成 Osip2协议栈大致能够分为三部分:sip协议的语法分析、sip 协议的过程分析和协议栈框架。 1、Sip协议的语法分析:

要紧是osipparser2部分,目前支持RFC3261和RFC3265定义的sip协议消息,包括INVITE、ACK、OPTIONS、CANCEL、BYE、SUBSCRIBE、NOTIFY、MESSAGE、REFER和INFO。不支持RFC3262定义的PRACK。 遵循RFC3264关于SDP的offer/answer模式。带有SDP的语法分析。 支持MD5加解密算法。支持Authorization、www_authenticate 和proxy_authenticate。 2、Sip协议的过程分析: 要紧是osip2部分,基于RFC3261、RFC3264和RFC3265的sip 协议描述过程,围绕transaction这一层来实现sip的解析。 Transaction是指一个发送方和接收方的交互过程,由请求和应答组成。请求分为Invite类型和Non-Invite类型。应答分为响应型的应答和确认型的应答。响应型的应答是指那个应答仅代表

三种通讯协议的区别

之前看到一个招聘信息,需要应聘者要熟悉这三种通讯协议。 故总结了一下。 UART,I2C,SPI 这三种通讯协议非常常用。很多人都用得很熟练的,可是对它们的概念,区别,特点都熟练掌握的人不多。我整理了一下网上牛人的说法,还有书本上的资料。 大概总结如下: SPI(Serial Peripheral Interface:串行外设接口) I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 基本区别: UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢。速度最慢。可以实现全双工。 I2C:一种串行传输方式,2线接口,网上可找到其通信协议和用法的。速度居中。不可以实现全双工。 SPI:高速同步串行口。3线接口,收发独立、可同步进行。速度最快。可以实现全双工。 详细区别: UART: UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。作为接口的一部分,UART还提供以下功能: 将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。现在如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。 UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。

RTP-RTCP协议

Southwest university of science and technology 视频信息处理与传输 实验报告 报告名称RTP-RTCP协议 专业班级电子1002班 学生姓名 学号 指导教师

实验四RTP-RTCP协议 一、实验目的 1、了解实时传输协议RTP和实时传输控制协议RTCP的基本原理; 2、学习使用RTP数据报发送实时数据,并接收重组; 3、学会使用Wireshark进行抓包,并分析数据。 二、实验内容 1、RTP协议报文段的说明语句 RTP(Real-time Transport Protocol,实时传输协议)是一个网络传输协议。RTP报文由两部分组成:报头和有效载荷。RTP报头格式如图1所示,其中: 图1 RTP报头格式 V:RTP协议的版本号,占2位,当前协议版本号为2。 P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。 X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。 CC:CSRC计数器,占4位,指示CSRC 标识符的个数。 M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。 PT: 有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM 音频、JPEM图像等。 序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据。 时戳(Timestamp):占32位,时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。 同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。 特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。 2、RTCP协议报文段的说明语句 RTCP(RTP Control Protocol,控制协议)——监控服务质量并传送正在进行的会话参与者的相关信息。RTCP包括五种数据包类型(RFC3550 Page69):

主流PLC通讯协议简介

各PLC通讯协议简介 自从第一台PLC在GM公司汽车生产线上首次应用成功以来,PLC凭借其方便性、可靠性以及低廉的价格得到 了广泛的应用。但 PLC毕竟是一个黑盒子,不能实时直观地观察控制过程,与DCS相比存在比较大的差距。计 算机技术的发展和普及,为PLC又提供了新的技术手段,通过计算机可以实施监测PLC的控制过程和结果,让 PLC如虎添翼。但是各 PLC通讯介质和通讯协议各不相同,下面将简单介绍主要PLC的通讯介质和协议内容。 美系厂家 RockwellAB Rockwell 的 PLC 主要是包括 PLC2、PLC3、PLC5、SLC500、ControlLogix 等型号,PLC2 和 PLC3 是早期型号, 现在用的比较多的小型PLC是SLC500,中型的一般是 ControlLogix,大型的用 PLC5系列。 DF1协议是Rockwell各PLC都支持的通讯协议,DF1协议可以通过232或422等串口介质进行数据传输,也可以通过DH、DH+、DH485、ControlNet等网络介质来传输。DF1协议的具体内容可以在 AB的资料库中下载。 AB的plc也提供了OPC和DDE,其集成的软件中RSLogix中就包含DDE和OPC SERVER,可以通过上述软件来进行数据通讯。 AB的中高档的PLC还提供了高级语言编程功能,用户还可以通过编程实现自己的通讯协议。 GE

S7400作为西门子的大型 PLC,提供了相当完备的通讯功能。可以通过S7标准的MPI进行通讯,同时可以通 过C-总线,PROFIBUS和工业以太网进行通讯。如果要使用点对点通讯,S7-400需要通过 CP441通讯模块。 西门子的通讯协议没有公开,包括紫金桥组态软件在内许多组态软件都支持MPI、PPI等通讯方式,PROFIBUS 和工业以太网一般通过西门子的软件进行数据通讯。 施耐德(莫迪康) 龙PLC通讯。在和欧姆龙通讯时要注意,两次通讯之间要留一定时间,如果通讯速度过快容易造成PLC通讯异常。 ControlLink是欧姆龙PLC的一种快速通讯方式。Control Link通过板卡进行数据通讯,板卡之间有数据交换区, 由板卡实现数据的交换从而完成数据采集功能。使用该方式通讯需配置欧姆龙的驱动。 三菱 三菱PLC的小型PLC在国内的应用非常广泛。三菱的 PLC型号也比较多,主要包括 FX系列,A系列和Q系列。三菱系列PLC 通讯协议是比较多的,各系列都有自己的通讯协议。如FX系列中就包括通过编程口或 232BD 通讯,也可以通过 485BD等方式

RTP RTCP协议简介

即時傳輸協議RTP(Realtime Transport Protocol):是針對Internet上多媒體資料 流程的一個傳輸協定, 由IETF(Internet工程任務組)作為RFC1889發佈。RTP被定義為在一對一或一對多的傳輸情況下工作,其目的是提供時間資訊和實現流同步。RTP的典型應用建立在UDP上,但也可以在TCP或ATM等其他協議之上工作。RTP本身只保證即時資料的傳輸,並不能為按順序傳送資料包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。 即時傳輸控制協議RTCP(Realtime Transport Control Protocol):負責管理傳輸品 質在當前應用進程之間交換控制資訊。在RTP會話期間,各參與者週期性地傳送RTCP包,包中含有已發送的資料包的數量、丟失的資料包的數量等統計資料, 因此,伺服器可以利用這些資訊動態地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,能以有效的回饋和最小的開銷使傳輸效率最佳化,故特 別適合傳送網上的即時資料。 RTCP主要有4個功能: (1)用回饋資訊的方法來提供分配資料的傳送品質,這種回饋可以用來進行流量的擁塞控制,也可以用來監視網路和用來診斷網路中的問題; (2)為RTP源提供一個永久性的CNAME(規範性名字)的傳送層標誌,因為在發現衝突或者程式更新重啟時SSRC(同步源標識)會變,需要一個運作痕跡,在一組相關的會話中接收方也要用CNAME來從一個指定的與會者得到相聯繫的資料流程(如音頻和視頻); (3)根據與會者的數量來調整RTCP包的發送率; (4)傳送會話控制資訊,如可在用戶介面顯示與會者的標識,這是可選功能。 4.2 RTP/RTCP工作過程 工作時,RTP協議從上層接收流媒體資訊碼流(如H.263),裝配成RTP資料包發送給下層,下層協定提供RTP和RTCP的分流。如在UDP中,RTP使用一個偶 數號埠,則相應的RTCP使用其後的奇數號埠。RTP資料包沒有長度限制,它的 最大包長只受下層協議的限制。 4.3 伺服器的演算法 伺服器軟體模型主要有兩種,即併發伺服器和迴圈伺服器。迴圈伺服器(Iterative

通讯协议V

CC2125A的通讯学习软件操作说明书目录 1. 软盘清单 2. 通讯口的技术数据 3. 调节器通迅接线 4. 调节器通迅参数的设置 5. 标准协议和SRFP协议 6. 标准协议 7. SRFP协议 8.学习软盘SR253.BAS V2.0 的使用方法 9. #3 盘上的BASICA程序说明 10. 在PC计算机上,采用BASICA语言,实现对SR253数据采集的编程例 11. 附录: A.通讯串口接线方法 B.RS232通讯口的技术数据 C.RS422/RS485通讯口的技术数据 1. 软件清单 在软盘内,提供了下述的应用资料及其它调用文件. 中文版通讯协议V 2.10 操作说明 (words 文件) BASICA.EXE - COMOPAQ.BASIC SR253.BAS - 标准通讯协议测试软件 SRFP.BAS - BASIC参考的通讯学习软件 STAR253.BAS - BASIC参考的SR25的"DS"命令数据采集软件 232T.BAS - BASIC的PC机232口及先锋RS422口测试软件 ★用户可用Windows 环境下的WORDS的"PRINT"打印命令检查或打印SR253.doc 文件内容。 2.通讯口的技术数据 1.信号电平: EIA标准 RS-232C, RS-422A,RS-485 ⒉通讯方式: RS-232C 3线半双工,单台 RS-422A 4线半双工,多台 RS-485 2线半双工,多台 ⒊同步系统: 起始位-停止位 ⒋通讯距离: RS-232C 15 米 RS-422A 1200 米 *具体视通讯条件而定 RS-485 5200 米 *具体视通讯条件而定 ⒌通讯速度: 1200,2400,4800,9600,19200 波特率 ⒍数据格式: 1. 数据7位, 一个偶校验位,一个停止位 2. 数据8位, 无校验位,一个停止位 格式数据位校验位停止位 7E1 7 偶校验 1 7E2 8 偶校验 2

RTP协议介绍

3.1. RTP协议分析 3.1.1. RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议)。RTP用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP为Internet上端到端的实时传输提供时间信息和流同步,但并不保证服务质量,服务质量由RTCP 来提供。 3.1.2. RTP的协议层次 ——传输层的子层 RTP被划分在传输层,它建立在UDP上。同UDP协议一样,为了实现其实时传输功能,RTP也有固定的封装形式。RTP用来为端到端的实时传输提供时间信息和流同步,但并不保证服务质量。服务质量由RTCP来提供。

3.1.3. RTP协议原理 RTP协议原理比较简单,负责对流媒体数据进行封包并实现媒体流的实时传输,即它按照RPT数据包格式来封装流媒体数据,并利用与它绑定的协议进行数据包的传输,具体见本文2.2.1RTP数据格式;RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。 3.1.3.1. RTP的封装 版本号(V):2比特,用来标志使用的RTP版本。 填充位(P):1比特,如果该位置位,则该RTP包的尾部就包含附加的填充字节。 扩展位(X):1比特,如果该位置位的话,RTP固定头部后面就跟有一个扩

UPS中文通讯协议

通信协议版本号: 3.0 校对: Tony Lin 准备: 日期: Nov. 12, 1999 文件:RICHPROT.DOC 日期:V3.0 : August 30 ,2000

通信协议内容 A. 概述:本文档是专门阐述关于高智能型UPS的RS232C接口通信的。 协议中提供了以下内容: 1、监视充电器状态; 2、监视电池状态和环境; 3、监视市电状态; 4. 为计算机电源管理提供了定时开关电力供应的功能。 计算机能够通过一个以回车符结束的查询指令掌握信息的交流。 UPS则会返回以回车符结束的相应信息或者执行有关动作。 B. 硬件规范 波特率............... :2400 bps 数据长度.......... :8 bits 停止位.....................:1 bit 奇偶校验.................:无 通信电缆引脚: 计算机UPS =================================== RX (pin 3) <---------- TX (pin 3) TX (pin 2) ----------> RX (pin 2) GND (pin 5) <---------- GND (pin 5) (9 针母头连接座)

C、通信协议 1、状态查询: 计算机指令:Q1 UPS返回值: UPS 状态数据流,例如 (MMM.M NNN.N PPP.P QQQ RR.R S.SS TT.T b7b6b5b4b3b2b1b0 UPS 状态数据流: 为了区分各种不同参量的数据,在每段数值之间都有一个空格符。以下是每段数值的具 体含义: a. 启始字节:( b. 输入电压值:MMM.M M是0~9的整数。 单位是伏特。 c. I/P fault voltage : NNN.N N is and integer number ranging from 0 to 9. The unit is Volt. ** For OFF LINE UPS** Its purpose is to identify a short duration voltage glitch which cause OFF line UPS to go to Invter mode. If this occurs input voltage will appear normal at query prior to glitch and will still appear normal at next query. The I/P fault voltage will hold glitch voltage till next query. After query, the I/P fault voltage will be same as I/P voltage until next glitch occurs. ** For ON LINE UPS** Its purpose is to identify a short duration utility fail which cause ON line UPS to go to battery mode. If this occurs input voltage will appear normal at query prior to fail and will still appear normal at next query. The I/P fault voltage will hold utility fail voltage till next query. After query, the I/P voltage will be same as I/P voltage until next utility fail occurs. d. 输出电压值:PPP.P P是0~9的整数。 单位是伏特。 e. 输出电流值:QQQ QQQ是相对于最大电流值的一个百分比,而不是一个绝对的数值。 f. 输入频率:RR.R

RTP与RTCP协议

信令与协议分册目录 目录 第2章RTP与RTCP协议...................................................................................................... 2-1 2.1 概述................................................................................................................................... 2-1 2.2 RTP/RTCP协议应用.......................................................................................................... 2-1 2.3 报文格式和含义................................................................................................................. 2-2 2.3.1 RTP报头的格式 ...................................................................................................... 2-2 2.3.2 RTCP包格式........................................................................................................... 2-3 2.3.3 RTCP的主要功能.................................................................................................... 2-3 2.3.4 RTCP发送间隔 ....................................................................................................... 2-4

SIP协议与视频通信

SIP协议与视频通信 关键字:SIP视频通信H.323 摘要:文章简要概述现有视频通信技术,包括H.320与H.323应用。然后介绍IETF可以用于视频通信的协议:SIP。在SIP介绍中首先描述SIP协议的历史,然后描述SIP的组成部件。明确部件后举例说明了一个SIP呼叫建立的流程。在第四部分通过与H.323协议族比较来说明SIP用于视频通信的优劣。最后指出SIP协议用于视频通信的前景。 引言 沟通是人类生存的基本需求,通信已成为现代生活中必不可少的内容。在任何时间,任何地点与人和人通信是电信发展的目标。通信技术发展到今天,电话网几乎覆盖全球。语音通信(电话)似乎已基本达到上述目标。但是随着技术的发展,人们已不满足仅仅语音通信。大规模视频通信已成为下一阶段信息产业发展方向。虽然电视会议已出现二十多年,当前不但统一的标准而且有成熟的产品;但是由于种种原因一直没有得到象电话那样的普遍应用。视频通信似乎一直是一座未被足量开采的金矿。随着传输技术的发展,带宽资源已不是瓶颈;随着一场SARS的肆虐,视频通信又成为热点。随着SIP协议的出现,视频通信在技术上又有了新的发展动力。 视频通信协议概述 基于H.320的视频应用 传统会议电视利用以电话网2M或者1.544M直联数字线路连接终端会议电视设备进行实时音频、视频和数据信息的传送。通过使用多点控制器,可以在一块控制板具备所有主会场的操作切换功能。最初会议电视厂家以各自专用的压缩和通信算法进行生产,各个会议电视厂家产品无法互联互通。 随着ITU-T推出H.320协议,上述问题得到很大程度的解决。H.320是同步电路交换网(如ISDN)上现频传输的标准。电路交换网适用于实时应用,如长时间和具有确定延迟的音频和视频信号传递。电路的建立依赖于带外信令、集中的路由控制和昂贵的交换设备。使用H.320协议,电话网上中商用会议电视的理想电路是384 kbps。使用384kbps的电路可以以合理的成本提供高质量的音频和视频信号。采用2M或者1.544M的中继直连当然很容易满足上述带宽要求,但是作等于建立专网,价格将令用户难以承受。 由于电话网络中继价格不断下降以及大量既成事实的基于H.320的电视会议应用,虽然H.320通信成本相对于现有的其它方式稍显昂贵,但其市场仍将在未来数年里继续成长——尽管其成长是缓慢的。 基于H.323协议的视频应用 H.323是国际电信联盟制定的局域网上的多媒体通信系列标准。该协议专门为不提供服务质量(QOS)保证的局域网技术制定,例如运行于以太网、快速以太网和令牌环网(Token Ring)上的TCP/IP和IPX。尽管H.323协议特别为局域网制定,只要带宽时延满足要求同样可以应用在更大范围例如城域网和广域网。1997年5月,国际电信联盟第15研究小组重新定义

G中文通讯协议

通信协议 版本号 : 3.0 校对 : Tony Lin 准备 : 日期 : Nov. 12, 1999 文件:RICHPROT.DOC 日期:V3.0 : August 30 ,2000

A. 概述:本文档是专门阐述关于高智能型UPS的RS232C接口通信的。 协议中提供了以下内容: 1、监视充电器状态; 2、监视电池状态和环境; 3、监视市电状态; 4. 为计算机电源管理提供了定时开关电力供应的功能。 计算机能够通过一个以回车符结束的查询指令掌握信息的交流。 UPS则会返回以回车符结束的相应信息或者执行有关动作。 B. 硬件规范 波特率 ............... : 2400 bps 数据长度 .......... : 8 bits 停止位 .....................: 1 bit 奇偶校验 .................:无 通信电缆引脚: 计算机 UPS =================================== RX (pin 3) <---------- TX (pin 3) TX (pin 2) ----------> RX (pin 2) GND (pin 5) <---------- GND (pin 5) (9 针母头连接座)

1、状态查询: 计算机指令:Q1 UPS返回值 : UPS 状态数据流,例如 (MMM.M NNN.N PPP.P QQQ RR.R S.SS TT.T b7b6b5b4b3b2b1b0 UPS 状态数据流: 为了区分各种不同参量的数据,在每段数值之间都有一个空格符。以下是每段数值的 具体含义: a. 启始字节:( b. 输入电压值:MMM.M M是0~9的整数。 单位是伏特。 c. I/P fault voltage : NNN.N N is and integer number ranging from 0 to 9. The unit is Volt. ** For OFF LINE UPS** Its purpose is to identify a short duration voltage glitch which cause OFF line UPS to go to Invter mode. If this occurs input voltage will appear normal at query prior to glitch and will still appear normal at next query. The I/P fault voltage will hold glitch voltage till next query. After query, the I/P fault voltage will be same as I/P voltage until next glitch occurs. ** For ON LINE UPS** Its purpose is to identify a short duration utility fail which cause ON line UPS to go to battery mode. If this occurs input voltage will appear normal at query prior to fail and will still appear normal at next query. The I/P fault voltage will hold utility fail voltage till next query. After query, the I/P voltage will be same as I/P voltage until next utility fail occurs. d. 输出电压值:PPP.P P是0~9的整数。 单位是伏特。 e. 输出电流值:QQQ QQQ是相对于最大电流值的一个百分比,而不是一个绝对的数值。 f. 输入频率:RR.R R是0~9的整数。

相关主题
文本预览
相关文档 最新文档