精华内容
下载资源
问答
  • 软件开发中的几种数据交换协议
    千次阅读
    2017-10-19 16:43:00

    在很多地方都有"数据交换"这个概念,本文所说的"数据交换" 是指在计算机网络中,一个系统把数据传递给另外一个系统。这非常类似于一个人要告诉另外一个人一件事情。

    当一个人要把一件事情告诉另外一个人的时候,我们可以通过电话、邮件、短信、IM工具或者当面说的方式来交流。这种方式类似于系统数据交换要通过 tcp、udp、管道等等的方式实现。当两个人交流的时候,我们需要一种共同的语言才能明白对方的意思,同样的,两个系统要交换数据,也需要定义一种双方都明白的协议,我们称为"数据交换协议"。

    数据交换协议

    数据交换协议的目的是让两个系统进行正确的数据交互。所以几乎各种开发语言都提供了方便使用的数据交换功能。比如说使用JAVA语言的开发的系统使用 MySQL数据库存储数据,就是通过MySQL数据交换协议跟MySQL做数据交换;通过JAVA的RMI可以方便的做跨机器的分布式数据交换,RMI也就是一种数据交换协议。

    一般我们在不同的系统、不同的语言之间交换数据的时候,我们会选择一种通用的交换协议或者自己定义一种容易使用的交换协议。 WebService曾经非常流行, 在Web 2.0时代,轻量级的REST协议又开始受到追捧。那么究竟在我们的系统中应该选择什么样的协议呢?

    如何选择数据交换协议

    选择什么样的协议跟我们的应用场景有很大的关系。我们需要考虑我们开发是否方便、接口是否容易发布、是否需要考虑带宽占用成本、序列化和反序列化的性能、接口协议的扩展性等等。下面我们看下几个比较常用的交换协议实现。

    协议实现跨语言性能传输量RPC
    xml广泛几乎所有很大N(可实现)
    json广泛大量一般一般N(可实现)
    php serializePHPRPC大量一般一般Y
    hessianhessian大量一般Y
    thriftthrift大量Y
    protobufprotobuf大量N(可实现)
    iceice大量Y
    avroApache Avro少量Y
    messagepackmessagepack

     

    大量Y

     

    上面表格列出了一些常用数据交换协议的一些特性的比较。这里并没有比较好坏,只是想说明不同数据交换协议是有区别的,所以我们需要在我们的应用场景中进行选择。

    开放式

    像微博,SNS这种开放平台、对静态html页面提供javascript接口调用的系统都属于这种类型 。这种类型的特点是:

    • 调用方不完全可控,而且是针对公网的,你可能不知道是谁、是什么语言、是什么方式在调用你提供的数据接口;
    • 接口访问量一般都非常大,要求具有很高的性能和吞吐量;
    • 需要考虑安全问题,外部提交的数据可能不是合法的。

    所以在这种情况下,需要考虑数据传输的带宽消耗和数据交换协议的易用性,以及多语言支持程度。以前对于html页面使用的javascript接口调用一般都使用XML格式,最近几年几乎都转成了json格式了,因为json传输量更小,比XML更加容易使用。 而对于开放平台,由于使用的场景很多,所以需要提供多种交换协议格式。基本上都会提供XML和json。为了提高平台本身的性能和客户端的性能,也可以提供protobuf这种二进制交换协议并且增加压缩支持,以节省带宽传输和解析的性能消耗。

    内部服务

    对于一个大型系统来说,内部服务的数据交换无处不在。从最基本和常见的数据库数据交换、memcached缓存数据交换、消息队列的数据交换到系统之间使用的RPC服务框架等等,都可以算作内部服务的数据交换。内部服务的特点是不用考虑防火墙,不对外开放,速度快(基本无带宽成本)。

    内部服务的数据交换协议的选择空间非常大,一般需要考虑:

    • 数据交换协议的性能
    • 是否需要跨语言支持
    • 数据交换协议的消息体大小

    持久化存储

    对于持久化存储来说,每一种数据交换协议其实都可以实现。一般需要根据应用场景考虑:

    • 是否人工可阅读
    • 存储的空间消耗
    • 序列化和反序列化的性能
    • 是否经过压缩

    跨语言

    假设我们的网站前端页面展示层使用PHP语言开发,中间业务逻辑使用JAVA语言开发,那么就涉及到跨语言数据交换的问题。只要系统不是单纯的使用一种语言,那么就必须考虑这个问题。事实上,考虑未来的扩展和需求变化问题,也最好考虑跨语言的数据交互协议。

    数据交换协议可升级

    在选择数据交换协议的时候,我们同样需要考虑类似于数据库表的?schema设计时的扩展问题。比如一个提供用户信息的数据交换协议接口,现在包含用户名、性别、住址的信息,在升级过程中,增加了一个最后登录的IP信息。如果不考虑数据交换协议升级带来的影响,很可能会导致以前的客户端出现异常或者旧的数据无法正确解析的问题。

    兼容协议的巧用

    兼容协议的巧用非常有用,新产品兼容提供现有成熟的数据交换协议,可以降低使用门槛和产品的开发速度。比如新浪开源的memcacheQ就使用了memcached协议。

    总结

    数据交换协议的各种通用开源实现非常多,数据交换协议只是一个非常宽泛的说法,其实只要实现了数据的序列化和反序列化 ,那么就可以说是一个可以交换数据的协议。数据交换协议的性能其实就是序列化和反序列化的性能,如果加上RPC,那么跟RPC实现本身的性能也有非常大的关系。

    我的新浪微博@sunli1223 ,欢迎与我讨论。

    参考链接:

    更多相关内容
  • 为解决工业控制系统与涉密工作网络之间信息安全交换的问题,提高信息交换的效率,提出一种基于单向传输协议数据交换技术。构建数据交换可信验证模型,将业务数据分离成2个单向链路,并采用单向隔离设备实现网络的...
  • DLT698.45电能信息采集与管理系统-面向对象的数据交换协议(20170602) 国网标准
  • 《面向对象的用电信息数据交换协议》-698协议的理解 写在前面 DL/T 698.45是面对对象的通信协议,适用于主站和采集终端、采集终端和电能表、主站和电能表之间。DL/T 645是面向过程的通信协议适用于采集终端和电能表...

    《面向对象的用电信息数据交换协议》-698协议的理解

    写在前面
    DL/T 698.45是面对对象的通信协议,适用于主站和采集终端、采集终端和电能表、主站和电能表之间。DL/T 645是面向过程的通信协议适用于采集终端和电能表之间。698是最新的协议,645是旧协议。
    面向过程:数据和方法是分离的,同类的数据散装在一起,封装性差。
    面向对象:把相关的数据和方法组合为一个整体来看待。
    面向对象必然有类和对象:
    类描述了一组有相同特性(属性)和相同行为(方法)的对象。在DL/T 698协议中具有共享公共特征的对象归纳为接口类(IC),接口类是同一类对象共同特征及行为的表达模板。每个类对应一个类标识码–类似一个人对应一个身份证。接口类由类标识码(c1ass_id)进行标识。接口类的公共特征(包括属性和方法) 适用于该类的所有实例。接口类的实例称为接口类对象,简称对象。一个对象只能属于一个接口类。一个对象对应于一个唯一的标识,即对象标识(OI)
    DL/T698.45中电能量接口类(DL/T698.4协议中的一个类,类标识class_id=1)举例如表1;
    ![在这在这里插入图片描述
    在698.45协议中,一个功能操作代表一个实例对象,然后根据类标识码(c1ass_id)找到对应的类。根据对象拥有的属性和方法进行读取、设置、操作等。
    698.45-2017协议文档包含8个章节和附录
    第 1、 2、 3、4章 分别定义了本协议的适用范围、 引用文件、术语定义和符号和缩略语
    第5章 阐述本协议的通信架构。
    第6章 定义了协议的链路层结构。
    第7章 内容是协议应用层规范和应用数据单元用到的数据类型。
    第8章 接口类与对象标识,规定了接口类的描述方法,定义了26个接口类,定义了对象标识系统,规定了接口类和对象标识的管理办法 。
    附录章节包含对象标识,物理单位,一致性协商,链路层校验算法,安全认证说明,安全模式参数,状态字和APDU编码实例 。

    1. 通信架构

    客户机和服务器信息交换模型如图1所示
    在这里插入图片描述
    图1 信息交换模型
    在这里插入图片描述
    客户机和服务器的应用进程分别位于不同的设备;
    (1)物理层规定了通信单元或其他终端设备与多功能电表的通信接口、接口的物理与电气特性,常见的物理层传输方式有对于RS485、红外、载波等通信通道。
    (2)数据链路层将数据包装成可传输的帧格式。
    (3)应用层包含交互的数据、报文。是唯一包含服务组件的协议层,应用层协议数据单元APDU通过数据链路层将数据包装成可传输的帧格式。
    客户机和服务器有两种方向的数据交换。
    (1)请求/响应类型的数据交换,客户机请求从机,服务器提供响应,涉及到读取、设置、操作、代理等服务。
    (2)通知/确认类型的数据交换,服务器主动上报,客户机回复确认,涉及到上报服务。
    客户机,包括主站(某上位机)或终端(集中器),服务器这里就是电表。

    2 链路层

    698帧结构图a)与645帧结构图b)对比
    在这里插入图片描述
    数据链路层规定了数据传输的报文信息、信息传输的编码规则和传输规则。其中包含帧起始标志(68H)、长度域L、控制域C、地址域A、帧头校验HCS、链路用户数据、帧校验FCS和帧结束标志(16H)。
    举例1
    帧数据:68 1f 00 43 05 08 00 00 00 00 00 10 b5 0b 06 01 04 40 00 02 00 1c 07 e0 09 0b 12 1e 00 00 05 69 16
    ①68:起始字符
    ②1f 00:长度域L,由2字节组成,取bit0-bit13,指除起始字符和结束字符之外的帧字节数。
    ③43:控制域C,1字节,定义如下图。
    在这里插入图片描述
    bit7和bit6控制着帧格式的传输方向。bit7=0 表示此帧是由客户机发出的; bit7=1 表示此帧是由服务器发出的;bit6=0 表示此帧是由服务器发起的; bit6=1 表示此帧是由客户机发起的。
    分帧标志位: bit5=0,表示此帧是完整用户数据; bit5=1,表示此帧链路为用户数据片段。
    43即01000011:可看出来该帧是由客户机发起一个请求,功能码为应用连接管理及数据交换服务。
    ④05 08 00 00 00 00 00:服务器地址。服务器地址定义如下:
    在这里插入图片描述
    bit0-bit3:地址字节数,注意此处是加1表示字节长度
    bit4-bit5:逻辑地址
    bit6-bit7:0表示单地址,1表示通配地址,2表示组地址,3表示广播地址
    此处05 08 00 00 00 00 00中,05表示单地址,地址长度为5+1,08 00 00 00 00 00表示真实地址00 00 00 00 00 08.
    ⑤10:客户机地址16.
    ⑥b5 0b:帧头校验,是对帧头部分除起始字符和帧头检验本身之外的所有字节的校验
    ⑦06 01 04 40 00 02 00 1c 07 e0 09 0b 12 1e 00 00:应用层数据。具体含义见第三节应用层。
    ⑧05 69:帧校验,是对整帧除起始字符、结束字符和帧校验本身之外的所有字节的校验

    3 应用层

    DL/T698.45应用层数据单元直接以实例进行说明;说明之前理解三部分内容。

    3.1 数据类型

    DL/T698.45协议的应用层数据单元由各种数据类型(结构体)组成。DL/T698.45协议定义了许多数据类型,这些DL/T698.45自己定义的数据类型的元素大多是有许多基本或通用的数据类型组成。
    举例1
    DL/T698.45协议定义的Data数据类型:几乎包括了在DL/T698.45协议出现的所有类型;
    在这里插入图片描述
    0-28是基本的、通用的一些数据类型,80-96是DL/T698.45协议自己定义的数据类型。

    3.2 应用服务

    应用层服务分四类:
    ① 预连接服务(同时适用于客户机和服务器)
    预连接服务(LINK)由服务器发起,客户机响应。DL/T 698.45存在一个预先建立的应用连接,在进行应用连接之前,首先建立一个预连接,该预连接可以满足最低的采集应用需求:比如登录,心跳。
    在这里插入图片描述
    对于 RS485、红外、载波等通信通道,当物理连接建立后,预连接的通道即
    存在,不需额外建立预连接。
    ② 客户机应用层服务(适用于客户机);
    客户机应用层数据单元( Client-APDU)的数据类型定义如图 5:
    在这里插入图片描述
    客户机的数据单元是定义的一个 SEQUENCE 数据类型,包括许多服务,主要
    用到读取、设置、操作等请求。每个请求都是对应一个数据类型。
    ③ 服务器应用层服务(适用于服务器);
    服务器应用层数据单元( Server-APDU) 的数据类型定义如图 6
    在这里插入图片描述
    服务器的数据单元是定义的一个 SEQUENCE 数据类型,主要用到读取响应、设置响应、操作响应。每个响应都是对应一个数据类型。

    3.2 对象标识

    系统基于对象进行建模和设计,首先要解决的一个问题便是对象的命名问题。这个就如人类社会系统中每个人类对象必须有一个姓名(身份证号)一样,这样才可以相互沟通和识别。对象的名称就是对象标识OI(object identification)。例如正向有功电能的0I为O010。
    本协议在引用一个对象时,采用了直接引用和间接引用两种形式。直接存在于终端设备内的对象,采用直接引用的方式。这类对象必须有唯一的名称,例如该名称下电能表设备中的正向有功电能对象(0010),采集终端中的日期时间对象 (40OO)。如图7所示
    在这里插入图片描述
    存在于设备内集合类对象之中的对象,采用间接引用的方式。这类对象的类具有唯一的名称,但是具体的实例对象是没有名称的,不能通过直接引用的方式确定一个唯一对象。
    举例1
    终端读取电能表在2016-01-20 00: 00: 00的日冻结正向有功总及费率电能量、日冻结反向有功电能总及费率。
    这里涉及4个实例对象;
    ① 日冻结---------------------------对象标识OAD-50 04 02 00
    ② 数据冻结时间---------------------对象标识OAD-20 21 02 00
    ③ 正向有功总及费率电能量------------对象标识OAD-00 10 02 00
    ④ 反向有功总及费率电能量------------对象标识OAD-00 20 02 00
    实例间接引用是用到-请求读取记录型对象属性(GetRequestRecord)-服务来间接引用。比如日冻结,X轴代表有功功率(正向,反向),Y轴某一日,来指定需要的对象,这就是采用间接引用机制。如图8所示;
    在这里插入图片描述
    日冻结对象的间接引用机制的二维图如图9:
    在这里插入图片描述
    图9 间接引用的二维描述
    这里的名称系统,就不需要为上图中的每一个节点指定一个唯一的标识名称,从而简化名称管理,使得应用业务可以在X轴和Y轴根据需要进行随意扩展,而不影响己有的对象标识系统.

    4 实例分析

    4.1 读取

    1:读取电能表的通信地址-客户机发送: 05 01 01 40 01 02 00 00
    ①05——[5]表示客户机应用层数据单元(Client-APDU)的数据类型应用层服务(CHOICE)中编号[5]元素-发起读取请求-GET-Request数据类型。
    在这里插入图片描述
    ②01——[1]表示GET-Reques数据类型中元素[1]-读取一个对象属性-GetRequestNormal数据类型
    在这里插入图片描述
    ③01——GetRequestNormal数据类型的第一个元素PIID(序号及优先标志(Priority and Invoke ID)数据类型,
    在这里插入图片描述
    01 的二进制表示是0000 0001也就是服务优先级为0-普通优先级,服务序号为1
    ④40 01 02 00——GetRequestNormal数据类型的第二个元素-一个对象属性描述符OAD。
    40 01-是对象标识OI,OI由两字节组成,采用十六进制编码表示,其格式定义下对象标识按字节划分为OIA和OIB,OIA按位划分为OIA1和OIA2,OIB按位划分为OIB1和OIB2。4001所表示对象的就是电能表通信地址。如下图所示
    在这里插入图片描述
    IC(接口类(Interface Class)=8,也就是类标识码class_id=8,表示编号为8的接口类-参数变量类。如下图所示:
    在这里插入图片描述
    02-属性标识及特征
    参数变量类第一个属性是逻辑名:
    逻辑名-接口类逻辑名就是类的名称,如:电能量类、最大需量类、冻结类等;此处就是逻辑名是参数变量类
    参数变量类第二个属性是参数:
    这里是读取电能表的通信地址,选择属性2,属性的编号即对象属性描述符(OAD)的属性标识;所以属性标识及特征为02。
    00-属性内元素索引
    读取电能表的通信地址是读取属性的全部内容。
    ⑤ 00——客户机应用层数据单元(Client-APDU)的数据类型中时间标签域(TimeTag OPTIONAL)。时间标签域(TimeTag)的数据类型定义如下图。
    在这里插入图片描述
    00 代表没有时间标签,采用系统默认时间。
    2:服务器响应: 85 01 01 40 01 02 00 01 09 06 12 34 56 78 90 12 00 00
    ① 85——[133] 服务器应用层数据单元(Server-APDU)数据类型中应用层服务编号为[133]-读取响应-GET-Response数据类型。如下所示。
    注133为十进制数,转化为十六进制为85
    ② 01——[1] 表示GET-Response数据类型中第[1]个元素-读取一个对象属性的响应-GetResponseNormal数据类型,如下所示。
    在这里插入图片描述
    ③ 01——GetResponseNormal数据类型的第一个元素PIID-ACD(带请求访问标识的序号及优先标志(Priority and Invoke ID with ACD)数据类型。
    在这里插入图片描述
    01 的二进制表示是0000 0001也就是服务优先级为0-普通优先级,服务序号为1。
    ④ 40 01 02 00——OAD与读取④相同。
    01 09 06——01表示GetResponseNormal→A-ResultNormal∷ =SEQUENCE→Get-Result∷ =CHOICE的结果类型, Get-Result中[0]表示错误信息,[1]表示读取成功的数据,数据类型为Data。
    ⑤09表示Data数据类型编号[9]数据类型octet-string,Data数据类型见图3。
    06表示octet-string类型的所占字节数SIZE(6)。
    ⑥12 34 56 78 90 12——返回的数据内容-通信地址:123456789012
    ⑦00—— FollowReport OPTIONAL=0 表示没有上报信息
    ⑧00—— 没有时间标签

    展开全文
  • 一、网络层安全性 、 二、IPsec 协议族 、 三、IPsec 协议族组成 、 四、IP 安全数据包 工作方式 、 ...七、IP 安全数据报格式 、 八、IP 安全数据报 生成流程 、 九、IP 安全数据报格式 、 十、IPsec 构件 、





    一、网络层安全性



    网络层 几乎不具备安全性 :

    • 没有 数据源鉴别机制 ;
    • 没有 数据完整性保护机制 ;
    • 没有 数据保密性机制 ;
    • 设计 / 实现 中 , 存在各种 安全漏洞 , 容易受到 IP 欺骗 , 会话劫持 , 流量嗅探 等攻击 ;




    二、IPsec 协议族



    IPsec 协议族 :

    ① 全称 : IP 安全 , sec 是 Security 的缩写 ; 是 IETF 制定的开放安全标准 ;

    ② 内容 : 定义了 在网络层如何实现网络安全 , 提供了 数据完整性 , 保密性 , 认证 , 应用透明的安全性 ;

    ③ 性质 : IPsec 是一个协议族 ;

    ④ 框架 : IPsec 只提供了框架 , 通信双方的 加密算法可以自定义 , 如使用什么样的参数 , 密钥 等 ;

    ⑤ 互操作性 : IPsec 中提供了一套 所有 IPsec 都必须实现的加密算法 ;





    三、IPsec 协议族组成



    IPsec 协议族组成 :

    ① IP 安全数据报格式 协议 :

    • 鉴别首部协议 ( AH , Authentication Header ) : 支持 源点鉴别 , 数据完整性 , 不支持 数据保密 ;
    • 封装有效载荷协议 ( ESP , Encapsulation Security Payload ) : 支持 源点鉴别 , 数据完整性 , 数据保密 ;

    ② 加密算法协议

    ③ 互联网密钥交换协议 ( IKE , Internet Key Exchange )


    IP 安全数据报 : 使用 ESP 或 AH 协议的 IP 数据报 称为 IP 安全数据报 , 又称为 IPsec 数据报 ;

    支持的 IP 协议版本 : IPsec 支持 IPv4 和 IPv6 两个版本的 IP 协议 ;

    包含关系 : ESP 协议包含 AH 协议功能 ;





    四、IP 安全数据报 工作方式



    IP 安全数据包 工作方式 :

    ① 运输方式 ( Transport Mod ) :

    在这里插入图片描述

    • 组装 IP 安全数据报 : 运输层报文段 , 前后加上控制信息 , 再上述基础上 , 加上 IP 首部 , 组成 IP 安全数据报 ;
    • 前提条件 : 只适合主机到主机之间的传送 , 两个主机之间都运行 IPsec 协议 ;

    ② 隧道方式 ( Tunnel Mode ) :

    • 组装 IP 安全数据报 : 在 原始 IP 数据报 基础上 , 前后加上 控制信息 , 再添加新的 IP 首部信息 , 构成 IP 安全数据报 ;
    • 前提条件 : IP 安全报文 所经过的路由器上 , 需要运行 IPsec 协议 ;
    • 常用用途 : 虚拟专用网 VPN ;

    ③ IPsec 数据报加密 :

    • IP 首部是不能加密的 : 因为 途径的路由器 都需要根据该 IP 首部查找下一跳路由 ;
    • 数据部分是加密的 : IPsec 数据报 的 数据部分是加密的 , 并且可以被鉴别 ;
    • 有效载荷 : IPsec 数据报 中的 数据部分 称为 有效载荷 ;




    五、安全关联 SA



    安全关联 ( SA , Security Association ) : 发送 IP 安全数据报 前 , 在发送端 和 接收端 之间 , 建立一条 逻辑连接 ;

    IPsec 协议将 无连接 的网络层 , 转为 有逻辑连接 的网络层 ;


    安全关联 ( SA , Security Association ) 特点 :

    ① 单向连接 : SA 是 单向的 , 其作用是提供 安全的数据传输服务 ;

    ② 传输数据 : SA 主要作用是传输 IP 安全数据报 ;

    ③ 双向 SA :往返两个方向都建立 SA , 即可进行 双向安全通信 ;





    六、安全关联 SA 状态信息



    建立安全关联 ( SA , Security Association ) 的双方需要维护的 状态信息 : 状态信息的作用是 描述如何进行 加密 / 解密 ;

    ① 安全参数索引 ( SPI , Security Parameter Index ) : 32 位 的 连接标识符 ;

    ② IP 地址 : SA 关联的 发送端 和 接收端 IP 地址 ;

    ③ 加密类型 : IPsec 数据报使用的 加密类型 , DES / AES ;

    ④ 密钥 : 加密使用的 密钥 ;

    ⑤ 完整性检查类型 : MD5 ( 报文摘要算法 ) , SHA-1 ( 安全散列算法 ) ;

    ⑥ 鉴别密钥 ;





    七、IP 安全数据报格式



    IP 安全数据报格式 :

    在这里插入图片描述

    ① ESP 首部 : 32 位的 安全参数索引 ( SPI , Security Parameter Index ) ;

    ② ESP 尾部 : 原始的 IP 数据报后面 添加 ESP 尾部 , ESP 尾部分为三个字段 :

    • 填充字段 : 目的是 保证数据块长度是 若干字节 整数倍 ;
    • 填充长度 : 填充字段长度 ;
    • 下一首部 : 下一个要处理的首部 , 指的是 3有效载荷 中的原始 IP 首部 ;

    ③ IP 安全数据报的三个首部 :

    • 新的 IP 首部 : 这是 实际使用的首部 , 用于路由转发 ;
    • ESP 首部 : 安全参数索引 ( SPI , Security Parameter Index ) + 序号 , 每个占 32 位 , 总共 64 位 ;
    • 原始的 IP 首部 : 这是原始 IP 数据报自带的首部 ;

    ④ ESP 有效载荷 : 指的是 原始 IP 数据报 , 包含 原始 IP 首部 , 原始 IP 数据报数据部分 ;

    ⑤ IP 首部中的地址信息 :

    • 原始 IP 首部 : 使用 发送端 和 接收端 的主机 IP 地址作为 源地址 和 目的地址 ;
    • 新的 IP 首部 : 使用路由器的 IP 地址作为 源地址 和 目的地址 ;




    八、IP 安全数据报 生成流程



    IP 安全数据报生成流程 :

    ① 生成 ESP 尾部 : 生成 ESP 尾部 , 添加在原始 IP 数据报后面 ;

    ② 加密 : 按照 IPsec 状态信息中的 加密算法 和 密钥 , 对 有效载荷 ( 原始 IP 数据报 ) 和 ESP 尾部 , 进行加密 ;

    ③ 添加 ESP 首部 : 在加密后的密文前 , 添加 ESP 首部 ; 安全参数索引 ( SPI , Security Parameter Index ) + 序号 , 每个占 32 位 , 总共 64 位 ; 序号用于鉴别 , 防止重放攻击 , 分组重传时 , 序号不重复 ;

    ④ 生成 MAC 报文鉴别码 : 按照 IPsec 指定的 算法 和 密钥 , 对 ESP 首部 + 有效载荷 ( 加密 ) + ESP 尾部 ( 加密 ) 数据 , 生成 报文鉴别码 MAC ;

    ⑤ 添加 MAC : 将 生成的 MAC 报文鉴别码 添加到 ESP 尾部后面 ;

    ⑥ 生成新的 IP 首部 : 协议字段值是 50 , 表示后面的数据要交给 ESP 协议处理 ;

    ⑦ 添加 IP 首部 : 将 IP 首部放在 ESP 首部之前 ;





    九、IP 安全数据报格式



    IP 安全数据报 工作机制 :

    ① 无法获知主机地址 : 截获者 无法 解密其中的数据 , 只能看懂这是从 路由器 R1 发往 路由器 R2 的数据报 , 无法看懂其中的含义 ; 只有解码密文 , 才能看到有效载荷中的 原始 IP 数据报信息 , 原始 IP 数据报头部有源主机和目的主机 IP 地址 ;

    ② 无法篡改 : 截获者 删除其中的字节 , 但是接收端会进行 完整性验证 , 会要求发送端重发信息 ;

    ③ 无法重放攻击 : 截获者 进行重放攻击 , 安全数据报中的 ESP 首部序号不能重复 , 每次都不能重复 , 使得重放攻击无法生效 ;





    十、IPsec 构件



    IPsec 构件 :

    ① 安全关联数据库 ( SAD , Security Association Database ) :

    • 存储 SA : 发送 IPsec 数据报 , 可能用到很多 安全关联 SA , SA 存放在 SAD 中 ;

    • 发送 IP 安全数据报 : 主机发送 IP 安全数据报时 , 到 SAD 中查找 SA , 获取相关的信息 , 对该 IP 安全数据报进行加密保护 ;

    • 接收 IP 安全数据报 : 主机接收 IP 安全数据报时 , 也要到 SAD 中查找 SA ,. 获取相关信息 , 解密 IP 安全数据报 ;

    ② 安全策略数据库 ( SPD , Security Policy Database ) :

    • 需求 : 主机发送的数据报 , 不是所有的数据都需要加密 , 有些只需要使用明文发送即可 ;

    • 作用 : SPD 指明 哪些数据报 需要加密 , 哪些数据报 不加密 ;

    ③ 互联网密钥交换 ( IKE , Internet Key Exchange ) :

    • 作用 : 为 IP 安全数据报 , 创建 安全关联 SA ;

    • 协议基础 : 该协议基于 Oakley 协议 , SKEME 协议 , ISAKMP 协议 ;

    • Oakley 协议 : 密钥生成协议 ;

    • SKEME 协议 : 安全密钥交换协议 ( Security Key Exchange Mechanism ) , 密钥交换协议 ; 使用公钥 加密 实现 实体鉴别 ;

    • ISAKMP 协议 : 互联网安全和密钥管理协议 , 实现 IKE 中的密钥交换 ;

    展开全文
  • 面向对象的用电信息数据交换协议段性总结 为了适应国家电网改革发展的需要,为了使我们形成一个对698协议专业的认知,以及培养我们基本的开展项目技能,特此,结合自己以前对698协议的理解以及运用中的心得体会,...

    面向对象的用电信息数据交换协议段性总结

    为了适应国家电网改革发展的需要,为了使我们形成一个对698协议专业的认知,以及培养我们基本的开展项目技能,特此,结合自己以前对698协议的理解以及运用中的心得体会,写一些阶段性的总结。

    一,关于698采集系统面向对象通信协议的思想。

    它是面向对象的,把相关的数据和方法组合为一个整体来看待,所谓面向对象即是相对于面向过程的。面向过程:数据和方法是分离的。面向对象,必然会有类和对象,接口类属于抽象类中一种,接口类有私有属性和私有方法。接口类,在协议中是由标识码(class-id)进行标识。谈到标识,便会有对象标识系统OI,本协议在引用一个对象时,采用直接引用和间接引用两种形式,在这类对象唯一的名称下只有一个对象实例存在时,采用直接引用的方式。间接引用是使用GetRequestRecord服务间接引用。类似于日冻结, X轴代表有功功率(正向,反向),Y轴某一日,来指定需要的对象,这就是采用间接引用机制

    还有一个比较重要的概念就是预连接,在预连接之上存在一个预先建立的应用连接,该连接满足最低的采集应用需求。预连接是不可断开的,有预连接应用层服务(Get服务)可以直接发起。

    二,关于698采集系统面向对象通信协议的框架、技术特点与创新。

    链路层

    包括帧头、应用层(链路用户数据)和帧尾。

    帧结构

    其中包含帧起始标志(68H)、长度域L、控制域C、地址域A、帧头校验HCS、链路用户数据、帧校验 FCS和帧结束标志(16H)。

    地址域采用变长服务器地址,可兼容各种表计,为四表集抄等 提供协议支撑 。

    帧头校验HCS与帧校验 FCS采用CRC-16循环校验,并提供统一高效的算法。相对1376.1和645的累加和校验可极大提高数据传输的可靠性。

    对传输方向位DIR和启动标志位PRM以及它们组合在一起的意义有了一定的掌握。对帧头校验、帧校验以及链路层分帧有了突破性的理解。

    应用层

    兼容性:通过代理服务可兼容现行协议的终端和电表。

    互动性:支持主动上报, 对于不支持主动上报的通道,应用层支持尾随上报。
    
    采集高效性:读一个属性、读多个属性、读一个记录型属性的部分内容,设置后读,操作后读、代理后读等等。
    

    扩展性:能够满足四表集抄的需求 。

    应用层服务分四类:

    预连接服务(同时适用于客户机和服务器);

    客户机应用层服务(适用于客户机);

    服务器应用层服务(适用于服务器);

    安全传输服务(同时适用于客户机和服务器)。

    其中,我对预连接服务、精确对时、读取服务、设置服务、交互流程、操作服务、上报服务、代理服务、异常处理以及安全传输服务有了思路与一定的理解。

    接口类IC

    使用接口类对业务功能进行抽象、建模,对象具有唯一标识(对象标识系统),对象可拥有特定的属性和方法,通过{对象标识+属性}即可调用接口类对象属性,比62056更简捷。通过OAD访问对象的属性(如当前的、日冻结、总及各费率等),通过OMD访问对象的方法。

    对象标识OI

    对象标识由2字节组成,指数据的基础物理量纲 ,对象标识与属性特征分离,提高对象标识的通用性,减少OI字节数。

    三,对部分术语和数据类型的认知

    对象标识OI,标识终端中对象唯一名称的编码,2字节。如0010-正向有功电能。

    对象属性描述符OAD,在协议中用于访问对象的属性数据。

    如00100200

    OI=0010

    属性=02

    索引=0,正向有功电能总+4费率

    记录型对象属性描述符ROAD,定义集合类中多个捕获单元,本质上是定义了一个表格中的多个列。

    如:日冻结OAD

    01————-01表示为ROAD记录性对象

    50 04 02 00—-OAD 5004日冻结

    03————-3个关联对象属性

    20 21 02 00—-数据冻结时间

    00 10 02 00—-正向有功电能

    00 20 02 00—-反向有功电能

    记录选择描述符RSD,是本协议用来筛选记录型对象数据集合的工具,包含10种不同的筛选模式,灵活用于数据检索。

    如:读取记录日冻结数据

    60 12 03 00 任务配置表 属性 3(记录表)——————-OAD

    05 选择方法5

    07 E0 09 0C 00 00 00 采集存储时间,2016-9-12 00:00:00

    电能表集合MS,01全部用户地址

    列选择描述符CSD, 用于访问记录型对象数据时,对记录列进行筛选,记录列支持筛选的前提,为每一列均有对应的OAD或ROAD。

    如:

    05 5组CSD————–RCSD

    00 40 01 02 00 CSD1-00表示为OAD

    00 60 40 02 00 CSD2-00表示为OAD

    00 60 41 02 00 CSD3-00表示为OAD

    00 60 42 02 00 CSD4-00表示为OAD

    01 CSD5-01 表示为ROAD记录性对象

    50 04 02 00 OAD 5004日冻结

    03 3个关联对象属性

    20 21 02 00 数据冻结时间

    00 10 02 00 正向有功电能

    00 20 02 00 反向有功电能

    记录列选择描述符RCSD,为CSD的集合,用于读取服务,进行列选择。

    Data : Data数据类型是一种通用的CHOICE类型,第一个字节为数据类型描述,它有两个相对特殊的数据类型,数组array以及结构structure。均定义为SEQUENCE OF,区别是array中SEQUENCE OF每一个元素类型均相同,structure中的SEQUENCE OF每一个元素类型可以各不相同。

    四,对通信架构的理解。

    信息交换模型

    客户机和服务器的应用进程分别位于不同的设备,应用层是唯一包含服务组件的协议层,应用层协议数据单元APDU通过数据链路层协议传输帧的链路用户数据域传输。

    面向应用连接的数据交换

    客户机和服务器在开始通信前,先建立预连接,默认具有一个最低权限的应用连接,他们之间可直接进行数据交换,客户机需要得到较高权限的服务器服务时,客户机必须发起建立较高权限的应用连接。

    请求/响应类型的数据交换

    即:客户机应用进程向服务器应用进程提出服务请求,服务器应用进程向客户机应用进程提供远程服务响应。

    通知/确认类型的数据交换

    即:服务器应用进程根据客户机预先定制的主动上报内容,向客户机应用进程提供远程主动上报数据服务,客户机应用进程向服务器应用进程回复服务确认。注:终端与主站通讯,终端是服务器 ,终端与表通讯,表为服务器 。

    服务器模型,由物理设备和若干逻辑设备构成,每个逻辑设备由若干接口类对象构成。

    五、分帧

    在分帧学习过程中最大的感受就是解帧,过程是极具有挑战性的,如说长度域H 3D 00 两字节把它转换为十进制为61,即表示此帧有61个字节,再如控制域C 43,一个字节,需要先把43转换为二进制0010 1011,根据控制域C的定义,传输方向位DIR和启动标志位PRM组合的意义判断为客户机对服务器上报的响应,再根据分帧标志位得出此帧链路用户数据为APDU片段,最后根据功能码0 1 1,把功能码转换为十进制为3,在协议中对应的是用户数据,应用连接管理及数据交换服务,这就是控制域C 43 代表的意义。

    分帧包括应用层分帧和链路层分帧两种,应用层分帧仅支持针对Get请求服务的应答分帧;链路层分帧支持所有应用层服务。

    应用层分帧每一个分帧片段均可自描述自解析,不需要所有片段接收完毕才可处理,可以边接收边处理。当请求多个对象属性时,分帧后的每一帧包含完整的对象属性数据。

    如:读取电表负荷曲线数据

    发送内容: 68 起始字符68H

    3D 00 长度域H 俩字节

    43 控制域C 1字节

    05 08 00 00 00 00 00 10 地址域A(通讯地址8字节(终端) 表示6字节)

    1D 42 帧头校验(2字节)

    05 发送

    03 03不分帧 05分帧

    08 PIID 帧序号 (发什么回什么 一个字节)

    60 12 03 00 6012任务配置表

    05 (选择方法5)

    07 E0 09 0D 00 00 00 2016年09月13日00:00:00

    01 电能表集合MS,01全部用户地址

    03 03代表三组CSD

    00 60 42 02 00 00代表OAD

    00 40 01 02 00 01ROAD

    01 50 02 02 00

    03 3个关联对象属性

    20 21 02 00 数据冻结时间

    00 10 02 00 正向有功电能

    00 20 02 00 反向有功电能

    00 末帧标识 ,非末帧

    56 00 帧校验(2字节)

    16 结束字符16H

    链路层分帧,每一个分帧片段不可自解析,需所有分帧片段接收完毕,组合之后方可得到完整的APDU报文。

    如:电能表密钥更新

    发送内容:

    68 起始字符68H

    D3 01 长度域H 俩字节

    63 分帧标识置位

    05 01 00 00 00 00 00 10 地址域A

    73 2C 帧头校验(2字节)

    00 00 起始帧,帧序号0

    10 01 安全请求 01密文

    82 07 50 8X 2代表俩字节,长度1872

    ……

    接收内容:

    68 起始字符68H

    11 00 长度域H 俩字节

    E3 分帧标识

    05 01 00 00 00 00 00 00 地址域A

    3E 20 帧头校验(2字节)

    00 80 分帧确认帧,帧序号0

    D6 78 帧校验(2字节)

    16 结束字符16H

    六.未完待续

    展开全文
  • 网络安全协议(三)--基本安全协议

    千次阅读 2020-10-02 17:36:39
    安全协议 是建立在密码体制基础上的一种通信协议,计算机网络或分布式系统中的参与者通过安全协议的消息步,借助于密码算法来达到密钥分配、身份认证、信息保密以及安全地完成电子交易等目的。 安全协议的目的 安全...
  • 当认证完成后,在服务器端与客户端使用在认证过程中建立的对称密钥的安全通信就被称为加密安全保护协议。 目前互联网发展迅猛,各种技术层出不穷,加上这几年区块链技术的日趋应用,导致黑客攻击有利可图,网络传输...
  • 内外网数据交换方式有哪些?

    千次阅读 2022-01-13 17:53:33
    传统内外网数据交换遇到的问题: 1、通过网闸进行网间数据摆渡时,没有审批功能,企业很难具体控制哪些文件可以被同步,哪些人有权限进行操作,同步之后的文件应该如何处理等问题,极易造成发送的数据不合规、数据...
  • 比如网闸就是一种很常见的物理隔离方式,多数情况下,这种网间数据摆渡的目的是确保网络隔离的前提下实现适度的数据交换,网闸就是使用数据“摆渡”的方式实现两个网络之间的数据交换。虽然网闸对保护内部...
  • 数据交换过程详解

    千次阅读 2020-06-11 08:31:00
    转载本文需注明出处:微信公众号EAWorld,违者必究。前言:本文主要介绍数据交换过程中常用的数据交换方法和方式以及数据交换在新技术下所面对的“挑战”,方便大家深入理解数据交换过程。普元...
  • 协议一般广泛用于公用数据网,支持全半双工模式,一种同步传输数据,面向比特的数据链路层协议。 HDLC数据帧结构 Falg字段 Address字段 Control字段 信息info字段
  • 一、实验目的 理解Diffie-Hellman算法的实现原理,编程实现Diffie-...该算法能用来在两个用户之间安全交换密钥材料,从而使双方得到一个共享的会话密钥,但该算法只能用于交换密钥,不能用于加/解密。 Diffie...
  • 数据安全实践指南

    千次阅读 2022-04-07 11:25:30
    随着互联网、物联网、云计算等技术的快速...在此背景下,国内外数据安全相关法律法规相继出台,以完善大数据安全领域的防护和技术要求,助力大数据安全建设。相较于传统网络安全数据安全的标准化起步较晚,目前...
  • 第一章、数据交换平台的一些基本概念1.1 数据交换与交换平台1.2 什么是物理隔离? 第零章、前言:为什么?做什么?怎么做? 最近带队做了公司的一个项目,叫数据交换平台,旨在物理隔离的情况下对多端业务系统进行...
  • 计算机网络 互联网使用的安全协议

    千次阅读 2020-12-16 21:30:40
    网络层安全协议 IP 安全性很差: 没有为通信提供良好的数据源鉴别机制; 没有为数据提供强大的完整性保护机制; 没有为数据提供任何机密性保护; 在设计和实现上存在安全漏洞,使各种攻击有机可乘。例如:攻击者...
  • EDI (电子数据交换)是什么?

    千次阅读 2019-07-03 15:35:19
    于是打开某度开始搜索,EDI电子数据交换,EDI软件下载试用,EDI客户成功案例,满屏的EDI,恩,大概了解了,EDI是电子数据交换,那数据交换是什么呢?像风像雨像云,到底是啥? 其实,博客里已经写了很多关于EDI的...
  • 数据传输协议汇总

    千次阅读 2021-04-09 09:14:22
    缺点是,此文件传输协议安全性不是很强。 FTP的另一个问题是它容易受到防火墙问题的影响, 这可能会对客户端连接产生不利影响。 2. HTTP(超文本传输协议) 与FTP一样,HTTP文件传输是用于业务文件传输的广泛使用的...
  • 安全协议考试重点

    千次阅读 2019-05-16 18:13:16
    这是一篇水文,全是为了9号安全协议的考试 基础概念 破解算法的种类 1.完全破解 2.全部推导 3.实例破解 4.信息推导 协议的特性 1.各方必须了解协议 2.各方必须一致遵守。 3.协议必须明确 4.协议必须完整 安全...
  • 数据的共享与交换让交通行业协同效率快速提升。
  • 一文学懂路由交换
  • 采用与HTTP协议相同的请求响应工作模式,CoAP内置发现支持和内容协商,能允许设备相互窥测以找到数据交换的方式,是一个在Server和Client之间传递状态信息的单对单协议。 WebSocket最初是为浏览器和服务器之间的点对...
  • 网络层安全协议——IPSec

    千次阅读 2020-05-12 20:22:22
    1.IPSec的目标 2.网络层安全性 3.IPSec安全体系结构图 4.IPSec安全体系的内容 5.IPSec的模式 6.AH相关 ...10.Internet密钥交换协议—IKE 11.两阶段交换 12.IPSec—vpn要求 13.IPSec—vpn协议和算法 14.实验
  • 常见的网络安全协议

    万次阅读 多人点赞 2019-09-25 20:38:04
    该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第...
  • 安全专家给出的建议是:由于目前的安全技术,无论防火墙、UTM等防护系统都不能保证攻击的一定阻断,入侵检测等监控系统也不能保证入侵行为完全捕获,所以最安全的方式就是物理的分开,所以在公安部的技术要求中,...
  • 数据安全生命周期管理,是从数据安全收集或生成开始,覆盖数据安全使用、安全传输、安全存储、安全披露、安全流转与跟踪,直到安全销毁为止的全过程安全保障机制。 对于数据的隐私生命周期,一般分为以下几个...
  • 基于TCP/IP协议簇的安全架构

    千次阅读 2021-10-24 10:48:40
    文章目录SNMPPGPS/MIMESSLTLSIPsecPPPPPTPL2F SNMP 简单网络管理协议(Simple Network Management Protocol)是专门设计用于在 IP 网络管理网络节点...安全的多用途网际邮件扩充协议(Secure Multipurpose Intern..
  • 网络安全协议安全,网络攻防原理与技术
  • 数据安全法整理学习笔记

    千次阅读 2022-04-08 01:11:12
    数据安全法 一、内容学习 第一章 总则 目的:规范数据处理活动,保障数据安全,促进数据开发利用,保护个人、组织的合法权益,维护国家主权、安全和发展利益。 范围:境内数据处理活动;境外数据处理活动但损害中华...
  • 网络安全系列-XI: 主流网络协议介绍

    千次阅读 2022-04-07 10:45:01
    本文针对主流的网络协议进行介绍

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 176,294
精华内容 70,517
关键字:

安全数据交换协议