TCP自定义通讯协议

合集下载

tcpip通讯协议书

tcpip通讯协议书

tcpip通讯协议书

甲方(提供方):_____________________

地址:_________________________________

联系电话:___________________________

乙方(接收方):_____________________

地址:_________________________________

联系电话:___________________________

鉴于甲方拥有合法的TCP/IP通讯技术资源,并愿意将其提供给乙方使用;乙方需要使用甲方提供的TCP/IP通讯技术资源以满足其业务需求,双方本着平等自愿、互利互惠的原则,经协商一致,特订立本协议。

## 第一条定义

1.1 TCP/IP通讯技术:指传输控制协议/互联网协议,是一套用于计算机通信的规则和标准,确保数据在网络中的传输。

1.2 通讯服务:指甲方提供的基于TCP/IP协议的网络通讯服务。

## 第二条服务内容

2.1 甲方同意根据本协议的条款和条件,向乙方提供TCP/IP通讯服务。

2.2 乙方同意按照本协议的规定使用甲方提供的TCP/IP通讯服务。

## 第三条服务期限

3.1 本协议自双方签字盖章之日起生效,有效期为____年,除非根据

本协议的规定提前终止。

## 第四条服务费用及支付方式

4.1 乙方应按照本协议附件一规定的费用标准向甲方支付服务费用。

4.2 乙方应在每季度的第一个工作日前支付下一季度的服务费用。

## 第五条甲方的权利和义务

5.1 甲方应保证提供的TCP/IP通讯服务的稳定性和安全性。

ModbusTCP通讯协议

ModbusTCP通讯协议

ModbusTCP通讯协议

协议名称:ModbusTCP通讯协议

一、引言

ModbusTCP通讯协议是一种基于TCP/IP协议的通信协议,用于在工业自动化系统中实现设备之间的数据通信。本协议旨在定义ModbusTCP通讯协议的基本规范和通信流程,以确保设备之间的可靠通信和数据交换。

二、术语和定义

在本协议中,以下术语和定义适用:

1. ModbusTCP:基于TCP/IP协议的Modbus通讯协议。

2. 客户端:发起通信请求的设备或软件。

3. 服务器:响应客户端请求的设备或软件。

4. 单元标识符:用于标识设备或软件的唯一标识符。

5. 寄存器:用于存储和交换数据的内存单元。

三、通信流程

1. 建立连接

客户端通过TCP/IP协议与服务器建立连接。客户端发送连接请求,服务器接受请求并返回确认信息,建立连接成功。

2. 请求报文格式

客户端向服务器发送请求报文,报文格式如下:

- 事务标识符:用于标识请求的唯一标识符。

- 协议标识符:用于标识ModbusTCP协议。

- 长度字段:指定报文长度。

- 单元标识符:用于标识设备或软件的唯一标识符。

- 功能码:指定请求的功能类型。

- 数据字段:包含请求的具体数据。

3. 响应报文格式

服务器接收到请求后,根据请求的功能码进行相应的处理,并返回响应报文。报文格式如下:

- 事务标识符:与请求报文相同的标识符。

- 协议标识符:与请求报文相同的标识符。

- 长度字段:指定报文长度。

- 单元标识符:与请求报文相同的标识符。

- 功能码:与请求报文相同的功能码。

- 数据字段:包含响应的具体数据。

TCP协议报文自定义

TCP协议报文自定义

TCP协议报文自定义

TCP(Transmission Control Protocol,传输控制协议)是一种面向连

接的传输层协议,广泛应用于互联网通信中。它通过建立一个可靠的、全双工的通信连接,在网络中传输数据。TCP协议的报文格式在通信

过程中扮演着至关重要的角色。本文将探讨如何自定义TCP协议报文,以满足个性化的数据传输需求。

TCP协议的报文由首部和数据两部分组成。首部包含了TCP协议的控制信息和连接状态信息,数据部分则是待传输的实际数据。在自定

义TCP协议报文时,我们可以通过修改首部的相关字段来实现特定的

功能。

首先,我们可以自定义序号字段(Sequence Number)和确认号字

段(Acknowledgment Number)来实现更灵活的数据传输。序号字段用

