HTTP服务重要原理php
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协议(超文本传输协议)css
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状态码html
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能够获取到信息的软件)java
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: 客户机经过这个头告诉服务器,客户机当前请求时间。 三、空行
四、请求报文主体 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协议原理mysql
当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资源nginx
媒体类型(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)
静态网页资源web
相对于动态而言的,是指没有后台数据库,不含程序(php jsp asp)和可交互的网页。 URL固定 开发者编写什么,就显示什么,一旦完成,基本不会变,更新和维护也比较麻烦 核心特色: 1、客户端浏览器解析程序,不须要读取数据库,性能和效率较高。 2、扩展名格式 a、纯文本类程序或文件 html html xml shtml js css等。 b、图片类文件或数据文档 jpg、gif、png、bmp、txt、doc、ppt等。 c、视频类流媒体文件 mp四、swf、flv、avi、wmv等。 3、没有数据库支持,和用户交互差,功能实现差。 其余特色:url固定、网页是实实在在保存在服务器上的实体,每一个网页都是一个独立文件,内容相对固定、交互性差、网页程序在用户浏览器解析,效率高 优势:性能高体验好、便于SEO(网站推广)
缺点:交互性差、维护麻烦
有关静态网页架构思想:
高并发访问量场景,作架构优化,关键环节:把动态转成静态,不直接请求数据库和动态服务器,并把静态内容推送到前端缓存中提供服务,能够提高用户体验,节约服务器和维护成本
动态网页sql
以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,可是用户访问的仍是动态网页,看起来是静态的,搜索引擎和用户就会误认为静态网页。实现过程通常是由运营产品提出需求,开发和运维共同实现。 特色一、从url上,经过rewrite技术,改写列url,(如地址结尾带html),有利于搜索引擎抓取,用户体验加强。从性能上,伪静态功能不但没有提高网站性能,反而下降 做用一、便于搜索引擎二、用户浏览体验 缺点一、影响性能 伪静态网页小结 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天 度量一、分析访问日志,ip去重复 2、每一个页面结尾嵌入js程序代码(第三方或开发)3、第三方统计谷歌统计GA
PV-Page View
用户打开一次页面就是一个pv 度量一、访问日志,需排除js css及各类图片日志信息,只计算html、php等页面URI 2、js GA
UV-Unique Visitor
同一客户端访问网站被计算为一个UV,通常以Cookie技术(多人共用电脑) 度量一、经过HTTP请求报文分析 2、Cookie(客户端禁止、删除)
并发链接的概念
怎么理解网站最大并发量?(没确切说法) 每秒可以接收的最大用户请求数?
每秒可以响应的最大用户请求数?
在单位时间内可以处理的最大链接数或请求数?
好比某网站并发,理解为单位时间(1秒或数秒内),正在处理的链接数和正在创建的请求数,加起来共5000
参考
server数50台 50万独立IP/日 150万PV/日 10000并发级别
当前互联网主流web服务
经常使用来提供静态web服务的软件 apache 中小型web服务主流 nginx 大型网站web服务主流 lighttpd 正在被淘汰的 经常使用来提供动态服务的软件 1、php(fastcgi)大中小型网站都会用,动态网页语言php程序的解析容器 a、配合apache解析动态程序,这里的php不是Fastcgi守护进程模式,而是mod_php5.so(module) b、配合nginx解析动态程序,这里的php经常使用Fastcgi守护进程模式提供服务 2、tomcat 中小企业动态web服务主流,互联网java容器主流(jsp,do) 3、resin 大型动态web服务主流,互联网java容器主流(jsp,do) 4、IIS 微软Windows下的Web服务软件(asp,aspx)