a 进行域名信息的DNS解析 dig +trace 得到www.oldboyedu.com ip地址信息 b 进行与网站服务器创建链接,tcp三次握手过程 (syn ack SEQ ACK/状态转换 closed listen syn_sent syn_rcvd established ) c 和网站服务器数据传输过程(http协议原理过程-http请求过程) 查看方法curl -v/wget --debug d 和网站服务器数据传输过程(http协议原理过程-http响应过程) e 进行与网站服务器断开链接,tcp四次挥手过程 (fin ack SEQ ACK/状态转换 fin_wait1 fin_wait2 close_wait last_ack time_wait closing )
01. 查看本地主机缓存和hosts文件有没有域名与IP对应记录 02. 本地主机向local DNS服务器(网卡上指定配置的DNS服务器)发出请求(递归查询) 03. LOCAL DNS服务器接收到客户端主机请求,查询本地缓存信息 04. LOCAL DNS服务向根域名服务器请求,向顶级域名服务器请求,向二级域名服务器请求(迭代查询) 05. 获取到域名与IP地址的对应关系,是经过受权DNS服务中获取获得(获得的信息称为A记录) LOCAL DNS服务进行缓存A记录信息,将A记录信息发送给客户端主机 06. 客户端主机接收到A记录信息,进行本地缓存,根据A记录中记录IP地址信息,进行网络访问
査看有关DNS信息方法(windows主机上):php
1> 査看windows客户端本地缓存的DNS解析记录的命令以下。css
c:\>ipconfig /displaydns <-意思是display the contents of the DNS Resolver (显示DNS CACHE内容),"/displaydns"前面有空格
2> 清除windows客户端本地缓存的DNS解析记录的命令以下。html
c:\>ipconfig /flushdns <-意思为Purges the DNS Resolver cache" (清除DNS CACHE内容),"/displaydns"前面有空格
3> windows系统下hosts域名解析记录的位置以下。前端
c:\Windows\system32\drivers\etc\hosts
nscd bind dnsmasq
关于BIND服务的使用能够参照:http://www.cnblogs.com/clsn/p/8424274.htmllinux
HTTP协议,全称HyperText Transfer Protocol,中文名为超文本传输协议,是互联网中最经常使用的一种网络协议。 HTTP的重要应用之一是 WWW服务。设计 HTTP协议最初的目的就是提供一种发布和接收HTML (一种页面标记语言)页面的方法。nginx
HTTP协议是互联网上经常使用的通讯协议之一。它有不少的应用,但最流行的就是用于Web浏览web
器和Web服务器之间的通讯,即WWW应用或称Web应用。面试
www ,全称World Wide Web ,常称为Web ,中文译为"万维网:它是目前互联网上最受用户欢迎的信息服务形式。 HTTP协议的 WWW服务应用的默认端口为80,另一个加密的WWW服务应用https的默认端口为443,主要用于网银、支付等和钱相关的业务。当今,HTTP服务、WWW服务、Web服务三者的概念已经混淆了,都是指当下最多见的网站服务应用。正则表达式
HTTP/1.0 规定浏览器和服务器只保持短暂的链接(TCP短连接)数据库
HTTP/1.1 支持持久链接,在一个TCP链接上能够传送多个HTTP请求和响应,减小了创建和关闭链接的消耗和时间延迟(TCP长链接)
再linux系统中参看报文的方法
curl -v ---显示访问域名请求报文与响应报文信息
curl www.baidu.com -v
> 表示http请求报文 <表示http的响应报文
wget --debug www.baidu.com
HTTP方法 |
做用描述 |
GET |
客户端请求指定资源信悤,服务器返回指定资源 |
HEAD |
只请求响应报文中的 HTTP首部 |
POST |
将客户端的数据提交到服务器,例:注册表单 |
PUT |
用从客户端向服务器传送的数据取代指定的文档内容。 |
DELETE |
请求服务器删除 Request-URI所表示的资源。 |
MOVE |
请求服务器将指定的页面移至另外一个网络地址。 |
HTTP请求报文格式 |
||
请求报文格式 |
报文信息 |
说明 |
请求行 |
GET / HTTP/1.1 |
请求的起始行(请求什么信息;协议版本) |
请求头 |
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 Host: www.baidu.com Accept: */* |
请求的头部信息(客户端有关信息说明) |
空行 |
|
空行信息(隔离上下文,说明请求结束) |
请求报文主体 |
|
请求主体内容(只有POST 方法能够提交主体) |
请求头内容 |
说明 |
Host |
接受请求的服务器地址,能够是IP:端口号,也能够是域名 |
User-Agent |
发送请求的应用程序名称 |
Connection |
指定与链接相关的属性,如Connection:Keep-Alive |
Accept-Charset |
通知服务端能够发送的编码格式 |
Accept-Encoding |
通知服务端能够发送的数据压缩格式 |
HTTP响应报文格式 |
||
请求报文格式 |
报文信息 |
说明 |
起始行(响应行) |
HTTP/1.1 200 OK |
响应的起始行(响应状态码 状态信息) |
响应头部 |
Server: bfe/1.0.8.18 Date: Mon, 23 Oct 2017 02:50:36 GMT Content-Type: text/html Content-Length: 2381 Last-Modified: Mon, 23 Jan 2017 13:27:32 GMT Connection: Keep-Alive ETag: "588604c4-94d" Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform Pragma: no-cache Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/ Accept-Ranges: bytes |
响应的头部信息(服务器有关信息介绍) |
空行 |
|
空行信息(隔离上下文,说明响应头部结束) |
响应报文主体 |
<!DOCTYPE html> …… |
响应主体的内容(请求后进行响应的返回的内容 信息) |
响应头 |
说明 |
Server |
服务器应用程序软件的名称和版本 |
Content-Type |
响应正文的类型(是图片仍是二进制字符串) |
Content-Length |
响应正文长度 |
Content-Charset |
响应正文使用的编码 |
Content-Encoding |
响应正文使用的数据压缩格式 |
Content-Language |
响应正文使用的语言 |
HTTP状态码(HTTP Status Code )是用来表示Web服务器响应HTTP请求状态的数字代码。每当Web客户端向Web服务器发送一个HTTP请求时,Web服务器都会返回一个状态响应代码。这个状态码是一个三位数字代码,做用是告知Web客户端这次请求是否成功,或者是否要采起其余的动做方式。
curl -v www.oldboyedu.org ---能够获取状态码信息
******************************************************************** 扩展命令说明:经过curl命令只获取状态码信息 curl -I www.nmtui.com|awk 'NR==1{print $2}' curl -I -s www.nmtui.com |awk 'NR==1{print $2}' curl -I -s -w %{http_code} www.nmtui.com curl -I -s -w %{http_code} -o /dev/null www.nmtui.com curl -I -s -w "%{http_code}\n" -o /dev/null www.nmtui.com curl -s -w "%{http_code}\n" -o /dev/null www.nmtui.com curl -I -s www.nmtui.com|head -1 curl -I 10.0.0.7 2>/dev/null|head -1 ********************************************************************
状态码范围 |
做用描述 |
100 - 199 |
用于指定客户端相应的某些动做 |
200 - 299 |
用于表示请求成功 |
300 - 399 |
用于己经移动的文件,而且常被包含在定位头信息中指定新的地址系信息 |
400 - 499 |
用于指出客户端的错误 |
500 - 599 |
用于指出服务端的错误 |
代码 |
代码说明 |
301 Moved Permanently(永久跳转) |
请求的网页已永久跳转到新位置 |
403 Forbidden(禁止访问) |
服务器拒绝请求 |
404 - Not Found, |
服务器找不到请求的页面 |
500 |
内部服务器错误 |
502 |
坏的网关,通常是网关服务器请求后端服务时,后端服务没有按照http协议正确返回结果 |
503 - Service Unavailable (服务当前不可用) |
可能由于超载或停机维护 |
504 - Gateway Timeout (网关超时) |
通常是网关服务器请求后端服务时,后端服务没有在特定的时间内完成服务。 |
互联网上的数据有不少不一样的类型,Web服务器会把经过Web传输的每一个对象都打上MIME类型(即MIME type)的数据格式标签。最初设计MIME(Multipurpose Internet Mall Extension,多用途因特网邮件扩展)是为了解决在不一样的电子邮件系统之间搬移报文时存在的问题.MIME在电子邮件系统中工做得很是好。后来,HTTP也支持了这个功能,用它来描述数据并标记不一样的数据内容类型。
当Web服务器响应HTTP谪求时,会为每个HTTP对象数据加一个MIME类型,当Web浏览器获取到服务器返回的对象时,会去査看相关的MIME类型,并进行相应处理。
MIME类型存在与HTTP响应报文的响应头部信患里,它是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分割。
web服务能够处理的资源类型,根据扩展名进行识别(html css mp4)
url:URL,全称为Uniform Resource Location,中文翻译为统一资源定位符
uri:URI,全称为Uniform Resource Identifier,中文翻译为统一资源标识符
URN:统一资源名称 (Uniform Resource Name, URN),是URI两种形式之一。
QPS: 每秒钟处理完请求的次数;注意这里是处理完。具体是指发出请求到服务器处理完成功返回结果。能够理解在server中有个counter,每处理一个请求加1,1秒后counter=QPS。 TPS:每秒钟处理完的事务次数,通常TPS是对整个系统来说的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多。 并发量:系统能同时处理的请求数 RT:响应时间,处理一次请求所须要的平均处理时间 计算关系: QPS = 并发量 / 平均响应时间 并发量 = QPS * 平均响应时间
例如
网址: 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的方式和上面说明一致
静态网页资源
动态网页资源
伪静态网页资源
请求响应信息,发给客户端进行处理,由浏览器进行解析,显示的页面称为静态页面
在网站设计中,纯粹HTML格式的网页(能够包含图片、视频JS (前端功能实现)、CSS (样式)等)一般被称为"静态网页"
静态页面资源特征
01. 处理文件类型:如.html、jpg、.gif、.mp四、.swf、.avi、.wmv、.flv等-
02. 地址中不含有问号"?"或&等特殊符号。
03. 保存在网站服务器文件系统上的,是实实在在保存在服务器上的文件实体
04. 网页内容是固定不变的,所以,容易被搜索引擎收录
05. 网页页面交互性交差,由于不能与数据库配合
06. 网页程序在用户浏览器端解析,当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不作任何解析)
优点:
01. 访问的效率比较高
02. 网页内容是固定不变的,所以,容易被搜索引擎收录
03. 网页程序在用户浏览器端解析,当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不作任何解析)
劣势:
01. 网页页面交互性交差,由于不能与数据库配合
02. 保存在网站服务器文件系统上的,是实实在在保存在服务器上的文件实体
所谓的动态网页是与静态网页相对而言的,也就是说,动态网页的URL后缀不是.html .htm、.xml、.shtml、.js css 等静态网页的常见扩展名形式,而是.asp、.aspx、.php、.js、.do、.cgi等形式
请求响应信息,发给屎务端进行处理,由服务端处理完成,将信息返回给客户端,生成的页面称为动态页面
动态网页资源特色
01. 网觅扩展名后缀常见为:.asp、.aspx、.php、.js、.do、.cgi
02. 网页页面交互性强,能够与数据库配合
03. 地址中含有问号"?"或 & 等特殊符号
04. 不便于被搜索引擎收录
优点:
01.客户端与服务端交互能力强
劣势:
01.访问的效率比较低
02.不便于被搜索引擎收录
将动态页面假装成静态页面,便于被搜索引擎收录
将动态页面转换为静态页面的方式(rewrite 正则表达式)
将动态页面内容转换为静态页面,去掉动态页面uri地址中的? &字符,假装成静态页面uri信息
动态转静态(开发来配合完成)
独立IP数是指不一样IP地址的计算机访问网站时被计算的总次数
在一个局域网内多个主机进行访问相同的网站地址时,独立IP数记为多少?
通常一天内(00:00-24:00)相同IP地址的客户端访问网站页面只会被计一次
记录独立IP的时间可为一天或一个月,目前通用的标准为"一天"。
页面浏览量或点击量
根据http请求报文:浏览器版本,OS
根据http响应报文:cookie(id)
cookie(id) 将服务端的信息保存到客户端
session 将客户端信息保存到服务器
cookie 存放在浏览器缓存中---浏览器进行查看(谷歌)
【设置里面】---【显示高级设置】---【隐私设置】---【内容设置】---【全部cookie和内容设置】
PS:cookie的格式信息是由开发人员进行定义,因此不一样的网站所生成的cookie信息内容不太一致
cookie 数据存放在客户的浏览器上
cookie 不是很安全,别人能够分析存放在本地的COOKIE并进行COOKIE欺骗
cookie 不占用服务器端资源,提高了服务器性能
cookie 保存的数据不能超过4K,不少浏览器都限制一个站点最多保存20个cookie。
session 存放在服务器的内存中
session 数据放在服务器上
session 从数据库的安全应用方面会更安全些
session 会在必定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
将登录信息等重要信息存放为SESSION
其余信息若是须要保留,能够放在COOKIE中
1)利用awk或者相应统计命令,进行分析访问日志信息进行统计
2)在网站访问页面中嵌入统计程序代码(页面结尾处),只有所有网页加载完毕后,才进行数据统计
[root@tx ~]# curl -s www.nmtui.com|grep "hm.baidu" --color -C5 </script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?9aa800f882f575237396648643111698"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script src="https://s95.cnzz.com/z_stat.php?id=1261663735&web_id=1261663735" language="JavaScript"></script>
说明:利用hm.baidu.com在页面curl时会出现,利用百度进行统计PV IP信息
利用第三方公认的统计工具进行统计,例如:百度统计工具 hm.baidu.com
经过客户端HTTP请求报文分析
经过Cookie信息鉴别统计
网页信息统计软件-piwik pwiki统计工具:(https://piwik.org/) pwiki演示页面:https://piwik.org/demo
ELK软件介绍说明 http://blog.oldboyedu.com/elk/
A种理解:网站服务器每秒可以接收的最大用户请求数。
B种理解:网站服务器每秒可以响应的最大用户请求数。
C种理解:网站服务器在单位时间内可以处理的最大链接数。(推荐)
ss -lntup|grep 80 netstat -lntup|grep 80
饭店吃饭/酒店住宿举例
咱们去餐馆吃饭(如图6-6所示),餐馆里一共有10张卓,每张桌最多坐4我的同时吃饭,那么按通常人的理解,这个餐馆可以接收的并发吃饭人数为10M ,即40个并发,其实这里就没有考虑时间问题,1秒并发能够是40个,10分钟内并发也是40个。由于这里还有一个因素,就是每一个人吃饭时长的问题,若是平均每一个人10分钟吃完,那么能够说10分钟内,这个餐馆的并发为40个,而不是每秒钟并发40个,由于,第一秒能够是40我的同时进来,可是第二秒就无人可进了(满员了),若是说10分钟并发是40个,下一个10分钟仍是40个,第三个10分钟还能够是40个。即网站服务器在单位时间内可以处理的最大链接数。
高速公路通车举例说明
高速公路每一个方向都有两条车道,那么,同一时刻并发的车辆为两辆,而且并发能够永远为2 ,若是按秒计算,每秒的并发可能就有十几辆,这个例子和餐馆不一样,由于高速路处理并发不须要处理时间。可是对于Web服务器来说,是须要花费时间处理请求的,这个请求多是1秒或数秒,所以说,并发不该该只是用户访问的请求数,而应是服务器同时处理的并发数,而且单位时间不必定是1秒,多是一个链接处理周期内的链接数。
netstat -an|grep -i “est”|wc -l ss -ant|grep -ic est
说明: 在 nginx web服务中相应的软件模块进行统计
例如:某网站的并发是5000。意味着单位时间内(理解为1秒或数秒内),正在处理的链接数,正在创建的链接数,加起来一共是5000个。
下面是国外学者对网站并发数的计算公式及参考说明:
Request Per Second + Simultaneous Browser connections + Thinking Time = Concurrent User
其中:
Concurrent User 表示网并发用户总数一
Request Per Second[RPS]表示每秒请求数(吞吐量
Simultaneous Browser connections[SBC]表示并发浏览链接数。
Thinking Time表示平均用户思考时间。
常见的面试题以下:
1)请问你如何理解网站并发?
2)大家公司网站访问量是多少?是怎么计算的?
—定要理解IP、PV、并发量这3个点的知识,在回答时才能有的放矢,这三个点的多少决定面试时说多大的架构,对于没有经验的新手不能在介绍有几万PV的同时描述数十台的集群架构,这样就尴尬了。
关于网站访问指标的计算,能够考虑:
运维部门的日志分析。
开发在页面嵌入的JS程序(用于统计、收集、分析)。
运营市场经过第三方公司提供的工具进行统计,例如GA统计。
网站 |
独立IP万/曰 |
PV数万/日 |
网站并发级别 |
机器数量 |
www.51cto.com |
582'000 |
1'338,600 |
10000 |
数十台 |
www.ganji.com |
1’734'000 |
13,872,000 |
10000-30000 |
几百台 |
www.58.com |
1398'000 |
22,927,200 |
10000-30000 |
几百台 |
www.weibo.com |
30’180'000 |
166'593’600 |
几十万 |
千台 |
www.taobao.com |
46,620'000 |
489,510,000 |
几十万~百万 |
万台 |
www.jd.com |
6'08'000 |
98,949,600 |
数万 |
千台 |
www.163.com |
10'320'000 |
79,154,000 |
十万 |
千台 |
www.suning.com |
623,250 |
3,365,550 |
10000-30000 |
百台 |
全部的协议,都是为软件提供服务的
利用HTTP协议的软件,称为www服务软件或者web服务软件
Apache:这是中小型Web服务的主流,Web服务器中的老大哥。
Nginx:大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大。
Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飞速发展。
Lighttpd:这是一个不温不火的优秀Web软件,社区不活跃,静态解析效率很高。
在Nginx流行前,它是大并发静态业务的首选,
国内百度贴吧、豆瓣等众多网站都有Lighttpd奋斗的身影。
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)
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