自学内容网 自学内容网

web服务器

1、理论铺垫

浏览器功能:

1、输入网址

2、显示页面窗口

3、渲染引擎是浏览器内核的一部分,负责解析HTML、CSS和JavaScript,并将它们转化为可视化的页面内容。渲染 引擎的性能和优化直接影响浏览器的渲染效率和用户体验。

web服务器

(1)什么是www

www是world wide web的缩写,也就是全球信息广播的意思。通常说的上网就是使用www来查询用户 所需要的信息。www可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方式将信息以Internet传递到世界各处去。

与其他服务器类似,当你连接上www网站,该网站肯定会提供一些数据,而你的客户端则必须要使用可 以解析这些数据的软件来处理,那就是浏览器。www服务器与客户端浏览器之间的连接图。

1、 www所用的协议: 浏览器怎样向web服务器请求数据以及服务器怎样把文档传送给浏览器呢?这就是由 http协议来定义的,(Hyper Text Transport Protocol,HTTP,超文本传输协议)。

2、www服务器需要提供可让客户端浏览的平台。目前最主流的Web服务器是Apache、Microsoft的 Internet信息服务器(Internet Information Services,IIS)和unix nginx。

3、服务器所提供的最主要数据是超文本标记语言(Hyper Text Markup Language,HTML)、多媒体文件 (图片、影像、声音、文字等,都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓的标记来 规范所要显示的数据格式。

4、客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上。那么著 名的浏览器就有内建在Windows操作系统内的IE浏览器了,还有Firefox浏览器和Google的chrome浏览器。

(2)网址及HTTP简介

浏览器与web服务器通信:http协议

HTTP通信协议是超文本传输协议的简称,建立在TCP/IP基础之上,用于传输浏览器到服务器之间的HTTP请求和响 应。它不仅需要保证传输网络文档的正确性,同时还确定文档显示的先后顺序。

1、网址

URI:Uniform Resource Identifier,统一资源标识,分为 URL 和 URN。

URN:Uniform Resource Naming,统一资源命名。如 P2P 下载使用的磁力链接就是 URN 的一种实现: magnet:?xt=urn:btih:2d2a66e12ec4f61a5a8f5e8fdfed89d2f70859fb

URL:Uniform Resource Locator,统一资源定位符,用于描述某服务特定资源位置。 两者区别:URN 如同一个人的名称,而 URL 代表一个人的住址。换言之,URN 定义某事物的身份,而 URL 提 供查询该事物的方法。

scheme:方案,访问服务器以获取资源时要使用哪种协议

user:用户,某些方案访问资源时需要的用户名

password:密码,用户对应的密码,中间用冒号(:)分隔

Host:主机,资源宿主服务器的主机名或IP地址

Port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号

path:路径,服务器资源的本地名,由一个/将其与前面的URL组件分隔

params:参数,指定输入的参数,参数为名/值对,多个参数用逗号(,)分隔

query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔

frag:片段,一小片或一部分资源的名字,此组件在客户端使用,用#分隔

端口号(port):http为80,https为443 (IANA:互联网数字分配机构)

0-1023:永久地分配给固定的应用程序使用

1024-41951:注册端口,但要求不是特别严格,分配给程序注册为某应用使用

41952-60000:客户端程序随机使用的端口,动态端口,或私有端口

2、http协议(超文本传输协议)

#请求方法

GET - 请求指定的资源。

POST - 提交数据以处理请求。

HEAD - 请求资源的响应头信息。

PUT - 上传文件或者更新资源。

DELETE - 删除指定的资源。

OPTIONS - 请求获取服务器支持的请求方法。

TRACE - 回显服务器收到的请求,主要用于诊断。

CONNECT - 建立一个隧道用于代理服务器的通信,通常用于 HTTPS

#响应状态码

状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值

1xx:指示信息 —— 表示请求已接收,继续处理

2xx:成功 —— 表示请求已被成功接收、理解、接

3xx:重定向 —— 要完成请求必须进行更进一步的操作

4xx:客户端错误 —— 请求有语法错误或请求无法实现

5xx:服务器端错误 —— 服务器未能实现合法的请求

常见状态代码、状态描述的说明如下:

200 OK:客户端请求成功

400 Bad Request:客户端请求有语法错误,不能被服务器所理解

401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用

403 Forbidden:服务器收到请求,但是拒绝提供服务

404 Not Found:请求资源不存在,举个例子:输入了错误的URL

500 Internal Server Error:服务器发生不可预期的错误

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

3、web服务传输的内容

#1、HTML (HyperText Markup Language):所有静态网页的基础,用于定义网页的结构和内容。

#2、CSS (Cascading Style Sheets):用于描述网页的外观和格式。

#3、JavaScript:(客户端脚本语言)虽然主要用于动态交互,但也可以用来增强静态网页的功能,例如响应用户操 作、动态修改内容等。

MIME(Multipurpose Internet Mail Extensions)类型通常用于指定文件类型的互联网标准,它最初是为了 在电子邮件中附加不同类型的文件而设计的,但后来也被广泛应用于Web服务器上,以告诉浏览器如何处理和显示接收 到的文件。

4、web服务类型

#静态网站:静态网站的内容通常是固定不变的,除非手动更新网页文件。

#动态网站:动态网站的内容通常是根据用户请求、数据库交互或其他因素动态生成的 LNMP

- 静态文件:无需服务端做出额外处理,服务器端和客户端的文件内容相同。

常见文件后缀:.html、.txt、.jpg、.js、.css、.mp3、.avi 等

- 动态文件:服务端执行程序,返回执行的结果,服务端和客户端的文件内容不相同。

常见文件后缀:.php、.jsp、.asp、.py、.go 等  

#服务器端脚本语言:

PHP:一种广泛使用的服务器端脚本语言。

Python:常与Django、Flask等框架一起使用。

Ruby:与Ruby on Rails框架一起使用。

Java:常用于企业级应用,与Spring、Java EE等框架一起用。

C#:与.NET框架一起用于构建动态网站,特别是ASP.NET。

Node.js:允许使用JavaScript进行服务器端编程。

#数据库技术:

SQL:用于与数据库(如MySQL、PostgreSQL、SQL Server等)进行交互。

NoSQL:如MongoDB、CouchDB等,用于处理非关系型数据。

#客户端脚本语言:

JavaScript:与Ajax、React、Angular、Vue.js等前端框架和库一起使用,用于创建动态的用户界面。

5、网站访问量统计的重要指标

  • IP:即 Internet Protocol,指独立IP数,一天内来自相同客户机 IP 地址只计算一次,记录远程客户机 IP 地址的 计算机访问网络的次数,是衡量网站流量的重要指标。
  • PV:即 Page View,页面浏览量或点击量,用户每次刷新被计算一次,PV 反映的是浏览某网站的页面数, PV 与来访者的数量成正比,PV 并不是页面的来访者数量,而是网站被访问的页面数量。
  • UV:即 Unique Visitor,访问网站的一台电脑为一个访客。一天内相同的客户端只被计算一次。可以理解成访 问某网站的电脑的数量。网站判断来访电脑的身份是通过 coolies 实现的。如果更换了 IP 后但不清楚 Cookies,再访问相同的网站,该网站的统计中 UV 数不变。

2、web服务在HTTP协议通信原理

HTTP协议从Web浏览器到服务器返回信息的过程可以分为4个部分:

1、建立连接:HTTP协议的建立是通过申请Socket套接字实现,用户通过Socket在服务器上申请一个端口号, 然后在网络中通过该端口号传输数据。

2、发送请求。用户和服务器之间建立连接后,可以向指定的目的主机发送请求。

3、返回响应。服务器对用户提交的请求进行处理,并返回请求码(如404)或数据。

4、关闭连接。通信结束后,通信双方均可通过关闭套接字来关闭连接,断开访问。

(1)终端客户在web浏览器地址栏输入访问地址 http://www.ceshi.com:80/index.html

(2)web浏览器请求DNS服务器把域名 www.ceshi.com解析成web服务器的IP地址

(3)web浏览器将端口号(默认是80)从访问地址(URL)中解析出来

(4)web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接

(5)建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文

(6)web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。

(7)web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上。

一次完整的 http 请求处理过程:

1、建立连接:接收或拒绝连接请求

2、接收请求:接收客户端请求报文中对某资源的一次请求的过程

3、处理请求:服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法、资源、首部和可 选的主体部分对请求进行处理。常用请求Method:GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS

4、访问资源:服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方 请求的静态资源,或动态运行后生成的资源

5、构建响应报文:

一旦Web服务器识别除了资源,就执行请求方法中描述的动作,并返回响应报文。响应报文中 包含有响应状态码、 响应首部,如果生成了响应主体的话,还包括响应主体

1)响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文中通常包括: 描述了响应主体MIME类型的Content-Type首部 描述了响应主体长度的Content-Length 实际报文的主体内容

