当前位置: 代码迷 >> C# >> 请问socket通信报文格式
  详细解决方案

请问socket通信报文格式

热度:82   发布时间:2016-05-05 04:56:16.0
请教socket通信报文格式
请教一下各位大师,我正在写一个socket通信的程序,能实现简单字符串的发送和接收,选择tcp/ip协议,想知道通信协议的格式怎么设定?谢谢各位!
------解决思路----------------------
xml序列化
------解决思路----------------------
自己定义呗
你到底要传什么东西,是传字符串,传数据,传文件,传datatable,传结构体,传实体类,有的可以通过序列化反序列化,有的只能自己做好编码解码的工作
还有防粘包,防丢包,如何校验长度是否正确,如何重发,如何续传,这些都要自己写代码,没有一个属性让你设置一下拉倒的
------解决思路----------------------
其实楼主说的应该是报文格式吧,这个基本都是自己定义的,
一般报文 都是报文头+报文体,头存指令集之类的,报文体存数据,
其实都是“自定义”

------解决思路----------------------
一般自定义报文的时候, 都是 报文头+报文体+数据长度


------解决思路----------------------
引用:
一般自定义报文的时候, 都是 报文头+报文体+数据长度

数据长度一般会写在报文头里面,而不是放到末尾
否则数据丢包,只收到一半的话,根本没法校验到底是否合法
而报文头一半是固定长度,这样如果收到的数据长度连报文头的长度都不足,明显是非法的,收到了报文头之后再校验后面的数据长度
------解决思路----------------------
引用:
Quote: 引用:

一般自定义报文的时候, 都是 报文头+报文体+数据长度

数据长度一般会写在报文头里面,而不是放到末尾
否则数据丢包,只收到一半的话,根本没法校验到底是否合法
而报文头一半是固定长度,这样如果收到的数据长度连报文头的长度都不足,明显是非法的,收到了报文头之后再校验后面的数据长度

这个是对的
------解决思路----------------------
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数据段   
------解决思路----------------------
 



+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  相关解决方案