于标识发送方发送的数据字节的序号,而确认号字段则用于标识接收

方期望接收的下一个数据字节的序号。通过调整序号和确认号字段的值,可以实现数据的重传、顺序重排等功能。

其次,我们可以自定义窗口大小字段(Window Size)来控制数据

传输的流量控制。窗口大小指的是接收方在接收到确认消息前能够缓

存的数据量。通过修改窗口大小字段的值,可以调整发送方发送数据

的速率,以适应不同的网络环境和带宽限制。

另外,我们还可以自定义首部中的标志字段来实现更多的功能。例如,通过设置SYN标志和ACK标志,可以在建立连接时进行握手操作。通过设置FIN标志,可以在关闭连接时进行释放操作。通过设置

RST标志,可以强制关闭连接,并重置所有的连接状态。通过设置

自定义通信协议例子

自定义通信协议例子

自定义通信协议例子

自定义通讯协议

本协议是由甲方(以下简称“甲方”)和乙方(以下简称“乙方”)共同签署,为规范双方之间的通讯行为而制定。本协议中的各方身份、权利、义务、履行方式、期限、违约责任均是符合中国相关法律法规的。

一、双方的基本信息:

甲方:

名称:(填写甲方名称)地址:(填写甲方地址)联系人:(填写甲方联系人)联系电话:(填写甲方联系电话)电子邮件:(填写甲方电子邮件)

乙方:

名称:(填写乙方名称)地址:(填写乙方地址)联系人:(填写乙方联系人)联系电话:(填写乙方联系电话)电子邮件:(填写乙方电子邮件)

二、各方身份、权利、义务、履行方式、期限、违约责任

1.甲方的身份是通讯服务提供者,乙方是通讯服务使用者。

2.甲方的权利和义务:

(1)提供稳定可靠的通讯服务。

(2)保障乙方的通讯隐私。

(3)保证服务质量及时有效的维护服务可靠性。

(4)在服务中不得出现任何违反中国相关法律法规的行为。

(5)服务期限为双方签署本协议之日起至协议终止。

(6)违约责任:如果甲方严重违反本协议规定,乙方有权要求甲方给予赔偿,赔偿数额以实际损失为准。

3.乙方的权利和义务:

(1)按照本协议规定的规定向甲方支付通讯服务费用。

(2)按照甲方规定的方式、时间和条款向甲方提交通讯服务需求。

(3)在使用甲方的通讯服务时,不得进行违反中国相关法律法规的行为。

(4)服务期限为双方签署本协议之日起至协议终止。

(5)违约责任:如果乙方严重违反本协议规定,甲方有权要求乙方给予赔偿,赔偿数额以实际损失为准。

三、遵守中国相关法律法规

本协议所涉及到的各项规定及双方行为均应遵守《中华人民共和国电信条例》、《中华人民共和国网络安全法》等相关法律法规。双方应当严格遵守法律法规的规定,不得以任何方式违反法律法规。

ModbusTCP通讯协议

ModbusTCP通讯协议

ModbusTCP通讯协议

协议名称:ModbusTCP通讯协议

一、引言

ModbusTCP通讯协议是一种用于工业自动化领域的通信协议,用于在不同设

备之间进行数据交换。本协议旨在定义ModbusTCP通信的规范,确保设备之间的

互操作性和数据的可靠传输。

二、术语定义

在本协议中,以下术语定义适用:

1. Modbus:一种通信协议,用于在不同设备之间进行数据交换。

2. ModbusTCP:基于TCP/IP协议的Modbus变体,用于在以太网上进行数据

交换。

3. 客户端:发起ModbusTCP请求的设备。

4. 服务器:响应ModbusTCP请求的设备。

5. 数据单元标识符(Unit Identifier):用于定义ModbusTCP请求的目标设备。

6. 功能码(Function Code):用于定义ModbusTCP请求的操作类型。

三、通信规范

1. 连接建立

a. 客户端通过TCP/IP协议与服务器建立连接。

b. 客户端发送连接请求报文给服务器。

c. 服务器接收连接请求报文并返回确认报文给客户端。

d. 客户端接收确认报文,连接建立成功。

2. 请求报文格式