2)URL重定向:web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径

3)MIME类型:Web服务器要负责确定响应主体的MIME类型。多种配置服务器的方法可将MIME类型与资源管理起 来 ● 魔法分类:Apache web服务器可以扫描每个资源的内容,并将其与一个已知模式表(被称为魔法文件)进行匹 配,以决定每个文件的MIME类型。这样做可能比较慢,但很方便,尤其是文件没有标准扩展名时 ● 显式分类:可以 对Web服务器进行配置,使其不考虑文件的扩展名或内容,强制特定文件或目录内容拥有某个MIME类型 ● 类型协 商:有些Web服务器经过配置,可以以多种文档格式来存储资源。在这种情况下,可以配置Web服务器,使其可以 通过与用户的协商来决定使用哪种格式(及相关的MIME类型)最好"

6、发送响应报文 Web服务器通过连接发送数据时也会面临与接收数据一样的问题。服务器可能有很多条到各个客户端的连接,有些是 空闲的,有些在向服务器发送数据,还有一些在向客户端回送响应数据。服务器要记录连接的状态,还要特别注意对 持久连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。对持久连接来 说,连接可能仍保持打开状态,在这种情况下,服务器要正确地计算Content-Length首部,不然客户端就无法知道 响应什么时候结束

7、记录日志 最后,当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务。

