news 2026/10/18 14:44:06

TCP/IP 协议栈与 HTTP 协议原理:从分层模型到报文传输全过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TCP/IP 协议栈与 HTTP 协议原理:从分层模型到报文传输全过程

网络通信是 Web 接口开发的底层基础。本文讲解 TCP/IP 四层协议栈分层职责,数据包封装和解封装流程;深入讲解 HTTP 协议请求报文、响应报文、HTTP 方法、状态码、无状态特性;对比 HTTP/1.1、HTTP/2、HTTP/3;HTTPS 加密原理,附带面试高频问题,适合后端开发夯实网络基础。

前言

所有 Web 接口、REST 接口、SSE 推送,底层全部依赖 TCP/IP 协议栈,HTTP 是构建在 TCP 之上的应用层协议。后端开发调试接口、排查超时、连接异常、跨域问题,都需要理解这套底层网络模型。很多开发只会调用接口,但不清楚数据包从客户端发出,经过多层封装,到达服务端的完整流转过程。

OSI 七层模型是理论参考模型;TCP/IP 四层模型是互联网真实使用的标准。

一、TCP/IP 四层协议栈分层详解

从上层到下层:应用层 → 传输层 → 网络层 → 网络接口层

表格

分层包含协议核心职责
应用层HTTP、HTTPS、DNS、FTP面向应用程序,定义业务数据格式。HTTP 就是应用层协议,规定请求响应报文格式
传输层TCP、UDP端到端进程通信,端口寻址。TCP 可靠传输;UDP 无连接不可靠
网络层IP、ICMP、ARP主机寻址,IP 地址,路由选择,跨网络转发数据包
网络接口层以太网、WiFi物理传输,比特流,封装帧,网卡传输

数据包封装(发送端:从上往下层层打包)

  1. 应用层:HTTP 生成请求报文(请求行、请求头、请求体);
  2. 传输层 TCP:增加 TCP 头部(源端口、目标端口、序列号、确认号),封装 TCP 段;
  3. 网络层 IP:增加 IP 头部(源 IP、目标 IP),封装 IP 数据包;
  4. 网络接口层:封装帧头帧尾,转为比特流,网卡发送出去。

接收端解封装(自下向上解析):逐层剥离头部,最终把 HTTP 报文交给应用程序。

TCP 核心特性(HTTP 默认基于 TCP)

TCP:面向连接、可靠传输、三次握手、四次挥手、流量控制、拥塞控制。

  1. 三次握手:建立连接。客户端 SYN → 服务端 SYN+ACK → 客户端 ACK;
  2. 四次挥手:断开连接。双方分别关闭读写通道;
  3. 可靠:序列号 + 确认应答、超时重传,保证数据不丢、不乱序;
  4. 全双工:双方可以同时收发。

UDP:无连接,没有握手,开销小,不可靠。DNS、直播使用 UDP。HTTP 默认 TCP;HTTP/3 使用 QUIC(基于 UDP)。

二、HTTP 协议原理

HTTP(HyperText Transfer Protocol,超文本传输协议),应用层协议,基于 TCP,客户端 - 服务端请求响应模型,无状态协议。

无状态:协议本身不记住上一次请求信息;服务端无法识别两次请求是不是同一个用户。解决方案:Cookie、Session、Token。

1. HTTP 请求报文结构

  1. 请求行:方法 URL HTTP版本例:GET /api/users HTTP/1.1
  2. 请求头(Request Headers):大量 K-V,Host、User-Agent、Content-Type、Cookie、Authorization 等
  3. 空行(必须):分隔请求头和请求体
  4. 请求体 Body:POST/PUT 携带 JSON / 表单数据;GET 一般没有请求体

2. HTTP 响应报文结构

  1. 状态行:HTTP版本 状态码 描述例:HTTP/1.1 200 OK
  2. 响应头:Content-Type、Content-Length、Set-Cookie、Cache-Control
  3. 空行
  4. 响应体:返回 JSON、HTML、文本等业务数据

3. 常用 HTTP 方法

  • GET:获取资源,安全、幂等,参数放 URL
  • POST:新建资源,非幂等,请求体传参
  • PUT:全量更新资源,幂等
  • PATCH:局部更新资源
  • DELETE:删除资源,幂等

安全:操作不会修改服务端资源;幂等:多次执行结果和执行一次完全一致。

4. HTTP 状态码分类

  • 2xx 成功:200 OK;201 Created 创建成功;204 No Content 删除成功无返回体
  • 3xx 重定向:301 永久重定向;302 临时重定向;304 Not Modified 缓存命中
  • 4xx 客户端错误:400 参数错误;401 未认证;403 权限不足;404 资源不存在;405 方法不允许;422 参数校验失败
  • 5xx 服务端错误:500 服务内部异常;502 网关错误;503 服务不可用

