当前位置: 首页 > news >正文

网络基础核心笔记(HTTP、TCP、前后端通信)

一、HTTP 请求/响应完整流程(登录案例)

假设用户在登录页面输入:

手机号:13800138000 密码:123456

点击登录按钮。

前端 JavaScript 代码:

fetch("/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({telephone:"13800138000",password:"123456"})})

浏览器会自动构造 HTTP 请求:

POST /login HTTP/1.1 Host: localhost:8000 Content-Type: application/json { "telephone":"13800138000", "password":"123456" }

后端 Gin 路由:

GE.POST("/login",Login)

收到请求后:

funcLogin(c*gin.Context){varreq LoginReq c.ShouldBindJSON(&req)}

Gin 内部流程:

读取 Body ↓ 解析 JSON ↓ 根据 json 标签匹配字段 ↓ 填充结构体 ↓ 执行参数校验

得到:

req.Telephone req.Password

随后:

查询数据库 ↓ 验证账号密码 ↓ 生成 JWT ↓ 返回结果

返回:

c.JSON(200,gin.H{"token":token,"msg":"登录成功",})

响应:

{"token":"xxxxx","msg":"登录成功"}

前端收到响应:

constres=awaitfetch(...)constdata=awaitres.json()localStorage.setItem("token",data.token)

至此登录完成。

完整链路:

用户点击登录 ↓ 前端 fetch ↓ HTTP 请求 ↓ Gin 路由 ↓ ShouldBindJSON ↓ 数据库查询 ↓ 生成 JWT ↓ c.JSON 返回 ↓ 前端接收 JSON ↓ 保存 Token ↓ 页面跳转

二、HTTP 请求由什么组成

一个完整请求:

POST /login HTTP/1.1 Host: localhost:8000 Content-Type: application/json { "telephone":"13800138000", "password":"123456" }

分为四部分。

1. 请求方法(Method)

GET POST PUT DELETE

表示客户端想干什么。

例如:

GET 查询 POST 新增 PUT 修改 DELETE 删除

2. 请求路径(Path)

/login /user/info /todo/list

决定执行哪个接口。

例如:

r.POST("/login",Login)

请求:

/login

执行:

Login()

3. 请求头(Header)

例如:

Content-Type: application/json Authorization: Bearer xxxxx

作用:

说明数据格式 携带 Token 携带 Cookie 携带浏览器信息

4. 请求体(Body)

真正的数据。

{"telephone":"13800138000","password":"123456"}

Gin:

c.ShouldBindJSON(&req)

就是读取这里的数据。


三、HTTP 响应由什么组成

后端返回:

HTTP/1.1 200 OK Content-Type: application/json { "msg":"success" }

包含三部分。

1. 状态码

200 成功 400 参数错误 401 未登录 403 无权限 404 找不到资源 500 服务器异常

2. 响应头

Content-Type: application/json

告诉浏览器:

返回的是 JSON 数据

3. 响应体

{"msg":"success"}

真正返回的数据。


四、TCP 三次握手

HTTP 请求发送之前。

必须先建立 TCP 连接。

第一次握手

客户端发送:

SYN

意思:

我要建立连接

第二次握手

服务器回复:

SYN + ACK

意思:

我收到了 我也准备好了

第三次握手

客户端回复:

ACK

意思:

收到 开始通信

过程:

客户端 服务器 SYN ------------------> <-------------- SYN + ACK ACK ------------------>

连接建立成功。


为什么必须三次?

目的:

客户端确认: 服务器能收 服务器能发 服务器确认: 客户端能收 客户端能发

三次刚好。

两次不够。

四次浪费。


五、TCP 四次挥手

关闭连接时:

第一次挥手

客户端:

FIN

意思:

我没数据发了

第二次挥手

服务器:

ACK

意思:

收到 但我还有数据没发完

第三次挥手

服务器:

FIN

意思:

我也发完了

第四次挥手

客户端:

ACK

意思:

收到 连接关闭

过程:

客户端 服务器 FIN ------------------> <-------------- ACK <-------------- FIN ACK ------------------>

六、TCP 和 UDP 的区别

TCP

特点:

面向连接 可靠传输 保证顺序 保证不丢包

应用:

HTTP HTTPS MySQL Redis WebSocket

UDP

特点:

无连接 不保证到达 不保证顺序 速度快

应用:

视频直播 语音通话 在线游戏 实时音视频

对比:

特性TCPUDP
是否连接需要不需要
是否可靠
是否有序
速度较慢较快
应用HTTP、数据库直播、游戏

七、HTTP、TCP、IP 三者关系

很多人学到这里容易混。

实际上:

HTTP ↓ TCP ↓ IP

HTTP

负责:

规定数据格式

例如:

POST /login HTTP/1.1

属于 HTTP 协议。


TCP

负责:

可靠传输数据

保证:

不丢包 不重复 不乱序

IP

负责:

找到目标机器

例如:

192.168.1.100 8.8.8.8

这些都是 IP 地址。


快递类比

HTTP = 信件内容格式 TCP = 快递运输规则 IP = 收件地址

八、真实项目中的完整链路

以 Gin 项目为例:

用户 ↓ Vue 页面 ↓ Axios / Fetch ↓ HTTP 请求 ↓ TCP 三次握手 ↓ Gin 路由 ↓ ShouldBindJSON ↓ Service 业务层 ↓ GORM ↓ MySQL ↓ 返回 JSON ↓ 前端渲染页面

九、一句话总结

前端负责页面,后端负责数据。

用户点击按钮后,前端通过 HTTP 发送 JSON 数据,HTTP 底层通过 TCP 三次握手建立连接,再通过 IP 找到服务器。Gin 接收请求后解析 JSON、处理业务并返回响应,前端收到 JSON 后更新页面,这样就完成了一次完整的前后端通信。

前端 ↓ HTTP ↓ TCP ↓ Gin ↓ MySQL ↓ Gin ↓ HTTP ↓ 前端
http://www.zskr.cn/news/1458960.html

相关文章:

  • 当AI学会“操纵“训练过程:KAIST与MIT揭示大模型对齐的深层漏洞
  • 新手福音:用快马平台生成mcjscc网页版学习工具,零基础轻松入门前端开发
  • 终极指南:BetterJoy 完整解决方案,让Switch控制器在PC上完美工作
  • geo优化系统源码搭建保姆式搭建教程
  • 【AI历史学家养成指南】:20年档案专家亲授5大智能工具链,3天构建可验证的时空知识图谱
  • 从原理到代码:手把手带你玩转STM32F103的LL库看门狗,附超时时间计算器
  • 2026年想选专业靠谱的赣州家具?这份实用挑选攻略帮你少走弯路
  • Poppler for Windows:Windows平台PDF处理终极指南
  • PHP配置即代码与基础设施管理
  • 新能源汽车智驾系统用户使用指南:从认知到精通的科学实践
  • FANUC数控机床数据采集实战:用C++和FwLib32.dll搞定生产计数、主轴倍率(附完整代码)
  • 在 Rust 中从头开始训练 LLM
  • 工业吸尘器品牌选择要点:从性能到服务的全面解析 - 品牌排行榜
  • Step 3.5 Flash:面向工业API的7B大模型推理范式重构
  • 告别示教器:用C#写个WinForm小工具,实时监控ABB机器人状态和日志
  • 3分钟颠覆传统:百度网盘提取码智能获取工具如何重构你的数字资源世界
  • LLVM IR指令避坑指南:`nuw`/`nsw`、`exact`这些关键字用错了会怎样?
  • 质量好的工业吸尘器选购要点与品牌解析 - 品牌排行榜
  • 实战指南:基于快马生成生产级PyTorch模型推理镜像与部署方案
  • 【Redis从入门到精通】第44篇:Sentinel启动与监控——它是怎么盯着主服务器的
  • 别再死记硬背!用‘客户服务系统’实战案例,轻松搞懂UML类图与包图设计
  • PHP风控系统与反欺诈策略
  • 新手避坑指南:用BC35-G模块和AT指令,5分钟搞定NBIOT设备上云OneNET
  • FPGA上跑的纯硬件俄罗斯方块:Verilog代码+VGA显示+完整编译工程
  • PHP魔术方法深入理解与实战
  • DeepSeek V4实测:MoE架构与百万上下文的工程真相
  • 从零打造 99.99% 在线 CRM:高可用架构设计与系统化工程方法论
  • 魔兽争霸III终极性能优化:三大核心功能免费解决宽屏适配、地图加载与帧率限制
  • Qwen3.6-Plus工程落地指南:Agent底座的可交付实践
  • AI生成可玩游戏:单文件HTML卡丁车实战指南