3、Apache和nginx

Nginx 的进程模型前面已经提到过,它是通过异步的、非阻塞的、事件驱动的方式实现的。 Nginx 的工作进程是多 进程的,每个 Worker 进程可以异步处理大量的用户请求,因此在高并发下 Nginx 能保持低资源低消耗高性能。

Apache 有一共有三种稳定的 MPM(Multi-Processing Module,多进程处理模块)模式,其中最常用和默认的是 prefork 模式。prefork 是一个非线程型的、预派生的 MPM,使用多个进程,每个进程在某个确定的时间只单独处理 一个连接,效率高,但内存使用比较大。一个进程相对占用更多的系统资源,消耗更多的内存。

因此,Apache 并不擅长处理高并发请求。 在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会 被处理。因此 Apache 是阻塞型的。当用户请求过多时,开启的进程较多,占用内存大,每秒最多的并发连接请求最 多不超过 3000 个,而 Nginx 则可以每秒并发连接超过 10 万请求。

虽然Apache HTTP Server依旧是一个强大且稳定的Web服务器解决方案,但在追求高性能、高效率的当下,Nginx 的学习和应用无疑具有更加显著的价值和前瞻性。

#nginx架构

#nginx关键工作机制 #nginx正向代理功能 #nginx反向代理功能 #nginx负载均衡功能

#nginx自带的指令

nginx # 启动nginx

nginx restart # 重启服务

nginx -s reload # 重新加载配置文件

nginx -s stop # 强行停止服务

nginx -s quit # 优雅停止服务,即所有请求处理完后退出服务

nginx -v # 查看版本号

nginx -t # 检查配置文件的语法错误,无错返回ok

4、配置文件解读

Nginx的配置文件的组成部分:

1.主配置文件:nginx.conf

2.子配置文件:include conf.d/*.conf

#/usr/share/nginx/modules/*.conf 配置影响Nginx的核心功能和模块行为。 生效范围:这些配置文件中的设 置将在Nginx启动时加载,并且对整个Nginx服务器的操作都有效。它们通常用于定义Nginx模块的行为,而不 是特定服务或location的配置。

#/etc/nginx/conf.d/*.conf 配置影响特定的虚拟主机和服务配置。 这个 include 指令位于 http 块内部,通常 用于包含定义了虚拟主机(server blocks)和服务配置的文件。每个 .conf 文件可以定义一个或多个服务器块 (server blocks),这些服务器块可以监听不同的端口、处理不同的域名以及提供不同的网站内容。 生效范 围:这些配置文件中的设置仅对它们各自定义的虚拟主机或服务有效。例如,如果你在 /etc/nginx/conf.d/ 目 录下有一个名为 example.com.conf 的文件,那么该文件中的配置只会应用于 example.com 这个域名。

5、传输协议的加密

https实现过程如下:

1. 客户端发起https请求:客户端访问某个web端的https地址,一般都是443端口。

2. 服务端的配置:  

采用https协议的服务器必须要有一套证书,可以通过一些组织申请,也可以自己制作。目前国内很多网站都自 己做的,当你访问一个网站的时候,提示证书不可信任就是表示证书是自己做的。证书就是一个公钥和私钥,就像一 把锁和钥匙,正常情况下只有你的钥匙可以打开你的锁,你可以把这个送给另人,让他锁住一个箱子,里面放满了钱 或秘密,别人不知道里面放了什么,而且别人打不开,只有你的钥匙可以打开。

3. 传送证书:  

服务端给客户端传递证书,其实就是公钥,里面包含了很多信息,例如证书得到颁发机构、过期时间等。

4. 客户端解析证书

这部分工作是由客户端完成。首先回验证公钥的有效性,如颁发机构、过期时间等。如果发现异常则会弹出一个 警告框,提示证书可能存在问题,如果证书没有问题,就生成一个随机值,然后用证书对该随机值进行加密,就像2 步骤所说,把随机值锁起来,不让别个看到。

5. 传送4步骤的加密数据  

就是将证书加密后的随机值传递给服务器,目的就是为了让服务器得到这个随机值,以后客户端和服务端的通信 就可以通过这个随机值进行加密解密了。

6. 服务端解密信息  

服务端用私钥解密5步骤加密后的随机值之后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行 对称加密,对称加密就是将信息和私钥通过算法混合在一起,这样除非你知道私钥,不然是无法获取其内部的内容, 而正好 客户端和服务端都知道这个私钥,所以只要加密算法就可以保证数据的安全性。

7. 传输加密后的信息

服务端将用私钥加密后的数据传递给客户端,在客户端可以被还原出原数据内容。

8. 客户端解密信息  

客户端用之前生成的私钥解密服务端传递过来的数据,由于 数据一直是加密的,因此即使第三方获取到数据也无 法知道其详细内容。

用途:SSL/TLS主要用于保护Web通信,而SSH用于安全的远程登录和命令执行。

认证方式:SSL/TLS依赖于数字证书,而SSH依赖于公钥/私钥对。

协议层次:SSL/TLS在传输层和应用层之间,SSH直接在应用层。


原文地址:https://blog.csdn.net/2302_77791905/article/details/143634345

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!