深入理解万维网:URL、HTTP与HTML
深入理解万维网:URL、HTTP与HTML
- 统一资源定位符(URL)
1.1 什么是URL?
统一资源定位符URL(Uniform Resource Locator)是万维网上用于标识和定位各种文档的标准方法,它使每个资源在互联网范围内具有唯一标识。
示例URL:
https://www.makeru.com.cn:443/index.html
1.2 URL语法结构
scheme://host.domain:port/path/filename
• scheme - 定义因特网服务类型
• host - 定义域主机(默认www)
• domain - 定义因特网域名
• port - 定义主机端口号
• path - 定义服务器路径
• filename - 定义资源名称
1.3 常见URL Scheme
Scheme | 描述 | 用途 |
---|---|---|
http | 超文本传输协议 | 普通网页,不加密 |
https | 安全超文本传输协议 | 加密的安全网页 |
ftp | 文件传输协议 | 文件上传下载 |
file | 本地文件协议 | 访问本地文件 |
- HTTP与HTTPS协议
2.1 HTTP协议基础
HTTP(Hypertext Transfer Protocol)是用于分布式、协作式超媒体信息系统的应用层协议。
特点:
• 基于TCP/IP通信协议
• 默认端口80
• 无状态协议
• 使用请求-响应模型
2.2 HTTPS协议
HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本:
• 添加SSL/TLS加密层
• 默认端口443
• 提供数据加密、完整性校验和身份验证
2.3 HTTP请求-响应流程
-
建立TCP连接
-
客户端发送HTTP请求
-
服务器处理请求
-
服务器返回HTTP响应
-
关闭连接(HTTP/1.1默认保持连接)
-
HTTP消息结构
3.1 HTTP请求消息
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
3.2 HTTP响应消息
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Content-Type: text/html
Content-Length: 143<!DOCTYPE html>
<html>
...
</html>
- HTTP方法
方法 | 描述 |
---|---|
GET | 获取资源 |
POST | 提交数据 |
PUT | 更新资源 |
DELETE | 删除资源 |
HEAD | 获取头部信息 |
OPTIONS | 查询服务器支持的方法 |
- HTTP状态码
5.1 状态码分类
分类 | 描述 |
---|---|
1xx | 信息响应 |
2xx | 成功响应 |
3xx | 重定向 |
4xx | 客户端错误 |
5xx | 服务器错误 |
5.2 常见状态码
状态码 | 描述 |
---|---|
200 | 请求成功 |
301 | 永久重定向 |
404 | 资源未找到 |
500 | 服务器内部错误 |
- HTML基础
6.1 HTML文档结构
<!DOCTYPE html>
<html>
<head><title>页面标题</title>
</head>
<body><h1>我的第一个标题</h1><p>我的第一个段落。</p>
</body>
</html>
6.2 常见HTML元素
• <h1>
-<h6>
:标题
• <p>
:段落
• <a>
:超链接
• <img>
:图像
• <div>
:块级容器
• <span>
:行内容器
- 使用Socket实现HTTP通信
7.1 基础Socket实现
#include <sys/socket.h>
#include <netinet/in.h>int main() {// 创建套接字int fd = socket(AF_INET, SOCK_STREAM, 0);// 绑定地址struct sockaddr_in addr = {.sin_family = AF_INET,.sin_port = htons(8080),.sin_addr.s_addr = INADDR_ANY};bind(fd, (struct sockaddr *)&addr, sizeof(addr));// 监听并接受连接listen(fd, 5);int cfd = accept(fd, NULL, NULL);// 处理请求char buf[BUFSIZ];recv(cfd, buf, BUFSIZ, 0);printf("%s\n", buf);// 关闭连接close(cfd);close(fd);return 0;
}
7.2 处理GET请求
int do_get(int fd, char *buf, size_t len) {char type[16], resource[16];sscanf(buf, "%s%s\n", type, resource);if(strncasecmp("GET", type, 3)) {send(fd, "HTTP/1.1 501 Not Implemented\r\n\r\n", 29, 0);return -1;}char *pathname = (strlen(resource) == 1 && resource[0] == '/') ? "index.html" : &resource[1];FILE *fp = fopen(pathname, "r");if(!fp) {send(fd, "HTTP/1.1 404 Not Found\r\n\r\n", 26, 0);return -1;}char response[BUFSIZ];fread(response, 1, len, fp);char header[1024];sprintf(header, "HTTP/1.1 200 OK\r\n""Content-Length: %ld\r\n""Content-Type: text/html\r\n\r\n", strlen(response));send(fd, header, strlen(header), 0);send(fd, response, strlen(response), 0);fclose(fp);return 0;
}
相关文章:
深入理解万维网:URL、HTTP与HTML
深入理解万维网:URL、HTTP与HTML 统一资源定位符(URL) 1.1 什么是URL? 统一资源定位符URL(Uniform Resource Locator)是万维网上用于标识和定位各种文档的标准方法,它使每个资源在互联网范围内…...
RPC 协议详解、案例分析与应用场景
一、RPC 协议原理详解 RPC 协议的核心目标是让开发者像调用本地函数一样调用远程服务,其实现过程涉及多个关键组件与流程。 (一)核心组件 客户端(Client):发起远程过程调用的一方,它并不关心调…...
唯创安全优化纸业车间安全环境:门口盲区预警报警器的应用与成效
一、客户现场 客户主要从事于卷烟纸、成型纸、烟草制造业用纸及其他特定用途纸类制品的加工、生产与销售。在其厂区内,叉车频繁作业,车间环境复杂。经实地查看,发现几大安全隐患: 门口拐角隐患:门口拐角处因卷帘门阻…...
解决dedecms织梦系统{dede:arclist keyword=‘动态获取关键词‘}只生效一次
当我们通过{dede:arclist keyword关键词}来调用文章列表时,你会发现只在其中一个栏目里生效,在其他栏目,仍然显示上一次的关键词。 原因是由于arclist的缓存导致的。 只需修改/include/taglib/arclist.lib.php文件,大概在384行&a…...
高级学习算法(神经网络 决策树)
目录 神经网络 (Neural networks)神经网络的介绍需求预测 (Demand Prediction)例子:图像识别人脸识别(Face recognition)汽车分类(Car classification) 神经网络中的层更复杂的神经网络推理:前向传播 (Forw…...
labview硬件部分——温度测量
硬件连接: (1)温度测量的电压采集:(电压的单位为V) 温度采集程序图: 运行结果: 我们可以在显示控件中,看到温度采集的电压值 (2)温度采集的电压…...
labview——控制继电器模块
高电平——5V 超过一定的电压值,LED打开、继电器打开。(结合模拟电压采集与LED控制) 控制继电器是数字信号控制。程序与LED控制一致。 (1)我们先来看看继电器的控制 使用布尔按键,按键按下时࿰…...
ArcGIS Pro 3.4 二次开发 - 核心主机
环境:ArcGIS Pro SDK 3.4 .NET 8 文章目录 核心主机1 核心主机1.1 初始化核心主机 核心主机 1 核心主机 1.1 初始化核心主机 using ArcGIS.Core.Data; //必须引用 ArcGIS.CoreHost.dll using ArcGIS.Core.Hosting; class Program { //应用程序入口点必须包含 [S…...
IntelliJ IDEA 接入 DeepSeek帮助你更好编码
适配 IDEA 版本为了更好的使用插件,这里推荐使用一个代理插件——CodeGPT,CodeGPT是一个AI驱动的代码助手,旨在帮助开发者进行各种编程活动,它是GitHub Copilot、AI Assistant、Codiumate和其他JetBrains插件的强大替代品。安装之…...
如何使用Java生成pdf报告
文章目录 一、环境准备与Maven依赖说明二、核心代码解析1. 基础文档创建2. 中文字体处理3. 复杂表格创建4. 图片插入 三、完整代码示例四、最终效果 这篇主要说一下如何使用Java生成pdf,包括标题,文字,图片,表格的插入和调整等相关…...
Memory模块是agent的一个关键组件
Memory 2.6.1 简介 在Agent系统中,Memory模块是一个关键的组件,其主要功能是存储和检索信息,以支持agent的学习和决策过程。该模块模拟人类记忆的某些特征,能够动态地保存和更新信息,使agent能够利用过去的经验进行推…...
初级社会工作者考试难点总结
初级社会工作者考试难点总结 初级社会工作者(助理社会工作师)考试是进入社会工作行业的入门级资格认证,考试内容涵盖社会工作理论、实务技能及相关法规政策。虽然考试难度相对适中,但部分知识点和题型仍让考生感到棘手。本文总结…...
mapbox进阶,手写放大镜功能
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀手写放大镜功能1. ☘️实现思路2. ☘️…...
EasyRTC嵌入式音视频通信SDK一对一音视频通信,打造远程办公/医疗/教育等场景解决方案
一、方案概述 数字技术发展促使在线教育、远程医疗等行业对一对一实时音视频通信需求激增。传统方式存在低延迟、高画质及多场景适配不足等问题,而EasyRTC凭借音视频处理、高效信令交互与智能网络适配技术,打造稳定低延迟通信,满足基础通信…...
微信小程序中,解决lottie动画在真机不显示的问题
api部分 export function getRainInfo() {return onlineRequest({url: /ball/recruit/getRainInfo,method: get}); }data存储json数据 data:{rainJson:{} }onLoad方法获取json数据 onLoad(options) {let that thisgetRainInfo().then((res)>{that.setData({r…...
基于Flink的数据中台管理平台
基于Flink做的数据中台工程项目。数据从source到clickhouse全流程的验证。集成元数据管、数据资产、数据发现功能,自主管理元数据变更,集成元数据版本管理。 同时,对整个大数据集群使用到的组件或者是工具进行管理。比如nacos、kafka、zookee…...
Flink-Yarn运行模式
Yarn的部署过程 Yarn上部署的过程是:客户端把Flink应用提交给Yarn的ResourceManager,Yarn的ResourceManager会向Yarn的NodeManager申请容器,在这些容器上,Flink会部署JobManager和TaskManager的实例,从而启动集群,Flin…...
Java---斐波那契那数列
一、斐波那契数列的定义与起源 1. 数学定义 斐波那契数列(Fibonacci Sequence)又称黄金分割数列,其定义为: 初始项: F(0)0F(1)1 递推公式: 当 n≥2 时,F(n)F(n−1)F(n−2) 前 10 项数列&…...
通过AIoTedge或ThingsKit物联网平台内置的Node-RED读取OPC-UA
《通过AIoTedge或ThingsKit物联网平台内置的Node-RED读取OPC-UA》 一、引言 随着工业物联网(IIoT)的快速发展,设备之间的互联互通变得至关重要。OPC-UA(Open Platform Communications Unified Architecture)作为一种…...
《大模型开源与闭源的深度博弈:科技新生态下的权衡与抉择》
开源智能体大模型的核心魅力,在于它构建起了一个全球开发者共同参与的超级协作网络。想象一下,来自世界各个角落的开发者、研究者,无论身处繁华都市还是偏远小镇,只要心怀对技术的热爱与追求,就能加入到这场技术狂欢中…...
genicamtl_lmi_gocator_objectmodel3d
目录 一、在halcon中找不到genicamtl_lmi_gocator_objectmodel3d例程二、在halcon中运行genicamtl_lmi_gocator_objectmodel3d,该如何配置三、代码分段详解(一)传感器连接四、代码分段详解(二)采集图像并显示五、代码分…...
Node.js 24发布:性能与安全双提升
在科技的迅速发展中,Node.js作为一个备受青睐的开源跨平台Java运行环境,近日迎来了其24.0版本的正式发布。此次更新不仅承诺提升性能和安全性,还为开发者提供了更为顺畅的开发体验,值得我们深入探讨。 Node.js 24.0的最大亮点之一…...
是德科技 | 单通道448G未来之路:PAM4? PAM6? PAM8?
内容来源:是德科技 随着数据中心规模的不断扩大以及AI大模型等技术的兴起,市场对高速、大容量数据传输的需求日益增长。例如,AI训练集群中GPU等设备之间的互联需要更高的传输速率来提升效率。在技术升级方面,SerDes技术的不断进步…...
Dify智能体开发实践
1.聊天助⼿:创建技术⽀持问答机器⼈,通过提示词约束回答范围并引导追问澄清。 1.提示词 (1)技术支持机器人提示词 你是一位专业的技术支持机器人,专门为公司的各类技术产品和服务提供支持。你的回答范围严格限制在以下…...
网络安全之APP渗透测试总结
1、脱壳 360免费版加固,frida-dexdump、blackdex都可以脱掉。这里就不演示了 GitHub - hluwa/frida-dexdump: A frida tool to dump dex in memory to support security engineers analyzing malware. 2、密码泄露 经过对app登录界面,有对密码强度进行…...
笔记:NAT
一、NAT 的基本概念 NAT(Network Address Translation,网络地址转换) 是一种在 IP 网络中重新映射 IP 地址的技术,主要用于解决 IPv4 地址短缺问题,同时提供一定的网络安全防护作用。 功能: 将内部网络&am…...
民锋视角下的多因子金融分析模型实践
在当前金融市场环境中,数据粒度与因子建模逐渐成为提升交易系统稳定性的重要方式。民锋长期专注于模型优化与策略深度挖掘,提出了一套适用于中短周期的数据判断体系,核心在于“多因子融合动态调权”。 具体而言,民锋的分析框架常…...
ThinkPHP 根据路由文件获取路由列表
定义一个路由变量 比如我们要获取admin的路由 $routeFile "admin.php"; 清除路由 调用 Route::clear() 方法,清除当前已定义的所有路由。 Route::clear();设置路由懒加载 调用 Route::lazy(false) 方法,禁用路由的懒加载功能,选择立即加…...
算法打卡第三天
10.长度最小的子数组 (力扣209题) 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子…...
04_spring容器管理单例多例
文章目录 1. 单例(Singleton)2. 多例(Prototype)3. 使用场景4. 注意事项 在Spring框架中,Spring容器负责创建、配置和管理应用程序中的bean。关于单例(Singleton)和多例(Prototype&a…...
算法C++最大公约数
原理 代码实现 #include <stdio.h>// 递归版本 int gcd_recursive(int a, int b) {if (b 0) return a; // 终止条件:余数为0时,除数即为GCDreturn gcd_recursive(b, a % b); // 递归调用,更新为(b, a%b) }// 迭代版本 int gcd_iterat…...
在 Ubuntu 下通过 C APP程序实现串口发送数据并接收返回数据
一、前言 使用 C 应用进行串口调用需要手动配置串口的各项参数,并且 Ubuntu 下的串口是通过读写文件实现的,所以还需要设置权限。 二、源码分析 serial.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <…...
ubuntu24.04+RTX5090D 显卡驱动安装
初步准备 Ubuntu默认内核太旧,用mainline工具安装新版: sudo add-apt-repository ppa:cappelikan/ppa sudo apt update && sudo apt full-upgrade sudo apt install -y mainline mainline list # 查看可用内核列表 mainline install 6.13 # 安装…...
ubuntu22.04上运行opentcs6.4版本
1、下载github上的源码: openTCS - Downloads 2、安装java21 我的版本是:java --version java 21.0.6 2025-01-21 LTS Java(TM) SE Runtime Environment (build 21.0.68-LTS-188) Java HotSpot(TM) 64-Bit Server VM (build 21.0.68-LTS-188, mixed mo…...
labelme进行关键点标注并转换为yolo格式
目录 1、labelme安装和打开2、边界框和关键点标注3、将lamelme的json格式转成yolo可以使用的txt格式4、将数据和标签按照9比1分为训练集和测试集 1、labelme安装和打开 在python3.9及以上环境中安装labelme,labelme要用到pyqt,所以在使用labelme之前要安…...
每日算法-250521
每日算法学习 大家好!这是我今天的算法练习记录,分享四道 LeetCode 题目的解题思路和代码。希望能对大家有所帮助! 219. 存在重复元素 II 题目 思路 哈希表 利用哈希表来存储数组中元素及其最近出现的索引。 解题过程 当我们遍历数组 num…...
正大模型视角下的高频交易因子构建策略研究
正大模型视角下的高频交易因子构建策略研究 在金融衍生品交易体系中,数据主导型模型逐渐成为核心竞争力。以正大为代表的量化团队,通过大量历史数据研究,构建出一套基于高频因子的模型框架,从成交节奏、盘口行为、价格波动等维度动…...
Babylon.js学习之路《八、动画基础:关键帧动画与缓动效果》
文章目录 1. 引言:动画在3D场景中的核心作用2. 关键帧动画基础2.1 键帧动画原理2.2 创建简单关键帧动画 3. 缓动函数(Easing Functions)3.1 缓动函数的作用3.2 应用缓动函数 4. 复杂动画:多属性联动与序列控制4.1 同时控制位置、旋…...
小满未满,是成长的序章
节气小满,昭示着奋斗正当时,Codigger 怀揣热忱,在代码的天地里披荆斩棘,向着圆满目标大步迈进 。...
JavaWeb 开发流程
项目建立 SpringBoot框架构建 Spring Boot 是基于 Spring 框架的开源 Java 基础框架,用于创建独立、生产级的基于 Spring Framework 的应用程序。 我们可以使用IDEA建立SpringBoot框架。 语言选择Java,类型选择Maven,JDK和Java要保持一致&…...
Cmake 使用教程
介绍 CMake 是一个开源、跨平台的构建系统,主要用于软件的构建、测试和打包。CMake 使用平台无关的配置文件 CMakeLists.txt 来控制软件的编译过程,并生成适用于不同编译器环境的项目文件。例如,它可以生成 Unix 系统的 Makefile 、 Win…...
CLIP、ViLT 与 LLaVA:多模态模型是如何看图说话的?
一、前言:我们已经讲了 MLLM 能力,但它到底是怎么实现“看图说话”的? 在之前文章中,我们已经提到了MLLM可以看图说话以及文生图等能力,ViT统一图文多模态架构。那模型是如何处理图文信息以及不同处理所带来的能力是怎…...
基于Springboot + vue3实现的流动摊位管理系统
项目描述 本系统包含管理员、用户、商家三个角色。 管理员角色: 用户管理:管理系统中所有用户的信息,包括添加、删除和修改用户。 配置管理:管理系统配置参数,如上传图片的路径等。 权限管理:分配和管理…...
我的软考经历
说明:本文分享博主软考经验,及软考证书在找工作时的作用。 软考 软考,全称:中国计算机技术与软件专业技术资格(水平)考试,报名/考试/查询网址为,中国计算机技术职业资格网 考试分…...
C++的异常
引入:异常的意义是什么? ①:错误分离 将正常逻辑(try)与错误处理(catch)分离,避免代码被大量 if-else 污染。 ②:强制处理 若不捕获异常,程序终止,…...
精益制造数字化转型智能工厂三年规划建设方案
该文档是精益制造数字化转型智能工厂三年规划建设方案,以打造高品质、低成本、柔性化的绿色智能工厂为愿景,围绕制造技术、自动化、数智化、管理赋能四大路径,通过夯实 EHS、品质一致性、生产安定化、现场整洁四大基石,推进标杆车间打造、联合管理、TOB 流程改善等专项。规…...
Linux 文件(3)
文章目录 1. Linux下一切皆文件2. 文件缓冲区2.1 缓冲区是什么2.2 缓冲区的刷新策略2.3 为什么要有缓冲区2.4 一个理解缓冲区刷新的例子 3. 标准错误 1. Linux下一切皆文件 在刚开始学习Linux的时候,我们就说Linux下一切皆文件——键盘是文件,显示器是文…...
Java异步编程利器:CompletableFuture 深度解析与实战
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、CompletableFuture 概述 CompletableFuture是Java 8引入的异步编程工具类,实现了Future和CompletionStage接口,支持链式调用、组…...
如何支持Enhanced RTMP H.265(HEVC)
在实时音视频传输中,H.264长期占据主流,但随着视频质量要求的不断提高和带宽压力的加大,H.265(HEVC)作为下一代视频编码标准逐渐崭露头角。 在这种背景下,我们顺应行业发展趋势,成功集成了对Enh…...
Idea 查找引用jar包依赖来源的Maven pom坐标
目录 问题引入 实现解决 问题引入: 在查看拉取的项目,维护自己项目、或者迁移原有项目时,会遇到不知道代码中引用到的依赖从哪里引用到的。 所以利用Idea,从import语句到Maven项目结构树中查找,最终找到pom文件里的…...