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

计算机网络——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

比较项HTTPHTTPS
是否加密❌ 明文传输✅ 加密传输
安全性
默认端口80443
是否需要证书是(需要 SSL 证书)
握手过程直接通信多一步 SSL 握手协商密钥
性能稍慢(需要加解密)
成本高(证书可能要钱)

四、HTTP 的通信过程

步骤详解:

  1. 建立连接
    浏览器通过 TCP 协议连接服务器,通常连接的是 80 端口。

  2. 发送请求
    浏览器发出 HTTP 请求报文(包含方法、路径、请求头等)。

  3. 服务器响应
    服务器返回 HTTP 响应报文(包含状态码、内容等)。

  4. 关闭连接
    通信完成后关闭连接(或复用连接)。

  5. 浏览器解析内容
    浏览器根据 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.0HTTP 1.1
默认连接短连接,每次请求都断开长连接,支持 Connection: keep-alive
Host头支持不支持必须支持(支持虚拟主机)
缓存机制简单支持更多控制头字段
错误状态码增加了更多状态码如 409、410
断点续传不支持,存在浪费带宽支持(通过 Range 头实现)
管道化请求不支持支持请求流水线(Pipelining)

八、HTTPS 建立连接过程详解

  1. 用户在浏览器地址栏输入,浏览器发起 HTTPS 请求;
  2. 服务器返回 SSL 证书(含公钥);
  3. 浏览器验证证书是否合法(例如由受信任 CA 签发);
  4. 浏览器生成随机密钥,并使用公钥加密;
  5. 服务器使用私钥解密,生成对称密钥;
  6. 后续数据用这个密钥加密传输(对称加密,效率高)。
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.1003C: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 的通信过程步骤详解: 五、常见…...

渗透测试中的那些“水洞”:分析与防御

1. Nginx 版本泄露 风险分析: Nginx 默认会在响应头中返回 Server: nginx/x.x.x,攻击者可利用该信息匹配已知漏洞进行攻击。 防御措施: 修改 nginx.conf 配置文件,隐藏版本信息:server_tokens off;使用 WAF 进行信息…...

攻防世界 - Misc - Level 3 | 3-1

🌟 关注这个靶场的其它相关笔记:CTF 靶场笔记 —— 攻防世界(XCTF) 过关思路合集 0x01:考点速览 本题考察的是 Misc 中的流量分析题,想要通过此关,你需要具备以下技术: 会通过 010 …...

安装linux下的idea

1.有可能传不了文件 2.按这个包里的流程装 通过网盘分享的文件:idea旗下所有产品.txt 链接: https://pan.baidu.com/s/1kHHkW3DB3z3a6CG0qnMkWA?pwdgg3f 提取码: gg3f...

【音频】基础知识

1、原始数据 1)音频信号:声音是一种机械波,经过麦克风等设备转化为电信号,再经过模数转换(ADC)变成数字信号,这个数字信号就是音频信号。 2)音频信号的参数: 采样率:一秒钟内对音频的模拟信号采样的个数; 8000Hz:主要用于电话通信 、满足基本的语音通信需求,同时…...

系统思考:企业效率提升关键

最近在辅导一家企业时,我们一起画出了这张图。老板说:“我每天都在救火,员工效率不高,我只能不断加班加点,亲自盯、亲自跑、亲自上阵……” 但图画出来才发现,问题不是出在员工不够努力,也不是老…...

MySQL 查找指定表名的表的主键

