面试题之TCP粘包现象及其解决方法

  • 计算机网络每层的基本单位:
  • 物理层(第一层):
  • 比特流
  • 数据链路层(第二层):
  • 数据帧
  • 网络层(第三层):
  • 数据包
  • 传输层(第四层):
  • 数据段TCP)、用户数据报UDP);
  • 应用层(第五层):
  • 消息报文
  • TCP粘包现象:
  • 简要概述:
  • 发送端接收端发送一些数据包,产生粘成一个数据包的现象;
  • 准确概述:
  • 传输控制协议(TCP)是一种面向连接的、可靠的、基于字节流传输层通信协议
  • TCP通信中,以字节流的方式发送,这些数据可能会被切割并组装成各种数据包,接收端在收到这些数据包后没有正确还原消息;
  • 解决方法:
  • 一、定长消息:
  • 发送数据发送端将数据按固定长度分割成多个数据包发送,接收端每次接收一个固定长度的数据包
  • 缺点:
  • 1、固定缓冲区大小的方式增加不必要的数据传输
  • 2、当发送的数据比较小时,会使用空字符来填充,增加网络传输的负担
  • 二、特定字符分割:
  • 发送数据发送端在每个数据包的末尾添加特定的字符或标记接收端在接收数据,根据特定字符或标记切分数据包
  • 缺点:
  • 报文不能有相同的字符或标记
  • 三、消息长度(最佳方案):
  • 发送数据发送端在每个数据包的开头添加表示消息长度的字段接收端读取消息长度,然后根据消息长度读取数据包;
  • 结构组成:
  • 1、报文长度
  • 2、报文内容
相关推荐
0x531 分钟前
Java网络编程(二)
java·服务器·网络
蒸蒸yyyyzwd9 分钟前
cpp选手备战后端学习笔记day6 秋招笔试题
笔记·学习
微硬创新23 分钟前
老旧产线改造:耐达讯自动化16路4‑20mA转PROFINET的工程实践
人工智能·网络协议·自动化·信息与通信
西安景驰电子2 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
Bruce_Liuxiaowei2 小时前
基于微步在线威胁情报的公网 IP 攻击迹象监测:threatbook_query 脚本全解析与 BruceSec 平台整合实践
数据库·tcp/ip·安全·网络安全·智能体
luj_17682 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法
weixin_446260852 小时前
AVA-Encoder:面向智能体原生视频表征学习框架
学习·音视频
ZGi.ai2 小时前
多模型回答不稳定:路由规则与评测方法
网络·人工智能·大模型评测·多模型·模型路由·zgi·模型网关
wuyk5552 小时前
3.链表:用指针串联的动态数据结构
c语言·开发语言·数据结构·链表
吃好睡好便好3 小时前
说说口罩的佩戴
学习·生活·口罩