一种C# 的Tcp通讯协议规划

C# Tcp通讯协议规划

1. 实现目标

  实现一个服务端,多个客户端的稳定,可靠TCP/IP通讯方式

2. 功能规划

  认识:

  开发模式和统一入口同样重要

 

  功能:

  实现上参考分层模型,概念上将Socket连接和应用协议进行分层,职责分离,实现上将连接,发送,接收,处理进行分离,简化结构。

  • 连接管理功能包括

     服务端自活监控

     连接

          断开连接

               重连策略制定

               重连

               发送

               接收

  • 协议实现功能包括

              发送确认(单次ACK)

              重发策略

              内容分段

              重复控制

              连接探测

              消息转发

              粘包处理

3. 协议定义

发送最大长度: 1024字节(以太网)

 

功能名称

字节数量

起始位置

结束地址

描述

消息头

8

0

7

FF FE FD FC FC FD FE FF

版本号

4

8

11

8~9: 大版本

10~11: 小版本

消息编号

4

12

15

ACK确认字段

12~15: 递增消息标识

控制位

2

16

17

1: 发送消息探测

2: 返回探测成功

3: 发送数据

4:  ACK

IP地址

4

18

21

18:192

19:168

20:40

21:172

目标IP地址

4

22

25

22:192

23:168

24:40

25:172

预留

50

26

75

预留内容

数据长度

4

76

79

数据长度

数据内容

数据长度

80

数据长度 + 79

数据内容

校验

2

数据长度 +80

数据长度 +80+1

部分校验(CRC16):版本号+消息编号+目标IP地址+数据长度

消息尾

8

数据长度 +80+2

数据长度 +80+2+7

FA FB FC FD FD FC FB FA


4. 
实现方式 

  1. 连接管理:连接,发送,接收,断开
  2. 协议的使用,以类的形式进行封装
  3. 协议管理:生成,解析
posted @ 2021-03-15 13:20  慢慢zero  阅读(175)  评论(0)    收藏  举报