HTTP协议原理

HTTP协议原理

HTTP协议原理

 

用户访问网站的基本流程:

1,登录浏览器输入网址 
2,网址通过DNS解析出具体IP地址 
3,TCP三次握手 
4,浏览器向服务商的Web服务器发起一个请求(遵循http协议) 
5,Web服务器响应用户请求,处理请求,返回响应包 
6,浏览器通过http协议接收到响应包 
7,浏览器处理响应包显示在浏览器上 
8,TCP四次挥手

 

DNS的域名解析流程:

1,先找本地PC的本地缓存 
2,本地hosts映射文件里面是否做了DNS的映射 
3,查找本机的DNS,叫LDNS 
4,DNS接收以后,找自己的缓存 
5,LDNS的hosts有没有 
6,LDNS找本地记录本 
如果前六步能查到IP地址,叫做DNS的递归查询 
7,还没有找到就发起求助,叫做迭代查询

 

DNS的迭代查询流程

世界上有13台大型的域名解析服务器,叫做点服务器,只要含有点就跟它有关系 
DNS向离它最近的一台点服务器求助 
点服务器就把.com的地址发送了LDNS 
LDNS求组.com 
.com只给了LDNS baidu.com的位置 
LDNS向.baidu.com求组 
baidu.com知道 就给ldns www.baidu.com 
然后LDNS把具体的地址存到自己的缓存里,然后发给PC 
PC在把这个存到自己的缓存里

 

HTTP协议简介

HTTP又叫超文本传输协议

HTTP是加密的协议

HTTP默认监听端口80

HTTPS默认端口443

image_1cqn64ijjhob1a1g1fko1qg214tp2h.png-36.2kB

 

HTTP请求方法

GET 读 客户端请求指定资源信息,服务器返回指定资源,读的速度快 明文的不加密

POST 写 将客户端的数据提交到服务器,加密方式注册,用于注册信息

image_1cqn5ejnfa7gkt313ac1n0ni9f1t.png-19.8kB

 

HTTP状态码

image_1cqn5fltvvdrpuh1p351nfk170q2q.png-17.2kB

 

生产场景常见的状态吗及其对应的作用

image_1cqn5h0kp1foq14j96gv1mspvqq4a.png-72kB

 

HTTP协议通信原理过程,整个通信原理的重要知识点有:

 
  1. 用户访问网站的流程
  2. DNS解析流程细节
  3. 建立TCP连接过程(TCP/IP三次握手原理知识)(11种状态)
  4. 发送HTTP报文及HTTP请求报文内容细节。
  5. Web服务器响应客户端请求处理细节(网站集群架构细节)
  6. 响应HTTP报文及HTTP响应报文的细节
  7. 关闭TCP连接,涉及TCP/IP协议四次挥手原理
  8. 事实上,DNS解析原理,http协议原理,tcp/ip协议原理都是高薪面试的重点,是高级运维必备知识,这里对其中的重要知识点进行汇总,如下:
  9. http协议位于OSI模型中第7层应用层
  10. http协议的重要应用是www服务。
  11. 用户上网流程,DNS解析原理流程
  12. DNS解析获取的IP后,建立TCP连接,然后发送http请求细节和服务器响应细节。
  13. HTTP请求报文与HTTP响应报文知识
  14. 到达HTTP服务后请求后端集群节点流程为Nginix-->fastcgi-->PHP-->(数据库,存储等)
  15. TCP/IP协议三次握手和四次挥手原理。
 

媒体类型

