请教一下各位大师,我正在写一个socket通信的程序,能实现简单字符串的发送和接收,选择tcp/ip协议,想知道通信协议的格式怎么设定?谢谢各位!
------解决思路----------------------
xml序列化
------解决思路----------------------
自己定义呗
你到底要传什么东西,是传字符串,传数据,传文件,传datatable,传结构体,传实体类,有的可以通过序列化反序列化,有的只能自己做好编码解码的工作
还有防粘包,防丢包,如何校验长度是否正确,如何重发,如何续传,这些都要自己写代码,没有一个属性让你设置一下拉倒的
------解决思路----------------------
其实楼主说的应该是报文格式吧,这个基本都是自己定义的,
一般报文 都是报文头+报文体,头存指令集之类的,报文体存数据,
其实都是“自定义”
------解决思路----------------------
一般自定义报文的时候, 都是 报文头+报文体+数据长度
------解决思路----------------------
数据长度一般会写在报文头里面,而不是放到末尾
否则数据丢包,只收到一半的话,根本没法校验到底是否合法
而报文头一半是固定长度,这样如果收到的数据长度连报文头的长度都不足,明显是非法的,收到了报文头之后再校验后面的数据长度
------解决思路----------------------
这个是对的
------解决思路----------------------
TCP报文的格式:
0 1 2 3 4 5 6
0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
十六位源端口号
------解决思路----------------------
十六位目标端口号
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
三十二位序列号
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
三十二位确认号
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
四位
------解决思路----------------------
------解决思路----------------------
U
------解决思路----------------------
A
------解决思路----------------------
P
------解决思路----------------------
R
------解决思路----------------------
S
------解决思路----------------------
F
------解决思路----------------------
------解决思路----------------------
------解决思路----------------------
首部
------解决思路----------------------
六位保留位
------解决思路----------------------
R
------解决思路----------------------
C
------解决思路----------------------
S
------解决思路----------------------
S
------解决思路----------------------
Y
------解决思路----------------------
I
------解决思路----------------------
十六位窗口大小
------解决思路----------------------
------解决思路----------------------
长度
------解决思路----------------------
------解决思路----------------------
G
------解决思路----------------------
K
------解决思路----------------------
H
------解决思路----------------------
T
------解决思路----------------------
N
------解决思路----------------------
N
------解决思路----------------------
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
十六位校验和
------解决思路----------------------
十六位紧急指针
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
选项(若有)
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
数据(若有)
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
TCP首部结构
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
版本
------解决思路----------------------
长度
------解决思路----------------------
八位服务类型
------解决思路----------------------
十六位总长度
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
十六位标识
------解决思路----------------------
标志
------解决思路----------------------
十三位片偏移
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
八位生存时间
------解决思路----------------------
八位协议
------解决思路----------------------
十六位首部校验和
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
三十二位源IP地址
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
三十二位目的IP地址
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
选项(若有)
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
------解决思路----------------------
数据
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP首部结构
------解决思路----------------------
IP首部
------解决思路----------------------
TCP首部
------解决思路----------------------
TCP数据段
------解决思路----------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+