5. HTTP 版本演进

  • HTTP/1.0:短连接,每次请求新建 TCP 连接;
  • HTTP/1.1:默认长连接 keep-alive,管线化,支持分块传输,目前最广泛;
  • HTTP/2:二进制帧、多路复用、头部压缩、服务端推送;仍基于 TCP;
  • HTTP/3:QUIC 协议,基于 UDP,解决 TCP 队头阻塞,低延迟。

HTTPS

HTTP+TLS。TCP 三次握手之后,先进行 TLS 握手加密,再传输 HTTP 明文。

  • 作用:传输加密、身份认证、防篡改;
  • 默认端口 443;HTTP 默认 80。

三、HTTP 通信完整流程示例

访问https://xxx.com/api/users

  1. DNS 解析域名 → 拿到服务器 IP;
  2. TCP 三次握手,建立客户端和服务器 TCP 连接;
  3. TLS 握手,协商加密套件,生成会话密钥;
  4. 客户端构造 HTTP 请求报文,加密后发送;
  5. 服务端解密,解析 HTTP 报文,执行业务逻辑;
  6. 构造 HTTP 响应报文,加密返回;
  7. 客户端解密,解析响应;
  8. 空闲超时或者主动断开,TCP 四次挥手释放连接。

四、高频面试题

Q1:TCP 和 UDP 区别?HTTP 基于哪个? A:TCP 面向连接、可靠,三次握手四次挥手;UDP 无连接不可靠。HTTP/1.1、HTTP/2 底层 TCP;HTTP/3 使用 QUIC 基于 UDP。

Q2:HTTP 无状态是什么意思?如何解决无状态? A:协议本身不保存客户端状态。使用 Cookie、Session、Token 维持会话。

Q3:GET 和 POST 区别? A:GET 用于查询,参数拼接 URL,无请求体;POST 新建资源,数据放请求体。GET 安全幂等,POST 非幂等。

Q4:Keep-Alive 作用? A:HTTP 长连接,一次 TCP 连接可以连续多次 HTTP 请求,不用反复握手,提升性能。

结语

TCP/IP 是底层传输骨架,HTTP 是应用层规范。掌握分层封装、TCP 可靠传输、HTTP 报文结构,是理解 REST 接口、SSE 推送、接口超时、网络异常的基础。后续 RESTful、SSE 都是建立在 HTTP 协议之上。

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

编程农场通关代码:BFS寻路、状态机与步数优化实战解析

简介:编程农场通关代码是一份面向编程游戏爱好者与算法初学者的项目源码,用来解决农场自动化管理与迷宫寻宝两类核心玩法,帮助玩家快速通关并理解编程在游戏中的落地方式。压缩包共4个文件,包含Python主脚本、inscode配置、HTML说…

作者头像 李华
网站建设 2026/10/18 14:41:05

餐饮扫码点单方案选型:单店、连锁、堂食、外卖四类场景的能力差异

扫码点单方案的能力差异,主要体现在四类场景:单店堂食、连锁门店、外卖接单与到店自提。本文以收钱吧、美团收银、客如云、二维火为样本,按点单链路、菜单管理、跨店归集、上线验收四个维度对照,给出分场景的选型参考。评测声明&a…

作者头像 李华
网站建设 2026/10/18 14:41:04

Vibe Coding 是什么?从 Cursor Base URL 改到 TaoToken 的配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/18 14:38:59

or-tools人员排班建模实战:CP-SAT求解器与JavaAPI实现

简介:面向Java开发者与运筹优化初学者的OR-Tools人员排班建模求解示例包,聚焦IT行业常见的调度与资源配置难点。资源通过Java API,将员工技能匹配、工作时长上限、连续工作日之间至少休息一天等实际约束转化为整数规划模型,并调用…

作者头像 李华
网站建设 2026/10/18 14:37:53

大模型辅助论文写作:5天完成高质量初稿的实操流程

先说一个我见过很多次的场景:拿到大模型之后,第一反应是让它直接“帮我写一段正文”,结果生成的内容看起来像模像样,放回论文里全是正确的废话。另一批人又走到另一个极端,坚持全部手写,AI只用来查文献&…

作者头像 李华
网站建设 2026/10/18 14:35:26

IEEE14节点潮流计算MATLAB工程实现与避坑指南

简介:本资源是一份面向电气工程专业本科生及电力系统初学者的MATLAB实践教学文档,聚焦电力系统最核心的潮流计算问题,解决从理论建模到编程实现的关键落地难点。文档完整阐述牛顿-拉夫逊法(直角坐标形式)的原理、节点导…

作者头像 李华