前些天发现了一个巨牛的人工智能学习网站,内容通俗易懂、风趣幽默,忍不住想分享一下。对人工智能感兴趣的同学可以去看看哦
一、DNS概述
1、域名
域名又称为FQDN,使用域名是为了解决ip地址不容易记的问题
一个完整的FQDN也就是域名,由主机名+域名组成
例如: www.baidu.com 主机名就是www而域名就是baidu.com
2、域名解析
域名解析包含本地hosts文件解析和DNS服务器解析
系统中都会有一个hosts文件,用户可以自己定义ip和域名去自定义解析ip
DNS服务器相当于一个大型的专门写hosts的系统,PC机可以去指定DNS服务器,当PC机收到一个本地hosts中没有的域名,本地无法解析,就会转到PC机指定的DNS服务器中,让DNS服务器去解析,然后回应PC机,从而成功解析
3、为什么要使用域名解析(DNS服务器)
因为计算机之间进行通信使用的是ip地址,但是对于用户来说,ip地址比较难记,所以就出现了域名解析,通过字母组成的单词,方便用户去记忆
4、DNS服务器的作用
将域名解析成ip地址
5、域名解析的过程
6、网站的基本概念
Web网站:有web1.0 和web2.0,web1.0侧重以编辑为特征,web2.0侧重于用户交互
web的几个基本概念分为: 网站、网页、主页、HTTP、URL、HTML、超链接
URL和URI很相似:
- URL的资源位置是绝对路径
- URI的资源位置是相对路径
例如: URL=https://www.aaa.com/
https | 为用户访问使用的协议 |
www.aaa.com | 为用户访问的域名,也可以是ip地址和端口号 |
/ | 为用户访问的资源,/就是绝对路径 |
7、页面的分类和区别
静态页面: 页面直接由web服务进行解析 ,页面可以包含动态,但是内容是静止的。部署静态页面需要在服务器上安装能够解析静态页面的服务,nginx、httpd这两种web服务默认只能解析静态页面。
主页文件后缀名为.html .xml .htm
动态页面: 页面由php进行解析 ,页面会随着时间、环境、数据库数据等因素去进行相应的变化。部署动态页面同样需要在服务器上安装能够解析动态页面的服务(nginx、httpd等),还要安装php来解析动态页面。
主页文件后缀名为:.php .asp .jsp .pl .py .cgi
后缀不同就是开发语言不同,动态页面一般以编程语言编写
8、网站传输协议
一般分为:http超文本传输协议和https安全超文本传输协议
http | 监听端口默认为tcp的80端口,不进行加密传输 |
https | 监听端口默认为tcp的443端口,进行加密传输 |
9、HTTP协议分析
(1)HTTP: HTTP又称超文本传输协议,是现在互联网应用中使用最多的一种网络协议,协议的核心功能就是传输Web服务器上的以html为后缀的页面和其他文件
(2)HTTP版本: http0.9 已经被淘汰,http1.0和http1.1 是目前广泛使用的,http2.0 还没有普及
(3)HTTP协议传输过程:
(1)用户使用PC1的浏览器访问指定的URL也就是域名 (2)如果PC1有本地解析就直接进行域名解析进行访问,没有本地解析那就转发给指定的DNS服务器去进行域名解析 (3)获取端口号,一般是80或者443 (4)PC1连接到域名解析后的ip地址以及端口号 (5)PC1发送一条http get读取数据的请求 (6)PC1从服务器读取http响应 (7)关闭连接 (8)PC1浏览器成显示页面
(4)影响客户端访问web站点的因素: 客户端请求的网络I/O,web服务器请求页面的磁盘I/O
I/O:input和output即上传和读取
10、常见状态返回码
200 | 表示页面成功访问 ok |
301 | 请求的页面永久跳转了 |
403 | 禁止访问该页面 |
404 | 找不到该页面 |
500 | 服务器内部错误 |
502 | 网管错误 |
503 | 当前服务不可用 |
504 | 网关请求超时 |
二、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和内存过度负载,导致服务器卡顿
原理: prefork模式的进程只能创建一个线程,所以说prefork是一个进程处理一个连接