web之基础get

网站的基本概念

Web网站:有web1.0 和web2.0,web1.0侧重以编辑为特征,web2.0侧重于用户交互

web的几个基本概念分为: 网站、网页、主页、HTTP、URL、HTML、超链接

URL和URI很相似:

URL的资源位置是绝对路径
URI的资源位置是相对路径

页面的分类和区别

静态页面: 页面直接由web服务进行解析 ,页面可以包含动态,但是内容是静止的。部署静态页面需要在服务器上安装能够解析静态页面的服务,nginx、httpd这两种web服务默认只能解析静态页面。

主页文件后缀名为.html .xml .htm

动态页面: 页面由php进行解析 ,页面会随着时间、环境、数据库数据等因素去进行相应的变化。部署动态页面同样需要在服务器上安装能够解析动态页面的服务(nginx、httpd等),还要安装php来解析动态页面。

主页文件后缀名为:.php .asp .jsp .pl .py .cgi

网站传输协议

一般分为:http超文本传输协议和https安全超文本传输协议
http:监听端口默认为tcp的80端口,不进行加密传输
https:监听端口默认为tcp的443端口,进行加密传输

HTTP协议分析

(1)HTTP: HTTP又称超文本传输协议,是现在互联网应用中使用最多的一种网络协议,协议的核心功能就是传输Web服务器上的以html为后缀的页面和其他文件

(2)HTTP版本: http0.9 已经被淘汰,http1.0和http1.1 是目前广泛使用的,http2.0 还没有普及

HTTP协议传输过程:

(1)用户使用PC1的浏览器访问指定的URL也就是域名
(2)如果PC1有本地解析就直接进行域名解析进行访问,没有本地解析那就转发给指定的DNS服务器去进行域名解析
(3)获取端口号,一般是80或者443
(4)PC1连接到域名解析后的ip地址以及端口号
(5)PC1发送一条http get读取数据的请求
(6)PC1从服务器读取http响应
(7)关闭连接
(8)PC1浏览器成显示页面
影响客户端访问web站点的因素: 客户端请求的网络I/O,web服务器请求页面的磁盘I/O
I / O : i n p u t 和 o u t p u t 即 上 传 和 读 取 I/O : input 和 output 即上传和读取
I/O:input和output即上传和读取

常见状态返回码在这里插入图片描述

HTTP请求报文和响应报文

(1)概述

HTTP协议是一个应用层协议,报文主要分为: 请求报文和响应报文

(2)过程

当客户端请求一个网页时,会先通过http协议将请求的内容封装在http请求报文中并且发送给服务器

服务器收到客户端的请求报文后根据报文的协议规范,进行报文解析

服务器解析完成后向客户端返回响应报文

(3)报文的结构

一般分为三个结构:

1、起始行,对报文进行描述,包括了三个部分
资源通过一组http头和呈现数据(如html文件或者图片视频等)返回给客户端

请求的方法,常用的有GET、POST、HEAD等
GET: 向特定的资源发送请求,它的本质就是发送一个请求来取得服务器上的某一资源,GET请求中,永远不会包含呈现数据

POST: 向指定资源提交数据进行处理请求,例如提交表单或者上传文件。

HEAD: 向服务器索与GET请求相同的响应,只不过响应体将不会被返回

请求的URL

协议类型以及版本
2、头部,对报文中添加一些附加信息

3、主体,数据的主体

apache原理概述

1、apache概述
apache作为最早的web服务程序,它是通过http协议来提供网页浏览服务

2、apache特点
模块化设置

开放源代码

跨平台应用

支持多种web编程语言

运行稳定

3、apache常见的三种工作模式
apache的核心模块叫做多路处理模块(Multi-Processing Module),简称MPM

常见的三种模式为: prefork、worker、event

使用httpd -v查看当前apache版本,httpd -V |grep “server MPM” 查看apache当前模式

