HTTP服务相关基础知识详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP服务相关基础知识详解相关的知识,希望对你有一定的参考价值。
1 HTTP服务
1.1 IP/PV/UV
UV、PV=1:5关系
UV 每天访问人数
PV page view 页面浏览量
通过nginx日志统计UV PV 或通过代码统计
? IP - internet Protocol
独立IP,这里指独立IP数,独立IP数是指不同IP地址的计算机访问网站的被计算的总次数,独立IP数是衡量网站流量的一个重要指标,一般一天(00:00-24:00)内相同IP地址的客户端访问网站页面只被计算为一次,记录独立IP的时间可以为一天或一个月,目前通用的标准一般为一天
? PV-Page View
PV(访问量),中文翻译即页面浏览,即页面浏览量或点击量,
不管客户端是不是相同,也不管IP是不是相同,用户每次访问一个网站页面(包括子页面)都会被计算成一个PV,
PV的具体度量方法就是从客户浏览器发出一个对web服务器的请求(request),web服务器接到这个请求后,将该请求对应一个网页发给浏览器,就产生了一个PV,
一个访问者,PV数可能是若干,但独立IP数就是1个,因此,如果对比一个网站独立IP数和PV数,不难看出,PV数一定大于独立IP数,
问:如果一个用户访问赶集网或58同城,你觉得可能会产生多少PV?
解答:平均可能会10几个-几十个PV,一个来访者访问网站的PV数多少是和网站提供的业务直接相关的,例如:淘宝,京东,58 智联等需要大量筛选的,
全球13台根域名服务器
? UV-Unique Visitor
UV(独立访客):即Unique Visitor,同一台客户端(PC或移动端)访问网站被计算为一个访客,一天(00:00-24:00)内相同的客户端访问同一个网站只被计算一次UV,UV一般是以客户端Cookie等技术作为统计依据,实际统计会有误差
考虑到一台客户端电脑可能会有多人使用情况,因此,UV(独立访客)实际上并不一定是独立的自然人访问。
1.2 企业网站对PV/IP/UV的度量
IP度量:
- 分析所有web服务器的访问日志信息,对IP地址段去重后计算,这是IP人员的基本计算手段,
- 在网站的每一个页面结尾,嵌入js等统计程序代码,当用户加载网页后,IP即传给统计IP的服务器,这种方法一般被第三方统计 公司或者企业内部开发日志分析程序时使用
- 用第三方大家比较信任的统计工具,例如,谷歌的统计GA
IP的统计方法简单,易用,因此,成为了多数网站衡量网站流量的重要指标之一
PV的度量:
- 分析web服务的访问日志(需要排除,js,css,各种图片的日志信息),只计算html,php等页面
- 在网站的每一个页面结尾,嵌入js等统计程序代码,当用户加载网页后,IP即传给统计IP的服务器,这种方法一般被第三方统计 公司或者企业内部开发日志分析程序时使用
- 用第三方大家比较信任的统计工具,例如,谷歌的统计GA
IP和PV,也是Linux运维人员要掌握的重点
UV的度量
UV度量一般是开发人员负责度量,市场产品运营
- 通过客户端HTTP请求报文分析
一个客户会多次请求网站服务器,每次HTTP请求都会携带客户端自身的大量信息,比如:IP地址,请求发出的时间,浏览器的版本,操作系统版本等等, - 多个人共用一个电脑的情况
- 通过Cookie鉴别
当用户请求时,会发送一个cookie,第二次访问时,会去验证cookie是否为同一个,如果是同一个,就视为一个cookie
举例说明IP/UV/PV
一个网吧里,有10个人都进入了www.jd.com,假设每个人平均访问了5个页面,但这个网络对外出口公网IP是1个,对于www.jd.com来说,只会计算1个独立IP访问,PV数就是10/人*5个页面=50PV UV是指独立人,UV=10个(但UV不是绝对的,存在一台多人用的现象)
1.3 HTTP/1.1与HTTP/1.0的区别
http://zhongliang.blog.51cto.com/4507905/1916191
1.4 HTTP方法 作用描述
GET 客户端请求指定资源信息,服务器返回指定资源
HEAD 只请求响应报文中的HTTP首部
POST 将客户端的数据提交到服务器,例,注册表单
PUT 从客户端向服务器传送文件
DELETE 请求服务器删除指定资源
MOVE 请求服务器将指定页面移至另一个网络地址
1.5 HTTP 常见错误代码
测试:curl -I baidu.com
100-199 用于指定客户端相应的某些动作
200-299 用于表示请求成功
300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息
400-499 用于指出客户端的错误
500-599 用于指出服务器错误
生产环境常见的HTTP状态码列表(List of HTTP status codes)为:
说明:求精不求多,有舍才有得 不一样的思维不一样的精彩。《老男孩linux实战培训》也是这个原则。
200 - OK,服务器成功返回网页
- Standard response for successful HTTP requests.
301 - Moved Permanently(永久跳转),请求的网页已永久跳转到新位置。 - This and all future requests should be directed to the given.
403 - Forbidden(禁止访问),服务器拒绝请求,这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端的请求,此类问题一般为服务器权限配置不当所致 - forbidden request (matches a deny filter) => HTTP 403
- The request was a legal request, but the server is refusing to respond to it.
404 - Not Found,服务器找不到请求的页面。可能是客户端请求了服务器不存在的资源导致 - The requested resource could not be found but may be available again in the future.
500 - Internal Server Error(内部服务器错误)服务器遇到了意料不到的情况,不能完成客户的请求,这是一个比较笼统的报错,一般为服务器的设置或者内部程序问题导致 selinux未关闭,又未配置规则, - internal error in haproxy => HTTP 500
- A generic error message, given when no more specific message is suitable.
502 - Bad Gateway(坏的网关),一般是网关服务器请求后端服务时,后端服务没有按照http协议正确返回结果。一般为代理服务器下面的节点出问题导致 例如:LVS转发请求到Nginx,Nginx当机或不响应,php服务没有启动,就返回502 - the server returned an invalid or incomplete response => HTTP 502
- The server was acting as a gateway or proxy and received an invalid response from the upstream server.
503 - Service Unavailable(服务当前不可用),一般是网关代理服务器请求后端服务时,可能因为超载或停机维护。或后代理服务器后端没有提供服务的节点 - no server was available to handle the request => HTTP 503
- The server is currently unavailable (because it is overloaded or down for maintenance).
504 - Gateway Timeout(网关超时),一般是网关服务器请求后端服务时,后端服务没有在特定的时间内完成服务。一般是服务器过载导致没有在指定的时间内返回数据给代理服务器 - the server failed to reply in time => HTTP 504
- The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
1.6 并发连接
什么是并发?怎么理解并发呢?
A:网站服务器每秒能够接收的最大用户请求数
B:网站服务器每秒能够响应的最大用户请求数
C:网站服务器在单位时间内能够处理的最大连接数
正确理解是 正在接收的请求数+正在处理的请求数
Request Per Sencond+Simultaneous Browser connections+Thinking Time=Concurrent User
Concurrent User 表示网站并发用户总数
Request Per Sencond [RPS] 表示每秒请求数(吞吐量)
Simultaneous Browser connections [SBC] 表示并发浏览连接数
Thinking Time 表示平均用户思考时间
1.7 面试题 DNS解析原理 http通信原理
面试1:十大原理之一,DNS解析原理
1、当我们在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。
面试2: 十大原理之一,HTTP协议通信原理
次HTTP操作称为一个事务,其工作过程可分为四步:
1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以
面试3: 十大原理之一,TCP三次握手和四次挥手
10台服务器, 100多万PV 3000多并发 IP 20-30W
面试题:
- 请问你如何理解并发
- 你们公司网站访问量是多少? 怎么计算的?
IP,PV并发量3个点为,这三个点的多少决定面试时说多大的架构,不能几万PV,还说数十台的集群架构,
访问量的计算
a. 运维部分日志分析
b. 开发在页面嵌入jsp程序统计
c. 第三方谷歌 GA统计
动态web服务请求流程
客户端发送请求--》httpd得到请求--->httpd解析请求的格式(html,css)-->请求相应php解析--》php解析程序执行完毕--DB数据库,返回结果html给httpd--httpd把数据返回给客户端---浏览器接到返回结果,根据HTML绘出界面展示出来
-
什么是静态资源,作用及优缺点?
URL固定,后缀HTML,HTM ,服务器存放的文件,
特点:无数据库交互
优: 性能高体验好,快速
缺:交互差,维护麻烦 -
什么是动态资源,作用及优缺点?
有数据库支持,内容丰富,后缀php,jsp.do,asp aspx
特点;
优:1.交互性好,2 维护简单
缺:1.性能差(服务器端解析) 2.URL变化不利于搜索 -
什么是伪静态? 作用及优缺点?
动态URL伪装成静态,rewrite规则模块支持
优:方便收录,提升用户浏览体验
缺:不会提升网站性能,会微降性能 维护复杂 -
什么是URL,RUI,MIME类型
-
网站访问的基本流程
注:网盘资源有图解 - 什么是http状态码?
1.8 HTTP资源类型:
- 媒体MIME类型
1.9 URI介绍
Uniform Resource Identifier 统一资源标识符
URL是URI的子集
URL格式(URI)
http://www.baidu.com/index.html
协议 分隔符 域名或IP 资源具体地址
第一部份是协议,例http:
第二部分是主机资源服务器IP或域名,例:www.baidu.com
第三部分是主机资源的具体地址,如目录或文件名 oldboy/index.html
静态网页类型
1.纯文本类程序或文件 html htm xml shtml js css
2.图片类型文件或数据文档 jpg gif png bmp txt doc ppt
3.视频类流媒体文件 mp4 swf avi wmv flv
1.10 当前主流互联网web服务软件
- IIS 微软
- apache 中小型静态web服务主流,web服务器中的老大哥
- nginx 大型新兴静态web服务主流,
- lighttpd 静态web服务,慢慢淘汰
- tomcat 中小型企业动态web服务,互联网java容器主流
- resin 大型动态web服务,互联网java容器主流
7 php fcgi php程序的解析容器
a. 配合apache php不是守护进程,而是mod_php5.so(module)模块
b. 配合nginx,lighttpd php是守护进程模式
1.11 robots协议 网络爬虫
Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取
robots的好处?
设置可以或禁止各种搜索引擎访问的资源
缺点: 暴漏目录结构
http://www.baidu.com/robots.txt
User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?
User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
可以查看常见的一些rebots列表
例1. 禁止所有搜索引擎访问网站的任何部分
User-agent: *
Disallow: /
例2. 允许所有的robot访问 (或者也可以建一个空文件 “/robots.txt” file)
User-agent: *
Allow: /
例3. 禁止某个搜索引擎的访问
User-agent: BadBot
Disallow: /
在这个例子中,该网站有三个目录对搜索引擎的访问做了限制,即搜索引擎不会访问这三个目录。
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/
针对不同浏览器设置
User-agent: Googlebot
Disallow: /
User-agent: Googlebot-Mobile
Allow:
Allow: /*?$ 一行将允许包含任何以 ? 结尾的网址(具体而言,它将允许包含所有以您的域名开头、后接任意字符串,然后是问号 (?),问号之后没有任何字符的网址)。
以上是关于HTTP服务相关基础知识详解的主要内容,如果未能解决你的问题,请参考以下文章