网络安全服务基础Windows--第11节-WEB服务与虚拟主机
WWW 概述
万维⽹WWW是World Wide Web的简称,也称为Web、3W等。WWW是基于客户机/服务器⽅式的信息发现技术和超⽂本技术的综合。WWW服务器通过超⽂本标记语⾔(HTML)把信息组织成为图⽂并茂的超⽂本,利⽤链接从⼀个站点跳到另个站点。这样⼀来彻底摆脱了以前查询⼯具只能按特定路径⼀步步地查找信息的限制。
WWW (World Wide Web,万维⽹)是存储在Internet计算机中、数量巨⼤的⽂档的集合。这些⽂档称为⻚⾯,它是⼀种超⽂本(Hypertext)信息,可以⽤于描述超媒体。⽂本、图形、视频、⾳频等多媒体,称为超媒体(Hypermedia)。Web上的信息是由彼此关联的⽂档组成的,⽽使其连接在⼀起的是超链接(Hyperlink) 。
超⽂本(Hypertext)是由⼀个叫做 ⽹⻚ 浏览器(Web browser)的程序显示。⽹⻚浏览器从⽹⻚服务器取回称为“⽂档”或“⽹⻚”的信息并显示。通常是显示在计算机显示器。⼈可以跟随⽹⻚上的超链接(Hyperlink),再取回⽂件,甚⾄也可以送出数据给服务器。顺着超链接⾛的⾏为⼜叫浏览⽹⻚。相关的数据通常排成⼀群⽹⻚,⼜叫⽹站
WWW(万维⽹)是⼀个庞⼤的信息系统,它使得通过互联⽹连接的⽂档和其他资源能够相互链接和访问。这些资源主要通过URL(统⼀资源定位器)进⾏访问,并通过HTTP(超⽂本传输协议)传输。WWW的构建基于三项核⼼技术:1. HTML(超⽂本标记语⾔):⽤于创建⽹⻚和⽹⻚上的链接。2. URI(统⼀资源标识符):作为每个资源的地址,最常⻅的形式是URL。3. HTTP(超⽂本传输协议):⽤于在Web服务器和客户端之间传输数据。
WWW是由蒂姆·伯纳斯-李(Tim Berners-Lee)在1989年发明的,最初设计⽬的是为了使物理分离的科研⼈员能够⽅便地共享⽂档和数据。
HTML
HTML(HyperText Markup Language)是⽤于创建⽹⻚和⽹⻚应⽤的标准标记语⾔。HTML 是所有Web开发的基础,它描述了⼀个⽹站的结构和内容,⽽其外观和表现则通常由CSS(层叠样式表)控制。
历史和版本
HTML由Tim Berners-Lee在1990年⾸次提出,随着互联⽹的发展,HTML也经历了多个版本的更新:HTML 2.0(1995年):第⼀个被IETF(互联⽹⼯程任务组)正式标准化的HTML版本。HTML 4.01(1999年):引⼊了更多的CSS⽀持和更好的国际化。XHTML 1.0(2000年):⼀种以XML语法为基础的HTML版本,要求更严格的代码有效性。HTML5(2014年正式推出):当前最新的版本,⽀持所有现代浏览器,引⼊了新的元素和API,改进了多媒体⽀持(如audio和video标签),并加强了Web应⽤程序的功能。
主要特点
● ⽆状态协议:HTTP⾃身不保存之前的交互状态,这意味着每次请求之间都是独⽴的。这个特点简化了服务器设计,但也限制了应⽤开发。为了克服这⼀限制,通常会在服务器端使⽤cookie来存储⽤户状态。● 可扩展:HTTP协议的请求和响应头部都⽀持⾃定义字段,使得HTTP可以适应各种⽤途。
⼯作流程
1. 连接:客户端通过⽹络与服务器建⽴TCP连接(通常是80端⼝或443端⼝)。2. 发送请求:客户端发送⼀个HTTP请求到服务器。3. 处理请求并响应:服务器处理请求并回送⼀个HTTP响应。4. 释放连接或复⽤:在HTTP/1.0中,每个请求/响应后通常关闭TCP连接。HTTP/1.1⽀持持久连接,可⽤于多个请求/响应。5. 关闭连接:最终关闭TCP连接。HTTP是构建现代Web应⽤的基础,⽀持从简单的⽹⻚请求到复杂的RESTful服务和API。随着Web技术的发展,HTTP也在不断进化,以满⾜安全性、效率和速度的要求。
HTTP消息结构
● 请求:由⼀个请求⾏(包含⽅法、URI、HTTP版本)、请求头部和可选的消息体组成。○ ⽅法:如GET(请求资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等。● 响应:由⼀个状态⾏(包含HTTP版本、状态码、状态⽂本)、响应头部和可选的消息体组成。○ 状态码:如200(成功)、404(未找到)、500(服务器错误)等。
HTTP请求 :
请取⾏
请求头
空⾏
请求体 三部分组成
1. 请求⾏请求⾏是HTTP请求的第⼀⾏,包含三个部分:● ⽅法 :这是⼀个动词,如 GET、POST、PUT、DELETE 等,指示请求的操作类型。○ GET :请求检索指定的资源。○ POST :⽤于表单提交或⽂件上传,向指定资源提交数据,通常导致服务器状态的改变或副作⽤。○ PUT :替换指定资源的所有当前表示。服务器写⼊⽂档(危险)○ DELETE :删除指定的资源。请求服务器删除指定资源(危险)○ HEAD :与GET⽅法类似,但在服务器相应中只返回⾸部○ OPTIONS 测试服务器所⽀持的⽅法● 请求URI (统⼀资源标识符):指定所请求资源的位置。● 协议版本 :通常是 HTTP/1.1 或 HTTP/2.0。
例如,⼀个典型的请求⾏可能看起来像这样:
GET /index.html HTTP/1.1
这表示客户端希望使⽤GET⽅法获取位于
/index.html
的资源,使⽤的HTTP版本为1.1。
2.请求头
请求头包含了关于请求和请求的资源的元数据。它们是键值对的形式,每对之间⽤冒号分隔。请求头在请求⾏之后,⽤空⾏结束。主要请求头包括但不限于:请求头:从第⼆⾏开始到第⼀个空⾏为⽌直接的内容。包含多个字段主要字段含义Host :指定请求将发送到哪个主机和端⼝。这在访问托管在同⼀服务器上的多个⽹站时⾮常重要。User-Agent :标识发出请求的客户端信息,通常包括操作系统、浏览器类型和版本等。Accept :客户端能够接收的内容类型,如 text/html 、 application/json 等。Content-Type :在POST或PUT请求中使⽤,表示请求体的媒体类型(MIME类型),如 application/x-www-form-urlencoded 、 multipart/form-data 、 application/json 等。Authorization :包含凭证信息,⽤于资源的认证。Content-Length :请求体的⻓度(字节数)。Referer 包含⼀个URL,表示本次访问上⼀次来⾃于哪个URL地址Cookie 记录请求者的身份认证信息
3. 请求体请求体是可选的,并不是所有的HTTP请求都包含请求体(⽐如GET请求通常没有请求体)。请求体包含发送给服务器的数据。在POST和PUT请求中,这些数据通常⽤于更新资源或创建资源。请求体的具体内容和格式由请求头中的 Content-Type 决定。例如:GET /index.html HTTP/1.1当 Content-Type: application/x-www-form-urlencoded 时,体格式是编码的键值对,如 key1=value1&key2=value2 。当 Content-Type: multipart/form-data 时,⽤于⽂件上传等操作。当 Content-Type: application/json 时,体是⼀个JSON字符串。
HTTP响应:
HTTP 响应报⽂是服务器回应客户端请求的⽅式。每个响应报⽂由三个主要部分组成:状态⾏、响应头,以及可选的响应体。这些部分共同描述了服务器对请求的处理结果以及返回的数据。
1. 状态⾏状态⾏是响应报⽂的第⼀⾏,包括三个部分:状态⾏:响应报⽂的第⼀⾏ 协议版本:HTTP/1.1 响应状态码:200 描述短语:OKHTTP版本:标示响应使⽤的HTTP协议版本,如 HTTP/1.1 或 HTTP/2.0。状态码:⼀个三位数,表明请求处理的结果。状态码的第⼀个数字定义了响应的类别(如 2xx 表示成功,4xx 表示客户端错误,5xx 表示服务器错误)。常⻅状态码包括:200 OK - 请求成功。404 Not Found - 请求的资源未找到。500 Internal Server Error - 服务器内部错误。状态描述:简短的短语描述状态码,例如 "OK"、"Not Found" 或 "Internal Server Error"。
例如,⼀个成功的响应状态⾏可能是这样: HTTP/1.1 200 OK
2. 响应头
响应头提供了关于服务器、响应和其他访问控制的元数据,类似于请求头。响应头位于状态⾏之后,以空⾏结束,主要包括:Server:描述服务器软件的信息,例如 Server: Apache/2.4.1 (Unix) 。Content-Type:指定响应体的媒体类型,如 Content-Type: text/html; charset=UTF-8 。Content-Length:响应体的⻓度(字节数),例如 Content-Length: 348 。Set-Cookie:如果服务器希望客户端存储⼀个cookie,会使⽤此头部。Cache-Control:指定了缓存的指令,如 Cache-Control: no-cache 。Location:⽤于重定向,指出客户端应跳转到的URL,如 Location: http://www.example.comDate:响应⽣成的⽇期和时间。
3. 响应体
响应体是服务器返回的实际数据部分,它不是所有响应都有的。响应体可能包含请求的HTML⽂件、图像、错误消息、或者其他类型的数据。响应体的内容应符合状态⾏和响应头中定义的内容类型。
HTTP 状态码
状态码类型
1xx 信息性状态码
100 |
continue 继续
|
收到请求的起始部分,客户端应该继续请求
|
101 |
switching protocols 切换协议
|
服务器根据客户端的指示将协议切换成update header列出的协议
|
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
|
使⽤代理。所请求的资源必须通过代理访问
|
306 |
Unused
|
已经被废弃的HTTP状态码
|
307 |
Temporary Redirect
|
临时重定向。与302类似。使⽤GET请求重定向
|
4xx 404 客户端错误状态码
400 |
Bad Request
|
客户端请求的语法错误,服务器⽆法理解
|
401 |
Unauthorized
|
请求要求⽤户的身份认证
|
402 |
Payment Required
|
保留,将来使⽤
|
403 |
403 Forbidden
服务器理解请求客
户端的请求,但是
拒绝执⾏此请求
|
服务器理解请求客户端的请求,但是拒绝执⾏此请求
|
404 |
404 Not Found 服务 器⽆法根据客户端 的请求找到资源 (⽹⻚)。通过此代码,⽹站设计⼈ 员可设置"您所请求的资源⽆法找到"的 个性⻚⾯
|
服务器⽆法根据客户端的请求找到资源(⽹⻚)。通过此
代码,⽹站设计⼈员可设置"您所请求的资源⽆法找到"的个
性⻚⾯
|
405 |
Method Not Allowed
|
客户端请求中的⽅法被禁⽌
|
406 |
Not Acceptable
|
服务器⽆法根据客户端请求的内容特性完成请求
|
407 |
Proxy Authentication Required
|
请求要求代理的身份认证,与401类似,但请求者应当使⽤代理进⾏授权。
|
408 |
Request Time-out
|
服务器等待客户端发送的请求时间过⻓,超时。
|
409 |
Conflict
|
服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理
请求时发⽣了冲突。
|
410 |
Gone
|
客户端请求的资源已经不存在。410不同于404,如果资源以前
有现在被永久删除了可使⽤410代码,⽹站设计⼈员可通过301
代码指定资源的新位置。
|
411 |
Length Required
|
服务器⽆法处理客户端发送的不带Content-Length的请求信
息。
|
412 |
Precondition Failed
|
客户端请求信息的先决条件错误。
|
413 |
Request Entity Too
Large
|
由于请求的实体过⼤,服务器⽆法处理,因此拒绝请求。为防⽌客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时⽆法处理,则会包含⼀个Retry-After的响应信息。
|
414 |
Request-URI Too Large
|
请求的URI过⻓(URI通常为⽹址),服务器⽆法处理。
|
415 |
Unsupported Media Type
|
服务器⽆法处理请求附带的媒体格式。
|
416 |
Requested range
not satisfiable
|
客户端请求的范围⽆效。
|
417 |
Expectation Failed
|
服务器⽆法满⾜Expect的请求头信息。
|
5xx 服务器错误状态码
500 |
Internal Server Error
|
服务器内部错误,⽆法完成请求
|
501 |
Not Implemented
|
服务器不⽀持请求的功能,⽆法完成请求
|
502 |
Bad Gateway
|
作为⽹关或者代理⼯作的服务器尝试执⾏请求时,从远程服务器接收到了⼀个⽆效的响应
|
503 |
Service Unavailable
|
由于超载或系统维护,服务器暂时的⽆法处理客户端的请求。延时的⻓度可包含在服务器的Retry-After头信息中
|
504 |
Gateway Time-out
|
充当⽹关或代理的服务器,未及时从远端服务器获取请求
|
505 |
HTTP Version not
|
服务器不⽀持请求的HTTP协议的版本,⽆法完成处理
|
常⻅的Web URL格式
基本⽹址:URL: http://www.topsec.com.cn说明: 这是⼀个标准的HTTP⽹址,不带端⼝号或虚拟⽬录。默认情况下,HTTP协议使⽤端⼝80。带端⼝号的⽹址:URL: http://www.topsec.com.cn:168说明: 这个URL指定了端⼝号 168 。通常,Web服务可以配置在除了默认端⼝外的任何端⼝上,这在主机上运⾏多个Web服务时特别有⽤。带虚拟⽬录的⽹址:URL: http://www.topsec.com.cn/webexam说明: 这个URL包含⼀个虚拟⽬录 webexam 。虚拟⽬录是Web服务器上的⼀个路径别名,它指向服务器⽂件系统中的某个位置,客户端可以通过这个简化的路径访问存储在那⾥的资源。带端⼝号和虚拟⽬录的⽹址:URL: http://www.topsec.com.cn:168/webexam说明: 这个URL同时包含端⼝号和虚拟⽬录。这种格式⾮常适⽤于访问配置在⾮标准端⼝上的特定Web应⽤或服务。
虚拟⽬录
虚拟⽬录是 IIS 中的⼀种机制,它允许你将服务器上不同的物理⽂件夹映射到⽹站的 URL 路径上。通过创建虚拟⽬录,你可以将服务器上任意位置的⽂件或⽂件夹通过⼀个特定的 URL 访问,⽽不需要将这些⽂件或⽂件夹直接放在⽹站的根⽬录下。
举个例⼦:假设你有⼀个托管在 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 ⽂件夹中的内容。
虚拟⽬录的优势
1. 组织⽂件:你可以将不同的内容存储在不同的物理位置,⽽不需要将所有内容都放在⽹站的根⽬录中。这样可以更好地组织⽂件和资源。2. 安全性:可以通过虚拟⽬录将⼀些敏感⽂件放在⾮⽹站根⽬录下,同时仍然可以通过特定的 URL 进⾏访问。3. 便于管理:通过虚拟⽬录,你可以将多个⽹站共享的⼀些公共资源存放在⼀个地⽅,减少冗余,便于维护和更新。
如何在 IIS 中创建虚拟⽬录
1. 打开 IIS 管理器:在服务器上,启动 IIS 管理器。2. 选择⽹站:在左侧的连接⾯板中展开你的服务器节点,找到并选择你要为其创建虚拟⽬录的⽹站。3. 添加虚拟⽬录:右键点击⽹站名称,选择“添加虚拟⽬录”。在弹出的对话框中,输⼊虚拟⽬录的别名(例如 images )。在物理路径字段中,浏览并选择要映射的物理⽂件夹(例如 D:\content\images )。4. 完成设置:点击“确定”完成设置。虚拟⽬录创建后,你可以通过对应的 URL 路径访问该⽬录中的内容。
虚拟主机(更常⻅的称呼是虚拟站点或⽹站)
虚拟主机允许⼀台服务器托管多个⽹站,每个⽹站都有⾃⼰的域名和⽹站内容。每个虚拟主机都像是⼀个独⽴的服务器,具有⾃⼰的设置和配置。功能:虚拟主机允许单⼀的物理服务器模拟多个Web服务器的功能,每个“服务器”都有⾃⼰的域名和⽹站内容。应⽤场景:如果您是⼀个Web托管公司,或者您有多个项⽬需要分别管理,您可以为每个项⽬配置⼀个虚拟主机。每个虚拟主机可以有⾃⼰的域名,例如 www.project1.com 和 www.project2.com ,尽管它们实际上都托管在同⼀台物理服务器上。
关键区别
虚拟⽬录:主要⽤于⽂件和⽬录的访问,是⽂件系统的逻辑表示。
虚拟主机:⽤于管理和托管完整的⽹站,每个⽹站都可以有⾃⼰的域名、配置和内容。