目录
一、WEB服务与虚拟主机概述
万维网(World Wide Web,简称WWW)是基于客户机/服务器方式的信息发现技术和超文本技术的综合。WWW服务器通过超文本标记语言(HTML)把信息组织成为图文并茂的超文本,利用链接从一个站点跳到另一个站点,从而摆脱了以前查询工具只能按特定路径一步步地查找信息的限制。Web上的信息由彼此关联的文档组成,而使其连接在一起的是超链接(Hyperlink)。
二、HTML的历史与版本
HTML(HyperText Markup Language)是用于创建网页和网页上的链接的标准标记语言。它是所有Web开发的基础,描述了一个网站的结构和内容,而其外观和表现则通常由CSS(层叠样式表)控制。
-
HTML的历史
- HTML由Tim Berners-Lee在1990年首次提出。
- HTML 2.0(1995年):第一个被IETF(互联网工程任务组)正式标准化的HTML版本。
- HTML 4.01(1999年):引入了更多的CSS支持和更好的国际化。
- XHTML 1.0(2000年):一种以XML语法为基础的HTML版本,要求更严格的代码有效性。
- HTML5(2014年正式推出):当前最新的版本,支持所有现代浏览器,引入了新的元素和API,改进了多媒体支持(如audio和video标签),并加强了Web应用程序的功能。
-
HTML的扩展功能
- HTML5引入了许多重要的新特性和改进,增强了Web的能力。
- 语义化元素:如< article >、< section >、< nav >、< header >、< footer >等,使结构更清晰。
- 表单控件:增加了多种类型的输入控件,如< date >、< time >、< email >、< url >等。
- 图形和多媒体:< canvas >用于绘图,< svg >支持可缩放矢量图形,< audio >和< video >元素用于嵌入音频和视频。
- 新的API:如拖放API、地理定位API、本地存储和Web Worker。
三、URI与URL
-
URI(Uniform Resource Identifier,统一资源标识符)
- URI是一种用来标识某一互联网资源的字符串。URI的目的是唯一标识一个资源而不必指明它在哪里存在或如何访问。URI具有两种形式:URL和URN(Uniform Resource Name,统一资源名称)。
-
URL(Uniform Resource Locator,统一资源定位器)
- URL是URI最常见的形式,它不仅标识资源,还提供了找到该资源的方法。
- 例子:
http://www.example.com/index.html
是一个URL,它提供了资源的位置(www.example.com
)和访问协议(HTTP)。
-
URN(Uniform Resource Name,统一资源名称)
- URN是另一种形式的URI,它通过名字来标识资源,但不指定如何定位资源。
- 例子:
urn:isbn:0451450523
通过国际标准书号(ISBN)唯一标识一个书籍资源,但不告诉你如何找到或获取这本书。
四、HTTP协议
-
HTTP的历史
- HTTP/0.9(1991年):最初的版本非常简单,只支持GET请求。
- HTTP/1.0(1996年,RFC 1945):引入了方法如POST和HEAD,支持多种媒体类型,响应包含状态码。
- HTTP/1.1(1997年,RFC 2068;1999年更新为RFC 2616):目前最广泛使用的版本,增加了持久连接、管道化、更丰富的缓存控制、内容协商等功能。
- HTTP/2(2015年,RFC 7540):基于Google的SPDY协议,支持请求和响应的多路复用、二进制帧、头部压缩等,以提高性能和减少延迟。
- HTTP/3(开发中,基于QUIC协议):旨在进一步减少延迟,并改进对网络变化的适应性。
-
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(服务器错误)等。
- 请求:由一个请求行(包含方法、URI、HTTP版本)、请求头部和可选的消息体组成。
五、虚拟主机与虚拟目录
虚拟主机允许一台服务器托管多个网站,每个网站都有自己的域名和网站内容。每个虚拟主机都像一个独立的服务器,具有自己的设置和配置。虚拟主机适用于Web托管公司,或者需要分别管理多个项目的场合。
-
虚拟目录的优势
- 组织文件:可以将不同的内容存储在不同的物理位置,而不需要将所有内容都放在网站的根目录中。这样可以更好地组织文件和资源。
- 安全性:可以通过虚拟目录将一些敏感文件放在非网站根目录下,同时仍然可以通过特定的URL进行访问。
- 便于管理:通过虚拟目录,可以将多个网站共享的一些公共资源存放在一个地方,减少冗余,便于维护和更新。
-
如何在IIS中创建虚拟目录
- 打开IIS管理器:在服务器上,启动IIS管理器。
- 选择网站:在左侧的连接面板中展开你的服务器节点,找到并选择你要为其创建虚拟目录的网站。
- 添加虚拟目录:右键点击网站名称,选择“添加虚拟目录”。
- 在弹出的对话框中,输入虚拟目录的别名(例如images)。
- 在物理路径字段中,浏览并选择要映射的物理文件夹(例如D:\content\images)。
- 完成设置:点击“确定”完成设置。虚拟目录创建后,你可以通过对应的URL路径访问该目录中的内容。
六、常见Web URL格式
常见的Web URL格式有以下几种情况:
- 基本网址
- URL:
http://www.topsec.com.cn
- 说明:这是一个标准的HTTP网址,不带端口号或虚拟目录。默认情况下,HTTP协议使用端口80。
- URL:
- 带端口号的网址
- URL:
http://www.topsec.com.cn:168
- 说明:这个URL指定了端口号168。通常,Web服务可以配置在除了默认端口外的任何端口上,这在主机上运行多个Web服务时特别有用。
- URL:
- 带虚拟目录的网址
- URL:
http://www.topsec.com.cn/webexam
- 说明:这个URL包含一个虚拟目录webexam。虚拟目录是Web服务器上的一个路径别名,它指向服务器文件系统中的某个位置,客户端可以通过这个简化的路径访问存储在那里的资源。
- URL:
- 带端口号和虚拟目录的网址
- URL:
http://www.topsec.com.cn:168/webexam
- 说明:这个URL同时包含端口号和虚拟目录。这种格式非常适合访问配置在非标准端口上的特定Web应用或服务。
- URL:
七、HTTP状态码
HTTP状态码用于告知客户端请求的状态。以下是一些常见的HTTP状态码:
-
2xx 成功状态码
- 200 OK:请求成功处理,信息返回在响应中。
- 201 Created:请求成功,并因此创建了新的资源。
- 202 Accepted:请求已接受进行处理,但处理尚未完成。
- 204 No Content:服务器成功处理了请求,但不需要返回任何实体内容。
-
3xx 重定向状态码
- 300 Multiple Choices:多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。
- 301 Moved Permanently:永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替。
- 302 Found:临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI。
- 303 See Other:查看其它地址。与301类似。使用GET和POST请求查看。
- 304 Not Modified:未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
- 305 Use Proxy:使用代理。所请求的资源必须通过代理访问。
- 307 Temporary Redirect:临时重定向。与302类似。使用GET请求重定向。
-
4xx 客户端错误状态码
- 400 Bad Request:客户端请求的语法错误,服务器无法理解。
- 401 Unauthorized:请求要求用户的身仹认证。
- 403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。
- 404 Not Found:服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面。
- 405 Method Not Allowed:客户端请求中的方法被禁止。
- 406 Not Acceptable:服务器无法根据客户端请求的内容特性完成请求。
- 407 Proxy Authentication Required:请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。
- 408 Request Timeout:服务器等待客户端发送的请求时间过长,超时。
- 409 Conflict:服务器完成客户端的PUT请求时可能返回此代码,服务器处理请求时发生了冲突。
- 410 Gone:客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置。
- 411 Length Required:服务器无法处理客户端发送的不带Content-Length的请求信息。
- 412 Precondition Failed:客户端请求信息的先决条件错误。
- 413 Request Entity Too Large:由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。
-
5xx 服务器错误状态码
- 500 Internal Server Error:服务器内部错误,无法完成请求。
- 501 Not Implemented:服务器不支持请求的功能,无法完成请求。
- 502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应。
- 503 Service Unavailable:由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中。
- 504 Gateway Time-out:充当网关或代理的服务器,未及时从远端服务器获取请求。
- 505 HTTP Version not Supported:服务器不支持请求的HTTP协议的版本,无法完成处理。
参考资料
- W3Schools HTML教程:https://www.w3school.com.cn/html/html_jianjie.asp
- RFC文档:http://www.ietf.org/rfc/rfc2616.txt
- HTTP/2规范:https://tools.ietf.org/html/rfc7540
- HTTP/3草案:https://datatracker.ietf.org/doc/html/draft-ietf-quic-http
- Microsoft IIS文档:https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10-0/whats-new-in-iis-10-0