提示:上述仅仅是客户端用户第一次访问网站的基本过程,连续访问后,系统本地和LDNS层级都会有缓存记录,再访问时流程就会有些变化,会直接取本地缓存记录,这样访问过程就很快了。在上述整个访问流程里,包含了DNS的解析流程以及HTTP协议的通信原理等重要的技术点。
DNS解析原理流程
(1)DNS解析流程说明
生产场景常见的状态吗及其对应的作用
HTTP响应报文由起始行,响应头部,空行和响应报文主体几个部分组成,和HTTP请求报文格式类似。报文如下表:
下面对响应报文的每个部分逐一阐述:
(1)起始行
响应报文的起始行,也叫状态行,用来说明服务器响应客户端请求的状况。一般为协议及版本号,数字状态码,状态情况。例如:HTTP/1.1200OK
(2)响应头部
和请求报文类似,起始行的后面一般有若干个头部字段。每个头部字段都包含一个名字和一个值,两者之间用冒号分隔。头部结尾也是以一个空行结束。常见的头部信息有:
(3)空行
最后一个响应头部信息之后是一个空行,发送回车符和换行符,通知客户端空行下文无头部信息。
(4)响应报文主体
响应报文主体中装载了要返回给客户端的数据。这些数据可以是文本,也可以是二进制的(图片,视频)。
回顾:数据包,传输过程
2)Web浏览器请求DNS服务器把域名www.baidu.com转换成Web服务器的IP地址,此处的解析过程就是DNS解析的原理流程,前面已经讲过了,此处不再叙述。
3)Web浏览器将端口号(默认80)从访问地址(URL)中解析出来。
4)Web浏览器通过解析后的IP地址及端口号于Web服务器之间建立一条TCP连接
5)建立TCP连接后,Web浏览器向Web服务器发送一条HTTP请求报文,请求报文内容格式及信息细节前面已经讲过了,此处不在叙述。
6)Web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文,响应报文内容格式及信息细节前文也已经讲过了,此处不在叙述。
上述就是HTTP协议通信原理过程,整个通信原理的重要知识点有:
[root@chensiqiconf]#head-10mime.typestypes{text/htmlhtmlhtmshtml;text/csscss;text/xmlxml;image/gifgif;image/jpegjpegjpg;application/javascriptjs;application/atom+xmlatom;application/rss+xmlrss;以下内容省略....1.3.2URL介绍URL,全称UniformResourceLocation,中文翻译为统一资源定位符,也被称为网页地址(网址)。如同在网络上的门牌,它是因特网上标准的资源唯一地址。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户端和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件,服务器的地址和目录等。严格的说,每个URL都是一个URI,它标识一个互联网资源,并指定对其进行操作或取得该资源的方法。
URL的格式由下列三部分组成:
提示:第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用"/"符号隔开。第一部分和第二部分是不可缺少的,第三部分可以省略。
标准的URL及说明
网站URL说明
大多数同学都熟悉URL,而不是URI。URL是URI命名机制的一个子集
静态网页资源介绍
在网站设计中,纯粹HTML格式的网页(可以包含图片,视频,JS(前端功能实现),CSS(样式)等)通常被称为“静态网页”,早期的网站大多都是静态的。静态网页是相对于动态网页而言的,是指没有后台数据库,不含程序(如php,jsp,asp)和可交互的网页。
静态网页资源特点
静态网页资源有几个重要的特征:
网站静态页面的特点就相当于在餐馆吃火锅,餐馆把原材料和工具都给你准备好,你自己只需要涮着吃就行,不需要饭店大厨给你炒菜做菜了,因此,对于饭店来讲,服务顾客的效率大大提高了。而对于静态页面来讲就是不需要服务器端解析,因此提供网站方服务器的压力也大大减轻了。
静态网页语言
常见的静态网页语言有html,js,css,xml,shtml等,具体语言的特点不在这里细说。
回顾一下静态网页的核心特点,如下:
1)程序在客户浏览器端解析,不读取后端数据库,因此性能和效率很高。2)因为后端没有数据库支持,所以和用户的交互性较差,功能实现也很少。
有关静态网页的架构思想
在高并发,高访问量的场景下做架构优化,涉及的关键环节就是把动态网页转成静态网页,而不直接请求数据库和动态服务器,并且可以把静态内容推送到前端缓存(或CDN)中提供服务,这样就可以提升用户体验,节约服务器和维护成本。
动态网页资源介绍
所谓的动态网页是与静态网页相对而言的,也就是说,动态网页的URL后缀不是.htm,.html,.shtml,.xml,.js,.css等静态网页的常见后缀扩展名形式,而是以.asp,.aspx,.php,.js,.do,.cgi等形式作为后缀的,并且一般在动态网页网址中会有标志性的符号--“?,&”,此外,在大多数情况下后端都需要有数据库支持等。
动态网页资源特点
有关动态网页的架构思想
由于静态网页程序在客户端解析,大大降低了服务器端的访问压力,因此解析效率更高,在实际高并发网站架构中,可以考虑把用户请求的数据解析后存成静态文件放于磁盘中或放于内存中,来降低动态服务器的压力,节约企业成本,提升用户体验。
(1)门户新闻业务
新闻网站的特点是一旦发布完成,几乎不会再改动网页内容。因此,对于新闻业务内容的静态化相对比较简单。
程序===>生成静态页面
(2)视频网站业务
(3)Blog/BBS/SNS/微博社区业务/电商(如淘宝,京东)
这几类业务的动态转静态是比较困难的,因为,用户发布完成内容,可能会随时更新并查看,这种情况一般会通过异步方式,例如消息中间件技术加上NoSQL集群技术实现转换,当然也会改进产品细节,例如:在访问的环节设置延时,异步加载等手段。
问:如果一个用户要访问赶集网或58同城租房,你觉得用户可能会产生多少PV?
例如:这些分类网站,用户浏览网站可能是为了找房子,找工作,因此一个用户访问的页面会很多,因此PV就会很多。
PV(PageView)是网站被访问的页面数量的一个指标,但不能直接知道有多少人访问了这个网站。
一个来访者访问网站,可能产生若干PV数,但是独立IP数就只有1个,因此,如果对比一个网站的独立IP数和PV数,不难看出,PV数一定会大于等于独立IP数的,视网站的业务而定,例如,对于分类门户,可能会达到10:1,甚至更多。
IP的统计方法简单,易用,因此,成为了多数网站衡量网站流量的重要指标之一。
PV的统计方法也很简单,易用,因此,也是多数网站衡量网站流量的重要指标之一。
特别提示:IP和PV概念,统计方法也是Linux运维人员要掌握的重点。
网站并发连接
再举个同一个时刻示例:
1)统计当下时刻的linux的网络连接数并发,netstat-an|grep-i“est”|wc-l2)nginxweb层activestatus
其他服务并发连接
(2)IOPS(Input/OutputOperationsPerSecond)IOPS即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。存储端的IOPS性能和主机端的I/O是不同的,IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次I/O需要多次访问存储才可以完成。例如,主机写入一个最小的数据块,也要经过“发送写入请求,写入数据,收到写入确认”等三个步骤,也就是3个存储访问。
如何测试磁盘的存储性能?
1.连续的读写向磁盘中写入大的文件ddif=/dev/zeroof=/tmp/test01.binbs=1Kcount=10000
常见面试题如下:
一定要理解IP,PV,并发量这3个点的知识,在回答时才能有的放失,这三个点的多少决定面试时说多大的架构,对于没有经验的新手不能在说有几万的PV时,还说数十台的集群架构,这样就乌龙了。
从上述趋势变化不难发现,Apache虽然份额最大,但是有逐年下降趋势,而这个Nginx后起之秀上升趋势显著,另外,Nginx的分支Tengine也从看不见身影到逐渐占有一定份额了。
常用来提供静态Web服务的软件:
常用来提供动态服务的软件
Resin官方号称是世界上最快的Web服务,是大型动态Web服务主流,为互联网Java程序的解析容器,百度,人人都曾用过Resin
目前企业用的较多的是3.1系列,正在向4.0过度
tomcat一直是中小企业动态Web服务的主流,常用作解析Java的程序的容器,其版本发展变化如下表。
目前企业使用的主流版本有6系列和7系列,官方也已经推出了更新的8.0系列
tomcat官方地址:
(1),原因:
本来在家正常休息,突然远程托管的机房的线上服务器蹦了远程不了,服务启动不了,然后让上海机房重启了一次,还是直接挂了,一直到我远程上才行。
(2)现象
远程服务器发现出现这类信息
Greetings,Yourserverhasbeenhackedandyourfileshavebeendeleted.Beforetheyweredeleted,webackedthemuptoaserverwecontrol.Youmustsendatotalof3BTCtotheaddress:1B1oU6EdREYffif3**********Failuretodosowillresultinyourfilesbeingdeletedafter5days.Wemayalsoleakyourfiles.Youcane-mailonewayout@sigaint.orgforsupport.Wewillnotgiveanyfilesbeforeapaymenthasbeenmade.Goodbye!
发现被黑!!!
(3).开始排查:
首先检查日志,以前做过安全运维,所以写过类似于检查命令和工具,开始一一排查。
Apr1703:14:56localhostsshd[11499]:warning:/etc/hosts.deny,line14:missing":"separatorApr1703:15:01localhostsshd[11499]:Address46.214.146.198mapsto46-214-146-198.next-gen.ro,butthisdoesnotmapbacktotheaddress-POSSIBLEBREAK-INATTEMPT!Apr1703:15:01localhostsshd[11499]:Invaliduserubntfrom46.214.146.198Apr1703:15:01localhostsshd[11500]:input_userauth_request:invaliduserubntApr1703:15:01localhostsshd[11499]:pam_unix(sshd:auth):checkpass;userunknownApr1703:15:01localhostsshd[11499]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=46.214.146.198Apr1703:15:01localhostsshd[11499]:pam_succeed_if(sshd:auth):errorretrievinginformationaboutuserubntApr1703:15:03localhostsshd[11499]:Failedpasswordforinvaliduserubntfrom46.214.146.198port34989ssh2Apr1703:15:03localhostsshd[11500]:Connectionclosedby46.214.146.198
发现没有异常
打开vi/etc/motd发现
感觉很像目前流行的bashshell漏洞,测试一下,果然存在漏洞
envx='(){:;};echovulnerable'bash-c"echothisisatest"[root@mall~]#envx='(){:;};echovulnerable'bash-c"echothisisatest"vulnerablethisisatest(4)修复升级命令
yum-yinstallyum-downloadonlyyum-yinstallbash-4.1.2-33.el6_7.1x86_64.rpm(5)完成后做了如下措施
(6)漏洞被利用过程
我发送GET请求-->目标服务器cgi路径目标服务器解析这个get请求,碰到UserAgent后面的参数,Bash解释器就执行了后面的命令