TCP/IP协议

计算机与网络设备之间要实现通信,双方必须遵循统一的规则:如何定位通信目标、由谁发起连接、用什么格式传输数据、何时结束通信…… 不同硬件、不同操作系统之间的所有交互,都需要一套事先约定好的标准,这套规则就称为协议(Protocol)

TCP/IP 是互联网协议族的总称,并非单指 TCP 和 IP 两个协议,而是包含 TCP、UDP、IP、HTTP、FTP、ICMP、DNS、SMTP 等一系列协议的完整体系,是整个互联网通信的基础。

TCP/IP 采用四层分层模型,每层各司其职:

应用层:直接面向用户和应用程序,提供具体的网络服务,典型协议有 HTTP、FTP、DNS、SMTP 等。
传输层:负责端到端的数据传输控制,对数据进行分段、封装与重组,核心协议为 TCP 和 UDP。
网络层:负责路由选择与寻址,将数据包从源主机送达目标主机,核心协议为 IP、ICMP、ARP。
链路层(网络接口层):负责物理网络上的数据帧封装与传输,处理硬件地址寻址和比特流收发。

然而TCP/IP 中有两个具有代表性的传输层协议----TCP 和 UDP

TCP

两台计算机进行通信时,数据传输必须保证完整、有序、不丢失,才能确保收发内容准确无误。

比如浏览网页、收发邮件时,我们希望内容按顺序完整呈现,不能缺字少页;下载文件时,更需要拿到完整的文件,而不是残缺的片段 —— 一旦数据丢失或顺序错乱,结果都无法使用。TCP 协议正是为解决这一问题而设计的,它提供可靠的端到端数据传输,保证数据按序、完整地送达目的地。

