继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第15天 网络协议——粘包拆包

小魏同学嘻嘻
关注TA
已关注
手记 22
粉丝 1
获赞 1

课程名称:(打造简历金牌项目)Vue+Go 开发企业级微服务网关项目
课程章节:2-7
课程讲师:牛儿吃草

课程内容:
为什么会出现粘包拆包?
图片描述

  • 应用程序写入程序大于socket套接字缓冲区大小,这将会发生拆包。
  • 应用程序写入程序小于socket他借字缓冲区大小,网卡将应用多次写入的数据发送到网络上,这将会发生粘包。
  • 进行MSS(最大报文长度)大小的IP分段,当TCP报文长度-TCP头部长度>MSS的时候将发生拆包。
  • 接收方法不及时读取套接字数据,这将发生粘包。

如何获取完整应用的数据报文

  • 使用带消息头的协议,头部写入包长度,然后再读取包内容。
  • 设置定长消息,每次读取定长内容,长度不够时空位补固定字符。
  • 设置消息边界,服务端从网络流中按消息边界分离出消息内容, 一般使用’\n’
  • 更为复杂的协议,例如json,protobuf

图片描述
图片描述

课程收获:

今天学习了网络协议的粘包,拆包相关内容,明确了粘包拆包产生的原因,以及如何获取完整应用的数据报文,老师以思维导图的形式将获取应用完整报文的代码实现步骤以思维导图的形式展现,使得编程实现的思路更加清晰,明了。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP