HTTP协议概念原理说明
1. 当用户访问一个网站时经历的过程
# ①. 利用DNS服务,将输入的域名解析为相应的IP地址 a 本地主机输入域名后,会查询本地缓存信息和本地hosts b 本地主机会向远程LDNS服务器,发送递归查询请求 LDNS是网卡配置的DNS服务(223.5.5.5 114.114.114.114) c LDNS服务器会向根域名服务器发出请求,将请求响应给LDNS服务器 d LDNS服务器会向顶级域名服务器发出请求,将请求响应给LDNS服务器 e LDNS服务器会向二级域名服务器发出请求,将请求响应给LDNS服务器 f LDNS服务器收到二级域名服务器响应过来的信息(解析记录),进行本地缓存 将解析记录发送给本地主机 g 本地主机收到LDNS服务器的响应信息,也会将解析记录进行缓存,利用IP地址访问网站服务器 # ②. 利用已知的IP地址,进行网络三次握手连接建立 # ③. 本地主机客户端向网站服务端,发出请求 http请求数据包(http请求报文) # ④. 网站服务端向本地主机客户端,回复响应 http响应数据包(http响应报文) # ⑤. 完成网络四次挥手断开过程
2. HTTP通讯原理说明
HTTP请求报文 请求行: * 请求方法: 希望客服务端完成我的什么样请求 get 获取服务端的文件内容 post 存储提交数据到服务端 * 协议版本:http1.0 http1.1 http2.0 http1.0: 属于TCP短连接类型协议 http1.1:属于TCP长连接类型协议 请求头: 空行 请求主体 * get方法:没有请求主体内容 * post方法:会有请求主体内容 HTTP响应报文 起始行: * 状态码信息
HTTP请求报文:
HTTP响应报文:
3. HTTP 协议资源说明
# 1. 媒体资源类型 web服务可以处理接收的资源类型(text/html css jpg avi) 一般在web服务软件程序中,会有一个文件来定义媒体资源类型(mime.type) # 2. URL/URI URL 统一资源定位符 URI 统一资源标识符 www.jd.com / error2.aspx URL URI # 3. 静态文件资源 静态网页资源有几个重要的特征: 1) 每个页面都有一个固定的URL地址,且URL一般以.html、.htm、.shtml等常见形式为后缀, 而且地址中不含有问号“?”或“&”等特殊符号。 2) 静态网页是实实在在保存在服务器上的文件实体,每个网页都是一个独立的文件。 3) 网页内容是固定不变的,因此,容易被搜索引擎收录(容易被用户找到)(优点)。 4) 因为网页没有数据库的支持,所以在网站制作和维护方面的工作量较大, 当网站信息量很大时,完全依靠静态网页比较困难(缺点)。 5) 网页的交互性较差,在程序的功能实现方面有较大的限制(缺点)。 6) 网页程序在用户浏览器端解析,如IE浏览器,程序解析效率很高, 由于服务器端不进行解析,并且不需要读取数据库,因此服务器端可以接受更多的并发访问。 当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析)。 待客户端拿到数据后,在浏览器端解析并展现出来(优点)。 # 4. 动态文件资源 1) 网页扩展名后缀常见为:.asp、.aspx、.php、.js、.do、.cgi等。 ※ 2) 网页一般以数据库技术为基础,大大降低了网站维护的工作量。 3) 采用动态网页技术的网站可以实现更多的功能, 如用户注册、用户登录、在线调查、投票、用户管理、订单处理、发博文等。 4) 动态网页并不是独立存在于服务器上的网页文件,当用户请求服务器上的动态程序时, 服务器解析这些程序并可能通过读取数据库来返回一个完整的网页内容。 5) 动态网页中的“?”在搜索引擎的收录方面存在一定的问题, 搜索引擎一般不会从一个网站的数据库中访问全部网页,或者出于技术等方面的考虑, 搜索蜘蛛一般不会去抓取网址中“?”后面的内容,因此在企业通过搜索引擎进行推广时, 需要针对采用动态网页的网站做一定的技术处理(伪静态技术),以便适应搜索引擎的抓取要求。 # 5. 伪静态文件资源 根本实质还是动态资源,将动态资源伪装成静态 动态不便于搜索引擎收录 响应速度较慢
4. 网站度量值统计方法:
# 1. IP(独立IP),即Internet Protocol,这里指独立IP数, 独立IP数是指不同IP地址的计算机访问网站时被计的总次数 # 2. PV(访问量)即Page View,中文翻译为页面浏览,即页面浏览量或点击量,不管客户端是不是相同, 也不管IP是不是相同,用户只要访问网站页面就会被计算PV # 3. UV(独立访客)即Unique Visitor,同一个客户端(PC或移动端)访问网站被计为一个访客。 一天(00:00-24:00)内相同的客户端访问同一个网站只计一次UV cookie:标识用户主机身份信息
架构之nginx
1. web服务软件种类介绍
# 1.1 常用来提供静态Web服务的软件有如下三种: # Apache: 这是中小型Web服务的主流,Web服务器中的老大哥。 # Nginx: 大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大。 Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飞速发展。 # Lighttpd: 这是一个不温不火的优秀Web软件,社区不活跃,静态解析效率很高。 在Nginx流行前,它是大并发静态业务的首选,国内百度贴吧、豆瓣等众多网站都有Lighttpd奋斗的身影。 # 1.2 常用来提供动态服务的软件 # PHP(FastCGI): 大中小型网站都会使用,动态网页语言PHP程序的解析容器。 它可配合Apache解析动态程序,不过,这里的PHP不是FastCGI守护进程模式,而是mod_php5.so(module)。 也可配合Nginx解析动态程序,此时的PHP常用FastCGI守护进程模式提供服务。 # Tomcat: 中小企业动态Web服务主流,互联网Java容器主流(如jsp、do)。 # Resin: 大型动态Web服务主流,互联网Java容器主流(如jsp、do)。
2. nginx软件服务介绍
如果你使用过Apache软件,那么很快就会熟悉Nginx软件,与Apache软件类似,
Nginx(“engine x”)是一个开源的,支持高性能、高并发的WWW服务器和代理服务软件。
Nginx可以运行在UNIX、Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中
3. nginx软件特征介绍
· 支持高并发:能支持几万并发连接(特别是静态小文件业务环境)
· 资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB
· 支持异步网络I/O事件模型epoll(Linux 2.6+); apache(select模型)
4. nginx软件功能介绍
1)作为Web服务软件(处理用户访问静态请求) 2)反向代理或负载均衡服务 3)前端业务数据缓存服务
5. nginx软件模型特点说明
apache与nginx软件对比说明??? # apache使用select模型 # nginx使用epoll模型 举例说明:宿舍管理员 select模型版管理员 会一个一个房间查询人员 epoll模型版管理员 会进行检索后,直接找到需要找的人
6. nginx软件编译安装
# 第一个步:软件依赖包安装 pcre-devel: perl语言正则表达式兼容软件包 openssl-devel:使系统支持https方式访问 [root@web01 ~]# yum install -y pcre-devel openssl-devel # 第二个步:创建一个管理nginx进程的虚拟用户 [root@web01 ~]# useradd www -s /sbin/nologin -M # 第三个步:下载并解压nginx软件 [root@web01 tools]# pwd /server/tools [root@web01 tools]# wget http://nginx.org/download/nginx-1.12.2.tar.gz # 下载到 /server/tools 目录下 ... [root@web01 tools]# tar xf nginx-1.12.2.tar.gz # 第四个步:进行软件编译安装 # 软件编译安装三部曲: # ①. 编译配置 # 参数: --prefix=PATH 指定软件安装在什么目录下 --user=USER 指定软件worker进程管理用户(利用www虚拟用户管理worker进程) --group=GROUP 指定软件worker进程管理用户组 --with-http_ssl_module 使nginx程序可以支持https访问功能 --with-http_stub_status_module 用于监控用户访问nginx服务情况 # 命令: [root@web01 nginx-1.12.2]# ./configure --prefix=/application/nginx-12.2 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module # ②. 编译过程 [root@web01 nginx-1.12.2]# make # ③. 编译安装 [root@web01 nginx-1.12.2]# make install # 第五个步:为nginx程序软件创建链接目录 [root@web01 nginx-12.2]# ln -s /application/nginx-12.2/ /application/nginx # 第六个步:启动nginx程序服务 [root@web01 application]# /application/nginx/sbin/nginx [root@web01 application]# ps -ef |grep nginx root 8046 1 0 01:25 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx www 8047 8046 0 01:25 ? 00:00:00 nginx: worker process root 8049 2735 0 01:25 pts/0 00:00:00 grep --color=auto nginx [root@web01 application]#