ModbusTCP请求报文由以下字段组成:

a. 事务标识符(Transaction Identifier):用于标识请求和响应报文的对应关系。

b. 协议标识符(Protocol Identifier):用于标识ModbusTCP协议。

c. 长度字段(Length):指示报文的长度。

d. 单元标识符(Unit Identifier):定义ModbusTCP请求的目标设备。

c语言自定义通讯协议的具体实现

c语言自定义通讯协议的具体实现

c语言自定义通讯协议的具体实现

在开发嵌入式系统或者网络应用程序时,通讯协议是非常重要的一部分。然而,现有的通讯协议并不一定适用于所有的应用场景,有时候需要自定义一种通讯协议。

C语言是一种非常常用的编程语言,本文将介绍如何使用C语言来实现自定义通讯协议。

1. 确定通讯协议格式

首先,我们需要确定通讯协议的格式,这个格式应该包括以下几个部分:

(1)头部信息:标识通讯协议的类型和版本号等信息。

(2)数据长度:表示本次通讯的数据长度。

(3)数据内容:包含本次通讯所需要传输的数据。

(4)校验信息:用于校验数据完整性和正确性。

2. 实现通讯协议

接下来,我们需要使用C语言来实现上述通讯协议,以下是一个简单的实现代码:

``` c

typedef struct _CommProtocol

{

unsigned char header[4]; //头部信息

unsigned short dataLen; //数据长度

unsigned char data[1024]; //数据内容

unsigned char checkSum; //校验信息

}CommProtocol;

void sendCommProtocolData(CommProtocol* pData)

{

//发送头部信息

//发送数据长度

//发送数据内容

//发送校验信息

}

void receiveCommProtocolData(CommProtocol* pData)

{

//接收头部信息

//接收数据长度

//接收数据内容

//接收校验信息

}

```

3. 实现校验函数

为了保证数据的正确性,我们需要实现一个校验函数,通常使用CRC校验或者校验和等方式来实现。以下是一个使用校验和的实现方法:

c语言自定义通讯协议的具体实现

c语言自定义通讯协议的具体实现

c语言自定义通讯协议的具体实现

在实际开发中,应用通信功能时不可避免地会使用通讯协议,常见的通讯协议一般有TCP/IP、UDP和HTTP等,但是在一些特殊场景下,需要使用自定义的通讯协议,本文将介绍c语言实现自定义通讯协议的具体实现方法。

一、通讯协议的概念

通讯协议是一种规范,它定义了通讯的格式、内容、序列、错误控制等信息,使通信双方能够正确地理解和使用通信协议。

自定义通讯协议的实现需要遵守以下步骤:

1、确定通讯协议内容

首先需要确定自定义通讯协议的内容,包括通讯数据的格式、内容、长度、序列以及通讯的命令等信息。一般情况下,自定义通讯协议应根据实际应用场景进行设计。

2、定义数据接口

定义数据的输入输出接口是自定义通讯协议的重要一个步骤,一般情况下,数据接口应该尽量简单化,实现数据的快速解析以及传输过程中对数据的处理等功能。

3、实现协议解析功能

协议解析功能是实现自定义通讯协议的重要一个内容,在实现协议解析功能时,可以利用c语言中的结构体来实现数据的存储、传输、解析等功能,同时,还需要实现数据的校验和、长度校验等功能,以保证数据传输的安全可靠性。

协议编码功能是实现自定义通讯协议的另一个重要内容,主要用于将应用数据编码成符合协议要求的数据格式,常用的编码方式有二进制编码和文本编码方式。

5、实现数据传输功能

数据传输功能是自定义通讯协议的另一个重要内容,主要实现数据在网络上的传输功能,常见的传输方式有TCP/IP、UDP和HTTP等。

三、自定义通讯协议的优点

1、提高系统的可扩展性和灵活性。

自定义通讯协议根据实际应用场景进行设计,可以更好的满足应用程序的需要,同时也提高了系统的可扩展性和灵活性。

TCP自定义通讯协议

TCP自定义通讯协议

一.设计

1.详细设计:

2个字节的起始字头,1个字节的命令字,1个字节的数据包编号,4个字节的报文总大小, 4个字节的传输数据总大小, 2个字节的文件名大小, 1个字节的保留(备用)字,若干字节的数据块.

