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

深入理解万维网:URL、HTTP与HTML

深入理解万维网:URL、HTTP与HTML

  1. 统一资源定位符(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本地文件协议访问本地文件
  1. 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请求-响应流程

  1. 建立TCP连接

  2. 客户端发送HTTP请求

  3. 服务器处理请求

  4. 服务器返回HTTP响应

  5. 关闭连接(HTTP/1.1默认保持连接)

  6. 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>
  1. HTTP方法
方法描述
GET获取资源
POST提交数据
PUT更新资源
DELETE删除资源
HEAD获取头部信息
OPTIONS查询服务器支持的方法
  1. HTTP状态码

5.1 状态码分类

分类描述
1xx信息响应
2xx成功响应
3xx重定向
4xx客户端错误
5xx服务器错误

5.2 常见状态码

状态码描述
200请求成功
301永久重定向
404资源未找到
500服务器内部错误
  1. 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>:行内容器

  1. 使用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

深入理解万维网&#xff1a;URL、HTTP与HTML 统一资源定位符&#xff08;URL&#xff09; 1.1 什么是URL&#xff1f; 统一资源定位符URL&#xff08;Uniform Resource Locator&#xff09;是万维网上用于标识和定位各种文档的标准方法&#xff0c;它使每个资源在互联网范围内…...

RPC 协议详解、案例分析与应用场景

一、RPC 协议原理详解 RPC 协议的核心目标是让开发者像调用本地函数一样调用远程服务&#xff0c;其实现过程涉及多个关键组件与流程。 &#xff08;一&#xff09;核心组件 客户端&#xff08;Client&#xff09;&#xff1a;发起远程过程调用的一方&#xff0c;它并不关心调…...

唯创安全优化纸业车间安全环境:门口盲区预警报警器的应用与成效

一、客户现场 客户主要从事于卷烟纸、成型纸、烟草制造业用纸及其他特定用途纸类制品的加工、生产与销售。在其厂区内&#xff0c;叉车频繁作业&#xff0c;车间环境复杂。经实地查看&#xff0c;发现几大安全隐患&#xff1a; 门口拐角隐患&#xff1a;门口拐角处因卷帘门阻…...

解决dedecms织梦系统{dede:arclist keyword=‘动态获取关键词‘}只生效一次

当我们通过{dede:arclist keyword关键词}来调用文章列表时&#xff0c;你会发现只在其中一个栏目里生效&#xff0c;在其他栏目&#xff0c;仍然显示上一次的关键词。 原因是由于arclist的缓存导致的。 只需修改/include/taglib/arclist.lib.php文件&#xff0c;大概在384行&a…...

高级学习算法(神经网络 决策树)

目录 神经网络 (Neural networks)神经网络的介绍需求预测 (Demand Prediction)例子&#xff1a;图像识别人脸识别&#xff08;Face recognition&#xff09;汽车分类&#xff08;Car classification&#xff09; 神经网络中的层更复杂的神经网络推理&#xff1a;前向传播 (Forw…...

labview硬件部分——温度测量

硬件连接&#xff1a; &#xff08;1&#xff09;温度测量的电压采集&#xff1a;&#xff08;电压的单位为V&#xff09; 温度采集程序图&#xff1a; 运行结果&#xff1a; 我们可以在显示控件中&#xff0c;看到温度采集的电压值 &#xff08;2&#xff09;温度采集的电压…...

labview——控制继电器模块

高电平——5V 超过一定的电压值&#xff0c;LED打开、继电器打开。&#xff08;结合模拟电压采集与LED控制&#xff09; 控制继电器是数字信号控制。程序与LED控制一致。 &#xff08;1&#xff09;我们先来看看继电器的控制 使用布尔按键&#xff0c;按键按下时&#xff0…...

ArcGIS Pro 3.4 二次开发 - 核心主机

环境&#xff1a;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 版本为了更好的使用插件&#xff0c;这里推荐使用一个代理插件——CodeGPT&#xff0c;CodeGPT是一个AI驱动的代码助手&#xff0c;旨在帮助开发者进行各种编程活动&#xff0c;它是GitHub Copilot、AI Assistant、Codiumate和其他JetBrains插件的强大替代品。安装之…...

如何使用Java生成pdf报告

文章目录 一、环境准备与Maven依赖说明二、核心代码解析1. 基础文档创建2. 中文字体处理3. 复杂表格创建4. 图片插入 三、完整代码示例四、最终效果 这篇主要说一下如何使用Java生成pdf&#xff0c;包括标题&#xff0c;文字&#xff0c;图片&#xff0c;表格的插入和调整等相关…...

Memory模块是agent的一个关键组件

Memory 2.6.1 简介 在Agent系统中&#xff0c;Memory模块是一个关键的组件&#xff0c;其主要功能是存储和检索信息&#xff0c;以支持agent的学习和决策过程。该模块模拟人类记忆的某些特征&#xff0c;能够动态地保存和更新信息&#xff0c;使agent能够利用过去的经验进行推…...

初级社会工作者考试难点总结

初级社会工作者考试难点总结 初级社会工作者&#xff08;助理社会工作师&#xff09;考试是进入社会工作行业的入门级资格认证&#xff0c;考试内容涵盖社会工作理论、实务技能及相关法规政策。虽然考试难度相对适中&#xff0c;但部分知识点和题型仍让考生感到棘手。本文总结…...

mapbox进阶,手写放大镜功能

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀手写放大镜功能1. ☘️实现思路2. ☘️…...

EasyRTC嵌入式音视频通信SDK一对一音视频通信,打造远程办公/医疗/教育等场景解决方案

一、方案概述​ 数字技术发展促使在线教育、远程医疗等行业对一对一实时音视频通信需求激增。传统方式存在低延迟、高画质及多场景适配不足等问题&#xff0c;而EasyRTC凭借音视频处理、高效信令交互与智能网络适配技术&#xff0c;打造稳定低延迟通信&#xff0c;满足基础通信…...

微信小程序中,解决lottie动画在真机不显示的问题

api部分 export function getRainInfo() {return onlineRequest({url: /ball/recruit/getRainInfo,method: get}); }data存储json数据 data&#xff1a;{rainJson:{} }onLoad方法获取json数据 onLoad(options) {let that thisgetRainInfo().then((res)>{that.setData({r…...

基于Flink的数据中台管理平台

基于Flink做的数据中台工程项目。数据从source到clickhouse全流程的验证。集成元数据管、数据资产、数据发现功能&#xff0c;自主管理元数据变更&#xff0c;集成元数据版本管理。 同时&#xff0c;对整个大数据集群使用到的组件或者是工具进行管理。比如nacos、kafka、zookee…...

Flink-Yarn运行模式

Yarn的部署过程 Yarn上部署的过程是&#xff1a;客户端把Flink应用提交给Yarn的ResourceManager,Yarn的ResourceManager会向Yarn的NodeManager申请容器&#xff0c;在这些容器上&#xff0c;Flink会部署JobManager和TaskManager的实例&#xff0c;从而启动集群&#xff0c;Flin…...

Java---斐波那契那数列

一、斐波那契数列的定义与起源 1. 数学定义 斐波那契数列&#xff08;Fibonacci Sequence&#xff09;又称黄金分割数列&#xff0c;其定义为&#xff1a; 初始项&#xff1a; F(0)0F(1)1 递推公式&#xff1a; 当 n≥2 时&#xff0c;F(n)F(n−1)F(n−2) 前 10 项数列&…...

通过AIoTedge或ThingsKit物联网平台内置的Node-RED读取OPC-UA

《通过AIoTedge或ThingsKit物联网平台内置的Node-RED读取OPC-UA》 一、引言 随着工业物联网&#xff08;IIoT&#xff09;的快速发展&#xff0c;设备之间的互联互通变得至关重要。OPC-UA&#xff08;Open Platform Communications Unified Architecture&#xff09;作为一种…...

《大模型开源与闭源的深度博弈:科技新生态下的权衡与抉择》

开源智能体大模型的核心魅力&#xff0c;在于它构建起了一个全球开发者共同参与的超级协作网络。想象一下&#xff0c;来自世界各个角落的开发者、研究者&#xff0c;无论身处繁华都市还是偏远小镇&#xff0c;只要心怀对技术的热爱与追求&#xff0c;就能加入到这场技术狂欢中…...

genicamtl_lmi_gocator_objectmodel3d

目录 一、在halcon中找不到genicamtl_lmi_gocator_objectmodel3d例程二、在halcon中运行genicamtl_lmi_gocator_objectmodel3d&#xff0c;该如何配置三、代码分段详解&#xff08;一&#xff09;传感器连接四、代码分段详解&#xff08;二&#xff09;采集图像并显示五、代码分…...

Node.js 24发布:性能与安全双提升

在科技的迅速发展中&#xff0c;Node.js作为一个备受青睐的开源跨平台Java运行环境&#xff0c;近日迎来了其24.0版本的正式发布。此次更新不仅承诺提升性能和安全性&#xff0c;还为开发者提供了更为顺畅的开发体验&#xff0c;值得我们深入探讨。 Node.js 24.0的最大亮点之一…...

是德科技 | 单通道448G未来之路:PAM4? PAM6? PAM8?

内容来源&#xff1a;是德科技 随着数据中心规模的不断扩大以及AI大模型等技术的兴起&#xff0c;市场对高速、大容量数据传输的需求日益增长。例如&#xff0c;AI训练集群中GPU等设备之间的互联需要更高的传输速率来提升效率。在技术升级方面&#xff0c;SerDes技术的不断进步…...

Dify智能体开发实践

1.聊天助⼿&#xff1a;创建技术⽀持问答机器⼈&#xff0c;通过提示词约束回答范围并引导追问澄清。 1.提示词 &#xff08;1&#xff09;技术支持机器人提示词 你是一位专业的技术支持机器人&#xff0c;专门为公司的各类技术产品和服务提供支持。你的回答范围严格限制在以下…...

网络安全之APP渗透测试总结

1、脱壳 360免费版加固&#xff0c;frida-dexdump、blackdex都可以脱掉。这里就不演示了 GitHub - hluwa/frida-dexdump: A frida tool to dump dex in memory to support security engineers analyzing malware. 2、密码泄露 经过对app登录界面&#xff0c;有对密码强度进行…...

笔记:NAT

一、NAT 的基本概念 NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09; 是一种在 IP 网络中重新映射 IP 地址的技术&#xff0c;主要用于解决 IPv4 地址短缺问题&#xff0c;同时提供一定的网络安全防护作用。 功能&#xff1a; 将内部网络&am…...

民锋视角下的多因子金融分析模型实践

在当前金融市场环境中&#xff0c;数据粒度与因子建模逐渐成为提升交易系统稳定性的重要方式。民锋长期专注于模型优化与策略深度挖掘&#xff0c;提出了一套适用于中短周期的数据判断体系&#xff0c;核心在于“多因子融合动态调权”。 具体而言&#xff0c;民锋的分析框架常…...

ThinkPHP 根据路由文件获取路由列表

定义一个路由变量 比如我们要获取admin的路由 $routeFile "admin.php"; 清除路由 调用 Route::clear() 方法&#xff0c;清除当前已定义的所有路由。 Route::clear();设置路由懒加载 调用 Route::lazy(false) 方法&#xff0c;禁用路由的懒加载功能,选择立即加…...

算法打卡第三天

10.长度最小的子数组 &#xff08;力扣209题&#xff09; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度**。**如果不存在符合条件的子…...

04_spring容器管理单例多例

文章目录 1. 单例&#xff08;Singleton&#xff09;2. 多例&#xff08;Prototype&#xff09;3. 使用场景4. 注意事项 在Spring框架中&#xff0c;Spring容器负责创建、配置和管理应用程序中的bean。关于单例&#xff08;Singleton&#xff09;和多例&#xff08;Prototype&a…...

算法C++最大公约数

原理 代码实现 #include <stdio.h>// 递归版本 int gcd_recursive(int a, int b) {if (b 0) return a; // 终止条件&#xff1a;余数为0时&#xff0c;除数即为GCDreturn gcd_recursive(b, a % b); // 递归调用&#xff0c;更新为(b, a%b) }// 迭代版本 int gcd_iterat…...

在 Ubuntu 下通过 C APP程序实现串口发送数据并接收返回数据

一、前言 使用 C 应用进行串口调用需要手动配置串口的各项参数&#xff0c;并且 Ubuntu 下的串口是通过读写文件实现的&#xff0c;所以还需要设置权限。 二、源码分析 serial.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <…...

ubuntu24.04+RTX5090D 显卡驱动安装

初步准备 Ubuntu默认内核太旧&#xff0c;用mainline工具安装新版&#xff1a; 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上的源码&#xff1a; openTCS - Downloads 2、安装java21 我的版本是&#xff1a;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&#xff0c;labelme要用到pyqt&#xff0c;所以在使用labelme之前要安…...

每日算法-250521

每日算法学习 大家好&#xff01;这是我今天的算法练习记录&#xff0c;分享四道 LeetCode 题目的解题思路和代码。希望能对大家有所帮助&#xff01; 219. 存在重复元素 II 题目 思路 哈希表 利用哈希表来存储数组中元素及其最近出现的索引。 解题过程 当我们遍历数组 num…...

正大模型视角下的高频交易因子构建策略研究

正大模型视角下的高频交易因子构建策略研究 在金融衍生品交易体系中&#xff0c;数据主导型模型逐渐成为核心竞争力。以正大为代表的量化团队&#xff0c;通过大量历史数据研究&#xff0c;构建出一套基于高频因子的模型框架&#xff0c;从成交节奏、盘口行为、价格波动等维度动…...

Babylon.js学习之路《八、动画基础:关键帧动画与缓动效果》

文章目录 1. 引言&#xff1a;动画在3D场景中的核心作用2. 关键帧动画基础2.1 键帧动画原理2.2 创建简单关键帧动画 3. 缓动函数&#xff08;Easing Functions&#xff09;3.1 缓动函数的作用3.2 应用缓动函数 4. 复杂动画&#xff1a;多属性联动与序列控制4.1 同时控制位置、旋…...

小满未满,是成长的序章

节气小满&#xff0c;昭示着奋斗正当时&#xff0c;Codigger 怀揣热忱&#xff0c;在代码的天地里披荆斩棘&#xff0c;向着圆满目标大步迈进 。...

JavaWeb 开发流程

项目建立 SpringBoot框架构建 Spring Boot 是基于 Spring 框架的开源 Java 基础框架&#xff0c;用于创建独立、生产级的基于 Spring Framework 的应用程序。 我们可以使用IDEA建立SpringBoot框架。 语言选择Java&#xff0c;类型选择Maven&#xff0c;JDK和Java要保持一致&…...

Cmake 使用教程

介绍 CMake 是一个开源、跨平台的构建系统&#xff0c;主要用于软件的构建、测试和打包。CMake 使用平台无关的配置文件 CMakeLists.txt 来控制软件的编译过程&#xff0c;并生成适用于不同编译器环境的项目文件。例如&#xff0c;它可以生成 Unix 系统的 Makefile 、 Win…...

CLIP、ViLT 与 LLaVA:多模态模型是如何看图说话的?

一、前言&#xff1a;我们已经讲了 MLLM 能力&#xff0c;但它到底是怎么实现“看图说话”的&#xff1f; 在之前文章中&#xff0c;我们已经提到了MLLM可以看图说话以及文生图等能力&#xff0c;ViT统一图文多模态架构。那模型是如何处理图文信息以及不同处理所带来的能力是怎…...

基于Springboot + vue3实现的流动摊位管理系统

项目描述 本系统包含管理员、用户、商家三个角色。 管理员角色&#xff1a; 用户管理&#xff1a;管理系统中所有用户的信息&#xff0c;包括添加、删除和修改用户。 配置管理&#xff1a;管理系统配置参数&#xff0c;如上传图片的路径等。 权限管理&#xff1a;分配和管理…...

我的软考经历

说明&#xff1a;本文分享博主软考经验&#xff0c;及软考证书在找工作时的作用。 软考 软考&#xff0c;全称&#xff1a;中国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;报名/考试/查询网址为&#xff0c;中国计算机技术职业资格网 考试分…...

C++的异常

引入&#xff1a;异常的意义是什么&#xff1f; ①&#xff1a;错误分离 将正常逻辑&#xff08;try&#xff09;与错误处理&#xff08;catch&#xff09;分离&#xff0c;避免代码被大量 if-else 污染。 ②&#xff1a;强制处理 若不捕获异常&#xff0c;程序终止&#xff0c…...

精益制造数字化转型智能工厂三年规划建设方案

该文档是精益制造数字化转型智能工厂三年规划建设方案,以打造高品质、低成本、柔性化的绿色智能工厂为愿景,围绕制造技术、自动化、数智化、管理赋能四大路径,通过夯实 EHS、品质一致性、生产安定化、现场整洁四大基石,推进标杆车间打造、联合管理、TOB 流程改善等专项。规…...

Linux 文件(3)

文章目录 1. Linux下一切皆文件2. 文件缓冲区2.1 缓冲区是什么2.2 缓冲区的刷新策略2.3 为什么要有缓冲区2.4 一个理解缓冲区刷新的例子 3. 标准错误 1. Linux下一切皆文件 在刚开始学习Linux的时候&#xff0c;我们就说Linux下一切皆文件——键盘是文件&#xff0c;显示器是文…...

Java异步编程利器:CompletableFuture 深度解析与实战

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、CompletableFuture 概述 CompletableFuture是Java 8引入的异步编程工具类&#xff0c;实现了Future和CompletionStage接口&#xff0c;支持链式调用、组…...

如何支持Enhanced RTMP H.265(HEVC)

在实时音视频传输中&#xff0c;H.264长期占据主流&#xff0c;但随着视频质量要求的不断提高和带宽压力的加大&#xff0c;H.265&#xff08;HEVC&#xff09;作为下一代视频编码标准逐渐崭露头角。 在这种背景下&#xff0c;我们顺应行业发展趋势&#xff0c;成功集成了对Enh…...

Idea 查找引用jar包依赖来源的Maven pom坐标

目录 问题引入 实现解决 问题引入&#xff1a; 在查看拉取的项目&#xff0c;维护自己项目、或者迁移原有项目时&#xff0c;会遇到不知道代码中引用到的依赖从哪里引用到的。 所以利用Idea&#xff0c;从import语句到Maven项目结构树中查找&#xff0c;最终找到pom文件里的…...