news 2026/10/17 8:45:35

深入理解 TCP:从三次握手到滑动窗口的底层逻辑与实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入理解 TCP:从三次握手到滑动窗口的底层逻辑与实战

在网络编程中,我们经常直接调用send()和recv(),却很少关注底层发生了什么。其实,传输层协议(TCP)为了保证数据的可靠性,在后台做了大量复杂的工作:从建立连接时的“三次握手”,到通信过程中的“滑动窗口”流量控制。

本文将结合课堂笔记,带你拆解 TCP 协议头结构,并通过代码实战观察 TCP 通信流程。


一、 TCP 协议头:数据的“护照”

每一个 TCP 数据块(Segment)都包含一个复杂的首部。根据笔记,关键字段如下:

  1. 端口号(Source/Dest Port):各占 2 字节,决定数据交给哪个进程。
  2. 序号(Sequence Number):32位随机数,用于解决网络包乱序问题。
  3. 确认序号(Acknowledgment Number):即小写的ack,告诉对方下一次该从哪个字节开始发。
  4. 标志位:如大写的ACK(确认)、SYN(同步)、FIN(终止)。
  5. 窗口大小(Window Size):16位,这是滑动窗口机制的核心,表示接收端还能收多少数据。
  6. 校验和(Checksum):用于检测数据在传输中是否损坏,UDP 也极度依赖此项。

二、 连接的生命周期:三次握手与四次挥手

1. 三次握手(建立连接)

  • 服务器端:调用listen()进入监听状态。
  • 客户端:调用connect()发起连接。
  • 过程:客户端发送 SYN,服务端回传 SYN+ACK,客户端再回 ACK。当connect()返回成功时,三次握手即告完成。

2. 四次挥手(断开连接)

这是连接释放的过程,确保双方都已停止发送并关闭缓冲区。


三、 滑动窗口:自动化的流量控制

滑动窗口是 TCP 最精妙的设计之一。

  • 位置:它存在于 TCP 协议头中,而不是应用层(如 HTTP 头)。
  • 透明性:开发者只需关注应用层数据(如 “hello”),传输层会自动封装窗口大小信息。
  • 作用:如果接收方处理慢,窗口会变小;处理快,窗口变大。这避免了发送方速度过快导致接收方缓冲区溢出。

四、 代码实战:Socket 通信流程演示

在 Python 中,当我们指定type=socket.SOCK_STREAM时,系统就默认启用了 TCP 协议。

1. 服务端代码 (tcp_server.py)

服务端通过listen()启动监听,等待三次握手。

importsocketdefstart_server():# 1. 创建 Socket (SOCK_STREAM 表示使用 TCP)server_sock=socket.socket
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 9:49:39

Z-Image-Turbo降本实战:16GB显存卡高效运行,成本省60%案例

Z-Image-Turbo降本实战:16GB显存卡高效运行,成本省60%案例 Z-Image-Turbo是阿里巴巴通义实验室开源的高效AI图像生成模型,作为Z-Image的蒸馏版本,它在保持高质量输出的同时大幅降低了计算资源需求。该模型仅需8步即可完成图像生成…

作者头像 李华
网站建设 2026/10/8 21:04:33

AI语义理解新趋势:Qwen3 Embedding模型开源部署实战解析

AI语义理解新趋势:Qwen3 Embedding模型开源部署实战解析 1. Qwen3-Embedding-0.6B 模型特性与应用场景 1.1 多语言、长文本与高精度嵌入能力 Qwen3 Embedding 模型系列是 Qwen 家族中专为文本嵌入(Text Embedding)和排序任务打造的最新成员…

作者头像 李华
网站建设 2026/10/6 20:33:56

Visual C++运行环境全修复:告别软件启动障碍的终极方案

Visual C运行环境全修复:告别软件启动障碍的终极方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 当您双击某个程序图标却毫无反应,或…

作者头像 李华
网站建设 2026/10/11 16:10:19

终极SQL美化方案:3分钟掌握专业级代码格式化技巧

终极SQL美化方案:3分钟掌握专业级代码格式化技巧 【免费下载链接】sql-beautify VS Code extension that beautifies SQL(HQL). 项目地址: https://gitcode.com/gh_mirrors/sq/sql-beautify SQL Beautify是一款专为Visual Studio Code设计的智能代码格式化工…

作者头像 李华
网站建设 2026/10/16 14:20:49

番茄小说下载器终极指南:5分钟快速掌握批量下载技巧

番茄小说下载器终极指南:5分钟快速掌握批量下载技巧 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 想要将喜欢的番茄小说保存到本地,随时随地离线阅读吗&#xff1…

作者头像 李华
网站建设 2026/10/14 15:29:00

5分钟部署gpt-oss-20b,WEBUI镜像让本地大模型一键启动

5分钟部署gpt-oss-20b,WEBUI镜像让本地大模型一键启动 1. 快速上手:从零到推理只需5分钟 你是否也想在自己的设备上运行OpenAI最新开源的gpt-oss-20b?不用再等待API配额、也不用担心数据隐私。现在,借助预置的gpt-oss-20b-WEBUI…

作者头像 李华