2.详细内容

(1)报头的内容: 1.标志位, 2.命令字, 3.数据包的编号, 4.该报文的总大小, 5.该段传输

数据的大小, 6.文件名的大小,

1)命令字: 1.普通图片, 2.普通文档, 3.普通消息, 4.加密图片, 5.加密文档, 6.加密消息.

2)数据包编号: 1.对大文件或长消息体, 以一定的大小进行分割. 一次编号.

3)文件名大小: 1.数据包的数据块中, 刚开头的部位, 进行写文件名, 用来保证每段新数据写入对应的文件.

4)标志位: 1.消息体中需要对与报头,校验字相同的内容进行转义.

(2)消息体: 1.文件名或消息名; 2.文件或消息的具体内容. 定义一个规则,发送的时候按照规则封装,接收的时候再按照这个规则解封装(TLV)。

二.TCP报文分段传输的依据:

(1)MTU(最大传输单元)

是链路层中的网络对数据帧的一个限制,以以太网为例,MTU为1500个字节。

一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。

(2)MSS(最大分段大小)

MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。

ModbusTCP通讯协议

ModbusTCP通讯协议

ModbusTCP通讯协议

协议名称:Modbus TCP通讯协议

一、引言

Modbus TCP通讯协议是一种基于TCP/IP网络的通讯协议,用于在工业自动化

领域中实现设备之间的数据交换。本协议旨在确保设备之间的可靠通讯和数据传输,提供灵活的数据读写功能,并保证通讯的安全性和稳定性。

二、协议概述

1. 协议目标

本协议的目标是定义一种通用的通讯方式,使得不同厂商的设备能够通过

TCP/IP网络进行数据交换和控制。通过使用标准的Modbus TCP协议,可以实现

设备之间的互操作性和兼容性。

2. 协议特点

(1)基于TCP/IP协议:采用TCP/IP作为底层通讯协议,提供可靠的数据传

输和连接管理功能。

(2)简单易用:协议设计简单明了,易于理解和实现。

(3)高效性:采用二进制数据传输方式,有效利用网络带宽。

(4)灵活性:支持多种数据类型和数据格式,满足不同应用场景的需求。

(5)安全性:提供数据加密和身份验证机制,确保通讯的安全性。

三、协议结构

1. 帧格式

Modbus TCP协议采用如下的帧格式:

(1)事务标识符(2字节):用于标识一次通讯的唯一性。

(2)协议标识符(2字节):用于标识协议类型,固定为0x0000。

(3)长度字段(2字节):指示后续数据的长度。

(4)单元标识符(1字节):用于标识设备的地址。

(5)功能码(1字节):指示所执行的功能。

(6)数据域(可变长度):包含具体的数据内容。

2. 功能码

Modbus TCP协议定义了一系列功能码,用于实现不同的数据读写操作。常用的功能码包括:

(1)读取线圈状态(功能码0x01):用于读取设备的开关量状态。

tcpip自定义协议规则

tcpip自定义协议规则

tcpip自定义协议规则

TCP/IP自定义协议规则

自定义协议是指根据特定需求和场景,通过TCP/IP协议栈的基础上,进一步定制化的协议规则。通过自定义协议,可以满足特定的通信需求,提高网络传输的效率和安全性。

一、自定义协议的概念和作用:

自定义协议是在TCP/IP协议的基础上进行的二次开发,通过自定义协议可以实现更加高效、安全和灵活的网络通信。自定义协议可以包括协议头、协议体和协议尾等组成部分,用于定义数据的格式、传输方式和校验机制等。

自定义协议的作用主要有以下几个方面:

1. 数据格式定义:通过自定义协议可以规定数据的格式,包括数据的类型、长度、字段顺序等,以保证数据的正确解析和处理。

2. 传输方式定义:自定义协议可以定义数据的传输方式,如分包、组包、压缩等,以提高数据传输的效率和可靠性。

3. 安全性增强:通过自定义协议可以加入加密、认证、权限控制等机制,增强数据传输的安全性。

4. 灵活性扩展:自定义协议可以根据实际需求进行扩展,增加新的

