- 计算机网络每层的基本单位:
- 物理层(第一层):
比特流;- 数据链路层(第二层):
数据帧;- 网络层(第三层):
数据包;- 传输层(第四层):
数据段(TCP)、用户数据报(UDP);- 应用层(第五层):
消息或报文;- TCP粘包现象:
- 简要概述:
发送端向接收端发送一些数据包,产生粘成一个数据包的现象;- 准确概述:
- 传输控制协议(
TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议; - 在
TCP通信中,以字节流的方式发送,这些数据可能会被切割并组装成各种数据包,接收端在收到这些数据包后没有正确还原消息; - 解决方法:
- 一、定长消息:
- 发送数据
前,发送端将数据按固定长度分割成多个数据包发送,接收端每次接收一个固定长度的数据包; - 缺点:
- 1、
固定缓冲区大小的方式增加不必要的数据传输; - 2、当
发送的数据比较小时,会使用空字符来填充,增加网络传输的负担; - 二、特定字符分割:
- 发送数据
时,发送端在每个数据包的末尾添加特定的字符或标记,接收端在接收数据时,根据特定字符或标记切分数据包; - 缺点:
报文中不能有相同的字符或标记;- 三、消息长度(最佳方案):
- 发送数据
时,发送端在每个数据包的开头添加表示消息长度的字段,接收端先读取消息长度,然后根据消息长度读取数据包; - 结构组成:
- 1、
报文长度; - 2、
报文内容;
面试题之TCP粘包现象及其解决方法
李十五哥2023-11-11 22:43
相关推荐
跨境猫小妹13 分钟前
2025 TikTok Shop:从内容爆发到系统化深耕的商业跃迁不穿格子的程序员15 分钟前
从零开始写算法 —— 二叉树篇 1:二叉树的三种遍历(递归实现法)d111111111d25 分钟前
什么是内存对齐?在STM32上面如何通过编辑器指令来实现内存对齐。子夜江寒31 分钟前
逻辑森林与贝叶斯算法简介Macbethad32 分钟前
Linux网关应用技术报告旺仔Sec32 分钟前
2026年河北省职业院校技能大赛“网络系统管理”(高职组)网络构建样题小妖66638 分钟前
力扣(LeetCode)- 93. 复原 IP 地址(JavaScript)黎雁·泠崖1 小时前
C 语言指针进阶教程:const 修饰、野指针规避与传址调用xu_yule1 小时前
算法基础-背包问题(01背包问题)蒙奇D索大1 小时前
【数据结构】考研408 | 伪随机探测与双重散列精讲:散列的艺术与均衡之道