计算机网络——HTTP/IP 协议通俗入门详解
HTTP/IP 协议通俗入门详解
- 一、什么是 HTTP 协议?
- 1. 基本定义
- 2. HTTP 是怎么工作的?
- 二、HTTP 协议的特点
- 三、HTTPS 是什么?它和 HTTP 有啥区别?
- 1. HTTPS 概述
- 2. HTTP vs HTTPS
- 四、HTTP 的通信过程
- 步骤详解:
- 五、常见 HTTP 请求方法
- 六、HTTP 状态码详解
- 七、HTTP 1.0 和 HTTP 1.1 的区别
- 八、HTTPS 建立连接过程详解
- 九、HTTP 会话结束的判断方式
- 十、IP 地址 vs MAC 地址
- 总结
一、什么是 HTTP 协议?
1. 基本定义
HTTP(HyperText Transfer Protocol)超文本传输协议,是一种基于 TCP/IP 协议 的 应用层协议,用于客户端(浏览器)和服务端(Web服务器)之间的数据传输。
HTTP 协议让你能打开网页、下载图片、发送表单请求等。比如你打开百度首页,其实就是浏览器向服务器发起了一个 HTTP 请求,服务器返回了网页代码,你的浏览器再把这些内容显示出来。
2. HTTP 是怎么工作的?
HTTP 是基于 “请求-响应” 模型:
- 浏览器(客户端)发送一个请求;
- Web 服务器收到请求并返回响应;
- 浏览器根据响应展示内容。
二、HTTP 协议的特点
特点 | 说明 |
---|---|
简单快速 | 请求格式简单,处理速度快 |
灵活 | 支持多种数据类型(HTML、图片、JSON等) |
无连接 | 一次请求完成后就断开连接 |
无状态 | 每次请求独立,不记得你是谁(除非用 Cookie、Session) |
默认端口 | HTTP 默认使用 80 端口,HTTPS 默认用 443 端口 |
基于 TCP | 使用可靠的 TCP 三次握手来建立连接 |
支持两种架构 | B/S(浏览器/服务器)、C/S(客户端/服务器) |
三、HTTPS 是什么?它和 HTTP 有啥区别?
1. HTTPS 概述
HTTPS = HTTP + SSL/TLS加密协议
HTTPS 用于保障传输安全性,防止信息被窃取或篡改。
2. HTTP vs HTTPS
比较项 | HTTP | HTTPS |
---|---|---|
是否加密 | ❌ 明文传输 | ✅ 加密传输 |
安全性 | 差 | 高 |
默认端口 | 80 | 443 |
是否需要证书 | 否 | 是(需要 SSL 证书) |
握手过程 | 直接通信 | 多一步 SSL 握手协商密钥 |
性能 | 快 | 稍慢(需要加解密) |
成本 | 低 | 高(证书可能要钱) |
四、HTTP 的通信过程
步骤详解:
-
建立连接
浏览器通过 TCP 协议连接服务器,通常连接的是 80 端口。 -
发送请求
浏览器发出 HTTP 请求报文(包含方法、路径、请求头等)。 -
服务器响应
服务器返回 HTTP 响应报文(包含状态码、内容等)。 -
关闭连接
通信完成后关闭连接(或复用连接)。 -
浏览器解析内容
浏览器根据 HTML、CSS、JS 渲染最终页面。
五、常见 HTTP 请求方法
方法 | 用途 |
---|---|
GET | 获取资源 |
POST | 提交表单或数据 |
PUT | 上传新资源 |
DELETE | 删除资源 |
HEAD | 类似 GET,但不返回内容体 |
OPTIONS | 查询支持的方法 |
六、HTTP 状态码详解
状态码 | 含义 | 示例说明 |
---|---|---|
200 OK | 成功 | 页面正常返回 |
206 Partial Content | 成功返回部分内容 | 用于断点续传 |
301 Moved Permanently | 永久重定向 | 网址永久更改 |
302 Found | 临时重定向 | 短时间跳转到其他页面 |
304 Not Modified | 内容未修改 | 用于缓存判断 |
403 Forbidden | 无权限访问 | 服务器拒绝请求 |
404 Not Found | 页面不存在 | 常见的“找不到页面” |
500 Internal Server Error | 服务器错误 | 服务端崩了 |
503 Service Unavailable | 服务不可用 | 一般是服务器太忙或维护中 |
七、HTTP 1.0 和 HTTP 1.1 的区别
项目 | HTTP 1.0 | HTTP 1.1 |
---|---|---|
默认连接 | 短连接,每次请求都断开 | 长连接,支持 Connection: keep-alive |
Host头支持 | 不支持 | 必须支持(支持虚拟主机) |
缓存机制 | 简单 | 支持更多控制头字段 |
错误状态码 | 少 | 增加了更多状态码如 409、410 |
断点续传 | 不支持,存在浪费带宽 | 支持(通过 Range 头实现) |
管道化请求 | 不支持 | 支持请求流水线(Pipelining) |
八、HTTPS 建立连接过程详解
- 用户在浏览器地址栏输入,浏览器发起 HTTPS 请求;
- 服务器返回 SSL 证书(含公钥);
- 浏览器验证证书是否合法(例如由受信任 CA 签发);
- 浏览器生成随机密钥,并使用公钥加密;
- 服务器使用私钥解密,生成对称密钥;
- 后续数据用这个密钥加密传输(对称加密,效率高)。
graph TDA[浏览器发起 HTTPS 请求(Client Hello)] --> B[服务器返回 SSL 证书(含公钥)]B --> C[浏览器验证证书是否合法]C -->|验证通过| D[浏览器生成随机对称密钥]D --> E[用服务器公钥加密该密钥并发送]E --> F[服务器使用私钥解密获取对称密钥]F --> G[双方拥有相同的对称密钥]G --> H[使用对称密钥进行后续数据加密传输(如登录、支付等)]
九、HTTP 会话结束的判断方式
要判断 HTTP 会话是否结束,最准确的方法是:
观察 TCP 是否进行“四次挥手”:
- 客户端和服务器之间释放 TCP 连接的标准过程;
- 表示一个 HTTP 会话结束(如果未启用长连接)。
十、IP 地址 vs MAC 地址
项目 | IP 地址 | MAC 地址 |
---|---|---|
层级 | 网络层 | 数据链路层 |
作用 | 逻辑地址,确定“你在哪个网络” | 物理地址,确定“你是谁” |
是否唯一 | 可变(动态分配) | 全球唯一(写死在网卡) |
举例 | 192.168.1.100 | 3C:52:82:3A:44:1F |
用途 | 路由寻址 | 局域网通信 |
简单理解:
IP地址像是“邮政编码+门牌号”,MAC地址像是“身份证号”。
总结
- HTTP 是基础网络通信协议,Web 浏览器和服务器都依赖它。
- HTTPS 是加密版 HTTP,更安全,但成本更高。
- HTTP 协议本身简单,但通过状态码、请求头、缓存机制等可以实现强大功能。
相关文章:
计算机网络——HTTP/IP 协议通俗入门详解
HTTP/IP 协议通俗入门详解 一、什么是 HTTP 协议?1. 基本定义2. HTTP 是怎么工作的? 二、HTTP 协议的特点三、HTTPS 是什么?它和 HTTP 有啥区别?1. HTTPS 概述2. HTTP vs HTTPS 四、HTTP 的通信过程步骤详解: 五、常见…...
ChromeDriverManager的具体用法
ChromeDriverManager 是 webdriver_manager 库的一部分,它用于自动管理 ChromeDriver 的下载和更新。使用 ChromeDriverManager 可以避免手动下载 ChromeDriver 并匹配系统中安装的 Chrome 浏览器版本。以下是 ChromeDriverManager 的基本用法: 步骤 1…...
DeepSeek Copilot idea插件推荐
🌌 DeepSeek Copilot for IntelliJ IDEA 让 AI 成为你的编程副驾驶,极速生成单元测试 & 代码注释驱动开发! 🚀 简介 DeepSeek Copilot 是一款为 IntelliJ IDEA 打造的 AI 编程助手插件,它能够智能分析你的代码逻辑…...

