4.6 TCP面向字节流

TCP 是面向字节流的协议,UDP 是面向报文的协议

操作系统对 TCP 和 UDP 协议的发送方的机制不同,也就是问题原因在发送方。

UDP面向报文协议:

操作系统不会对UDP协议传输的消息进行拆分,在组装好UDP头部后就交给网络层处理,每个UDP报文就是一个用户消息边界。

操作系统接收到UDP报文后放入队列,队列每一个元素都是一个UDP报文

TCP面向字节流协议:

TCP协议传输时,一个完整的用户消息被拆分成多个 TCP 报文进行传输。我们不能认为每次 send 调用发送的数据,都会作为一个整体完整地消息被发送出去,至于什么时候真正被发送,取决于发送窗口、拥塞窗口以及当前发送缓冲区的大小等条件不能认为一个用户消息对应一个 TCP 报文,正因为这样,所以 TCP 是面向字节流的协议

如何解决粘包?

不知道一个用户消息的边界在哪

固定长度的消息

即每个用户消息都是固定长度的,比如规定一个消息的长度是 64 个字节,当接收方接满 64 个字节,就认为这个内容是一个完整且有效的消息。

特殊字符作为边界

两个用户消息之间插入一个特殊的字符串,这样接收方在接收数据时,读到了这个特殊字符,就把认为已经读完一个完整的消息。

自定义消息结构

我们可以自定义一个消息结构,由包头和数据组成,其中包头包是固定大小的,而且包头里有一个字段来说明紧随其后的数据有多大。

相关推荐
学嵌入式的小杨同学9 分钟前
【嵌入式 C 语言实战】栈、队列、二叉树核心解析:存储原理 + 应用场景 + 实现思路
linux·c语言·网络·数据结构·数据库·后端·spring
舰长11522 分钟前
SSLITLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】
网络
智算菩萨32 分钟前
互联网的神经网络:OSI七层分层模型深度讲解
网络
小宇的天下33 分钟前
Calibre :Standard Verification Rule Format(SVRF) Manual (1-1)
大数据·前端·网络
九成宫43 分钟前
计算机网络期末复习——第5章:链路层 Part One
网络·笔记·计算机网络·软件工程
多多*1 小时前
计算机网络相关 讲一下rpc与传统http的区别
java·开发语言·网络·jvm·c#
xwz小王子1 小时前
Nature Electronics 新加坡国立大学研发了基于柔性拓扑结构服装的体感传感器网络
网络·体感传感器
独行soc1 小时前
2026年渗透测试面试题总结-5(题目+回答)
android·网络·python·安全·web安全·渗透测试
希赛网1 小时前
网工面试:常问技术问题汇总(3)
服务器·前端·网络·网络工程师·ospf·网工面试·技术面
进阶小白猿1 小时前
Java技术八股学习Day23
java·网络·学习