TCP(Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的传输层协议,是互联网数据传输的核心基石之一。

核心特点

1. 面向连接

通信前必须通过三次握手建立连接,确认双方收发能力正常后才开始传输数据;传输结束后通过四次挥手有序断开,确保连接生命周期完整可控。

第一次握手:客户端 → 服务端(SYN)

客户端向服务端发送连接请求报文段(SYN),报文中携带客户端的初始序列号 ISN(Client)。发送完成后,客户端进入 SYN-SENT 状态。

作用:

  • 客户端向服务端表明 "我想建立连接";
  • 同步客户端的初始序列号,供后续数据传输编号使用;
  • 验证服务端是否在线、能否接收数据。

第二次握手:服务端 → 客户端(SYN + ACK)

服务端收到连接请求后,若同意连接,则回复确认应答报文(SYN + ACK)

  • ACK 确认号 = 客户端 ISN + 1,表示已收到客户端的 SYN;
  • 同时携带服务端自身的初始序列号 ISN(Server)

发送完成后,服务端进入 SYN-RECEIVED 状态。

第三次握手:客户端 → 服务端(ACK)

客户端收到服务端的同意应答后,再向服务端发送确认报文(ACK),确认号 = 服务端 ISN + 1。发送完成后,客户端进入 ESTABLISHED 状态;服务端收到该 ACK 后,也进入 ESTABLISHED 状态,连接正式建立。

作用:

  • 告诉服务端 "你的应答我收到了";
  • 确认双方的发送、接收能力均正常,双向通道畅通;
  • 防止历史失效的连接请求误建连接(迟到的旧 SYN 到达服务端时,第三次握手能甄别并丢弃)。

三次握手的本质是双向确认双方收发能力,同时同步各自的初始序列号,为后续可靠传输打好基础。两次握手只能确认单向通路正常,无法验证客户端的接收能力,也无法抵御过期连接请求的干扰。

2. 可靠交付

TCP 通过一套完整机制保证数据不丢、不乱、不重复:

  • 序列号 + 确认应答(ACK):每个字节都有编号,接收方回复确认,发送方据此判断数据是否成功送达;
  • 超时重传:发出的数据段启动计时器,超时未收到确认则自动重发;
  • 乱序重排 + 去重:接收端按序列号整理数据,乱序的缓存等待补齐,重复的直接丢弃。

3. 流量控制与拥塞控制

  • 滑动窗口:接收方告知自身剩余缓存大小,发送方据此控制发送速率,避免接收端溢出;
  • 拥塞控制:通过慢启动、拥塞避免、快重传、快恢复等算法动态调整发送速度,防止网络过载。

TCP特点:

1. 面向连接

发送数据前,两端必须先通过三次握手建立可靠连接,确认双方收发能力正常后再开始传输。连接的建立是数据可靠传输的前提和基础

2. 仅支持单播传输

每条 TCP 连接有且仅有两个端点,只能进行点对点一对一传输,不支持多播和广播。

3. 面向字节流

TCP 不保留应用层报文边界,数据以连续的字节流形式传输;而 UDP 则是面向报文的,每个报文独立发送、独立接收。

4. 可靠传输

TCP 通过序列号 + 确认号 + 超时重传三重机制保障可靠性:

  • 每个字节都分配唯一序号,确保接收端按序交付;
  • 接收端对已收到的数据回复 ACK 确认;
  • 发送端若在合理往返时延(RTT)内未收到确认,则判定数据丢失并自动重传。

典型应用场景

HTTP/HTTPS 网页浏览、文件下载、邮件收发、远程登录 SSH 等对数据完整性要求高的场景,底层均基于 TCP 传输

一句话总结:TCP 像 "打电话"—— 先接通再说话,说的每一句对方都要回应,没听清就重说,确保信息完整准确地传达到位

UDP

UDP(User Datagram Protocol,用户数据报协议) 是一种无连接的传输层协议,与 TCP 同处 OSI 模型第四层,位于 IP 协议之上,同样用于处理网络数据包的传输。

与 TCP 不同,UDP 不提供分组组装、顺序控制、确认应答和重传机制 —— 报文发出后,无法得知对方是否收到、数据是否完整到达,因此不保证可靠交付。

它有以下几个特点:

1. 无连接

发送数据前不需要建立连接,直接发包即可,也没有断开连接的过程。启动快、开销小,想发就发。

2. 不可靠交付

没有确认应答(ACK)、没有超时重传、没有序列号排序:

  • 发出去的包丢了就丢了,发送方不会重发;
  • 数据包到达顺序乱了,UDP 也不会整理,直接交给应用层;
  • 不保证数据一定完整送达。

3. 面向报文

对应用层交下来的报文,直接封装成 UDP 报文段后下发,保留报文边界—— 发几次就是几个包,不会合并也不会拆分。(对比 TCP 是面向字节流,没有边界)

4. 支持多种通信方式

TCP 只能一对一单播,而 UDP 支持:

  • 单播:一对一
  • 多播(组播):一对多
  • 广播:一对全体

5. 头部开销小

UDP 首部仅 8 字节(源端口、目的端口、长度、校验和),而 TCP 首部最少 20 字节。UDP 额外负担极小,传输效率高。

6. 没有拥塞控制和流量控制

发送速率完全由应用层决定,不管网络堵不堵、对方收不收得下,该发多少就发多少。网络拥塞时不会主动降速。

UDP 像 "寄明信片":写好直接投,不用提前打招呼,也不管对方收没收到、有没有损坏,但速度快、成本低、形式灵活。

TCP UDP
是否连接 面向连接 无连接
是否可靠 可靠传输,不使用流量传输和拥塞控制 不可靠传输,不使用流量传输和拥塞控制
连接对象个数 只能一对一 支持一对一,一对多,多对一,多对多交互通信
传输方式 面向字节流 面向报文
首部开销 首部最小20字节,最大60字节 首部开支小,只有8字节
适用场景 适用于要求可靠传输 适用于实时应用

总结

  • TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。
  • 虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为
  • 对数据准确性要求高,速度可以相对较慢的,可以选用TCP

HTTP和HTTPS

HTTP(超文本传输协议)与 HTTPS(超文本传输安全协议)作为应用层核心协议,基于 TCP/IP 协议栈构建,是浏览器等客户端与服务器之间实现数据通信的基础架构。

一、HTTP(超文本传输协议)

HTTP(HyperText Transfer Protocol,超文本传输协议) 是一种无状态的应用层协议,用于在客户端与服务器之间传输超文本资源(如 HTML 文档、图片、接口数据等)。它定义了客户端如何发起资源请求、服务器如何返回响应,是万维网数据通信的基础。


1. 核心工作流程

HTTP 基于 TCP/IP 协议栈构建,采用经典的请求 - 响应模型,完整流程分为四个阶段:

  1. 连接建立:客户端通过 DNS 解析获取服务器 IP,与服务端完成 TCP 三次握手,建立可靠传输通道。
  2. 请求发送:客户端构造 HTTP 请求报文,由请求行、请求头、空行、请求体四部分组成。
  3. 服务端处理:服务器解析请求、定位资源、执行业务逻辑,生成响应报文返回。
  4. 连接关闭:HTTP/1.0 默认短连接(请求完即断开);HTTP/1.1 起默认支持持久连接(Keep-Alive),可复用 TCP 连接发送多次请求。

2. 协议作用

  • 请求与响应:客户端(浏览器、APP 等)通过 HTTP 请求获取网页、图片、接口等资源,服务端通过 HTTP 响应返回数据。
  • 简单灵活:协议格式简洁,支持 GET、POST、PUT、DELETE 等多种请求方法,可传输任意类型的数据。
  • 缓存机制:内置缓存策略,可大幅减少重复请求,降低网络流量、提升响应速度。

3. 核心特性

  • 无状态:每个请求相互独立,服务器默认不保存客户端上下文;通过 Cookie / Session 机制实现状态保持。
  • 明文传输:请求与响应以 ASCII 文本形式传输,可被抓包工具直接读取,存在安全隐患。
  • 可扩展:支持自定义请求头(如 X-Forwarded-For),方便扩展业务能力。
  • 多级缓存:通过 Cache-ControlETagLast-Modified 等头部字段实现协商缓存与强制缓存策略。

二、HTTPS(超文本传输安全协议)

HTTPS 是 HTTP 的安全版本,在 HTTP 的基础上加入 SSL/TLS 层来 提供数据加密 和 身份验证功能 ,即 HTTPS = HTTP + SSL/TLS 。

1. HTTPS 协议作用

HTTPS(HyperText Transfer Protocol Secure,超文本传输安全协议) 是在 HTTP 基础上加入 SSL/TLS 安全层的加密传输协议,核心解决 HTTP 明文传输的安全隐患:

  • 数据加密:传输全程加密,防止数据被中途窃取、窃听;
  • 身份验证:通过数字证书验证服务器真实身份,防止中间人伪装攻击;
  • 完整性校验:数据一旦被篡改可立即识别,确保内容完整可信;
  • 隐私保护:密码、银行卡号、个人信息等敏感数据传输全程加密,不被泄露。

2. SSL/TLS 安全层

SSL/TLS 是位于 HTTP 与 TCP 之间的安全协议层。SSL(Secure Sockets Layer,安全套接字层) 是早期版本,其继任者 TLS(Transport Layer Security,传输层安全) 是当前主流标准,二者统称 SSL/TLS。

防护能力 实现方式
加密传输 对称加密(AES)+ 非对称加密(RSA/ECC)混合加密
身份认证 基于 X.509 数字证书的信任链验证
完整性校验 HMAC 消息认证码,检测数据是否被篡改
防重放攻击

序列号 + 随机数机制,保障数据新鲜

工作流程:两大阶段

① 握手阶段(协商密钥)

客户端与服务器通过多轮交互完成:

  • 协商加密算法与协议版本
  • 交换随机数与证书
  • 验证服务器身份
  • 协商并生成会话密钥(对称密钥)
② 数据传输阶段(加密通信)

握手完成后,双方使用协商好的会话密钥:

  • 发送方:用会话密钥加密业务数据 → 附加 HMAC 校验码 → 发出
  • 接收方:校验 HMAC 完整性 → 用同一会话密钥解密 → 交付上层应用

整个过程确保通信内容机密、完整、可信,在 HTTP 明文传输的基础上构建了完整的安全保障。

三、HTTP vs HTTPS 全面对比

1. 安全维度对比

表格

安全属性 HTTP HTTPS
数据加密 明文传输,抓包可直接读取 AES-256 对称加密,全程密文
身份验证 无,无法确认对方真伪 X.509 数字证书验证服务器身份
完整性保护 无,数据可被篡改不被察觉 HMAC-SHA256 校验,篡改即失效
防中间人攻击 完全不可防护 证书信任链可抵御中间人攻击
  • HTTP:数据以明文形式在网络中传输,任何经过的网络节点都能查看甚至篡改内容,不适合传输密码、银行卡号等敏感信息
  • HTTPS:通过 SSL/TLS 对数据加密并校验完整性,即使数据被截获也无法解密或篡改,有效抵御窃听、篡改、伪装三类攻击。

2. 其他维度对比

表格

对比项 HTTP HTTPS
URL 前缀 http:// 开头 https:// 开头
默认端口 80 443
证书要求 无需证书 必须部署有效的 SSL/TLS 证书
浏览器标识 地址栏无特殊标记,部分浏览器标 "不安全" 地址栏显示锁形图标,标注 "安全"
性能开销 无额外加密损耗 握手与加解密有少量计算开销

3. HTTPS 性能优化实践

HTTPS 的加密计算确实会带来一定开销,但通过以下优化手段,实际性能损耗可控制在 5% 以内,现代硬件下几乎无感知:

  • TLS 1.3 协议:简化握手流程,从 2-RTT 降至 1-RTT,甚至支持 0-RTT 恢复;
  • 会话恢复:通过 Session ID / Session Ticket 复用之前的加密参数,跳过完整握手;
  • OCSP Stapling:服务器主动附带证书状态,免去客户端单独查询 OCSP 的延迟;
  • HTTP/2 多路复用:头部压缩 + 单连接并发,减少连接数与传输数据量;
  • 硬件加速:支持 AES-NI 指令集的 CPU 可硬件级加速加密运算。

依赖关系

HTTP → TCP

  • HTTP 明文直接跑在 TCP 上,靠 TCP 的可靠传输保证请求响应不丢不乱
  • 公式:HTTP = 请求响应规则 + TCP 可靠传输

HTTPS → TLS → TCP

  • HTTPS 比 HTTP 多了一层 TLS 加密,先做 TLS 握手协商密钥,再传 HTTP 数据
  • 公式:HTTPS = HTTP + TLS 加密 + TCP 可靠传输

UDP 独立于 HTTP 体系外

  • HTTP / HTTPS 只基于 TCP,不使用 UDP
  • UDP 用于直播、语音通话、游戏、DNS 等对实时性要求高、可容忍少量丢包的场景

HTTP 和 HTTPS 是应用层的两套 "对话规则",都跑在 TCP 这条 "可靠管道" 上;HTTPS 比 HTTP 多套了一层 TLS 加密 "保险箱";UDP 是另一条 "快速但不保送达" 的管道,走的是另一类业务。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