WEB服务基础知识

HTTP服务重要原理

1、客户端浏览器输入网址,系统首先查找本地hosts文件及local DNS缓存信息=(没有)=>ISP DNS请求13台根服务器==>向下一层顶级域名DNS查询==>找到授权DNS。
  找到后,本地进行缓存一份,并把另一份发送给客户端。客户端通过IP:port发起http请求,web server处理请求,并将结果返回给客户端
2、DNS作用   DNS,简单地说,就是Domain Name System,翻成中文就是“域名系统”。.cn .com .org .net .cn .edu等顶级域名
    设置A记录,域名解析成IP
    设置CNAME别名,此功能通常用于CDN加速
    设置MX邮件记录,用于搭建邮件服务时使用
    设置PTR,IP解析成域名,邮件服务使用到
  # dig www.baidu.com
  # nslookup www.baidu.com
  # ping www.baidu.com

 

HTTP协议(超文本传输协议)

HyperText Transfer Protocl,其重要应用:WWW服务。起初设计目的是提供发布和接收HTML页面的方法。是互联网上通信协议方案之一,最流行的是WEB浏览器与服务器之间的通信应用,即WWW应用或Web应用。
  http  默认端口80
  https 默认端口443  网银、支付

HTTP 1.0
  在HTTP0.9的基础上增加了http请求头、支持更多的请求方法,以及对多媒体对象的处理。
  规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
当下主流版本HTTP/1.1
  重点修复HTTP设计中的缺陷,从可扩展性缓存处理带宽优化持久连接host请求头更多错误通知消息传递内容协商几个方面做列相关改进。
  支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延时
  HTTP
1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。
  HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。

  

 

生产常见HTTP状态码

crul -I 域名  返回head信息

