面试官:TCP是如何保证可靠传输的🙉🙉🙉

TCP 是一种面向连接的传输协议,它在网络通信中提供了可靠的数据传输。TCP 通过一系列机制来确保数据的可靠性和顺序性,以确保数据在发送和接收之间的正确传输。

以下是 TCP 保证可靠传输的主要机制:

序列号和确认

每个 TCP 段都有一个 32 位的序列号。这个序列号会在数据段中进行编码,接收方使用这些序列号来确保数据的正确顺序。如果数据包乱序到达,接收方会将它们重新排序。

确认号是期望接收到的下一个字节的序列号。接收方会在确认中发送这个确认号,告诉发送方它期望接收到哪个序列号的数据。

超时和定时器

发送方启动定时器,在数据发送后计时。如果在超时时间内未收到确认,发送方会认为数据可能丢失,会触发重传。

超时时间通常根据过去的往返时间(RTT)和拥塞情况动态调整。较长的 RTT 或拥塞可能导致较长的超时时间。

流量控制

接收方会在 TCP 头部的窗口字段中指定自己的可用缓冲区大小。发送方会根据这个窗口大小来控制发送速率,确保不会发送太多数据导致接收方缓冲区溢出。

这个窗口大小可以动态地调整,以适应接收方的缓冲区状态和网络拥塞情况。

拥塞控制

拥塞控制是 TCP 保持网络稳定的关键机制。发送方根据网络拥塞的程度来调整发送速率,避免过多的数据拥塞网络。

TCP 使用慢启动、拥塞避免和快速恢复等算法来调整发送速率和拥塞窗口大小,以平衡网络负载和性能。

选择性重传

如果接收方发现缺失的数据段,它可以向发送方请求重传。发送方会重新发送丢失的数据段,而不是整个数据流。

接收方使用累积确认,表明它已经收到了截至到哪个序列号的数据,发送方会据此判断需要重传哪些数据段。

连接管理

连接的建立使用三次握手,其中包括发送方和接收方之间的序列号初始化和对彼此的确认。

连接的关闭使用四次挥手,包括双方交换 FIN(结束)标志,确认关闭请求,并最终关闭连接。

总结

通过这些机制,TCP 能够在不可靠的 IP 网络上提供可靠的数据传输。它适用于需要确保数据准确性和顺序性的应用,如文件传输、电子邮件和网页浏览。然而,由于 TCP 的一些机制(如确认和重传)可能引入一定的延迟,对于某些实时性要求较高的应用,如实时音视频传输,可能会选择使用 UDP 等其他协议。

最后分享两个我的两个开源项目,它们分别是:

这两个项目都会一直维护的,如果你也喜欢,欢迎 star 🥰🥰🥰

相关推荐
森蓝情丶35 分钟前
我给 AI 搭了个法庭:一个前端仔的 LangGraph 实战全记录
前端·后端
JensCS猿38 分钟前
从 Spring Boot 回看 SSM 框架:手动挡与自动挡的驾驶哲学
后端
爱勇宝38 分钟前
干了近 8 年,一夜之间被裁:AI 时代,程序员最该害怕的不是 AI
前端·后端·程序员
科米米1 小时前
嵌入式日志模块
后端
Pedantic1 小时前
Combine 框架学习笔记
前端
runnerdancer1 小时前
Agent如何加载执行Skill的脚本
前端·agent
血小溅1 小时前
三大 AI 编码框架深度对比:GSD vs OpenSpec vs Superpowers
人工智能·后端
yingyima1 小时前
VS Code 正则替换技巧:从凌晨3点的服务器报警开始
前端
ThanksGive1 小时前
层级时间轮看门狗
后端
默_笙1 小时前
🛬 我让 AI 帮我写了一个打飞机游戏,结果 Canvas 把我整不会了
前端·javascript