互联网上的数据有很多不同的数据类型,Web服务器会把通过Web传输的每个对象都打上名为MIME类型(MIME Type)的数据格式标签。最初涉及MIME(Multipurpose Internet Mail Extension 多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME在电子邮件系统中工作的非常好,后来,HTTP也支持了这个功能,用它来把数据描述并标记不同的数据内容类型。

当Web服务器响应HTTP请求时,会为每一个HTTP对象数据加一个MIME类型,当Web浏览器获取到服务器返回的对象时,会去查看相关的MIME类型,进行相应处理。

MIME类型存在于HTTP响应豹纹的响应头部信息里,它是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。

image_1cqn6cg9u163m1srd1lpkedt1vmo3u.png-35.3kB

 

网页语言

html语言:决定网页都有什么些什么内容 
CSS语言:控制网页内容的位置和特效 
JS语言=javascript:控制动作

 

URL介绍

用户发起的请求,就叫用户发起了URL 
所谓的网址就是URL 
网址=域名+资源位置(URI) 
URL=域名+URI

URL,全称Uniform Resource Location,中文翻译为统一资源定位符,也被称为网页地址(网址)。如同在网络上的门牌,它是因特网上标准的资源唯一地址。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户端和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件,服务器的地址和目录等。严格的说,每个URL都是一个URI,它标识一个互联网资源,并指定对其进行操作或取得该资源的方法。

URL的格式由下列三部分组成:

第一部分是协议,例如:http 
第二部分是主机资源服务器IP地址或域名(端口号),例如:www.baidu.com 
第三部分是主机资源的具体地址,如目录和文件名等,例如:yunjisuan/index.html

提示: 
第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用"/"符号隔开。第一部分和第二部分是不可缺少的,第三部分可以省略。

 

URI介绍

URI,全称Uniform Resource Identifier,中文翻译为统一资源标识符,是一个用于标识某一互联网资源名称的字符串。这个字符串在世界范围内唯一标识并定位某一个信息资源。互联网上每个可用的数据资源,如HTML,图片,视频等皆通过统一资源标识符进行定位。

URL是URI命名机制的一个子集

 

静态网页资源

在网站设计中,纯粹HTML格式的网页(可以包含图片,视频,JS(前端功能实现),CSS(样式)等)通常被称为“静态网页”,早期的网站大多都是静态的。静态网页是相对于动态网页而言的,是指没有后台数据库,不含程序(如php,jsp,asp)和可交互的网页。

 

静态网页资源特点

静态网页资源的特点是,开发者编写的是什么,它显示的就是什么,一旦编写完成,就不会有任何改变。静态网页的维护和更新相对比较麻烦,每个不同的网页都需要单独编集更新,静态网页一般适用于更新较少的宣传展示型网站(例如:酒,家具,猪饲料等的宣传网站),是早期很多中小网站展示的形式。

静态网页资源的对应程序及资源文件的常见扩展名为:

 
  1. 纯文本类程序或文件,如htmhtmlxmlshtmljscss
  2. 图片类文件或数据文档,如jpggifpngbmptxtdocppt
  3. 视频类流媒体文件,如mp4swfaviwmvflv
 

静态网页资源重要的特征

 
  1. 每个网页都有一个固定的URL地址,且URL一般以.html,.html,shtml等常见形式为后缀,而且地址中不含邮问号“?”或“&”等特殊符号。
  2. 网页内容一经发布到网站服务器上,无论是否有用户访问,每个网页的内容都是保存在网站服务器文件系统上的,也就是说,静态网页是实实在在保存在服务器上的文件实体,每个网页都是一个独立的文件。
  3. 网页内容是固定不变的,因此,容易被搜索引擎收录(容易被用户找到)(优点)
  4. 网页没有数据库支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作的方式比较困难(缺点)
  5. 网页的交互性较差,在程序功能实现方面有较大的限制(缺点)
  6. 网页程序在用户浏览器端解析,如IE浏览器,程序解析效率很高,由于服务端不进行解析,并且不需要读取数据库,因此服务器端可以接受更多的并发访问。当客户端向服务器请求数据时,服务器直接把数据从磁盘文件系统上返回(不做任何解析),待客户端拿到数据后,在浏览器端解析展现出来(优点)

网站静态页面的特点就相当于在餐馆吃火锅,餐馆把原材料和工具都给你准备好,你自己只需要涮着吃就行,不需要饭店大厨给你炒菜做菜了,因此,对于饭店来讲,服务顾客的效率大大提高了。而对于静态页面来讲就是不需要服务器端解析,因此提供网站方服务器的压力也大大减轻了。

 

静态网页语言

常见的静态网页语言有html,js,css,xml,shtml等。

 

静态网页的核心特点

程序在客户浏览器端解析,不读取后端数据库,因此性能和效率很高。

因为后端没有数据库支持,所以和用户的交互性较差,功能实现也很少。

 

静态网页的架构思想

在高并发,高访问量的场景下做架构优化,涉及的关键环节就是把动态网页转成静态网页,而不直接请求数据库和动态服务器,并且可以把静态内容推送到前端缓存(或CDN)中提供服务,这样就可以提升用户体验,节约服务器和维护成本。

 

动态网页资源

所谓的动态网页是与静态网页相对而言的,也就是说,动态网页的URL后缀不是.htm,.html,.shtml,.xml,.js,.css等静态网页的常见后缀扩展名形式,而是以.asp,.aspx,.php,.js,.do,.cgi等形式作为后缀的,并且一般在动态网页网址中会有标志性的符号--“?,&”,此外,在大多数情况下后端都需要有数据库支持等。

 

动态网页资源特点

1)网页扩展名后缀常见为:.asp,.aspx,.php,.jsp,.do,cgi等

