目录
WWW 万维网
WWW (万维网)是一个庞大的信息系统,它使通过互联网连接的文档和其他资源能够相互链接和访问。这些资源主要通过 URL(统一资源定位器)进行访问,并通过 HTTP(超文本传输协议)传输。WWW 的构建基于三项核心技术:
- HTML(超文本标记语言):用于创建网页和网页上的链接
- URI(统一资源标识符):作为每个资源的地址,最常见的形式是 URL
- HTTP(超文本传输协议):用于 Web 服务器和客户端之间传输数据
HTML
HTML 是用于创建网页和网页应用的标准标记语言。HTML 是所有 Web 开发的基础,它描述了一个网站的结构和内容,而外观和表现则通常由 CSS (层叠样式表)控制。
如需具体学习可参考
HTML 简介https://www.w3school.com.cn/html/html_jianjie.asp
URI 与 URL
1. URI(统一资源标识符)
一种用来标识某一互联网资源的字符串。URI 的目的是唯一标识一个资源而不必指明它在哪里存在或如何访问。URI 具有两种形式:URL 和 URN
2. URL(统一资源定位器)
URI 最常见的形式,不仅标识资源,还提供了找到该资源的方法
eg:
http://www.example.com/index.html
是一个 URL,它提供了资源的位置(www.example.com)和访问协议(HTTP)
3. URN(统一资源名称)
另一种形式的 URI,它通过名字来标识资源,但不指定如何定位资源
eg:
urn:isbn:0451450523
是通过 ISBN 唯一标识的一个书籍资源,但是不提供如何找到或获取这本书的方法
HTTP 超文本传输协议
HTTP 是互联网上应用最广泛的协议之一,基于 TCP 80 端口。主要用于在 Web 浏览器和服务器之间传输数据,这个协议定义了客户端(用户的浏览器)和服务器之间请求和响应的格式
主要特点
- 无状态协议:HTTP 自身不保存之前的交互状态,意味着每次请求之间都是独立的。这个特点简化了服务器设计,但是也限制了应用开发。为了克服这一限制,通常会在服务器端使用 cookie 来存储用户状态
- 可扩展:HTTP 协议的请求和响应头部都支持自定义字段,使得 HTTP 可以适应各种用途
工作流程
- 连接:客户端通过网络与服务器建立 TCP 连接(通常是 80 端口或 443 端口)
- 发送请求:客户端发送一个 HTTP 请求到服务器
- 处理请求并响应:服务器处理请求并回送一个 HTTP 响应
- 释放连接或复用:在 HTTP/1.0 中,每个请求或响应后通常关闭 TCP 连接。HTTP/1.1 支持持久连接,可用于多个请求或响应
- 关闭连接:最终关闭 TCP 连接
HTTP 消息结构
- 请求:请求行(包括方法、URI、HTTP 版本)+请求头部+可选的消息体
方法:GET(请求资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)
- 响应:状态行(包含 HTTP 版本、状态码、状态文本)+响应头部+可选的消息体
状态码:例如 200(成功)、404(未找到)、500(服务器错误)等
HTTP 请求
a. 请求行
HTTP 的第一行,包含三个部分,方法、请求 URI、协议版本
eg:GET /index.html HTTP/1.1
这表示客户端希望使用 GET 方法获取位于/index.html 的资源,使用的 HTTP 版本为 1.1
b. 请求头
从第二行开始到第一个空行为止直接的内容,包含多个字段。
包含关于请求和请求资源的元数据。以键值对的形式,每对之间用冒号分隔。请求头在请求行之后,用空行结束。
ps:请求头和请求体之间会有一个请求空行
c. 请求体
包含发送给服务器的数据。在 POST 和 PUT 请求中,这些数据通常用于更新资源或创建资源。请求体的具体内容和格式由请求头中的 Content-Type
决定
eg:
- Content-Type:application/x-www-form-urlencoded
请求体格式是编码的键值对,如 key1=value1&key2=value2
- Content-Type:multipart/form-data
用于文件上传等操作
- Content-Type:application/json
请求体是一个 JSON 字符串
HTTP 响应
a. 状态行
响应报文的第一行,包括三个部分:HTTP 版本、状态码、状态描述
eg:HTTP/1.1 200 OK
表示 HTTP 版本为 1.1,请求成功
b. 响应头
提供了关于服务器、响应和其他访问控制的元数据,类似于请求头。响应头位于状态行之后,以空行结束。
c. 响应体
服务器返回的实际数据部分,并非所有响应都有。响应体可能包含请求 HTML文件、图像、错误消息、或者其他类型的数据
HTTP 状态码
1xx 信息性状态码
- 100:收到请求的起始部分,客户端应该继续请求
- 101:服务器根据客户端的指示,将协议切换成 update header 列出的协议
2xx 成功状态码
- 200:请求成功,信息返回响应中
- 201:请求成功,并创建了新的资源
- 202:请求已接受进行处理,但处理尚未完成
- 204:服务器成功处理请求,但不需返回任何实体内容
3xx 重定向状态码
- 300:请求的资源可包括多个位置,相应可返回一个资源特征和地址列表用于用户终端选择
- 301:永久移动
- 302:临时移动
- 304:所请求的资源未修改
4xx 客户端错误状态码
- 400:客户端请求的语法错误,服务器无法理解
- 403:服务器理解请求客户端的请求,但是拒绝执行
- 404:服务器无法根据客户端的请求找到资源网页
- 405:客户端请求中的方法被禁止
5xx 服务器错误状态码
- 500:服务器内部错误,无法完成请求
ps:仅列出部分常见状态码
常见的 Web URL 格式
- http://www.example.com
标准的 HTTP 网址,不带端口号或虚拟目录,默认情况下 HTTP 协议使用端口号 80
- http://www.example.com:168
指定了端口号 168,通常 Web 服务可以配置在除了默认端口外的任何端口上,这在主机上运行多个 Web 服务时特别有用
- http://www.example.com/web
这个 URL 包含一个虚拟目录 web,虚拟目录详解见下
- http://www.example.com:168/web
这个 URL 同时包含端口号和虚拟目录。这种格式非常实用访问配置在非标准端口上的特定 Web 应用或服务
虚拟目录
虚拟目录是 Web 服务器上的一个路径别名,它指向服务器文件系统中的某个位置,客户端可以通过这个简化的路径访问存储在那里的资源
eg:假设一个托管在 IIS 上的网站,其根目录为 C:\inetpub\wwwroot\mysite,并且网站 URL 是 http://www.example.com。如果在服务器的 D:\content\images 文件夹中存储了一些图片,但又不想或者无法将这些图片文件移动到网站的根目录下,那么此时可以通过创建一个虚拟目录实现该需求。大致步骤如下:
- 在 IIS 中为 D:\content\images 文件夹创建一个虚拟目录,并将其命名为 images
- 这个虚拟目录将映射到网站的 URL 路径 /images 上
- 此时可以通过 http://www.example.com/images 来访问 D:\content\images 文件夹中的内容
虚拟目录的优势
- 组织文件:不需要将所有内容都放在网站的根目录下,可以将不同的内容存放在不同的物理位置
- 安全性:可以将一些敏感文件放在非网站根目录下,同时仍通过虚拟目录来访问
- 便于管理:可以将多个网站共享的一些公共资源存放在同一个位置,减少冗余,同时便于更新和维护
虚拟主机(有时又叫虚拟站点或网站)
虚拟主机允许一台服务器托管多个网站,每个网站都有自己的域名和网站内容。每个虚拟主机都像是一个独立的服务器,具有自己的设置和配置
关键区别
- 虚拟目录:主要用于文件和目录访问,是文件系统的逻辑表示
- 虚拟主机:用于管理和托管完整的网站,每个网站都可以有自己的域名、配置和内容