communication Protocol

通讯协议是一系列的消息格式以及端到端的信息交换规则。每一个具体协议都可以依照规范性进行描述。

协议需要包括信号认证错误识别校正的能力。因此一个协议描述必须定义语法、语义和信息同步机制,所定义的行为通常独立于具体的实现方式。因此一套协议可以由不同的软硬件及方法实现。

1. 定义协议的基本要求

通信系统依靠消息的收发来建立通信,通信协议就是消息如何传输的规则。在一般情况下定义通信协议需要考虑以下内容

1.1. 消息格式

用于数据交换的数据包格式。

在通信过程中,需要把数据格式化成二进制字节串(bitstrings)的数据包。该字节串被划分成协议中的各个字段(fields)。在概念上字节串被分成两部,分称为消息头和消息体:

还需要考虑对字节串进行分片:一旦字节串超出最大传输单元(MTU),就需要被拆分成适当大小的片。

1.2. 地址格式

用于数据交换的地址格式。

地址用于识别发送者和目标接收者。地址被存储在消息头中,接收者依此判断应处理或忽略此消息。发送者和接收者之间的连接可以使用地址对(发送方地址,接收器地址)来识别。

寻址方案:描述地址含义及规则。

1.3. 地址映射

地址映射。有时协议需要从一个地址方案映射到另外一个方案中的地址。例如应用从域名转换到一个具体的物理IP地址,这被称为地址映射。

1.4. 路由策略

路由(routing)是在网络中寻找最佳路径的过程,有时也指消息转发。当端与端无法直接相连,中间系统需要代表发送者转发消息。

http://en.wikipedia.org/wiki/Routing

1.5. 内容校验

在网络上是无法保证传输过程不出错误的,因此必须对内容进行校验以避免传输错误。常用在消息体的末尾添加数据区的CRC校验码,从而帮助接收者发现传输异常。接收者拒绝CRC交验差异的报文并安排以某种方式进行重传。

1.6. 接收正确的确认信号

面向连接的通信要求接收方对正确的信息接收予以响应;响应是由接收者发送回发送者的。

1.7. 超时重试机制

网络上的数据包可能会因为超时而丢失。为了应对这一点,在一些协议中,发送者可能期望接收者在特定的时间内对正确接收到的信息进行确认。当超过这个时间范围时,发送者就认为接收者未能收到数据包因而需要重新发送。在一个永久断开的链路上重传没有效果的,因此需要设置重试次数。达到重试上限意味着发生了连接错误。

1.8. 收发协调

如果信息流在链路中不支持同时双向传递(半双工链路),即在一个时间段上一端只能处于接收或发送状态之一,这样的信息流就是单向的。这时必须制定某种协作机制,避免两端同事在同时间发送消息。

1.9. 顺序控制

介绍消息格式时我们提到过分片:大尺寸的消息被拆分成小片在网络上发送独立。这些片可能会丢失或延迟,并且可能以另外的顺序到达对端。发送端给分片包加上顺序号,这样接收端就可以对丢失或重复进行判断,并要求发送端进行必要的重传。

1.10. 流控(Flow control)

当接收端的处理速度小于发送端时就要对流量进行控制。

在发送端和接收端都可以做流量控制,最好是在能想到的所有地方都进行控制。

1.11. 通信的语法(Syntax)和语义(Semantics)

通过网络获取数据只是协议的部分功能,接收到的数据还需要就交流的上下文进行评估,因此协议需要具备描述上下文的规则。这些类型的规则用于表达通信的语法;其他规则用于确定在数据交换的背景下是否是有意义的,这类规则表达了通信的语义。

一般用有限状态机模型(finite-state machines)描述通信的语法。

2. 协议和编程语言

协议用来通信算法或编程语言计算出来的东西。

3. 应用到的技术

3.1. 消息格式

4. reference

http://en.wikipedia.org/wiki/Communications_protocol


CategoryDesign

MainWiki: Communication_Protocol (last edited 2012-11-28 20:25:21 by twotwo)