贪心算法应用:最小反馈顶点集问题详解
贪心算法应用:最小反馈顶点集问题详解 1. 问题定义与背景 1.1 反馈顶点集定义 反馈顶点集(Feedback Vertex Set, FVS)是指在一个有向图中,删除该集合中的所有顶点后,图中将不再存在任何有向环。换句话说,反馈顶点集是破坏图中所…...

游戏引擎学习第259天:OpenGL和软件渲染器清理
回顾并为今天的内容做好铺垫 今天,我们将对游戏的分析器进行升级。在之前的修复中,我们解决了分析器的一些敏感问题,例如它无法跨代码重新加载进行分析,以及一些复杂的小问题。现在,我们的分析器看起来已经很稳定了。…...
一篇文章看懂时间同步服务
Linux 系统时间与时区管理 一、时间与时钟类型 时钟类型说明管理工具系统时钟由 Linux 内核维护的软件时钟,基于时区配置显示时间timedatectl硬件时钟 (RTC)主板上的物理时钟,通常以 UTC 或本地时间存储,用于系统启动时初始化时间hwclock …...

12.模方ModelFun工具-立面修整
摘要:本文主要介绍模方ModelFun修模工具——立面修整的操作方法。 点击工具栏即可找到立面修整工具,点击可打开并使用该工具,如下图: 图 工具菜单栏 (1)截面绘制: 快速绘制竖直矩形࿱…...
git命令常见用法【持续更新中……】
一、已有本地代码,在gitee创建了空仓库后想将代码与该仓库相连 在本地项目目录下初始化Git # 1. 初始化本地仓库 git init# 2. 添加所有文件到暂存区 git add .# 3. 提交第一个版本 git commit -m "Initial commit: 项目初始化"将本地仓库关联到Gitee 根…...

