TCP数据流的概念

发送端TCP数据流

考虑到实际网络中的各种影响,那么其实发送端调用send函数发送两个字符串hello, messagewelcome的实际TCP分组可能有很多种。

第一种情况:一个TCP分组发出去

hello, messagewelcome在一个TCP分组中发送出去,比如:

复制代码
*************hello, messagewelcome*******************

第二种情况:前一个字符串一部分放到另一个TCP分组接着发送

比如(可以列举很多种):

其中一个分组是:

复制代码
*********************************hello, m

另一个分组是:

复制代码
essagewelcome******************************

第三种情况:后一个字符串一部分放到前一个TCP分组发送

比如(可以列举很多种):

其中一个分组是:

shell 复制代码
*********************************hello, messagew

另一个分组是:

shell 复制代码
elcome******************************

上边这三种情况可以有很多组合,这里想要表达的意思就是我们不能假设整个数据就在一个TCP分组里边发送出去,也就是说,不能假设"数据流和 TCP 分组是一种映射关系"。

接收端TCP数据流

不管发送端数据分了多少个TCP分组发来,那么最后接受端接受到的数据都是:

shell 复制代码
*****************hello, messagewelcome*************

1.先调用send函数发送的数据一定会比后调用send函数发送的数据先到,这就是一个由TCP保证的。

2.如果发送过程中有 TCP 分组丢失,但是其后续分组陆续到达,那么 TCP 协议栈会缓存后续分组,直到前面丢失的分组到达,最终,形成可以被应用程序读取的数据流。

此文章为11月Day 29学习笔记,内容来源于极客时间《网络编程实战》

相关推荐
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
wuyk5552 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
XUEYUAN52122 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
QYRdata2 天前
年均增速24.2%!机器人数据湖未来六年增长动能强劲
网络·机器人·服务发现
CHENKONG_CK2 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
chshang19922 天前
工业路由器是什么?浅谈5G工业网络中的IR602
网络·物联网·5g·智能路由器
萧瑟余晖2 天前
Netty 核心组件与 Reactor 模型详解
网络·架构
ITxiaobing20232 天前
IP 定位服务选型指南:从准确率到工程落地的技术考察
linux·服务器·网络
wuyk5552 天前
【Socket 进阶之路】第 9 章 Linux 网络服务量产稳定性优化|心跳保活、TIME_WAIT、SO_LINGER、内存池、断线重连、完整异常防护框架
linux·服务器·开发语言·网络·物联网
z落落2 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp