一种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. 实现方式
- 连接管理:连接,发送,接收,断开
- 协议的使用,以类的形式进行封装
- 协议管理:生成,解析

浙公网安备 33010602011771号