2)网页一般以数据库技术为基础,大大降低了网站维护的工作量

3)采用动态网页技术的网站可以实现更多的功能,如用户注册,用户登录,在线调查,投票,用户管理,订单管理,发博文等等

4)动态网页并不是独立存在于服务器上的网页文件,当用户请求服务器上的动态程序时,服务器解析这些程序并可能读取数据库返回一个完整的网页内容。

5)动态网页中的“?”在搜索引擎的收录方面存在一定问题,搜索引擎一般不会从一个网站的数据库中访问全部网页,或者出于技术等方面的考虑,搜索蜘蛛一般不会去抓去网址中“?”后面的内容,因此在企业通过搜索引擎进行推广时,需要针对采用动态网页的网站做一定的技术处理(伪静态技术),以便适应搜索因穷的抓取要求。

6)程序在服务器端解析,这相当于顾客点餐,饭店厨师做饭做菜,耗时长,效率低。由于程序在服务端解析,因此,会消耗大量的CPU和内存,I/O等资源,并且多数还要读取数据库等服务,因此,其访问效率远不如静态网页,在服务端解析动态程序的服务常见的有PHP引擎,Java容器(tomcat,resin,jboss,weblogic)

 

有关动态网页的架构思想

一般来说,静态网页的性能效率是动态网页的10~30倍。且动态网站效率很差,并发能力也很低,在高并发场景中,应尽可能转换成静态网页提供服务。动态转静态几乎是所有高并发网站必备的架构方案思路,也是高级架构师的职责所在。

此外,动态转静态也要根据业务需求设计,例如,对于更新频繁的网站如果设计不好就可能会产生数据不一致的情况,即用户看到的数据不是网站最新的内容,而是静态的内容。

 

网站流量度量术语

 

IP(internet Protocol)

IP(独立IP)即Internet Protocol,这里指独立IP数,独立IP数是指不同IP地址的计算机访问网站时被计算的总次数。独立IP数是衡量网站流量的一个重要指标。一般一天内(00:00 - 24:00)相同IP地址的客户端访问网站页面只被计算为一次,记录独立IP的时间可为一天或一个月,目前通用的标准为“一天”。

假设有部分同学同时在某处的局域网中打开了www.baidu.com,请问对于百度来说网站是几个独立IP?答:是一个独立IP。这是因为,国内几乎所有的公司都是采用局域网共享上网的,即通过路由器NAT地址转换上网,每个计算机在局域网内的私有IP是不同的,但是在外网上,就必须都要由路由器把每个私网地址转换成了路由器接口的固定公网IP(多IP映射暂不考虑),所以说,对于网站来说一天内多个相同公司的IP的客户端访问计算为一个独立IP

再假设一个客户端用户通过ADSL等直接拨号上网,但是上网的时候偶尔掉线,一共重新拨号了3次(相近时间重新拨号IP相同的几率是极少的),然后每次都继续打开百度的网页地址,请问此时,网站独立IP数是多少?还是一个独立IP 
由此可见,通过独立iP数度量网站访问量,和实际的访问情况不是很匹配。国内的企业,学校大多数使用的NAT上网的,一个独立IP背后可能有数十上百个客户端访问。独立IP数虽然不是很准,但却是IT技术人员比较关心的一个衡量网站的指标。

 

PV(Page View)

PV(访问量)即Page View,中文翻译为页面浏览,即页面浏览器或点击量,不管客户端是不是相同,也不管IP是不是相同,用户每次访问一个网站页面都会被计算一个PV。

