为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Go

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

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

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

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

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

图片描述
图片描述

课程收获:

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1
获赞与收藏
1

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消