首页/网络/协议速查/TCP 传输控制协议总览
TCP 与 UDP54 条

TCP 传输控制协议总览

互联网最常用的传输层协议:在不可靠的 IP 之上提供面向连接、可靠有序的字节流,自带流量控制与拥塞控制。

协议速查网络更新于 2026-10-13

TCP 是什么

TCP 是互联网上最常用的传输层协议:它在不可靠的网络层之上提供面向连接、可靠有序的字节流,内置流量控制与拥塞控制。绝大多数应用协议都跑在它上面——网页访问、远程登录、数据库连接、消息队列。理解它的关键是记住两点:它保证的是字节流可靠有序,但不保留消息边界;它的可靠性来自确认、重传与序号机制,而不是来自网络本身。

基本信息

定位传输层,承载绝大多数应用协议
核心特性面向连接、可靠有序、字节流、全双工
控制机制流量控制(接收窗口)与拥塞控制(拥塞窗口)
报文头固定 20 字节,最多再加 40 字节选项
连接标识由双方地址与端口组成的四元组唯一确定

典型使用场景

  • 网页与接口访问:需要可靠有序传输的业务数据
  • 文件传输与远程登录:不允许丢字节的场景
  • 数据库与中间件连接:长连接承载大量小请求
  • 服务之间的调用:多数内部通信框架建立在它之上
  • 需要精细排查网络问题时的抓包分析对象

看本机连接情况

看本机连接情况
ss -s   # 全局统计,各状态连接数量一目了然
ss -tnp | head -20   # 当前连接与所属进程
ss -lntp   # 只看监听端口,确认服务是否在听
cat /proc/net/sockstat   # 内核视角的套接字统计,适合写监控采集

关键机制速览

机制作用出问题时表现
序号与确认保证数据不丢不乱重传增多,延迟上升
接收窗口防止发送方压垮接收方接收缓冲不足时发送方降速
拥塞窗口防止压垮中间网络丢包后降速,吞吐出现锯齿
超时重传兜底恢复丢失的数据退化重传会显著拖慢传输

调优与排查要点

  • 先看连接状态分布,再谈参数调整:大量等待关闭的连接通常与应用行为有关
  • 抓包要同时看双方,单向抓包很容易得出错误结论
  • 关注重传率而不是只看吞吐:重传高说明链路质量或缓冲配置有问题
  • 长连接能显著降低建立开销,但需要配套心跳与空闲回收策略
「可靠」不等于「一定送达」:连接中断、对端进程退出都会表现为超时或复位,应用层必须自己处理超时、重试与幂等,传输层不会替你做业务级别的保证。
TCP 保证字节流可靠有序,但不保留消息边界:一次接收可能拿到半个消息或两个半消息,应用层协议必须自己定义长度前缀或分隔符来定帧,否则会出现难以复现的解析错乱。

与数据报协议的区别

对比项面向连接协议数据报协议
连接需要先建立无连接,直接发送
可靠性确认重传保证可靠不保证,由应用兜底
消息边界不保留,需要应用定帧保留,一次对应一个报文
头部开销较大很小
适用需要可靠的业务数据实时音视频、短查询、可重试场景

部署与运维要点

  • 服务端监听端口要允许地址复用,减少重启时的端口占用报错
  • 长连接配心跳与空闲回收,避免中间设备静默断开后连接假死
  • 关注重传率与建连失败率,比只看吞吐更能提前发现链路劣化
  • 连接数与文件描述符上限要一起评估,描述符先满时新连接直接失败

易错点

  • 把可靠传输当成消息边界保证,应用层不做定帧,导致粘包与拆包问题
  • 只用单向抓包定位问题,忽略了反方向的重传与复位
  • 把等待关闭状态堆积当成内核参数问题,实际是应用没有及时关闭连接
  • 长连接不做心跳与空闲回收,中间设备静默丢弃后连接变成假死

数据来源与参考

  • RFC 9293(TCP 现行标准,替代 RFC 793)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