TCP协议简介

发布时间:2026/7/25 19:23:39

TCP协议简介
前言在互联网世界中我们浏览网页、传输文件、微信聊天、下载资源绝大多数数据传输都依赖 TCP 协议。HTTP、HTTPS、WebSocket、MySQL、SSH 等上层应用协议底层全部构建在 TCP 之上。很多开发者学会 Socket 编码之后只懂得调用 send、recv却不了解 TCP 底层机制遇到粘包、连接断开、超时重传等问题时无从下手。本文用通俗易懂的方式讲解 TCP 核心原理结合开发场景说明实际意义。TCP 全称传输控制协议Transmission Control Protocol工作在 OSI 七层模型的传输层。一、TCP 的核心特性TCP 最重要的标签面向连接、可靠传输、有序、全双工、流量控制、拥塞控制。面向连接通信双方传输数据前必须先建立专属连接通信结束正常断开。不像 UDP发数据包不需要提前打招呼。可靠传输保证数据准确送达不会丢包、不会重复接收。依靠确认应答、重传机制实现。有序传输多个数据包到达对方时TCP 会根据序列号重新排序上层应用收到的数据和发送顺序保持一致。全双工通信连接建立后双方可以同时互相发送数据不需要轮流单向传输。类似打电话两边随时可以说话。基于字节流TCP 没有清晰数据包边界只看作一串连续字节流。这也是网络开发最常遇到TCP粘包的根本原因。对比记忆UDP 无连接、不可靠、面向报文TCP 面向连接、可靠、面向字节流。二、三次握手建立连接客户端想要和服务端通信首先执行三次握手建立 TCP 连接。目的确认双方发送能力、接收能力正常协商初始序列号。流程第一次握手客户端 → 服务端发送 SYN 报文。客户端请求建立连接。第二次握手服务端 → 客户端回复 SYN ACK。同意连接并确认收到客户端请求。第三次握手客户端 → 服务端回复 ACK。确认收到服务端应答连接正式建立。通俗理解客户端能听到我吗SYN服务端能听到你能听到我吗SYNACK客户端可以听到ACK连接建立完成双方即可开始传输业务数据。开发常见问题服务端listen()之后等待连接内核自动完成三次握手防火墙、端口未开放、路由不通都会导致握手失败客户端抛出连接超时 / 连接拒绝。三、四次挥手断开连接TCP 连接是双向通道关闭连接需要四次挥手任何一方都可以主动发起关闭。流程客户端主动关闭为例第一次挥手客户端发送 FIN表示客户端不再发送数据。第二次挥手服务端回复 ACK确认收到关闭请求。此时服务端依然可以继续向客户端发送剩余数据。第三次挥手当服务端数据全部发送完毕发送 FIN告诉客户端服务端也不再发数据。第四次挥手客户端回复 ACK双方通道彻底关闭。通俗理解客户端我说完了不再说话了FIN服务端收到我知道你不说了ACK服务端我这边数据也发完了我也不说了FIN客户端收到通话结束ACK⚠️ 关键点不能简化成三次。因为一方关闭发送通道后另一方可能还有残留数据需要传输。四、可靠性如何实现TCP 通过一系列机制保障数据不丢失序列号Sequence Number每一段字节分配序号用于排序、去重、确认。确认应答 ACK接收方收到数据后返回 ACK告诉发送方“哪些数据我收到了”。超时重传发送数据后启动计时器如果迟迟等不到 ACK自动重新发送报文解决丢包。重复报文去重收到重复数据包依靠序列号识别并丢弃副本。五、流量控制防止发送方发送速度太快接收方缓冲区塞满造成数据丢失。核心机制滑动窗口协议。接收方在 ACK 报文中通知发送方自己剩余缓冲区大小发送方严格控制发送量不能超过接收方处理上限。六、拥塞控制流量控制解决「发送方和接收方之间」速度匹配拥塞控制解决「整条网络链路」拥堵问题。如果网络路由器过载、大量丢包TCP 主动降低发送速率避免持续加剧网络拥堵。常见算法慢启动、拥塞避免、快重传、快恢复。七、TCP 开发避坑重点Socket 开发必看1. TCP 粘包TCP 是字节流没有数据包边界。多次发送的数据可能合并在一起被一次 recv 读到就是粘包。解决方案固定数据包长度使用分隔符分割数据包包头包体头部携带数据长度先读长度再读取对应字节数据2. 不要认为 send 成功代表对方收到数据send() 仅仅代表数据写入本机操作系统 TCP 缓冲区如果后续网络彻底断开缓冲区数据依然可能发送失败应用层无法直接感知。3. recv 返回空字节b代表 TCP 连接已经正常关闭对方执行四次挥手业务代码需要主动断开套接字。4. KeepaliveTCP保活长时间没有数据传输时开启 TCP Keepalive内核定时探测连接是否存活及时清理僵死连接。常用于内网穿透、长连接服务。八、TCP 适用场景✅ 适合文件传输、数据库访问、网页访问、即时通讯、远程登录要求数据完整不丢失。❌ 不适合直播、语音通话、游戏实时数据包这类场景允许少量丢包追求极低延迟一般选用 UDP。九、总结TCP 通过三次握手建立连接、四次挥手关闭连接依靠序列号、ACK应答、重传、滑动窗口实现可靠有序传输。所有上层网络应用协议都建立在 TCP 之上理解 TCP 原理才能真正看懂网络异常、解决 Socket 通信中的粘包、断线、超时等疑难问题。掌握 TCP 理论后再结合 Python Socket、Netty、Go net 等网络库编码就不再只是复制粘贴代码能够从底层理解每一个现象背后的原因。