PV的具体度量方法就是从客户浏览器发出一个对Web服务器的请求(Request),Web服务器接到这个请求后,将该请求对应的一个网页(Page)发送给浏览器,就产生一个PV。这里有一个问题,就是只要这个请求发送给了浏览器,无论这个页面是否完全打开(或下载完成),那么都是会被计数为1个PV(服务器日志),一般为了防止用户快速刷PV,很多网站把PV的统计程序放在页面的最下面。

用PV衡量网站时,PV数反映的是浏览某网站的页面数量,每刷新一次页面也算一次。因此,可以说PV数与来访用户的数量成正比,但PV数并不是真正的页面来访者数量,而是网站被访问的页面数量,因为一个来访者可能产生多个PV。

 

UV(Unique Visitor)

UV(独立访客)即Unique Visitor,同一台客户端(PC或移动端)访问网站被计算为一个访客。一天(00:00-24:00)内相同的客户端访问同一个网站只计算一次UV。UV一般是以客户端Cookie等技术作为统计依据的,实际统计会有误差。

考虑到一台客户端电脑可能会有多人使用的情况,因此,UV(独立访客)实际上并不一定是独立的自然人访问。 
1.http请求报文:浏览器版本,OS 
2.http响应报文:cookie(id)

 

并发连接

理解:网站服务器在单位时间内能够处理的最大连接数。

 

统计并发数的基本方法

统计当下时刻的linux的网络连接数并发,netstat -an|grep -i “est”|wc -l

nginx web 层 active status

 

其他服务并发连接

(1)QPS(Query Per Second)每秒查询率 
每秒查询率QPS是用于衡量一个特定的查询服务器在规定时间内所处理流量多少的标准。运维工作中,DNS系统以及数据库等服务的查询性能经常用每秒查询率来衡量。

(2)IOPS(Input/Output Operations Per Second) 
IOPS即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。存储端的IOPS性能和主机端的I/O是不同的,IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次I/O需要多次访问存储才可以完成。例如,主机写入一个最小的数据块,也要经过“发送写入请求,写入数据,收到写入确认”等三个步骤,也就是3个存储访问。

 

测试磁盘的存储性能?

连续的读写向磁盘中写入大的文件 
dd if=/dev/zero of=/tmp/test01.bin bs=1K count=10000

 

有关网站度量Linux企业运维常见面试题

请问你们的网站并发是多少?

你们公司网站访问量是多少?怎么计算?

一定要理解IP,PV,并发量这3个点的知识,在回答时才能有的放失,这三个点的多少决定面试时说多大的架构,对于没有经验的新手不能在说有几万的PV时,还说数十台的集群架构,这样就乌龙了。

运维部分日志分析

开发在页面嵌入JS程序统计收集,分析

运营市场通过第三方公司提供的工具程序统计,例如:GA统计

 

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)

 

www 静态程序服务软件apache

Apache软件有几个重要的版本系列,分别为:Apache1.3,Apache2.0,Apache2.2,Apache2.4等,其中,APache1.3和Apache2.0系列已经成为过去时,官方的网站也看不见其踪影了,目前主流的Apache为2.2系列,正在向Apache2.4系列过渡阶段。如果没有特别要求,建议读者当下使用Apache2.2系列。 
官方地址:http://www.apache.org/

 

www静态服务软件Nginx

Nginx的版本只有一个系列,但是版本更新很快,仅仅半年就有数个版本,这也看出来社区的活跃程序。具体内容参见文档地址:http://www.nginx.org/以及http://www.nginx.org/en/docs/

 

www 动态服务软件Resin

Resin官方号称是世界上最快的Web服务,是大型动态Web服务主流,为互联网Java程序的解析容器,百度,人人都曾用过Resin 
目前企业用的较多的是3.1系列,正在向4.0过度

 

www动态服务软件PHP

PHP软件是大中小型网站程序前台页面开发的首选,存世开源软件众多,也是中小企业网站开发的首选,它是动态网页语言PHP程序的解析容器。PHP的版本系列有PHP5.2,PHP5.3,PHP5.4,PHP5.5,PHP5.6,其中最经典的版本为PHP5.2系列,企业应用的主流版本可以说是百花争艳。

值得注意的是PHP提供解析的方式,在配合Apache解析动态程序时,用的是mod_php5.so(module)模块的方式:在配合nginx解析动态程序时,常用Fastcgi守护进程模式提供服务。

转载于:https://www.cnblogs.com/linyaonie/p/10001113.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值