1. 利用DNS协议进行域名解析javascript
第一步:客户端用户从浏览器里输入www.baidu.com网站地址,回车后,系统首先会查找系统本地的DNS缓存及hosts文件信息,查找是否存在www.baidu.com域名对应的IP解析记录,若是有就直接获取IP地址,而后去访问这个IP地址对应域名www.baidu.com的服务器,通常第一次请求时,DNS缓存是没有解析记录的,而hosts多在内部临时测试时使用。php
第二步:若是客户端本地DNS缓存及hosts文件没有www.baidu.com域名对应的解析记录,那么,系统会把浏览器的解析请求发送给客户端本地设置的DNS服务器地址(一般称此DNS为LDNS或首选DNS服务器,即Local DNS)解析,若是LDNS服务器的本地缓存有对应的解析记录就会直接返回IP地址给客户端,若是没有,则LDNS会负责继续请求其余的DNS服务器。css
第三步:LDNS会从DNS系统的根域(.)开始请求www.baidu.com域名的解析,针对各个层级的DNS服务器系统进行一系列的查找,最终会查找到baidu.com域名对应的受权DNS服务器,而这个受权DNS服务器正是企业购买域名时用于管理域名解析的服务器,这个受权服务器会有www.baidu.com对应的IP解析记录,若是此时没有,就表示企业的域名管理人员没有为www.baidu.com域名作解析设置,即网站还没架设好。html
第四步:baidu.com域名的受权DNS服务器会把www.baidu.com对应的最终IP解析记录发给LDNS。前端
第五步:LDNS把收到的来自受权DNS服务器www.baidu.com对应的IP解析记录(A记录)缓存到本地,再发给客户端,以便下一次更快的返回相同解析请求的记录,这些缓存记录在指定的时间(DNS TTL值控制)内不会过时。java
第六步:客户端浏览器获取到了www.etiantian.org的对应IP地址的解析记录,会先缓存到本地,接下来,浏览器会请求得到的IP地址对应的网站服务器linux
2. 创建tcp协议三次握手过程web
3. 客户端发出访问网站相应页面请求(发出http协议请求报文)数据库
4. 系统架构部署状况后端
5. 服务端发出响应访问页面的请求信息(发出http协议响应报文)
6. 断开tcp协议四次挥手过程
提示:
上述仅仅是客户端用户第一次访问网站的基本过程,连续访问后,系统本地和LDNS层级都会有缓存记录,再访问时流程就会有些变化,会直接取本地缓存记录,这样访问过程就很快了。在上述整个访问流程里,包含了DNS的解析流程以及HTTP协议的通讯原理等重要的技术点。
HTTP协议,全称HyperText Transfer Protocol,中文名为超文本传输协议,是互联网中最经常使用的一种网络协议。HTTP的重要应用之一是WWW服务。设计HTTP协议最初目的就是提供一种发布和接收HTML(一种页面标记语言)页面的方法(请求返回)。
HTTP协议是互联网上经常使用的通讯协议之一。它有不少的应用,但最流行的就是用于Web浏览器和Web服务器之间的通讯,即WWW应用或称Web应用。
WWW,全称World Wide Web,常称为Web,中文译为“万维网”。它是目前互联网上最受用户欢迎的信息服务形式。HTTP协议的WWW服务应用的默认端口为80(端口的概念),另外的一个加密的WWW服务应用https的默认端口为443,主要用于网银,支付等和钱相关的业务。当今,HTTP服务,WWW服务,Web服务三者的概念已经混淆了,都是指当下最多见的网站服务应用。
HTTP方法 |
做用描述 |
GET |
客户端请求指定资源信息,服务器返回指定资源 |
HEAD |
只请求响应报文中的HTTP首部 |
POST |
将客户端的数据提交到服务器,例:注册表单 |
PUT |
从客户端向服务器传送的数据取代指定的文档内容 |
DELETE |
请求服务器删除Request-URI所标识的资源 |
MOVE |
请求服务器将制定的页面移至另外一个网络地址 |
状态码范围 |
做用描述 |
100-199 |
用于指定客户端相应的某些动做 |
200-299 |
用于表示请求成功 |
300-399 |
用于已经移动的文件而且常被包含在定位头信息中指定新的地址信息 |
400-499 |
用于指出客户端的错误 |
500-599 |
用于指出服务器端的错误 |
提示:http响应的状态码种类不少,可是在实际工做场景中,常常遇到的状态码却很少,我把生产场 景常见 的重要状态码及对应的做用整理为下表。
状态代码 |
详细描述说明 |
200~OK |
服务器成功返回网页,这是成功的http请求,返回的标准状态码 |
301-Moved Permanently |
永久跳转,全部请求的网页将永久跳转到被设定的新的位置,例如:从baidu.com跳转到www.baidu.com |
403-Forbidden |
禁止访问,这个请求是合法的,可是服务器端由于匹配了预先设置的规则而拒绝响应客户端的请求,此类问题通常为服务器或服务权限配置不当所致。 |
404-Not Found |
服务器找不到客户端请求的指定页面,多是客户端请求了服务器上不存在的资源致使 |
500-Internal Server Error |
内部服务器错误,服务器遇到了意料不到的状况,不能完成客户的请求。这是一个较为笼统地报错,通常为服务器的设置或者内部程序问题致使。例如SElinux开启,而又没有为http设置规则许可,客户端访问就是500 |
502-Bad Gateway |
坏的网关,通常是代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器。通常为反向代理服务器下面的节点出问题致使。 |
503-Service Unavailable |
服务当前不可用,可能由于服务器超载或停机维护致使,或者是反向代理服务器后面没有能够提供服务的节点 |
504-Gateway Timeout |
网关超时,通常是网关代理服务器请求后端服务时,后端服务没有在特定的时间内完成处理请求,通常是服务器过载致使没有在指定的时间内返回数据给前端代理服务器。 |
报文格式 |
报文信息 |
请求行 |
①. 请求的方法(get方法没有请求主体内容 post方法会有请求主体信息) |
②. 请求的数据信息(默认请求index.html首页文件) |
|
③. 请求http协议版本 tcp协议分为长链接(http1.1)和短链接(http1.0) |
|
请求头部 |
客户端有关信息说明 |
空行 |
空白内容 |
请求报文主体 |
get方法没有请求主体内容 post方法会有请求主体信息 |
报文格式 |
报文信息 |
起始行 |
①. HTTP协议版本信息 |
②. 响应的状态码信息(请求成功状态码 200) |
|
③. 响应状态码说明信息 |
|
响应头部 |
服务端有关信息说明 |
空行 |
空白内容 |
响应报文主体 |
通常为html css js 等等代码信息 |
查看请求报文与响应报文详细结构信息方法:(2种方法)
1. curl -v www.baidu.com --- 利用curl命令进行网站访问
-v --- 详细显示请求报文结构和响应报文结构信息
2. wget --debug www.baidu.com
URL,全称Uniform Resource Location,中文翻译为统一资源定位符,也被称为网页地址(网址)。如同在网络上的门牌,它是因特网上标准的资源惟一地址。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各类WWW客户端和服务器程序上。采用URL能够用一种统一的格式来描述各类信息资源,包括文件,服务器的地址和目录等。严格的说,每一个URL都是一个URI,它标识一个互联网资源,并指定对其进行操做或取得该资源的方法。
URI,全称Uniform Resource Identifier,中文翻译为统一资源标识符,是一个用于标识某一互联网资源名称的字符串。这个字符串在世界范围内惟一标识并定位某一个信息资源。互联网上每一个可用的数据资源,如HTML,图片,视频等皆经过统一资源标识符进行定位。
例:channel.jd.com/women.html
channel.jd.com / women.html
url部分 uri部分
在网站设计中,纯粹HTML格式的网页(能够包含图片,视频,JS(前端功能实现),CSS(样式)等)一般被称为“静态网页”,早期的网站大多都是静态的。静态网页是相对于动态网页而言的,是指没有后台数据库,不含程序(如php,jsp,asp)。
u 每一个网页都有一个固定的URL地址,且URL通常以.html,.html,shtml等常见形式为后缀,并且地址中不含邮问号“?”或“&”等特殊符号。
u 纯文本类程序或文件,如.html、.htm、.xml、.shtml、.js、.css等;
图片类文件或数据文档,如.jpg、.gif、.png、.bmp、.txt、.doc、.ppt等;
视频类流媒体文件,如.mp4、.swf、.avi、.wmv、.flv等。
u 网页内容一经发布到网站服务器上,不管是否有用户访问,每一个网页的内容都是保存在网站服务器文件系统上的,也就是说,静态网页是实实在在保存在服务器上的文件实体,每一个网页都是一个独立的文件。
u 网页内容是固定不变的,所以,容易被搜索引擎收录(容易被用户找到)(优势)
u 网页没有数据库支持,在网站制做和维护方面工做量较大,所以当网站信息量很大时彻底依靠静态网页制做的方式比较困难(缺点)
u 网页的交互性较差,在程序功能实现方面有较大的限制(缺点)
u 网页程序在用户浏览器端解析,如IE浏览器,程序解析效率很高,因为服务端不进行解析,而且不须要读取数据库,所以服务器端能够接受更多的并发访问。当客户端向服务器请求数据时,服务器直接把数据从磁盘文件系统上返回(不作任何解析),待客户端拿到数据后,在浏览器端解析展示出来(优势)
总结:
1. 程序在客户浏览器端解析,不读取后端数据库,所以性能和效率很高。
2. 由于后端没有数据库支持,因此和用户的交互性较差,功能实现也不多
所谓的动态网页是与静态网页相对而言的,也就是说,动态网页的URL后缀不是.htm,.html,.shtml,.xml,.js,.css等静态网页的常见后缀扩展名形式,而是以.asp,.aspx,.php,.js,.do,.cgi等形式做为后缀的,而且通常在动态网页网址中会有标志性的符号--“?,&”,此外,在大多数状况下后端都须要有数据库支持等。
u 网页扩展名后缀常见为:.asp,.aspx,.php,.jsp,.do,cgi等
u 网页通常以数据库技术为基础,大大下降了网站维护的工做量
u 采用动态网页技术的网站能够实现更多的功能,如用户注册,用户登陆,在线调查,投票,用户管理,订单管理,发博文等等
u 动态网页并不是独立存在于服务器上的网页文件,当用户请求服务器上的动态程序时,服务器解析这些程序并可能读取数据库返回一个完整的网页内容。
u 动态网页中的“?”在搜索引擎的收录方面存在必定问题,搜索引擎通常不会从一个网站的数据库中访问所有网页,或者出于技术等方面的考虑,搜索蜘蛛通常不会去抓去网址中“?”后面的内容,所以在企业经过搜索引擎进行推广时,须要针对采用动态网页的网站作必定的技术处理(伪静态技术),以便适应搜索因穷的抓取要求。(动态网页资源不便于被搜索引擎收录)
u 程序在服务器端解析,这至关于顾客点餐,饭店厨师作饭作菜,耗时长,效率低。因为程序在服务端解析,所以,会消耗大量的CPU和内存,I/O等资源,而且多数还要读取数据库等服务,所以,其访问效率远不如静态网页,在服务端解析动态程序的服务常见的有PHP引擎,Java容器(tomcat,resin,jboss,weblogic)
取长补短(伪静态资源实质是动态资源)
1. IP(独立IP),即Internet Protocol,这里指独立IP数,
2. 独立IP数是指不一样IP地址的计算机访问网站时被计的总次数
3. 通常一天内(00:00-24:00)相同IP地址的客户端访问网站页面只会被计一次
1. 利用awk或者相应统计命令,进行分析访问日志信息进行统计
2. 在网站访问页面中嵌入统计程序代码(页面结尾处),只有所有网页加载完毕后,才进行数据统计
[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信息
3. 利用第三方公认的统计工具进行统计
例如:百度统计工具 hm.baidu.com
1. PV(访问量)即Page View,中文翻译为页面浏览,
2. 即页面浏览量或点击量,无论客户端是否是相同,也无论IP是否是相同,
3. 用户只要访问网站页面就会被计算PV,一次计一个PV。
1. 利用awk或者相应统计命令,进行分析访问日志信息进行统计
2. 在网站访问页面中嵌入统计程序代码(页面结尾处),只有所有网页加载完毕后,才进行数据统计
[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信息
4. 利用第三方公认的统计工具进行统计
例如:百度统计工具 hm.baidu.com
1. UV(独立访客)即Unique Visitor,同一个客户端(PC或移动端)访问网站被计为一个访客。
2. 一天(00:00-24:00)内相同的客户端访问同一个网站只计一次UV。
3. UV通常是以客户端Cookie等技术做为统计依据
cookie:根据用户信息,为用户设定一个身份标识。(保存在客户端本地)(一把钥匙)
session:记录用户信息,用户状况。保存在服务端本地(配置一把锁)
· 经过客户端HTTP请求报文分析
· 经过Cookie信息鉴别统计
工做中经常使用的统计工具
· 网页信息统计软件-piwik
pwiki统计工具:(https://piwik.org/)
pwiki演示页面:https://piwik.org/demo
· ELK软件介绍说明
http://blog.oldboyedu.com/elk/
A种理解:网站服务器每秒可以接收的最大用户请求数。
B种理解:网站服务器每秒可以响应的最大用户请求数。
C种理解:网站服务器在单位时间内可以处理的最大链接数。
下面是国外学者对网站并发数的计算公式及参考说明:
Request Per Second + Simultaneous Browser connections + Thinking Time = Concurrent User
其中:
Concurrent User表示网站并发用户总数
Request Per Second[RPS]表示每秒请求数(吞吐量)
Simultaneous Browser connections[SBC]表示并发浏览链接数。
Thinking Time表示平均用户思考时间。