功能和特性,以满足不同应用场景的需求。

二、自定义协议的设计原则:

在设计自定义协议时,需要遵循以下原则,以确保协议的可靠性和可扩展性:

1. 简洁性:自定义协议应尽量简洁,避免冗余和复杂的结构,以提高数据传输的效率。

2. 可读性:自定义协议的数据格式应易于理解和解析,以方便开发和维护。

3. 可扩展性:自定义协议应具备良好的扩展性,方便后续功能的增加和升级。

4. 安全性:自定义协议应考虑数据的安全性,加入合适的加密和认证机制,以防止数据被篡改和窃取。

5. 兼容性:自定义协议应与现有的网络设备和应用程序兼容,以保证与已有系统的互通性。

tcp协议通讯机制

tcp协议通讯机制

tcp协议通讯机制

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通讯机制主要包括以下三个阶段:1.连接建立阶段:TCP协议在两个端点之间建立连接的过程。在连接建立阶

段,客户端向服务器发送一个SYN报文,表示请求连接。服务器收到SYN 报文后,回复一个SYN+ACK报文,表示接受连接请求。客户端再回复一个ACK报文,表示连接建立成功。此时,双方之间的连接已经建立完成。

2.数据传输阶段:在连接建立后,TCP协议进行数据传输。在数据传输过程

中,TCP协议将数据分成若干个数据包进行传输。每个数据包包含一个序号和一个确认号,用于保证数据传输的顺序和可靠性。接收方收到数据包后,需要发送一个ACK报文进行确认。

3.连接释放阶段:数据传输完成后,进入连接释放阶段。发送方发送一个FIN

报文,表示请求释放连接。接收方收到FIN报文后,回复一个ACK报文,确认连接释放。然后接收方再发送一个FIN报文请求释放连接,发送方回复一个ACK报文进行确认。最后,接收方发送一个FIN报文请求释放连接,发送方回复一个ACK报文进行确认。完成以上步骤后,连接释放阶段结束。

TCP协议通过这种方式保证了数据传输的可靠性和顺序性,以及控制了网络拥塞等问题。

ModbusTCP通讯协议 (2)

ModbusTCP通讯协议 (2)

ModbusTCP通讯协议

协议名称:ModbusTCP通讯协议

一、引言

ModbusTCP通讯协议是一种基于TCP/IP网络的通信协议,用于在不同设备之

间进行数据传输和通信。本协议旨在规范ModbusTCP通讯的数据格式、通信方式、错误处理等相关内容,以确保通信的可靠性和一致性。

二、术语定义

1. ModbusTCP:基于TCP/IP网络的Modbus通信协议。

2. 主站:发送请求并接收响应的设备。

3. 从站:接收请求并发送响应的设备。

4. 传输单元标识符(Unit Identifier):用于标识从站设备的唯一标识符。

5. 功能码(Function Code):用于定义Modbus请求的类型和操作。

6. 寄存器(Register):用于存储数据的内存单元。

三、通信方式

1. 连接建立

主站与从站之间的连接通过TCP/IP网络建立。主站作为客户端发起连接请求,从站作为服务器接受连接请求。

2. 数据格式

ModbusTCP通讯协议采用大端字节顺序(Big-Endian)进行数据传输。数据

包括请求数据包和响应数据包。

请求数据包格式:

- 事务标识符(Transaction Identifier):2字节,用于标识请求和响应的匹配

关系。

- 协议标识符(Protocol Identifier):2字节,用于标识ModbusTCP协议。

- 长度字段(Length Field):2字节,表示后续字段的字节数。

- 单元标识符(Unit Identifier):1字节,用于标识从站设备。

- 功能码(Function Code):1字节,用于定义Modbus请求的类型和操作。

JAVASocket通信中自定义TCP通信协议

JAVASocket通信中自定义TCP通信协议

JAVASocket通信中自定义TCP通信协议

JAVA中Socket通信是以流的形式传输数据,对于InputStream 和OutputStream的装饰问题,如果只是传输一串字符串,可以通过简单的BufferedReader和PrintWriter实现,但是在实际的客户端与服务端通信中不可能只是传递简单字符串,会有各种不同形式的信息,若是传输对象,则可以用ObjectInputStream和ObjectOutputStream来实现,但是这种方法局限性也很明显,所以需要自己定义通信协议,用到DataInputStream和DataOutputStream。

