Enterprise Just Builder

Solution for Enterprise Software Architecture

网络协议

 SCTP (一) 概览和消息编码

SCTP 是传输层协议,它的功能和 TCP 协议类似,并有一些独特的补充。虽然 SCTP 在互联网世界中不是很常见,但是该协议在电信网络中扮演z着重要角色。它被用做各种 SIGTRAN 协议的传输层,而且还是 EPC 的默认传输协议。

Wikipedia 上的文章 简单地介绍了 SCTP 的功能。另外 Randal Stewart, Michael Tuxen 和 Peter Lei 等著的《SCTP: What is it, and how to use it?》 也是不错的参考。本文将从网络开发者的角度来简述 SCTP ,这意味着我们要深入了解规范的某些内容。接下来我们将过一遍我最感兴趣的部分,以及相关的SCTP 规范 — RFC4960的章节引用。1

SCTP 关键术语和缩写
SCTP 协议第1.3节 和第1.4节介绍了一些关键术语和缩写。对初学者来说,最重要的是:“关联 association”、 “流 stream”和“块 chunk”。

  • 关联(Association):和 TCP 类似, SCTP 是面向连接的协议。两个点(peer)之间的逻辑连接被称为“关联”。和 TCP 不同的,两点间的 SCTP 关联可以建立在多个 IP 地址之上。如图1-1 所示, 主机 A 有三个以太网接口及三个不同的 IP 地址,主机 B 也有三个接口,但只有两个被用于关联。接口及部分关联在图中以浅蓝色表示。在建立关联的期间,每个端点的地址集将被公布,并作为下一次 POST 的主题。很重要的一点:同一个端点的 IP 地址的 SCTP 端口号是相同的 — 称为 “多方持有 multi-homing”。
  • 流(stream): 流是关联间的逻辑单向通道。具体通道数目在建立关联时确定,且每个方向上可以不同。如图1-1,从主机 A 到主机 B 的流有 7个,而从主机 B 向主机 A 的流只有 3 个。流的目的是提供逻辑通道以便按顺序传输数据/邮件。这意味着,即时流 X 中的消息丢失需要重新发送,流 Y 中的消息也不会被延迟,因为它们逻辑上独立。不过流 X 中的(丢失的消息之后)其他消息将被推迟,直到重新发送结束。这种效应称为线路头阻塞(head-of-line blocking),是 TCP 协议的主要问题之一。
  • 块(Chunk):块是 SCTP 包内的信息单元。

SCTP 规范第 1.5 节介绍了该协议的功能概述。比如如何使用流,在流中如何Section 1.5 provides functional overview of the protocol. It describes how streams are used, how in-order delivery is achieved within a stream, how data messages are acknowledged and so on.

 

, ,

MODBUS通讯协议及编程

Modbus 是工业控制器的网络协议中的一种。它是 MODICON 公司于1979年开发的一种通讯协议。作为一种在工业领域被广为应用的真正开放、标准的网络通讯协议,Modbus 成为工业控制协议的事实标准。通过此协议,控制器之间、控制器可以经由网络(例如以太网)和其它设备之间进行通信。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

Modbus 协议定义了一种信息结构,这种信息结构可以被所有支持该协议的各种设备在通讯时认可和使用。它描述了控制器向其他设备发出查询的过程以及其他设备如
何进行应答,以及错误的检测和报告。Modbus 协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。

支持 Modbus 协议的设备有几种组网方案:

1. 基于RS-232 或 RS-485 组成 Modbus 网络:标准的 Modbus 口是使用一 RS-232C 兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由 Modem(RS-232 或 RS-485 )组网,但是 RS-485 网络限制了最多只能有32个 Modbus 设备,并且传输距离最多只能有1.2km。

对于串行连接,可以采用 Modbus ASCII或者 Modbus RTU 变种协议,它们在数值数据表示不同和协议细节上略有不同。Modbus RTU 是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII 是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯(serial communication)方式。RTU 格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。

>>> 阅读全文

 

, ,

JSON简介

文章评价:
虽然 XML 已在不少应用程序中大显身手,但它并不是十全十美的,特别是遇到 AJAX 应用的时候,XMLHttpRequest 会检查返回数据的 MIME 类型,如果是 text/xml 类型,XMLHttpRequest 就会运行 XML Parser 来解析返回的文档,并在内存中构建出对应的 DOM 树,之后,你可以用 JavaScript 标准的 DOM 方法来操作 DOM 树。由于众所周知 DOM 的诟病,这显然不是有效率的方法。另外一个问题是,如果你想使用 JavaScript 对象而不是直接用 XM L数据的话,你还得自己遍历整个 DOM 树来创建相应对象。

于是 JSON 出现在我们面前。

JSON 提供了一种更适合 AJAX 应用的标准数据交换格式。JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。

XML 和 JSON 都利用结构化来标记数据。我们将通过一个地址簿的例子来展示它们之间的不同。

该地址簿用XML如下表示:

>>> 阅读全文

 

, , , ,