1. FINS/TCP Header
1.1 Magic
其ASCII码(0x46494E53)是单词‘FINS’,因此可以推测这个字段的值是恒定的。
1.2 Length
Length的值表示其后所有字段(包括可能出现的Fins/UDP包)的总长度
Length的值等于TCP负载的总长度减去8个字节。 取10进制数
1.3 Command
Command表示消息中随附的命令的类型。
该字段的取值决定了是否有字段Client Node Address、Server Node Address,具体如下:
(1)0x00000000:Node Address Data Send(client to server),此时仅有Client Node Address字段;
(2)0x00000001: Node Address Data send(Server to client)(0x00000001),此时Client/Server Node Address字段均出现;
(3)其它:不会出现上述两个字段。
1.4 Error Code
Error Code 表示错误代码,提示发送的数据包是否有错误。根据wireshark源代码所提供的信息,错误代码目前共定义了10种类型,如下所示:
错误码 |
对应含义 |
0x00000000 |
Normal |
0x00000001 |
The header is not ‘FINS’ (ASCII code) |
0x00000002 |
The data length is too long |
0x00000003 |
The command is not supported |
0x00000020 |
All connections are in use |
0x00000021 |
The specified node is already connected |
0x00000022 |
Attempt to access a protected node from an unspecified IP address |
0x00000023 |
The client FINS node address is out of range |
0x00000024 |
The same FINS node address is being used by the client and server |
0x00000025 |
All the node addresses available for allocation have been used |
1.5 Client Node Address *
1. 设备识别:
- Client Node Address 用于唯一标识网络中的每个客户端设备。它确保数据能够正确地发送到特定的客户端。
2. 通信管理:
- 在进行数据传输时,FINS 协议通过 Client Node Address 确定目标设备,从而实现不同设备之间的有效通信。
3. 多节点支持:
- FINS 协议允许多个客户端在同一网络中同时存在。每个客户端通过其唯一的 Node Address 进行区分,这使得系统可以支持复杂的多节点通信。
4. 地址范围:
- Client Node Address 通常是一个范围在 0 到 254 之间的整数(某些情况下可能更具体,具体取决于网络设置)。地址 0 通常用于广播。
示例:在一个工厂自动化系统中,PLC 可能使用 Client Node Address 1,而传感器可能使用 Client Node Address 2。通过这些地址,PLC 可以向特定的传感器发送数据请求或指令。
Fins/TCP协议的客户端/服务器在传输有效的命令数据之前,由客户端先向服务器发送一个包含Client Node Address字段的报文申请节点地址。由于客户端申请的时候还没有节点地址,因此该字段被置为0x00000000。