news 2026/4/16 18:02:16

深入理解 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/4/16 17:07:27

verl与Ray集成:分布式任务调度部署实战

verl与Ray集成:分布式任务调度部署实战 1. verl 介绍 verl 是一个灵活、高效且可用于生产环境的强化学习(RL)训练框架,专为大型语言模型(LLMs)的后训练设计。它由字节跳动火山引擎团队开源,是…

作者头像 李华
网站建设 2026/4/16 12:21:39

多次修复技巧:分区域逐步优化复杂场景

多次修复技巧:分区域逐步优化复杂场景 在图像修复任务中,面对复杂的场景或大面积需要处理的内容,一次性完成修复往往难以达到理想效果。尤其是在去除水印、移除物体、修复瑕疵等实际应用中,细节丰富、背景多变的图像对模型提出了…

作者头像 李华
网站建设 2026/4/16 13:03:56

轻量纯净的PyTorch环境,系统去冗余设计太赞了

轻量纯净的PyTorch环境,系统去冗余设计太赞了 1. 镜像核心优势:为什么选择这个PyTorch开发环境? 在深度学习项目中,一个稳定、高效、开箱即用的开发环境至关重要。但现实中,我们常常面临这样的困境: 手动…

作者头像 李华
网站建设 2026/4/16 12:57:43

零基础部署语音理解神器!用SenseVoiceSmall实现笑声、掌声自动标注

零基础部署语音理解神器!用SenseVoiceSmall实现笑声、掌声自动标注 你是否遇到过这样的场景:一段会议录音里突然爆发出一阵笑声,你想快速定位这个片段却只能靠反复试听?或者在剪辑视频时,想自动识别出观众鼓掌的时刻&…

作者头像 李华
网站建设 2026/4/15 22:50:42

SQL Beautify:终极免费SQL代码美化工具完全指南

SQL Beautify:终极免费SQL代码美化工具完全指南 【免费下载链接】sql-beautify VS Code extension that beautifies SQL(HQL). 项目地址: https://gitcode.com/gh_mirrors/sq/sql-beautify 还在为杂乱无章的SQL代码而烦恼吗?SQL Beautify是专为Vi…

作者头像 李华