当前位置: 首页 > news >正文

天津公司建设网站互联网投诉服务平台

天津公司建设网站,互联网投诉服务平台,怎么找到网站站长,滨江做网站TCP粘包问题 TCP粘包问题造成TCP粘包的原因发送方原因接收方原因 如何处理TCP粘包发送方接收方应用层 为什么UDP没有粘包问题 TCP粘包问题 TCP粘包就是指发送方发送的若干包数据到达接收方时粘成了一包,从接收缓冲区来看,后一包数据的头紧接着前一包数据…

TCP粘包问题

  • TCP粘包问题
  • 造成TCP粘包的原因
    • 发送方原因
    • 接收方原因
  • 如何处理TCP粘包
    • 发送方
    • 接收方
    • 应用层
  • 为什么UDP没有粘包问题

TCP粘包问题

TCP粘包就是指发送方发送的若干包数据到达接收方时粘成了一包,从接收缓冲区来看,后一包数据的头紧接着前一包数据的尾。

造成TCP粘包的原因

TCP粘包现象的根本原因是TCP采用了面向字节流的传输,面向字节流的传输不认为消息是一条一条的,它是无保护消息边界的

具体来说,出现粘包的原因是多方面的,可能是来自发送方,也可能是来自接收方。

发送方原因

发送端为了将多个发往接收端的包,更加高效的发给接收端,于是采用了优化算法(Nagle算法),将多次间隔较小、数据量较小的数据,合并成一个数据量大的数据块,然后进行封包。

TCP默认使用Nagle算法(主要作用:减少网络中报文段的数量),而Nagle算法主要做两件事:

  • 只有上一个分组得到确认,才会发送下一个分组
  • 收集多个小分组,在一个确认到来时一起发送

Nagle算法造成了发送方可能会出现粘包问题。

接收方原因

TCP接收到数据包时,并不会马上交到应用层进行处理,或者说应用层并不会立即处理。实际上,TCP将接收到的数据包保存在接收缓存里,然后应用程序主动从缓存读取收到的分组。这样一来,如果TCP接收数据包到缓存的速度大于应用程序从缓存中读取数据包的速度,多个包就会被缓存,应用程序就有可能读取到多个首尾相接粘到一起的包。

如何处理TCP粘包

如果发送方发送的多组数据本来就是同一块数据的不同部分,比如说一个文件被分成多个部分发送,这时当然不需要处理粘包现象。如果多个分组毫不相干,甚至是并列关系,那么这个时候就一定要处理粘包现象了

发送方

对于发送方造成的粘包问题,可以通过关闭Nagle算法来解决,使用TCP_NODELAY选项来关闭算法。

接收方

接收方没有办法来处理粘包现象,只能将问题交给应用层来处理。

应用层

应用层的解决办法简单可行,不仅能解决接收方的粘包问题,还可以解决发送方的粘包问题。

解决办法:循环处理,应用程序从接收缓存中读取分组时,读完一条数据,就应该循环读取下一条数据,直到所有数据都被处理完成,但是如何判断每条数据的长度呢?

  • 格式化数据:每条数据有固定的格式(开始符,结束符),这种方法简单易行,但是选择开始符和结束符时一定要确保每条数据的内部不包含开始符和结束符。
  • 发送长度:发送每条数据时,将数据的长度一并发送,例如规定数据的前4位是数据的长度,应用层在处理时可以根据长度来判断每个分组的开始和结束位置。

为什么UDP没有粘包问题

TCP为了保证可靠传输并减少额外的开销(每次发包都要验证),采用了基于流的传输,基于流的传输不认为消息是一条一条的,是无保护消息边界的(保护消息边界:指传输协议把数据当做一条独立的消息在网上传输,接收端一次只能接受一条独立的消息)。

UDP则是面向消息传输的,是有保护消息边界的,接收方一次只接受一条独立的信息,所以不存在粘包问题。

举个例子:有三个数据包,大小分别为2k、4k、6k,如果采用UDP发送的话,不管接受方的接收缓存有多大,我们必须要进行至少三次以上的发送才能把数据包发送完,但是使用TCP协议发送的话,我们只需要接受方的接收缓存有12k的大小,就可以一次把这3个数据包全部发送完毕。

http://www.15wanjia.com/news/160494.html

相关文章:

  • 做瑷网站装修设计公司平台
  • 网站备案费用新手想做网站赚钱
  • python网站开发用什么数据库网页设计师联盟
  • 微信网站对接kfk wordpress
  • 兰州网站建设哪家好广州网络营销外包团队
  • 网站霸屏对网站好吗建站63年来第一次闭站 北京站辟谣
  • 成都神速建站网站建设html
  • 网站行程表怎么做打码兔怎么和网站做接口
  • 女式包包网站建设定位球队积分排名
  • 天长两学一做网站wordpress 上传开发
  • 芜湖县住房建设局网站有哪些做调查的网站可以赚钱
  • 怎么上传图片到公司网站网站服务器放在哪里好
  • 宣传型网站功能定位adspower浏览器
  • 如何给网站做外部优化民治营销网站制作
  • 个人网站设计理念科技布沙发脏了用什么办法清洗
  • 北京网站建设主页苏州知名网站建设设计公司排名
  • 青少年宫网站开发网站营销的重要价值
  • 城市文化网站开发背景装修设计公司logo
  • 淄博网站建设网站推广优化html论坛网站模板下载
  • 淮北市相山区建设局网站深圳龙华做网站的
  • 西安网站 技术支持牛商网计算机培训包就业
  • 物流企业网站建设规划书wordpress 写作
  • 南通网站建设找哪家好英文wordpress SEO
  • 设计师对网站的意义网站公司怎么建站
  • 广东外贸网站建设网络推广计划书范文
  • 网站攻击方式wordpress生成验证码发送代码
  • 做a的视频在线观看网站怎么做的英文网站
  • 网站建设培训哪家好全球域名注册查询
  • 国家建设部网站平台建设银行网银盾官方网站下载
  • 西安网站优化排名推广怎么看网站的服务器