深圳C++培训
达内深圳龙华中心

139-2227-5185

热门课程

C语言培训揭晓云计算数据包拆包思路【深圳达内龙岗校区】

  • 时间:2017-07-19
  • 发布:深圳达内
  • 来源:达内新闻

  深圳c++培训小编:对于数据包处理最复杂的地方就是对数据包的拆包处理。我们要将粘包的多个包(连续完整的多个或者有被截断的包)正确的拆分出来,是一项稍微麻烦的事情。我们要准确拆分出来,还要将截断的数据包前后拼成完整的包。否则处理不好,就会出现数据包丢失的问题。至于验证数据包的合法性,也就是针对数据包对应的业务协议格式进行各个字段的检测而已。所以这里就没有什么好说的,每一个协议不一样,检验方法也不相同。不过有一点需要说的是,协议数据是一段字节流,解析协议也就是将一段字节流按照协议定义的格式,挨个的划分出各字段。

然后再确定各字段的值和所代表的意义是否是有效的。就比如达内深圳计算机培训中讲到的一个字段的标志固定为0xFF,如果此字段的值不是这个,那么这个数据包就无效。如果一个字段表示数据包整个长度为100字节,而数据包却只有50字节或者120字节,那么这就需要进行额外的处理,缓存或丢弃。而网络工程师培训小编说过数据包的拆包,也是要基于协议的标志进行的。具体如何拆,不同的协议有所不同,我们也没有办法用实例的说明。我就说个思路,仅供参考。

那么我们识别包头,也就是从这个开始标志字节序列开始的。我们假设这个开头是0xAA0xFF,那么我们在接受到客户端发送过来的一段原始数据的时候,从头开始搜索开头字节序列,如果搜索到了,自然也就找到了开头,定位到了一个数据包的开始。如果说要正确拆包,那么我们就需要正确识别包的开始和结束。所以我们至少要知道数据包的开始标志。这也是各种协议需要的开始标志字节序列的原因。如果不是这样,那么就是其他各种手段确保能够识别包头的。

因为我们使用的是TCP协议传输字节流。我们很难字节包装每次接受的都是我们自己定义的一个完整的业务协议数据包,所以我们不能用某种办法控制数据包的发送,或者很难控制。而我们用起始字节序列作为开始,显然也就方便多了。


希望以上内容对你有所帮助!达内教育19大课程,囊括行业热门技术,更新速度快,更贴近企业需求。先就业后付款,工作后再分期支付学费,还等什么呢?达内助你登上人生的转折点,一次改变命运的机会!(更多内容请点击:深圳C++培训官网,或者关注达内微信公众平台:tarenasz)


上一篇:C语言编程习惯与编程要点【深圳达内龙岗校区】
下一篇:C语言中的函数你必须知道【深圳达内龙岗校区】

C/C++程序员求职简历模板

学了C语言到底能做什么,能从事什么工作?

C++入们知识点:C++语言的概述

C++输出输入小结

选择城市和中心
贵州省

广西省

海南省