- 计算机网络每层的基本单位:
- 物理层(第一层):
比特流
;- 数据链路层(第二层):
数据帧
;- 网络层(第三层):
数据包
;- 传输层(第四层):
数据段
(TCP
)、用户数据报
(UDP
);- 应用层(第五层):
消息
或报文
;- TCP粘包现象:
- 简要概述:
发送端
向接收端
发送一些数据包,产生粘成一个数据包
的现象;- 准确概述:
- 传输控制协议(
TCP
)是一种面向连接
的、可靠
的、基于字节流
的传输层通信协议
; - 在
TCP通信
中,以字节流的方式发送,这些数据可能会被切割并组装
成各种数据包,接收端在收到这些数据包后没有正确还原
消息; - 解决方法:
- 一、定长消息:
- 发送数据
前
,发送端
将数据按固定长度
分割成多个数据包发送,接收端
每次接收一个固定长度的数据包
; - 缺点:
- 1、
固定缓冲区大小
的方式增加不必要的数据传输
; - 2、当
发送的数据比较小
时,会使用空字符
来填充,增加网络传输的负担
; - 二、特定字符分割:
- 发送数据
时
,发送端
在每个数据包的末尾添加特定的字符或标记
,接收端
在接收数据时
,根据特定字符或标记切分数据包
; - 缺点:
报文
中不能有相同的字符或标记
;- 三、消息长度(最佳方案):
- 发送数据
时
,发送端
在每个数据包的开头添加表示消息长度的字段
,接收端
先读取消息长度
,然后根据消息长度
读取数据包; - 结构组成:
- 1、
报文长度
; - 2、
报文内容
;
面试题之TCP粘包现象及其解决方法
李十五哥2023-11-11 22:43
相关推荐
澄澈i27 分钟前
CMake学习篇[3]---CMake进阶+嵌套CMakeLists+多层级关系搂鱼11451432 分钟前
GJOI 10.7/10.8 题解Camellia031132 分钟前
为第二次考核的电控学习HaSaKing_72137 分钟前
二三级等保检测对比项茯苓gao40 分钟前
电路学习(一)Django强哥1 小时前
JSON Schema Draft-07 详细解析AndrewHZ1 小时前
【图像处理基石】GIS图像处理入门:4个核心算法与Python实现(附完整代码)迎風吹頭髮1 小时前
UNIX下C语言编程与实践35-UNIX 守护进程编写:后台执行、脱离终端、清除掩码与信号处理杨小码不BUG1 小时前
蛇形舞动:矩阵填充的艺术与算法(洛谷P5731)MicroTech20251 小时前
微算法科技(NASDAQ:MLGO)开发延迟和隐私感知卷积神经网络分布式推理,助力可靠人工智能系统技术