TCP 是用来解决什么问题?

TCP 工作在传输层,底层IP协议只提供无连接、尽力而为的报文交付,存在丢包、乱序、重复、网络拥塞、接收缓冲区溢出等问题。TCP 就是在不可靠的IP网络之上,向上层应用提供可靠的、面向连接的字节流传输服务。

TCP 解决的核心问题:

  1. 建立与维持通信双方的连接

    通过三次握手同步双方初始序列号,确认双方收发链路可用;通信结束通过四次挥手正常释放连接,避免资源泄漏。

  2. 解决数据丢失问题

    采用确认应答(ACK)+ 超时重传机制。发送方等待接收方的确认报文,超时未收到ACK则重传数据,保证数据最终送达。

  3. 解决数据乱序问题

    为每个字节分配序列号,接收端根据序列号重组报文,将有序字节流交付应用程序。

  4. 解决重复报文问题

    利用序列号识别重复收到的数据包,丢弃重复报文,避免上层应用收到重复数据。

  5. 流量控制

    使用滑动窗口机制,接收方通过窗口大小告知发送方自身剩余缓冲区容量,防止发送方发送速率过快,造成接收端缓冲区溢出。

  6. 拥塞控制

    感知整个网络的拥塞状态,动态调整发送窗口,避免大量报文涌入网络,导致网络瘫痪。

  7. 字节流封装

    将应用层的数据拆分成合适大小的TCP段,适配底层IP的MTU,向上层屏蔽底层网络分片细节。

一句话概括:TCP 在不可靠的IP网络上,为应用层提供可靠、有序、无重复、带流量与拥塞控制的面向连接字节流传输。

相关推荐
y = xⁿ1 小时前
拆解cloud code记忆系统
java·人工智能·python·github
轮子大叔1 小时前
Hibernate6.x详解
java
ClickHouseDB1 小时前
ClickHouse .NET 驱动程序新特性:从 1.0 到 1.3 的演进之路
java·前端·windows
流烟默1 小时前
MCP第 6 篇:Spring AI Alibaba 封装 MCP:注册中心、网关与企业治理
java·mcp封装
Light602 小时前
企业自建 AI 智能体,成本差 8 倍还是 46 倍?
java·人工智能·算法·知识图谱·rag·ai agent 上下文·token 成本
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 阿里云 OSS 对象存储介绍
java·阿里云·交友
Yyyyyy~2 小时前
【Maven】基础
java·maven
weixin_BYSJ19872 小时前
【计算机毕设】基于Spring_Boot_Vue的马拉松报名与选手成绩追踪系统05445
java·vue.js·spring boot·学习·spring·django·课程设计
艾莉丝努力练剑2 小时前
【AI大模型接入SDK】ChatServer HTTP接口模块实现总览
网络·c++·人工智能·网络协议·学习·http·架构