概述

本文主要概述TCP粘包的原因和如何解决TCP粘包的问题。

TCP粘包原因

由于TCP是字节流传输协议,又没有保护边界,传输过程中为了提高传输效率,其采用了一种优化方式,将发送时间间隔小数据量小的一起存入发送缓存区再发送,由于没有保护边界,故而会出现数据的粘包。

解决TCP粘包

1.传输的时候不让其进行优化,以降低传输效率为代价,但是这种目前我不知该如何操作;
2.在应用层进行数据解析,传输的数据定义的时候定义消息头,消息长度,消息结束标志等,按照消息的格式解析读取的消息。

UDP不会粘包

由于UDP是数据包传输协议,其含有消息保护边界,在发送每一包消息的时候,会进行处理,加上消息头,其次UDP发送数据的时候不使用优化算法来发送,接收端采用链式结构来存储接收的数据包。

关于TCP粘包的拙见相关推荐

  1. 【Netty】入门Netty官方例子解析(三)处理一个基于流的传输 TCP粘包和拆包问题分析和解决

    关于 Socket Buffer的一个小警告 基于流的传输比如 TCP/IP, 接收到数据是存在 socket 接收的 buffer 中.不幸的是,基于流的传输并不是一个数据包队列,而是一个字节队列. ...

  2. Socket编程(4)TCP粘包问题及解决方案

    ① TCP是个流协议,它存在粘包问题 TCP是一个基于字节流的传输服务,"流"意味着TCP所传输的数据是没有边界的.这不同于UDP提供基于消息的传输服务,其传输的数据是有边界的.T ...

  3. tcp协议缓冲区溢出_关于TCP 粘包拆包,你了解吗?

    一.什么是粘包拆包? 粘包拆包是TCP协议传输中一种现象概念.TCP是传输层协议,他传输的是"流"式数据,TCP并不知道传输是哪种业务数据,或者说,并不关心.它只是根据缓冲区状况将 ...

  4. 《精通并发与Netty》学习笔记(13 - 解决TCP粘包拆包(一)概念及实例演示)

    一.粘包/拆包概念 TCP是一个"流"协议,所谓流,就是没有界限的一长串二进制数据.TCP作为传输层协议并不不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行数据包的 ...

  5. Netty详解(五):Netty TCP粘包 拆包

    1. 概述 无论是服务端还是客户端,我们读取或者发送消息的时候,都需要考虑TCP底层的粘包和拆包机制.下面我们来通过Netty来详解TCP底层的粘包和拆包机制. 2. TCP底层的粘包和拆包机制 TC ...

  6. 网络:TCP粘包问题?如何解决?

    看面经时,看到有面试官问TCP的粘包问题.想起来研一做购物车处理数据更新时遇到粘包问题,就总结一下吧. 1 什么是粘包现象 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看, ...

  7. 6行代码解决golang TCP粘包

    什么是TCP粘包问题以及为什么会产生TCP粘包,本文不加讨论.本文使用golang的bufio.Scanner来实现自定义协议解包. 协议数据包定义 本文模拟一个日志服务器,该服务器接收客户端传到的数 ...

  8. 【Netty】TCP粘包和拆包

    一.前言 前面已经基本上讲解完了Netty的主要内容,现在来学习Netty中的一些可能存在的问题,如TCP粘包和拆包. 二.粘包和拆包 对于TCP协议而言,当底层发送消息和接受消息时,都需要考虑TCP ...

  9. Netty(二)——TCP粘包/拆包

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7814644.html 前面讲到:Netty(一)--Netty入门程序 主要内容: TCP粘包/拆包的基础知 ...

最新文章

  1. Java微信公众平台开发(十)--微信自定义菜单的创建实现
  2. 文件打开不关闭程序会输出吗_干货!很多资深用户都不知道的10个BOOX阅读器使用技巧,很实用!...
  3. word 流水号 自动增加_以自动组卷软件为例浅谈Python自动化办公
  4. JS读取id和name的操作
  5. Linux下python包放在哪,在alpinlinux中使用apk安装的Python包
  6. Confluence 6 PostgreSQL 创建数据库和数据库用户
  7. Redis数据结构-对象
  8. 【学习笔记】莫队算法
  9. 朋友圈点赞点用例的设计点
  10. java plsql_在PLSQL中编译复杂的java(转)
  11. python 找到装饰器_Python 装饰器的总结(一)
  12. 机器学习- 吴恩达Andrew Ng Week6 知识总结 Machine Learning System Design
  13. 【简历优化】如何写好项目的亮点难点?项目经历怎么写最好?
  14. 网站用户访问量统计—Django
  15. 学习6大设计原则、23种设计模式
  16. 吾爱破解培训第一课作业密码_如何实现您的第一个无密码登录系统
  17. 定向推送,虚假宣传,资本助力的团油有谁撑腰?
  18. DicomVCL for D6-D2010-Crack
  19. 全球及中国差速器总成行业发展前景规划与投资模式分析报告2021年版
  20. nc java 设置,NC57,NC63-NC2开经验总结

热门文章

  1. Python-OpenCV 处理图像(一):基本操作 cv2
  2. DDD as Code:如何用代码诠释领域驱动设计?
  3. Knative 实战:基于阿里云 Kafka 实现消息推送
  4. 来了!云栖大会都能看到什么?
  5. K8S从懵圈到熟练 - 节点下线姊妹篇
  6. 深度学习为图片人物换装【python代码教程】
  7. 用Python玩转时序数据
  8. 新品发布、降价普惠、拥抱开源、出海全球化 | 杭州云栖企业数字化转型峰会上的那些关键词
  9. 阿里云ECS家族再添新成员,推出密集计算型实例规格族ic5
  10. weex 在 iOS 上如何实现常见的网络缓存