HTTP原理
第1章 HTTP服务介绍
1.1 用户访问网站流程
01. 进行域名信息的DNS解析
l 查看本地主机缓存和hosts文件有没有域名与IP对应记录
l 本地主机向 local DNS 服务器(网卡上指定配置的DNS服务器)发出请求
l LDNS服务器接收到客户端主机请求,查询本地缓存信息
l LDNS服务向跟域名服务器请求,向顶级域名服务器请求,向二级域名服务器请求(迭代查询)
l 获取到域名与IP地址的对应关系,是通过授权DNS服务中获取得到(得到的信息称为A记录)
LDNS服务进行缓存A记录信息,将A记录信息发送给客户端主机
l 客户端主机接收到A记录信息,进行本地缓存,根据A记录中记录IP地址信息,进行网络访问
02. 进行与网站服务器建立连接,tcp三次握手过程 (syn ack SEQ ACK/状态转换 closed listen syn_set syn_rcvd established)
03. 和网站服务器数据传输过程(http协议原理过程-http请求过程)
04. 和网站服务器数据传输过程(http协议原理过程-http响应过程)
05. 进行与网站服务器断开连接,tcp四次挥手过程(fin ack SEQ ACK/状态转换 fin_wait1 fin_wait2 close_wait last_ack time_wait closing)
1.2 HTTP常见的状态码
状态代码 |
详细描述说明 |
200- OK |
服务器成功返回网页,这是成功的HTTP请求返回的标准状态码 |
301- Moved Permanently |
永久跳转,所请求的网页将永久跳转到被设定的新位置 例如: 从etiantian .org 跳转到www.etiantian .org |
403- Forbidden |
禁止访问,虽然这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端的请求。此类问题一般为服务器或服务权限配置不当所致。 Nginx 403 forbidden 多种原因及故障模拟重现 |
404- Not Found |
服务最找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源所致。 |
500- Internal Server Error |
内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求。 这是一个较为笼统的报错,一般为服务器的设置或内部程序问题导致。 |
502- Bad Gateway (重点) |
坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器。这通常为反向代理服务器下面的节点出问题所致。 |
503- Service Unavailable |
服务当前不可用,可能是服务器超载或停机维护导致的,或者是反向代理服务器后面没有可以提供服务的节点 |
504- Gateway Timeout |
网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定的时间内完成处理请求。多数是服务器过载导致没有在指定的时间内返回数据给前端代理服务器。 |
1.3 取状态码的方法
[root@web01 ~]# curl -I -s -w "%{http_code}\n" -o /dev/null www.baidu.com
200
1.4 HTTP协议状态码介绍
curl -v www.oldboyedu.org ---可以获取状态码信息
********************************************************************
扩展命令说明:通过curl命令只获取状态码信息
curl -I www.etiantian.org|awk 'NR==1{print $2}'
curl -I -s www.etiantian.org |awk 'NR==1{print $2}'
curl -I -s -w %{http_code} www.etiantian.org
curl -I -s -w %{http_code} -o /dev/null www.etiantian.org
curl -I -s -w "%{http_code}\n" -o /dev/null www.etiantian.org
curl -s -w "%{http_code}\n" -o /dev/null www.etiantian.org
curl -I -s www.etiantian.org|head -1
curl -I 10.0.0.7 2>/dev/null|head -1
1.5 HTTP常用的请求方法
HTTP方法 |
作用描述 |
GET |
客户端请求指定资源信息,服务器返回指定资源 |
HEAD |
只请求响应报文中的HTTP 首部 |
POST |
将客户端的数据提交到服务器,例:注册表单 |
PUT |
用从客户端向服务器传送的数据取代指定的文档内容。 |
DELETE |
请求服务器删除Request-URI 所表示的资源。 |
MOVE |
请求服务器将指定的页面移至另一个网络地址。 |
第2章 HTTP资
2.1媒体资源 -MIME
web服务可以处理的资源类型,根据扩展名进行识别(html css mp4)
互联网上的数据有很多不同的类型,Web 服务器会把通过Web传输的每个对象都打上MIME 类型(即MIME type) 的数据格式标签。最初设计MIME (Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME 在电子邮件系统中工作得非常好。后来,HTTP 也支持了这个功能,用它来描述数据并标记不同的数据内容类型。
当Web 服务器响应HTTP 请求时,会为每一个HTTP 对象数据加一个MIME 类型,当Web 浏览器获取到服务器返回的对象时,会去查看相关的MIME 类型,并进行相应处理。
MIME 类型存在与HTTP 响应报文的响应头部信息里,它是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分割。
2.2 URL / URI
url:URL,全称为Uniform Resource Location,中文翻译为统一资源定位符
uri:URI,全称为Uniform Resource Identifier,中文翻译为统一资源标识符
http://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/
http://reg.jd.com --- 称为url
/reg/person?ReturnUrl=https%3A//www.jd.com/ --- 称为uri
说明:nginx软件识别url和uri的方式和上面说明一致
2.3 http资源中静态页面与动态页面知识
01. 静态页面介绍
· 以html html shtml结尾,网址里面一般没有?&
等特殊符号,便于被搜索引擎收录(静态有优势)
· 网页的内容,由客户端浏览器解析。服务器只需要根据请求,发送数据,网页内容即可(静态有优势)
· 网页内容固定不变,容易被搜索引擎收录
· 很难有交互,一问一答
02. 动态页面介绍
· 以asp、.aspx、.php、.js、.do、.cgi结尾,网址里面一般会有?&等特殊符号,不便于被搜索引擎收录
· 服务器端解析请求;
· 需要读取数据库,性能和效率降低
· 后端拥有数据库支持,和用户的交互性提升,功能实现方式增多。(可以实现交互功能,动态优势)
03. 伪静态页面介绍
将动态页面转换为静态页面的方式(rewrite 正则表达式)
将动态页面内容转换为静态页面,去掉动态页面uri中的? &字符,伪装成静态页面uri信息
动态转静态(开发来配合完成)
2.4 伪静态网页小结
l 利用rewrite 技术将动态网页伪装成静态网页(URL 地址改写)
l 便于搜索引擎搜录,提升用户访问量及用户体验。
l 访问性能没有提升,并且转换成伪静态会消耗资源,因此性能反而会下降。
l 尽可能地将动态网页转换成真正的静态页面。
l 并发量不是很大或动态更新过于频繁时,用rewrite 实现伪静态也是不错的。
l 伪静态网页的实现过程,一般由产品运营提出需求,开发和运维共同实现。
2.5 网站流量度量语
① . 独立IP数度量值
独立IP数是指不同IP地址的计算机访问网站时被计算的总次数
在一个局域网内多个主机进行访问相同的网站地址时,独立IP数记为多少?
一般一天内(00:00-24:00)相同IP地址的客户端访问网站页面只会被计一次
②. 页面浏览次数PV
页面浏览量或点击量
③. 独立访客数UV
根据http请求报文:浏览器版本,OS
根据http响应报文:cookie(id)
2.6 扩展知识:cookie和session区别
01. cookie介绍说明
· cookie 存放在浏览器缓存中---浏览器进行查看(谷歌)
【设置里面】---【显示高级设置】---【隐私设置】---【内容设置】---【所有cookie和内容设置】
PS:cookie的格式信息是由开发人员进行定义,所以不同的网站所生成的cookie信息内容不太一致
· cookie 数据存放在客户的浏览器上
· cookie 不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
· cookie 不占用服务器端资源,提升了服务器性能
· cookie 保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
02. session介绍说明
· session 存放在服务器的内存中
· session 数据放在服务器上
· session 从数据库的安全应用方面会更安全些
· session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
建议性说明:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
2.7 有关网站度量Linux 企业运维的常见面试题
2.7.1 常见的面试题如下:
1) 请问你如何理解网站并发?
2) 你们公司网站访问量是多少? 是怎么计算的?
一定要理解IP、PV、并发量这3 个点的知识,在回答时才能有的放矢,这三个点的多少决定面试时说多大的架构,对于没有经验的新手不能在介绍有几万PV 的同时描述数十台的集群架构,这样就尴尬了。
2.7.2 关于网站访问指标的计算,可以考虑:
l 运维部门的日志分析
l 开发在页面嵌入的JS 程序(用于统计、收集、分析)。
l 运营市场通过第三方公司提供的工具进行统计,例如GA统计
2.8 IP PV UV 统计度量的方法
2.8.1 IP统计度量的方法
· 利用awk或者相应统计命令,进行分析访问日志信息进行统计
· 在网站访问页面中嵌入统计程序代码(页面结尾处),只有全部网页加载完毕后,才进行数据统计
[root@m01 ~]# curl -s www.oldboyedu.com|grep "hm.baidu" --color
<script type="text/javascript">
var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol +
"hm.baidu.com/h.js%3F9aa800f882f575237396648643111698' type='text/javascript'%3E%3C/script%3E"))
</script>
说明:利用hm.baidu.com在页面curl时会出现,利用百度进行统计PV IP信息
· 利用第三方公认的统计工具进行统计
例如:百度统计工具 hm.baidu.com
2.8.2 PV统计度量的方法
· 利用awk或者相应统计命令,进行分析访问日志信息进行统计
· 在网站访问页面中嵌入统计程序代码(页面结尾处),只有全部网页加载完毕后,才进行数据统计
[root@m01 ~]# curl -s www.oldboyedu.com|grep "hm.baidu" --color
<script type="text/javascript">
var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F9aa800f882f575237396648643111698' type='text/javascript'%3E%3C/script%3E"))
</script>
· 利用第三方公认的统计工具进行统计
例如:百度统计工具 hm.baidu.com
2.8.3 UV统计度量的方法
· 通过客户端HTTP请求报文分析
· 通过Cookie信息鉴别统计
2.8.4 工作中常用的统计工具
· 网页信息统计软件-piwik
pwiki统计工具:(https://piwik.org/)
pwiki演示页面:https://piwik.org/demo
· ELK软件介绍说明
http://blog.oldboyedu.com/elk/
2.9 网站并发连接说明
01. 如何理解网站并发的概念
A种理解:网站服务器每秒能够接收的最大用户请求数。
B种理解:网站服务器每秒能够响应的最大用户请求数。
C种理解:网站服务器在单位时间内能够处理的最大连接数。(推荐)
ss -lntup|grep 80
netstat -lntup|grep 80
02. 网站并发概念举例说明
· 饭店吃饭/酒店住宿举例
· 高速公路通车举例说明
03. 网站并发统计计算方法
netstat -an|grep -i “est”|wc -l
ss -ant|grep -ic est
nginx web服务中相应的软件模块进行统计
01. 网站并发相关面试题解答
第3章 www服务(web)
所有的协议,都是为软件提供服务的
利用http协议的软件,称为www服务软件或者web服务软件
3.1 web服务软件分类:
01. 静态解析web服务软件
Apache:这是中小型Web服务的主流,Web服务器中的老大哥。
Nginx:大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大。
Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飞速发展。
Lighttpd:这是一个不温不火的优秀Web软件,社区不活跃,静态解析效率很高。 在Nginx流行前,它是大并发静态业务的首选,国内百度贴吧、豆瓣等众多网站都有Lighttpd奋斗的身影。
02. 动态解析web服务软件
PHP(FastCGI):大中小型网站都会使用,动态网页语言PHP程序的解析容器。它可配合Apache解析动态程序,不过,这里的PHP不是FastCGI守护进程模式,而是mod_php5.so(module)。也可配合Nginx解析动态程序,此时的PHP常用FastCGI守护进程模式提供服务。
Tomcat:中小企业动态Web服务主流,互联网Java容器主流(如jsp、do)。
Resin:大型动态Web服务主流,互联网Java容器主流(如jsp、do)。
IIS(Internet information services):微软windows下的Web服务软件(如asp、aspx)
3.2 web服务软件官方资料整合:
apache: http://www.apache.org/
nginx: http://www.nginx.org/
Resin: http://www.caucho.com/download
http://caucho.com/resin-3.1/doc/
http://caucho.com/resin/doc/install-apache.xtp
Tomcat: http://tomcat.apache.org/whichversion.html
http://tomcat.apache.org
PHP: http://php.net
第4章 本章重点知识总结
用户访访问网站基本流程
DNS系统解析原理
HTTP协议通信原理,包含HTTP协议、请求报文、响应报文、状态码等相关知识;
动态、静态概念特点及伪装静态技术
动态转静态web优化方案
IP、PV、UV的概念个区别
并发概念理解
了解常用www服务软件特点,如apache、nginx、php(fastcgi)、tomcat、resin等。