粘包问题及其相应的解决方法

      粘包问题是在网络通信过程中常出现的问题,在实际的设计过程中,应尽可能地解决该类问题。

     首先粘包现象指的就是,发送端向接收端发送数据,但是接收端不知道怎样去接收地问题,造成接收后数据出现紊乱地现象。

       粘包现象通常发生在TCP通信协议下,这主要是由于在数据传输过程中存在的拆包和合包机制。拆包机制主要是受MTU,网卡的最大带宽影响,一般限制在1500,所以在数据链路层收发数据的大小也被限制在1500-IP包头(20)-UDP包头(8)个以内,超过这个数据就得进行拆包。

       粘包地产生原因:

     1. 发送端的缓存机制;

     2.接收端的缓存机制。

       在实际的网络通信过程中,在发送端会存在一个nagle算法,该算法有两个机制(一是拆包机制,二是合包机制)就是将大文件进行拆包,小文件进行合包发送。

      在合包过程中,多个小文件进行合并,一并发送到接收端,接收端对两个文件进行同时接收并输出;在拆包过程中,一个大文件被拆成多次发送,往往接收端接收后会剩余部分文件数据,剩余文件信息又小于接收端能接收信息的大小,同时此时发送端又重新发送过来一条数据,该数据会和前一条剩余数据进行整合接收,输出,由此造成粘包。

     那么既然粘包如此普遍,又应该如何解决粘包问题呢?

    其基本解决思路就是将待发送文件大小和文件信息整和为一条数据信息,统一发送到接收端,通过文件文件大小设置相应的接受机制,保证在接收过程中只接受相应大小的文件,从而保证接收文件的准确性。

 

具体的操作办法我会在下一篇文章中进行具体的总结,感兴趣的小伙伴可以看看哦~~~~

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值