httpd_2.2版本默认使用prefork,httpd_2.4版本默认使用worker
一 般 来 说 , 每 个 模 式 都 会 默 认 有 两 个 闲 置 进 程 , 所 以 一 般 来 说 如 果 只 剩 一 个 闲 置 进 程 , 那 么 a p a c h e 就 会 自 动 创 建 一 个 闲 置 进 程 一般来说,每个模式都会默认有两个闲置进程,所以一般来说如果只剩一个闲置进程,那么apache就会自动创建一个闲置进程
一般来说,每个模式都会默认有两个闲置进程,所以一般来说如果只剩一个闲置进程,那么apache就会自动创建一个闲置进程

惊群效应: 当所有进程都为休眠状态时,这个时候突然来了一个请求,这个请求会使所有进程都进行处理,但是最终只有一个进程可以进行 0处理,其他进程没有请求处理就又会进入休眠状态,这样的现象和性能浪费就叫做惊群效应,而apache几乎所有模式都有惊群效应

(1)MPM=prefork

prefork是多进程模式,一个进程处理一个连接,每个进程相对来说都是独立的,这个过程会用到select机制来通知

优点: 稳定、响应快

缺点: 消耗大量cpu和内存、keep-alive长连接占据问题,不适用于高并发场景:

keep-alive长连接占据问题:即tcp连接在发送后仍然与客户端保持连接状态,客户端的浏览器可以通过相同的连接去发送请求,这样虽然节省了为每个请求建立新连接的时间、节约了带宽并且减少了重复请求的次数加快了客户端访问的速度,但是在长连接状态下,进行长连接的接口是无法和新的请求进行连接的,从而导致进程越来越多,使cpu和内存过度负载,导致服务器卡顿

keep-alive长连接占据问题:即tcp连接在发送后仍然与客户端保持连接状态,客户端的浏览器可以通过相同的连接去发送请求,这样虽然节省了为每个请求建立新连接的时间、节约了带宽并且减少了重复请求的次数加快了客户端访问的速度,但是在长连接状态下,进行长连接的接口是无法和新的请求进行连接的,从而导致进程越来越多,使cpu和内存过度负载,导致服务器卡顿

原理: prefork模式的进程只能创建一个线程,所以说prefork是一个进程处理一个连接

在这里插入图片描述##(2)MPM=worker
worker是多进程多线程模式,一个进程创建多个线程,每个线程响应一个连接请求,但是通知机制还是select不过可以接受更多的请求

优点: 节省资源,适用于高并发场景

缺点: 兼容性不好、稳定性不好,同样具有keep-alive长连接占据问题

原理: worker模式的进程可以创建多个线程,每个线程响应一个连接请求
在这里插入图片描述

(3)MPM=event

event是worker的升级版,把服务器进程和响应连接请求进行了分离,基于异步I/O模型(即input和output上传读取是分开的)

I/O模型使event在连接请求过来后进程并不直接处理请求,而是交给其他机制来处理,然后通过epoll机制来确认请求是否完成。在这个过程中,进程本身一直处于空闲状态,所以一直可以接受用户的请求,从而实现一个进程响应多个连接请求。

event对于keep-alive长连接处理也有所优化,event模式有单独的线程去处理keep-alive长连接,执行完毕后才会允许长连接释放,这样增强了高并发场景下的连接请求处理能力。

优点: 支持海量级高并发负载,消耗资源少,适用于高并发场景

缺点: 对https支持的不完美

在这里插入图片描述

静态编译和动态编译

httpd是高度模块化的程序,也就是说httpd的各种功能都需要加载对应的模块来执行,但是前提是必须将使用功能的对应模块进行编译,方便httpd进行加载

静态编译: 直接将模块编译到httpd的核心当中。静态编译的所有模块都会随着httpd主程序进行启动和关闭
动态编译: 将模块编译好,但是不编译到httpd的核心当中。想要启动动态编译的模块,需要在httpd的配置文件中使用loadModule指令去加载使用

Guess you like

Origin blog.csdn.net/xiaobai316/article/details/120523037