当前位置: 首页 > java >正文

【计算机网络】TCP为什么可靠?解决了哪些问题?

TCP提供了:
1.可靠传输
2.流量控制
3.拥塞控制
4.连接管理

解决了数据在不可靠IP网络上的传输问题。

下面具体分析这4个方面。

1.可靠性传输:

TCP确保数据包在网络传输过程中 不丢失、不重复,并且按顺序到达。
通过确认(ACK)、重传机制以及序列号,TCP能够确保数据在不可靠IP网络上可靠传输。

2.流量控制:

TCP通过滑动窗口机制 调节发送方的数据发送速率。
防止接收方因为处理能力有限而被数据流淹没。

3.拥塞控制:

TCP通过拥塞避免算法(如慢启动、拥塞避免、快速重传和快速恢复)来防止网络过载。
确保网络资源的公平使用和稳定性。

4.连接管理

TCP是面向连接的协议。
采用三次握手(建立连接)和四次挥手(断开连接) 机制来管理会话。
确保通信的可靠性和状态的同步。

扩展Part

1.数据包重排序与重传机制:

TCP的序列号机制 确保数据包按照正确的顺序组装,接收方通过序列号识别数据包的顺序。
如果检测到丢失或乱序的包,会请求重传,保证数据完整性。

2.滑动窗口与流量控制:

滑动窗口用于动态调整可以发送的数据量。
接收方通过发送窗口大小通告,指示发送方可以发送的最大数据量。
这种机制不仅避免了接收方的溢出,还提高了数据传输效率。

3.拥塞控制算法:

TCP的拥塞控制算法是 核心的网络稳定性保证,经典算法包括以下几个步骤:

  • 慢启动逐步增加发送窗口,直到检测到网络的拥塞点。
  • 拥塞避免:当达到网络容量后,逐渐增加窗口以避免拥塞。
  • 快速重传和快速恢复:在检测到包丢失时立即进行重传并调整发送窗口,快速恢复正常传输状态。

4.TCP三次握手和四次挥手:

  • 三次握手:建立连接时,客户端和服务器通过三次信息交换(SYN,SYN-ACK,ACK)来确保双方都准备好进行数据传输,并协商参数(如初始序列号)
  • 四次挥手:断开连接时,通过四次消息交换来确保数据传输完成且资源可以安全释放,防止未传输的数据丢失。

三次握手:
请添加图片描述

四次挥手:
请添加图片描述

5.TCP的局限性:

虽然TCP解决了可靠传输的问题,但在高延迟、高带宽的网络(如卫星通信、现代数据中心)中可能会受到性能瓶颈。
进而催生了QUIC等新协议的出现。

带宽: 网络链路在单位时间内能传输的最大数据量,通常以 比特每秒(bps, bit/s) 为单位

TCP为什么可靠?

1.数据完整性:使用校验和确保数据在传输中没有被破坏。
2.数据顺序:保证数据按顺序到达接收方,且接收方能够重新排序乱序到达的数据。
3.流量控制:通过滑动窗口机制避免接收方溢出。
4.拥塞控制:通过动态调整发送速率避免网络拥塞。
5.重传机制:确保丢失的数据会被重新传输。
6.可靠的连接建立和关闭三次握手和四次挥手机制确保连接的正确建立和断开。
7.防止数据重复:通过序列号和确认机制防止重复数据的接收。

http://www.xdnf.cn/news/4313.html

相关文章:

  • 数字文明时代开源技术驱动的商业范式重构:基于开源AI大模型、AI智能名片与S2B2C商城小程序源码的协同创新研究
  • GD32F470+CH395Q
  • Odoo 开发:揭秘表单视图中“添加行”按钮的出现条件
  • Netty 是一个基于 Java NIO 的高性能网络通信框架
  • 基于SSM实现的健身房系统功能实现一
  • C++复习
  • Linux进程间通信(上)(21)
  • Unity学习笔记二
  • Java 8 非对称加密代码示例
  • cpp学习笔记2--class
  • STL详解 - map和set
  • tinyrenderer笔记(Shader)
  • OpenCV进阶操作:角点检测
  • WebGIS架构中,各部分承担的角色
  • MySQL 8.0 单节点部署与一主两从架构搭建实战
  • C++ 重载
  • 双口万兆光纤网卡:高性能网络的基石与应用展望
  • 端口安全基本配置
  • AI数据分析中的伪需求场景:现状、挑战与突破路径
  • 内存的位运算
  • 从设计到应用:大尺寸PCB打样的关键领域解析
  • CEF格式说明
  • 深入理解Python异步编程:从协程到高性能IO密集型应用
  • 基于【抖音弹幕抓取数据推送】——制作抖音消息分类查看界面
  • 消失的两个数字 --- 位运算
  • MySQL中的约束
  • 基于STM32、HAL库的SST26VF064B NOR FLASH存储器驱动应用程序设计
  • Python __new__ 一个特殊的静态方法
  • 理清缓存穿透、缓存击穿、缓存雪崩、缓存不一致的本质与解决方案
  • 依赖注入详解与案例(前端篇)