原理 SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME 表名 AND CONSTRAINT_NAME PRIMARY方法 public static String getPk(String tableName) {String sql "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TA…...

华为eNSP:IS-IS认证

一、什么是IS-IS认证? 华为eNSP中的IS-IS认证 IS-IS认证是华为eNSP网络中用于保障中间系统到中间系统(IS-IS)协议通信安全性的核心机制,通过身份验证和数据完整性校验防止非法路由信息注入或篡改。其实现方式与关键特性如下&…...

qemu(4) -- qemu-system-arm使用

1. 前言 参考网上的资料,使用qemu中的vexpress_a9板子,跑一下Linux环境。 2. 源码 2.1 u-boot 可以到U-Boot官网下载对应的源码,我下载的是u-boot-2025.04-rc5.tar.gz,大约24MB。 3.2 linux 可以到The Linux Kernel Archive…...

JavaScript基础-递增和递减运算符

在JavaScript编程中,递增()和递减(--)运算符是操作数值变量的快捷方式。它们能够简洁地对变量值进行加一或减一的操作。尽管看似简单,但正确理解这两种运算符的不同使用方式(前缀与后缀)对于编写高效且无误的代码至关重要。本文将…...

解决Win10虚拟机“网络连接不上”,“Ethernet0 网络电缆被拔出”的问题

一、情景引入 今天用Win10虚拟机打开浏览器发现: 很奇怪,平常都没有这个问题。 二、检查网络状态 点击更改适配器选项,发现如下: 三、解决问题 打开任务管理器,点击服务,搜索栏搜索:VM …...

【Redis】String详细介绍及其应用场景

文章目录 String类型存储方式set命令get命令mset命令mget命令setnx命令setex和psetex命令incr和decr命令系列append命令--raw选项让redis尝试将二进制数据翻译 getrange命令setrange命令strlen命令字符串类型命令小结string内部的编码方式string类型的典型应用场景1.RedisMySQL…...

C++负载均衡远程调用学习之消息路分发机制

目录 1.LARV0.5-TCP_server链接管理的功能实现及测试 2.LARV0.6 3.LARV0.6 4.LARV0.6 5.LARV0.6-tcp_server集成 6.LARV0.6-tcp_server集成消息路由分发机制总结 7.LARV0.6回顾 1.LARV0.5-TCP_server链接管理的功能实现及测试 ### 16.2 完成Lars Reactor V0.12开发 ###…...

实现了一个基于寄存器操作STM32F103C8t6的工程, 并实现对PA1,PA2接LED正极的点灯操作

#include "stm32f10x.h"// 基于寄存器开发的项目了 int main(){RCC->APB2ENR 0x00000004; // 开启时钟GPIOA->CRL 0x00003330; // 配置引脚 // 0011 0011 0000GPIOA->ODR 0x0000000E; // 1110while(1){} }...

Python字典(dict)详解:从创建到操作全掌握

前言 字典是可变容器,可存储任意类型对象 字典以键(key)-值(value)对的形式进行映射,键值对用冒号分割,对之间用逗号分割 d {key1 : value1, key2 : value2, key3 : value3 } 字典的数据是无序的 字典的键只能用不可变类型,且…...

UDP数据包和TCP数据包的区别;网络编程套接字;不同协议的回显服务器

目录 一、UDP 数据包与 TCP 数据包的区别: 连接方面: 传输方面: 面向对象: 双工模式: 二、UDP 网络编程套接字;基于 UDP 协议的回显服务器: 1. UDP 数据报套接字核心类 DatagramSocket &…...

Python 应用异常追踪实战:如何集成 Sentry 进行高效错误监控

Python 应用异常追踪实战:如何集成 Sentry 进行高效错误监控 引言 在现代应用开发中,异常处理和错误监控至关重要。一个小的运行时错误可能会导致整个系统崩溃,而难以发现的逻辑漏洞可能长期影响用户体验。为了提升代码的稳定性,我们需要一个高效的异常监控机制,以便能够…...

【数据结构】--- 双向链表的增删查改

前言: 经过了几个月的漫长岁月,回头时年迈的小编发现,数据结构的内容还没有写博客,于是小编赶紧停下手头的活动,补上博客以洗清身上的罪孽 目录 前言: 概念: 双链表的初始化 双链表的判空 双链表…...

【C语言练习】014. 使用数组作为函数参数

014. 使用数组作为函数参数 014. 使用数组作为函数参数示例1:使用数组作为函数参数并修改数组元素函数定义输出结果 示例2:使用数组作为函数参数并计算数组的平均值函数定义输出结果 示例3:使用二维数组作为函数参数函数定义输出结果 示例4&a…...

本地服务器备份网站数据,本地服务器备份网站的操作步骤

本地服务器备份网站数据的完整操作指南 一、明确备份需求与目标 核心备份对象 网站文件: 上传的媒体文件(图片、视频、PDF等) 配置文件(如.htaccess、wp-config.php) 附加内容(根据需求选择&#xff…...

机器学习Day15 LightGBM算法

浅谈LightGBM算法:我们之前讲的集成学习算法分为三要素吧,就是形式,损失函数,优化方法,但是LightGBM算法并没有固定的形式,它主要是针对具体算法给出一些优化,它更像是前向分步算法一样,像一个框…...

算法查找目录

1. 基础数据结构 数组与链表 动态数组 实现与自动扩容机制均摊分析ArrayList/Vector实现 单向链表 基本操作(插入、删除、查找)链表反转环检测(Floyd判圈算法) 双向链表 插入删除操作优化双向遍历优势边界情况处理 循环链表 约瑟夫环问题单向循环链表双向循环链表 跳表 基本原…...

【HarmonyOS】作业三 UI

目录 一. 单选题(共10题,10分) 1. (单选题, 1分)关于Tabs组件页签的位置设置,下面描述错误的是 2. (单选题, 1分)下面哪个组件不能包含子组件? 3. (单选题, 1分)ArkTS语言的实现计数器功能的组件名称是以下哪个? 4. (单选题…...

2025五一杯数学建模B题:矿山数据处理问题,详细问题分析,思路模型

一、尊重原创:详细内容文末名片获取 二、数据文件解读 (一)数据文件 1:矿山监测一维数值样例数据.csv 想象一下,这就像是一本简单的记录册,里面记录着一组一维数值序列,每个数据点如同册子里的…...

ES6-Set-Map对象小记

Set 对象 添加元素 set.add(value)常用方法 方法描述has()判断 Set 对象中特定元素是否存在delete()从 Set 对象中删除指定元素clear()清空 Set 对象 遍历方法 很容易想到使用set.forEach(callBackFn, thisArg)方法来进行遍历,其中callBackFn回调的形式如下&am…...

WGCLOUD使用 - 如何监控RabbitMQ运行参数

WGCLOUD是一款开源免费的运维监控软件,开箱即用,实用轻量,高效简单。 RabbitMQ指标数据的采集工作是由server-backup来做的,所以我们需要部署server-backup,它是一个server的辅助工具,作用相当于agent Rabb…...

FreeSWITCH 发送 sip message 的 lua 程序

-- chat.lualocal from argv[1] local to argv[2] local body argv[3] local profile "internal" -- 改成自己的 sip_profileif not body thenstream:write("-ERR miss ie")return endlocal api freeswitch.API() local domain api:executeString(&q…...

安全学习基础入门5集

前言: 来源于b站小迪安全v2023第5天:基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载_哔哩哔哩_bilibili 环境准备: 通过网盘分享的文件:netcat-1.11 链接: https://pan.baidu.com/s/1zgyYvPf…...

Python结合QT进行开发

Python结合Qt进行开发指南 1. Qt for Python简介 Qt for Python(PySide/PyQt)是Python的官方Qt绑定,允许使用Python语言开发跨平台的GUI应用程序。PySide是Qt官方支持的Python绑定,而PyQt是Riverbank Computing提供的商业/开源版本。 主要特点: 跨平台支持(Windows/macOS…...

Python与深度学习:自动驾驶中的物体检测,如何让汽车“看懂”世界

Python与深度学习:自动驾驶中的物体检测,如何让汽车“看懂”世界 一、引言:自动驾驶的“眼睛”——物体检测 在自动驾驶技术的浪潮中,如何让汽车像人类一样“看懂”周围的环境,成为了最为关键的一环。汽车需要感知道路上的行人、障碍物、交通标志、其他车辆等信息,做出实…...

深度学习-神经网络参数优化的约束与迭代策略

文章目录 前言一、正则化惩罚1、权重正则化(Weight Regularization)2、结构正则化(Structural Regularization)3、其他正则化方法 二、梯度下降1、基本原理(1)梯度下降的计算(2) 算法…...

PyTorch 与 TensorFlow:深度学习框架的深度剖析与实战对比

PyTorch 与 TensorFlow:深度学习框架的深度剖析与实战对比 摘要 :本文深入对比 PyTorch 与 TensorFlow 两大深度学习框架,从核心架构、优缺点、适用场景等多维度剖析,结合实例讲解,帮助开发者清晰理解两者特性&#x…...

Meta公司于2025年4月29日正式推出了全新Meta AI应用程序的首个版本

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

【数据结构】- 栈

前言: 经过了几个月的漫长岁月,回头时年迈的小编发现,数据结构的内容还没有写博客,于是小编赶紧停下手头的活动,补上博客以洗清身上的罪孽 目录 前言: 栈的应用 括号匹配 逆波兰表达式 数制转换 栈的实…...

MATLAB R2024a安装教程

安装步骤: 软件大小:约12.08G 安装环境:Win10~Win11或更高 下载好安装包,可以在网上找个安装包,比如我用国内镜像matlab地址github.com/futureflsl/matlab-chinese-mirror,这样下载稍微快点 1.开始安装…...

【Linux网络】I/O多路转接技术 - poll

📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...

24.Linux中RTC的驱动实验_csdn

这个在裸机开发也有,如果有过裸机开发经验的同学就比较入手了! 1、Linux 内核 RTC 驱动简介 2、STM32MP1 内部 RTC 驱动分析 像这里的读取时间,是在之前的代码里面已经写好了有关时间计数的代码,直接引用两个寄存器就行。 3、…...

C++负载均衡远程调用学习之TCP连接封装与TCPCLIENT封装

目录 1.LARSV0.3回顾 2.解决粘包问题的message结构体定义 3.LARSV0.4链接对象的方法和属性的定义 4.LARSv0.4 TCP_conn链接的初始化 5.LARV0.4-tcp_conn处理读事件方法do_read 6.LARV0.4-tcp_conn模块回顾 7.LARV0.4-tcp_send_message主动发包实现 8.LARV0.4-tcp_conn处…...

Python TensorFlow库【深度学习框架】全面讲解与案例

一、TensorFlow 基础知识 1. 核心概念 张量 (Tensor): 多维数组,是 TensorFlow 的基本数据单位(标量、向量、矩阵等)。计算图 (Graph): 早期版本中的静态图机制(TF2.x 默认启用动态图)。会话 (Session): 在 TF1.x 中…...

日志之ClickHouse部署及替换ELK中的Elasticsearch

文章目录 1 ELK替换1.1 Elasticsearch vs ClickHouse1.2 环境部署1.2.1 zookeeper 集群部署1.2.2 Kafka 集群部署1.2.3 FileBeat 部署1.2.4 clickhouse 部署1.2.4.1 准备步骤1.2.4.2 添加官方存储库1.2.4.3 部署&启动&连接1.2.4.5 基本配置服务1.2.4.6 测试创建数据库和…...

Git 基本操作(一)

目录 git add git commit git log git status git diff git 版本回退 git reset git add git add 指令为添加工作区中的文件到暂存区中。 git add file_name; //将工作区名称为file_name的文件添加进暂存区 git add .; //将工作区中的所有文件添加进暂存区 git comm…...

加密解密记录

一、RSA 加密解密 密钥对生成 1.前端加密解密 (1).vue页面引入 npm install jsencrypt(2)工具 jsencrypt.js import JSEncrypt from jsencrypt/bin/jsencrypt.min// 密钥对生成 http://web.chacuo.net/netrsakeypairconst p…...

Playwright MCP 入门实战:自动化测试与 Copilot 集成指南

什么是 MCP? MCP(Model Context Protocol) 是一种为大语言模型(LLM)设计的协议,MCP充当 LLM 与实际应用之间的桥梁或“翻译器”,将自然语言转化为结构化指令,使得模型可以更精确、高…...

存算一体架构下的新型AI加速范式:从Samsung HBM-PIM看近内存计算趋势

引言:突破"内存墙"的物理革命 冯诺依曼架构的"存储-计算分离"设计正面临根本性挑战——在GPT-4等万亿参数模型中,数据搬运能耗已达计算本身的200倍。存算一体(Processing-In-Memory, PIM)技术通过‌在存储介…...

为 Unity 项目添加自定义 USB HID 设备支持 (适用于 PC 和 Android/VR)-任何手柄、无人机手柄、摇杆、方向盘

这是一份关于如何在 Unity 中为特定 USB HID 设备(如 Phoenix SM600 手柄)添加支持,并确保其在打包成 APK 安装到独立 VR 设备后仍能正常工作的教程。 目标: 使 Unity 能够识别并处理特定 USB HID(Human Interface Device&#x…...

恒流源电路

常见的是上面这几种, 运放恒流电路一般搭配三极管使用 比赛用的模块可以用这种,会准一点...

python2反编译部分

文章目录 1、所需环境2、确认打包工具(没成功)3、 解包.exe文件(以PyInstaller为例) - useful【***总的来说这一步对我有用】4、定位关键文件 - useful5、 修复.pyc文件头(关键步骤!)- maybe-ig…...

Selenium3自动化测试,Python3测试开发教程视频测试用例设计

Selenium3自动化测试,Python3测试开发教程视频测试用例设计25套高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试&#xff0c…...

PyTorch 2.0编译器技术深度解析:如何自动生成高性能CUDA代码

引言:编译革命的范式转移 PyTorch 2.0的torch.compile不仅是简单的即时编译器(JIT),更标志着深度学习框架从‌解释执行‌到‌编译优化‌的范式跃迁。本文通过逆向工程编译过程,揭示PyTorch如何将动态图转换为高性能CU…...

ctfshow web入门 web44

信息收集 依旧是把所有输出丢弃,这一次多了flag的过滤,没啥好说的,用*或者?代替就可以了 if(isset($_GET[c])){$c$_GET[c];if(!preg_match("/;|cat|flag/i", $c)){system($c." >/dev/null 2>&1");} }else{h…...