以下是利用DataInputStream和DataOutputStream实现的将person类实例中的数据在文件中存取的过程,在Socket通信中也类似。

person.class

public class person {

private String name;

private int age;

public person(String name,int age){

=name;

this.age=age;

}

public String getName(){

return name;

}

public int getAge(){

return age;

}

}

文件存取过程:

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

单片机_自定义通讯协议_概述及解释说明

单片机_自定义通讯协议_概述及解释说明

单片机自定义通讯协议概述及解释说明

1. 引言

1.1 概述

引言部分旨在向读者介绍本篇长文的主题,即单片机自定义通信协议。本文将对单片机通信协议进行概述并解释说明其相关内容。单片机通信协议是控制和管理单片机与外部设备之间数据传输的重要规范,其设计直接影响到系统的性能、功能和稳定性等方面。

1.2 文章结构

文章的结构分为以下几个部分。首先,我们将在第二部分概述单片机通信协议的基本概念和重要性,以帮助读者全面了解该主题。接下来,在第三部分将介绍自定义单片机通信协议所需遵循的设计原则,以确保其具有灵活性、可扩展性、适应各种环境和需求以及安全性和可靠性。第四部分将详细讲解实现自定义单片机通信协议的步骤,包括定义消息格式和数据结构、建立数据传输规则和流程控制方式以及实现硬件和软件层面支持协议的功能。最后,在第五部分总结文章内容并展望自定义单片机通信协议在未来的优势应用场景及发展方向与挑战。

1.3 目的

本篇长文的目的是为读者提供关于单片机自定义通信协议的全面概述及解释说明。通过阅读本文,读者将了解到单片机通信协议的意义和重要性,以及如何设计并实现一个自定义的通信协议来满足不同环境和需求。同时,本文还将讨论自定义单片机通信协议所具有的优势,并展望其未来在各个领域中的应用场景和发展趋势。通过对该主题的深入探讨,读者能够更好地理解和应用单片机自定义通信协议技术。

2. 单片机通信协议概述:

2.1 什么是通信协议

通信协议是指在不同设备之间进行数据传输和交流时所遵循的一套规则和约定。它定义了数据传输的格式、数据编码方式、数据校验方法以及传输控制等方面的内容。通过使用通信协议,各种设备能够正确地理解和解释彼此发送和接收的信息。

ModbusTCP通讯协议

ModbusTCP通讯协议

ModbusTCP通讯协议

协议名称:ModbusTCP通讯协议

一、引言

ModbusTCP通讯协议是一种基于TCP/IP协议的通信协议,用于在工业自动化系统中实现设备之间的数据交换。本协议旨在定义ModbusTCP通讯协议的标准格式,以确保设备之间的通信能够高效、安全地进行。

二、协议结构

ModbusTCP通讯协议采用客户端-服务器模型,其中客户端为主动发起通信的设备,服务器为被动响应通信的设备。协议的结构如下:

1. 传输层协议

ModbusTCP通讯协议使用TCP/IP协议作为传输层协议,确保数据的可靠传输和连接的稳定性。

2. 应用层协议

ModbusTCP通讯协议的应用层协议定义了数据的格式和交换方式。应用层协议采用了一种简单的请求-响应模型,包括以下几个部分:

- 功能码:用于标识请求的类型,如读取数据、写入数据等。

- 数据地址:用于指定要读取或写入的数据的地址。

- 数据长度:用于指定要读取或写入的数据的长度。

- 数据值:用于存储读取或写入的数据。

三、数据交换流程

ModbusTCP通讯协议的数据交换流程如下:

1. 连接建立

客户端通过TCP/IP协议与服务器建立连接,建立连接后可以进行数据交换。

2. 请求发送

客户端向服务器发送请求,请求包括功能码、数据地址、数据长度等信息。

3. 响应接收

服务器接收到请求后,根据请求的功能码进行相应的处理,并将处理结果封装成响应发送给客户端。

4. 响应处理