#curl
-I -m 10 -o /dev/null -s -w %{http_code} www.baidu.com 取得返回值 -I --head -m --max-time <seconds> Maximum time allowed for the transfer -w/--write-out <format> What to output after completion
   -i/--include       Include protocol headers in the output (H/F)输出时带head
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(内部服务器错误)(seliux 而又没有设置规则许可)服务器遇到了意料不到的情况,不能完成客户端的请求,这是个笼统的报错,一般为服务器的设置或者内部程序问题导致。 - internal error in haproxy => HTTP 500 - A generic error message, given when no more specific message is suitable. 502 - Bad Gateway(坏的网关),一般是网关服务器(代理)请求后端服务时,后端服务没有按照http协议正确返回结果。(nginx请求php时也会),一般可能是后端节点问题 - 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(网关超时),一般是网关服务器请求后端服务时,后端服务没有在特定的时间内完成服务。(设置了代理向后请求的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. 100-199 用于指定客户端相应的某些动作 200-299 用于表示请求成功 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息 400-499 用于指出客户端的错误 500-599 用于指出服务器错误


HTTP请求方法

序号     方法     描述
1     GET         请求指定的页面信息,并返回实体主体。
2     HEAD       类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3     POST      向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4     PUT       从客户端向服务器传送的数据取代指定的文档的内容。
5     DELETE     请求服务器删除指定的页面。
6     CONNECT     HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7     OPTIONS     允许客户端查看服务器的性能。
8     TRACE     回显服务器收到的请求,主要用于测试或诊断。
9     PATCH     实体中包含一个表,表中说明与该URI所表示的原内容的区别。
10     MOVE     请求服务器将指定的页面移至另一个网络地址。
11     COPY     请求服务器将指定的页面拷贝至另一个网络地址。
12     LINK     请求服务器建立链接关系。
13     UNLINK     断开链接关系。
14     WRAPPED     允许客户端发送经过封装的请求。
15     Extension-mothed     在不改动协议的前提下,可增加另外的方法。


HTTP报文(fiddler、http watch可以获取到信息的软件)

HTTP请求报文Request Message
  一个HTTP请求报文格式由请求行(request line)、请求头(header)、空行和请求报文主体(get没有,post才有)4个部分组成

HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
1、请求行 包括:请求方法URL协议版本 示例:GET /index.html HTTP/1.1 2、请求头 由关键字和值组成,常见如下   Accept:      告诉服务器,客户端支持的数据类型。 Accept:image/gif,image/jpeg   Accept-Charset:  告诉服务器,客户端采用的编码。   Accept-Encoding:  告诉服务器,客户机支持的数据压缩格式。   Accept-Language:  告诉服务器,客户机的语言环境。   Host: 客户机通过这个头告诉服务器,想访问的主机名。   If-Modified-Since: 客户机通过这个头告诉服务器,资源的缓存时间。   Referer:        客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的。(一般用于防盗链)   User-Agent:    客户机通过这个头告诉服务器,客户机的软件环境。   Cookie:     客户机通过这个头告诉服务器,可以向服务器带数据。   Connection:    客户机通过这个头告诉服务器,请求完后是关闭还是保持链接。   Date:        客户机通过这个头告诉服务器,客户机当前请求时间。 3、空行
4、请求报文主体  GET方法没有,POST方法才有

HTTP响应报文Response Message HTTP响应也由四个部分组成,分别是:状态行(起始行)、响应头部、空行、响应正文即报文主体。 # curl
-i baidu.com HTTP/1.1 200 OK Date: Sun, 06 Nov 2016 18:03:46 GMT Server: Apache ======================= Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT ETag: "51-47cf7e6ee8400" Accept-Ranges: bytes Content-Length: 81 Cache-Control: max-age=86400 Expires: Mon, 07 Nov 2016 18:03:46 GMT Connection: Keep-Alive Content-Type: text/html 空行 <html> <meta http-equiv="refresh" content="0;url=http://www.baidu.com/"> </html>

HTTP协议原理

当web客户端向web服务器发送请求报文前,先要通过TCP/IP协议在两者之间建立TCP/IP连接,整个过程原理如下
  1、浏览器输入访问地址
  2、DNS解析
  3、web浏览器将端口从url解析,转换成ip:port
  4、web浏览器通过解析后的IP地址及端口号,与web服务器建立tcp连接
  5、tcp连接后,请求http报文
  6、服务器响应并读取请求信息,并返回http报文,响应报文内容格式及信息细节(web请求后端细节)
  7、web服务器关闭http连接,关闭tcp连接,web浏览器将内容输出到屏幕

HTTP资源

媒体类型(MINE)/usr/local/nginx/conf/mime.types
  当web服务器响应HTTP请求时,会为每个http对象数据加一个MINE类型。当web浏览器获取到服务器返回的对象时,会去查看相关的MINE类型,进行相应处理

URL介绍(三部分)URL是URI命名机制的一个子集,Uniform Resource Location
  协议http (分隔符://) ip或域名  分隔符/ 资源目录地址

URI  统一资源标识符(Uniform Resource Identifier,或URI)
  是一个用于标识某一互联网资源名称的字符串。(指向一个用户邮箱地址即是一个URI)


静态网页资源

相对于动态而言的,是指没有后台数据库,不含程序(php jsp asp)和可交互的网页。 URL固定
开发者编写什么,就显示什么,一旦完成,基本不会变,更新和维护也比较麻烦
核心特点:
  1、客户端浏览器解析程序,不需要读取数据库,性能和效率较高。
  2、扩展名格式
    a、纯文本类程序或文件  html html xml shtml js css等。
    b、图片类文件或数据文档  jpg、gif、png、bmp、txt、doc、ppt等。
    c、视频类流媒体文件  mp4、swf、flv、avi、wmv等。
  3、没有数据库支持,和用户交互差,功能实现差。
 其他特点:url固定、网页是实实在在保存在服务器上的实体,每个网页都是一个独立文件,内容相对固定、交互性差、网页程序在用户浏览器解析,效率高
 优点:性能高体验好、便于SEO(网站推广)
 缺点:交互性差、维护麻烦 
有关静态网页架构思想:
  高并发访问量场景,做架构优化,关键环节:把动态转成静态,不直接请求数据库和动态服务器,并把静态内容推送到前端缓存中提供服务,可以提升用户体验,节约服务器和维护成本


动态网页

以asp php aspx jsp .do cgi等为后缀,一般在网址中经常会有标志性符号“?,&”,大多数情况需要数据库支持
核心特点
  1、程序在服务器端解析,加后端需要数据库支持,因此访问效率差些。
  2、后缀一般为asp php aspx jsp do cgi等
  3、可以实现更多功能。注册、登录、支付
  4、动态网页并不是独立存在于服务器上的文件,当用户请求服务器上的动态程序时,服务器解析程序并读取数据库返回一个完整的网页内容。
  5、动态页中的“?”对搜索引擎的收录存在一定问题,搜索引擎不会从一个网站的数据库中访问全部网页,或者处于技术方面的考虑,搜索蜘蛛一般不会去抓取网址中的“?”后面的内容,因此采用动态网页在进行搜索引擎推广时需要做一定的技术处理(伪静态技术)才能适应搜索引擎的抓取要求。6、程序在服务器端解析

有关动态网页架构思想:
  1、静态效率是一般动态的10-30倍。
  2、效率差,并发能力低,高并发场景中,应尽可能转换成静态网页提供服务。
  3、动转静也要根据业务需求设计,例如,更新频繁的网站会产生数据不一致的情况,即用户看到的数据不会是最新内容。
  4、动转静,高并发网站的必备的架构方案,是高级架构师的职责所在

伪静态网页

通过某些技术(rewrite)把动态url伪装成静态url,但是用户访问的还是动态网页,看起来是静态的,搜索引擎和用户就会误认为静态网页。实现过程一般是由运营产品提出需求,开发和运维共同实现。
特点1、从url上,通过rewrite技术,改写列url,(如地址结尾带html),有利于搜索引擎抓取,用户体验增强。从性能上,伪静态功能不但没有提升网站性能,反而降低
作用1、便于搜索引擎2、用户浏览体验
缺点1、影响性能

伪静态网页小结
  1、利用rewrite技术将动态网页伪装成静态网页(URL改写)
  2、便于搜索引擎搜录提升用户访问量及用户体验
  3、访问性能没有提升,转换伪静态还会消耗资源,因此性能反而会下降
  4、尽可能将动态网页转换成真正的静态页面
  5、并发量不是很大或者动态更新过于频繁的时候,用rewrite实现伪静态也不错
  6、伪静态网页的实现过程,一般是由运营产品提出需求,开发和运维共同实现(discuz bbs wordpress blog)


常见端口及POP3 SMTP IMAP介绍

ftp    21 
ssh    22
smtp   25
mysql  3306
rsync  873
snmp   161
rpc    111
remote desk  3389
http    80
https   443
pop3   110
dns    53
rsyslog  514
imap    143 POP3 110
  全称“Post Office Protocol3”,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。
  它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。 SMTP 25
  全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。
  SMTP 协议属于 TCP
/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。   SMTP 认证简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。 增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。 IMAP 143
  全称“Internet Mail Access Protocol”即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。
  不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。
  所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。

网站流量度术语

独立IP(访问量)
  即InternetProtocol,是指不同的IP地址的计算机访问网站的被计算的总次数,一般标准为1天   度量1、分析访问日志,ip去重复
2、每个页面结尾嵌入js程序代码(第三方或开发)3、第三方统计谷歌统计GA
PV
-Page View
  用户打开一次页面就是一个pv   度量1、访问日志,需排除js css及各种图片日志信息,只计算html、php等页面URI
2、js GA
UV
-Unique Visitor
  同一客户端访问网站被计算为一个UV,一般以Cookie技术(多人共用电脑)   度量1、通过HTTP请求报文分析
2、Cookie(客户端禁止、删除)

并发连接的概念

怎么理解网站最大并发量?(没确切说法)
  每秒能够接收的最大用户请求数?
  每秒能够响应的最大用户请求数?
  在单位时间内能够处理的最大连接数或请求数?
  比如某网站并发,理解为单位时间(1秒或数秒内),正在处理的连接数和正在建立的请求数,加起来共5000

参考
server数50台  50万独立IP/日 150万PV/日  10000并发级别

当前互联网主流web服务

常用来提供静态web服务的软件
  apache 中小型web服务主流
  nginx  大型网站web服务主流
  lighttpd 正在被淘汰的

常用来提供动态服务的软件
  1php(fastcgi)大中小型网站都会用,动态网页语言php程序的解析容器
    a、配合apache解析动态程序,这里的php不是Fastcgi守护进程模式,而是mod_php5.so(module)
    b、配合nginx解析动态程序,这里的php常用Fastcgi守护进程模式提供服务
  2tomcat 中小企业动态web服务主流,互联网java容器主流(jsp,do)
  3resin 大型动态web服务主流,互联网java容器主流(jsp,do)
  4IIS 微软Windows下的Web服务软件(asp,aspx)

 

posted @ 2017-05-27 16:42  黑色月牙  阅读(841)  评论(0编辑  收藏  举报