相关新闻

工业园区人员设备巡更巡检管理系统开发

工业园区人员设备巡更巡检管理系统开发

2026/7/25 19:23:39

需求分析编辑:araolin(私域邦网络土土哥)工业园区巡更巡检管理系统需满足人员管理、设备巡检、路线规划、数据记录、异常报警等功能。重点包括:人员管理:巡更人员信息、权限分配、考勤记录。设备管理:巡检设…

2026年龙虾安装推荐:主流AI智能体工具横向对比与选型指南

2026年龙虾安装推荐:主流AI智能体工具横向对比与选型指南

2026/7/25 19:23:39

一、什么是"龙虾"类AI工具? "龙虾"是国内AI社区对OpenClaw框架及其衍生AI智能体工具的俗称。这类工具的核心特征是能够自主操控电脑、调用软件、执行多步骤任务,而非仅仅停留在文字对话层面。与普通的AI聊天工具不同,龙虾…

Python Socket入门学习

Python Socket入门学习

2026/7/25 19:23:39

前言 网络编程是后端开发、爬虫、内网穿透、即时通讯等场景的基础,而Socket就是实现网络通信最核心的接口。很多初学者刚接触网络编程时,会被TCP、UDP、IP、端口等概念搞得一头雾水。本篇从基础概念出发,使用原生Python标准库socket&#xff…

中国战略咨询公司前三推荐,撬动战略咨询实力上榜

中国战略咨询公司前三推荐,撬动战略咨询实力上榜

2026/7/25 20:23:42

2026年商业市场迎来多重变量,各赛道竞争激烈程度持续攀升,数字化升级浪潮与新消费赛道快速迭代同步推进,企业生存与扩张压力显著提升。在此背景下,具备落地能力、原创理论支撑的专业战略咨询机构,成为品牌突破增长天花…

WorkBuddy + 好提示词 = 生产力。43 个场景,复制就能用

WorkBuddy + 好提示词 = 生产力。43 个场景,复制就能用

2026/7/25 20:23:42

文章目录WorkBuddy 好提示词 生产力。43 个场景,复制就能用WorkBuddy 好提示词 生产力。43 个场景,复制就能用 办公、创作、自动化、数据分析 WorkBuddy 43 个场景一次给全 复制粘贴就够,不用背提示词,不用学参数 小白也能一次跑通不返工 最近花时间…

DistroAV OBS NDI插件完全指南:专业网络视频传输解决方案

DistroAV OBS NDI插件完全指南:专业网络视频传输解决方案

2026/7/25 20:23:42

DistroAV OBS NDI插件完全指南:专业网络视频传输解决方案 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi DistroAV OBS NDI插件是连接OBS Studio与NDI网络视频…

突破GitHub下载限制:3步实现10倍加速的终极解决方案

突破GitHub下载限制:3步实现10倍加速的终极解决方案

2026/7/25 20:23:42

突破GitHub下载限制:3步实现10倍加速的终极解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 如果你经常在国内访…

欧亚联盟EAC认证是什么

欧亚联盟EAC认证是什么

2026/7/25 20:23:42

欧亚联盟EAC认证完整解读 一、什么是 EAC 认证(CU-TR/TR CU) 基础定义 EAC 认证全称欧亚经济联盟符合性认证(CU-TR / ТР ТС / TR CU),是俄罗斯、哈萨克斯坦、白俄罗斯、吉尔吉斯斯坦、亚美尼亚五国统一强制市场准入…

Unity新手入门:从零安装到核心界面与脚本交互全解析

Unity新手入门:从零安装到核心界面与脚本交互全解析

2026/7/25 20:13:42

1. 项目概述:从爬虫到Unity,一次跨界学习的探索最近在学Python爬虫,第二天就有点“坐不住”了,想换个脑子,于是决定开个新坑,研究一下Unity。这听起来可能有点跳跃,一个是数据抓取,一…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/25 6:25:13

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/24 19:29:25

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/25 9:26:35

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

挑战一天速通Spring全家桶!

挑战一天速通Spring全家桶!

2026/7/25 0:02:22

不知道各位Java好大哥们闲的时候会不会去关注Spring目前的官网,你会发现他的slogan是: Spring makes Java Simple。它让Java的开发变得更加简单。某种意义上来说:是Spring成就了Java!但随之而来的就是:由他之后诞生出来的各种组件…

挑战一天速通Java高并发!

挑战一天速通Java高并发!

2026/7/25 0:02:22

有出去面试的朋友肯定深有感受,像我们刚入行那会面试的加分项现在卷得已经成为了面试的基础题(手动狗头)。其中最典型的就属这个Java并发编程了。之前一般只有大厂才会有高并发编程相关的面试内容,但现在只要你入了Java行业就会涉…

从暴雪到米哈游都在用的平衡性评估框架,深度拆解LSTM+胜率归因分析法(附开源工具链)

从暴雪到米哈游都在用的平衡性评估框架,深度拆解LSTM+胜率归因分析法(附开源工具链)

2026/7/25 0:02:22

更多请点击: https://kaifayun.com 第一章:AI 游戏平衡性分析 现代游戏开发中,AI 不再仅用于控制 NPC 行为,更被深度整合进游戏平衡性调优流程。通过强化学习与对抗性仿真,AI 可以在数百万局对局中自动识别数值失衡点…