客户端接收到响应后,对响应进行解析和处理,获取所需的数据或确认操作的执行情况。

5. 连接关闭

数据交换完成后,客户端可以选择关闭连接,释放资源。

MODBUS TCP 通讯协议、自由格式通讯协议详解

MODBUS TCP 通讯协议、自由格式通讯协议详解

MODBUS TCP 通讯协议、自由格式通讯协议详解

主要介绍以太网通讯的MODBUS TCP 通讯协议、自由格式通讯协议内容。

01

一.MODBUS TCP 通讯概述

MODBUS TCP 结合了以太网物理网络和网络标准TCP/IP 以及以MODBUS 作为应用协议标准的数

据表示方法。MODBUS TCP 通信报文被封装于以太网TCP/IP 数据包中,MODBUS 协议规范一帧数据的最大长度为256 个字节。

MODBUS TCP/IP 的通信系统中有两种类型的设备:MODBUS TCP/IP 客户端和服务器设备。

MODBUS 客户端:

客户端(TCP Client)主动向服务器(TCP Server)发起连接请求,连接建立成功,仅允许客户端主动发起通讯请求。

以太网机型作为MODBUS TCP 客户端时,通过S_OPEN 指令建立TCP 连接,通过M_TCP 指令发起MODBUS 请求。

MODBUS 服务器:

服务器主动监听502 端口,等待客户端连接请求,连接建立成功,响应符合Modbus TCP 协议规范的数据通讯请求。

以太网机型上电默认开启此服务,最大响应不超过 4 个TCP 连接。MODBUS 通讯功能码

以信捷PLC为例:以太网机型支持Modbus 通讯功能码如下表所示:

02

自由格式通讯协议

基于以太网的自由通信分为两大类:TCP 和UDP,以太网机型采用TCP 方式通信时可以作为TCP客户端(TCP 客户端),也可以作为TCP 服务端(TCP 服务器)。

1、作为TCP 客户端,主动与TCP 服务器建立TCP 连接,并绑定套接字ID。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.设计

1.详细设计:

2个字节的起始字头,1个字节的命令字,1个字节的数据包编号,4个字节的报文总大小, 4个字节的传输数据总大小, 2个字节的文件名大小, 1个字节的保留(备用)字,若干字节的数据块.

2.详细内容

(1)报头的内容: 1.标志位, 2.命令字, 3.数据包的编号, 4.该报文的总大小, 5.该段传输

数据的大小, 6.文件名的大小,

1)命令字: 1.普通图片, 2.普通文档, 3.普通消息, 4.加密图片, 5.加密文档, 6.加密消息.

2)数据包编号: 1.对大文件或长消息体, 以一定的大小进行分割. 一次编号.

3)文件名大小: 1.数据包的数据块中, 刚开头的部位, 进行写文件名, 用来保证每段新数据写入对应的文件.

4)标志位: 1.消息体中需要对与报头,校验字相同的内容进行转义.

(2)消息体: 1.文件名或消息名; 2.文件或消息的具体内容. 定义一个规则,发送的时候按照规则封装,接收的时候再按照这个规则解封装(TLV)。

二.TCP报文分段传输的依据:

(1)MTU(最大传输单元)

是链路层中的网络对数据帧的一个限制,以以太网为例,MTU为1500个字节。

一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。

(2)MSS(最大分段大小)

MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。

TCP协议在建立连接的时候通常要协商双方的MSS值,每一方都有用于通告它期望接收的MSS选项(MSS选项只出现在SYN报文段中,即TCP三次握手的前两次)。

MSS的值一般为MTU值减去两个首部大小(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以如果用链路层以太网,MSS的值往往为1460。而Internet 上标准的MTU(最小的MTU,链路层网络为x2.5时)为576; 如果不设置,则MSS的默认值就为536个字节。很多时候,MSS的值最好取512的倍数。TCP报文段的分段与重组是在运输层完成的。

TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU,很明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不需要在网络层进行IP分片了。因此TCP报文段很少会发生IP分片的情况。

对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS)决定,MSS就是TCP 数据包每次能够传输的最大数据分段。

为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值.这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP 数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值, 确定为这次连接的最大MSS值。

相关文档
最新文档