Docker 渡渡鸟镜像同步站 使用教程
Docker 渡渡鸟镜像同步站 使用教程 🚀 介绍 Docker.aityp.com(渡渡鸟镜像同步站)是一个专注于为国内开发者提供 Docker 镜像加速和同步服务的平台。它通过同步官方镜像源(如 Docker Hub、GCR、GHCR 等),为…...
Python TensorFlow库【深度学习框架】全面讲解与案例
一、TensorFlow 基础知识 1. 核心概念 张量 (Tensor): 多维数组,是 TensorFlow 的基本数据单位(标量、向量、矩阵等)。计算图 (Graph): 早期版本中的静态图机制(TF2.x 默认启用动态图)。会话 (Session): 在 TF1.x 中用于执行计算图(TF2.x 中已弃用)。2. 基本操作 impo…...

火影bug,未保证短时间数据一致性,拿这个例子讲一下Redis
本文只拿这个游戏的bug来举例Redis,如果有不妥的地方,联系我进行删除 描述:今天在高速上打火影(有隧道,有时候会卡),发现了个bug,我点了两次-1000的忍玉(大概用了1千七百…...
Power Query 是 Excel 和 Power BI 中强大的数据获取、转换和加载工具
Power Query 链接是什么 Power Query 是 Excel 和 Power BI 中强大的数据获取、转换和加载工具。Power Query 链接指的是在 Excel 或 Power BI 里通过 Power Query 建立的与外部数据源的连接。这些数据源可以是各种类型,像文本文件(CSV、TXT)…...

探索元生代:ComfyUI 工作流与计算机视觉的奇妙邂逅
目录 一、引言 二、蓝耘元生代和 ComfyUI 工作流初印象 (一)蓝耘元生代平台简介 (二)ComfyUI 工作流创建是啥玩意儿 三、计算机视觉是个啥 (一)计算机视觉的基本概念 (二)计算…...

Unity-Shader详解-其五
关于Unity的Shader部分的基础知识其实已经讲解得差不多了,今天我们来一些实例分享: 溶解 效果如下: 代码如下: Shader "Chapter8/chapter8_1" {Properties{// 定义属性[NoScaleOffset]_Albedo("Albedo", 2…...

【Java 专题补充】流程控制语句
流程控制语句是用来控制程序中各语句执行顺序的语句,是程序中既基本又非常关键的部分。流程控制语句可以把单个的语句组合成有意义的、能完成一定功能的小逻辑模块。最主要的流程控制方式是结构化程序设计中规定的三种基本流程结构。 1.1 结构化程序设计的三种基本流…...
恶心的win11更新DIY 设置win11更新为100年
打开注册表编辑器:按下Win R键,输入regedit,然后按回车打开注册表编辑器。12导航到指定路径:在注册表编辑器中,依次展开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings新建DWORD值&…...

【ArcGIS微课1000例】0146:将多个文件夹下的影像移动到一个目标文件夹(以Landscan数据为例)
本文讲述将多个文件夹下的影像移动到一个目标文件夹,便于投影变换、裁剪等操作。 文章目录 一、数据准备二、解压操作三、批量移动四、查看效果五、ArcGIS操作一、数据准备 全球人口数据集Landscan2000-2023如下所示,每年数据位一个压缩包: 二、解压操作 首先将其解压,方…...

【redis】分片方案
Redis分片(Sharding)是解决单机性能瓶颈的核心技术,其本质是将数据分散存储到多个Redis节点(实例)中,每个实例将只是所有键的一个子集,通过水平扩展提升系统容量和性能。 分片的核心价值 性能提…...

springboot+mysql+element-plus+vue完整实现汽车租赁系统
目录 一、项目介绍 二、项目截图 1.项目结构图 三、系统详细介绍 管理后台 1.登陆页 2.管理后台主页 3.汽车地点管理 4.汽车类别 5.汽车品牌 6.汽车信息 7.用户管理 8.举报管理 9.订单管理 10.轮播图管理 11.交互界面 12.图表管理 汽车租赁商城 1.首页 2.汽…...

Linux第四节:进程控制
一、进程创建 1.1 fork函数 1. fork函数有两个返回值问题 返回的本质就是写入!所以,谁先返回,谁就先写入id,因为进程具有独立性,会发生写时拷贝,父进程和子进程各自指向return语句。 2. fork返回后&#x…...

Qt 编译 sqldrivers之psql
编译postgres pgsql驱动 下载驱动源码修改配置文件编译 下载驱动源码 // 源代码下载 https://download.qt.io/archive/qt/5.15/5.15.2/submodules/驱动目录:qtbase-everywhere-src-5.15.2\src\plugins\sqldrivers 修改配置文件 打开pro文件 右键点击添加库 此处的为debu…...
382_C++_在用户会话结束时,检查是否有其他会话仍然来自同一个客户端 IP 地址,没有连接状态设置为断开,否则为连接
之前出现的问题:重启管理机,工作机上面热备连接状态显示未连接 (此时是有一个工作机连接管理机的),所以正常应该是连接状态解决:根因分析: 重启管理机后,管理机给过来的cookie是空的,导致工作机同时存在两个管理机的session,在其中一个超时后,调用回调函数通知会话断开…...
RViz(机器人可视化工具)的配置文件(moveitcpp)
1. Panels(面板设置) 面板是RViz界面中的各个功能区域,用于显示和操作不同的数据。 Displays(显示面板) Class: rviz_common/Displays 指定面板的类型,这里是显示面板。 Help Height: 78 帮助区域的高度…...
Redis中6种缓存更新策略
Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案。然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性。缓存更新策略直接影响系统的性能、可靠性和数据一致性,选择合适的策略至关重要。 本文将介绍Redis中6种缓…...
如何使用极狐GitLab 软件包仓库功能托管 terraform?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 Terraform 模块库 (BASIC ALL) 基础设施仓库和 Terraform 模块仓库合并到单个 Terraform 模块仓库功能引入于极狐GitLab 15.1…...

观测云:安全、可信赖的监控观测云服务
引言 近日,“TikTok 遭欧盟隐私监管机构调查并处以 5.3 亿欧元”一案,再次引发行业内对数据合规等话题的热议。据了解,仅 2023 年一年就产生了超过 20 亿美元的 GDPR 罚单。这凸显了在全球化背景下,企业在数据隐私保护方面所面临…...
【python】使用Python和BERT进行文本摘要:从数据预处理到模型训练与生成
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着信息爆炸时代的到来,海量文本数据的高效处理与理解成为亟待解决的问题。文本摘要作为自然语言处理(NLP)中的关键任务,旨在自动生成…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.3 相关性分析(PEARSON/SPEARMAN相关系数)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 5.3 相关性分析(PEARSON/SPEARMAN相关系数)5.3.1 相关性分析理论基础5.3.1.1 相关系数定义与分类5.3.1.2 Pearson相关系数( Pearson Corr…...
Redis面试 实战贴 后面持续更新链接
redis是使用C语言写的。 面试问题列表: Redis支持哪些数据类型?各适用于什么场景? Redis为什么采用单线程模型?优势与瓶颈是什么? RDB和AOF持久化的区别?如何选择?混合持久化如何实现&#x…...
小程序滚动条隐藏(uniapp版本)
单独指定页面隐藏(找到对应的scroll-view) <style> /* 全局隐藏滚动条样式 */ ::-webkit-scrollbar { display: none; width: 0; height: 0; color: transparent; background: transparent; } /* 确保scroll-view组件也隐藏滚动条 */ …...