如图,用户请求www.joker.com发生php
1. 用户访问网站流程框架
2. dns解析原理
3. tcp/ip三次握手过程原理
4. http协议原理(www服务的请求过程),请求报文细节
5. 大规模网站集群架构细节
6. http协议原理(www服务的响应过程),响应报文细节
7. tcp/ip四次挥手过程原理css
根服务器 世界13台html
dns domain name system
主要做用是负责把网站域名解析为对应的ip地址
1. 从域名到ip的解析过程,叫做A记录
2. CNSAME别名记录,这个别名解析功能常被CDN加速服务商应用前端
咱们在访问www.joker.com这个域名的时候,dns是如何将域名解析成ip的呢java
第一 二步是ldns解析,若是本地没有缓存nginx
第三步 将从dns系统的.根开始请求www.joker.com域名的解析,根服务器下面是没有www.joker.com域名解析记录的,可是根下面有www.joker.com对应的顶级域.com的解析记录,所以,根会把.com对应的dns服务器地址返回给ldnsweb
第四步 ldns获取到.com对应的dns服务器地址后,就会去.com服务器请求www.joker.com域名的解析,而.com服务器下面也没有www.joker.com域名对应的解析记录,可是有joker.com的解析记录,所以,.com服务器会把joker.com对应的dns服务器地址返回给ldns数据库
第五步 ldns获取到joker.com对应的dns服务器地址后,就会去joker.com服务器请求对www.joker.com域名的解析,joker.com域名对应的dns服务器是该域名的受权dns服务器,这个dns服务器正是企业购买域名时用于管理解析的服务器后端
第六步 joker.com域名,dns服务器会把www.joker.com对应的ip解析记录发给ldns浏览器
第七步 ldns把来自受权dns服务器的与www.joker.com对应的ip解析记录发给客户端浏览器,而且ldns会在本地把域名和ip的对应解析记录缓存起来
dns解析命令
dig hosts nslookup 须要安装 yum install bind-utils
[root@Poppy ~]# dig +trace www.joker.com ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> +trace www.joker.com ;; global options: +cmd . 170865 IN NS l.root-servers.net. . 170865 IN NS f.root-servers.net. . 170865 IN NS j.root-servers.net. . 170865 IN NS a.root-servers.net. . 170865 IN NS m.root-servers.net. . 170865 IN NS h.root-servers.net. . 170865 IN NS i.root-servers.net. . 170865 IN NS k.root-servers.net. . 170865 IN NS d.root-servers.net. . 170865 IN NS g.root-servers.net. . 170865 IN NS c.root-servers.net. . 170865 IN NS e.root-servers.net. . 170865 IN NS b.root-servers.net. . 491827 IN RRSIG NS 8 0 518400 20180703170000 20180620160000 39570 . AWoVbG/68+WWYALHuMhz2e4r9QJf2+uSy6FOBLqHSdpof+KbuoCH/W/U sQgM5za3F0fxC/at9VwTTq32tmIuwl8v5/V5YaLa24zijdpJRmPoI3UT yp5DiUM0kj+qHhKHR7f17Mrptaoa1Ld1GkZgUQzgZvb7UftiznOM+l3U m8sOOcL5EKKqQ5VtTfLn2WUPZDp8weKzG55EF7tNCpnoNJORDl4H/tmA K23umiyYPBiHqxcIZ1PDRUrFwJuNUX4+iJPg4a1lAjUp5MjFG6DQzHpr NA+KR7Xb0FAWU9FiFF9ZqyYT7oKR2qwIu26zEd6hCYKWFEUdJgSbAsc4 W+m5Tw== ;; Received 525 bytes from 100.100.2.136#53(100.100.2.136) in 42 ms org. 172800 IN NS a0.org.afilias-nst.info. org. 172800 IN NS a2.org.afilias-nst.info. org. 172800 IN NS b0.org.afilias-nst.org. org. 172800 IN NS b2.org.afilias-nst.org. org. 172800 IN NS c0.org.afilias-nst.info. org. 172800 IN NS d0.org.afilias-nst.org. org. 86400 IN DS 9795 7 1 364DFAB3DAF254CAB477B5675B10766DDAA24982 org. 86400 IN DS 9795 7 2 3922B31B6F3A4EA92B19EB7B52120F031FD8E05FF0B03BAFCF9F891B FE7FF8E5 org. 86400 IN RRSIG DS 8 1 86400 20180703170000 20180620160000 39570 . mzYJcAKpBCaXKvZ7zTmxuaiNGNf2jE9fcpyubQ2hU+vf+/fVLLWxElZQ 9xtfShyEKoHuZFgf6e505Lfj9lYCRjwgx3Yx8hfuuwr5L6XY1ECkK5rT pt4StQZngAVxAaDD8LgZcoj+OxXzYGWGEhwhA0kkneV7IRn0v0rmEwVD z0GYU5aARfE1K8DRVfoIkC1IkmSVdswrO0P5YVKLSMqxgq/ObRxJPuGj 2awBxlV25LHFDZ2CsYQhjOyn/UGLy/h+iObXNv/9+4UjzxZMfboubYFG OM4np9/5eoNwe+P3hWW4F1ZeM2XpjWAMyuce/Guu25BQ3CpiQtAaI2p8 pj/Oaw== ;; Received 825 bytes from 192.5.5.241#53(f.root-servers.net) in 4 ms etiantian.org. 86400 IN NS dns.bizcn.com. etiantian.org. 86400 IN NS dns.cnmsn.net. h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 86400 IN NSEC3 1 1 1 D399EAAB H9PARR669T6U8O1GSG9E1LMITK4DEM0T NS SOA RRSIG DNSKEY NSEC3PARAM h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 86400 IN RRSIG NSEC3 7 2 86400 20180712072331 20180621062331 1862 org. YcZkCUWooAgsPB98ndrbreyBNCYc35I4DaDaq8UQ2ssPE00HkCMytXSm cgnS7gQjhDexaVZJDvN8/Ph5vTh6vv1eS3bhsWOrl9P0xfMSqXCfahxW SORWfSzTQJBP/GCBWNJrs/PN5lFrL1S/Ys65ke42S4mO64sHa6EWdep0 /vk= hjkvc91ahlsun5l5aaae2u87gu5h41f0.org. 86400 IN NSEC3 1 1 1 D399EAAB HJL9RDF6TES68LJ3OTVU3RJIH7VDPLIN A RRSIG hjkvc91ahlsun5l5aaae2u87gu5h41f0.org. 86400 IN RRSIG NSEC3 7 2 86400 20180708152845 20180617142845 1862 org. C8lCzdaeLN58pjb9LJjLGwr6ZGKDT6n47vTmYy7T5CfsRkiE1U+DcZ+2 Brame+3ugR+L1C9LSJhwTwLSrmNUwIBqYIhBnGOXttNaAowkMHbcPwET ekB7MFn5JrkGEheQPwp+2F9J4/KSBN/dITewKxigArtlrLsk0uF+WbPY UZU= ;; Received 593 bytes from 199.249.112.1#53(a2.org.afilias-nst.info) in 276 ms www.joker.com. 600 IN A 42.62.5.158 etiantian.org. 600 IN NS dns.cnmsn.net. etiantian.org. 600 IN NS dns.bizcn.com. ;; Received 116 bytes from 180.163.194.139#53(dns.bizcn.com) in 51 ms [root@Poppy ~]# nslookup www.joker.com Server: 100.100.2.136 Address: 100.100.2.136#53 Non-authoritative answer: Name: www.joker.com Address: 1.1.1.1
http协议,hypertext transfer protocol,超文本传输协议,是互联网中最经常使用的一种网络协议。http的重要应用之一是www服务。
www,全称为world wide web,常称为web,万维网,目前互联网上最受用户欢迎的信息服务形式
ssh nfs rsync
客户端和服务端 c/s架构,局域网内部用
http协议www应用
浏览器和服务端 b/s,广域网用
1.0版本比0.9版本的基础上增长了http请求头,可支持更多的请求方法,而且能对多媒体对象进行处理。使得包含生动图片的web页面和交互式表格成为可能,而正是这些页面和表格促使互联网被人们普遍地接受。规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都须要与服务器创建一个tcp连接,服务器完成请求处理后即断开tcp连接
1.1版本修复http设计的缺陷,从扩展性,缓存处理,带宽优化,持久连接,host头,错误通知,消息传输,内容协商等多个方面都作了相关改进。目前,1.1版本是互谅网的主流版本
1.1 版本支持持久连接,在一个tcp连接上能够传送多个http请求和响应,减小了创建和关闭连接的消耗和时间延迟
1.1 版本增长了更多的请求头和响应头信息,用以加强http功能
1.1 提供了身份认证,状态管理和cache缓存等机制相关的请求头和响应头
http通讯中,每一个http请求报文都包含一个方法。用以告诉web服务器端须要执行哪些具体的动做
状态码介绍
用来表示web服务器响应http请求状态的数字代码。每当web客户端向web服务器发送一个http请求时,web服务器都会返回一个状态响应代码。做用是告知web客户端这次请求是否成功,或者是否要采起其余的动做方式
http响应的状态码种类不少,常见的状态码以下
http状态码的命令行查看
[root@Poppy ~]# curl -I www.baidu.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 277
Content-Type: text/html
Date: Thu, 21 Jun 2018 14:34:21 GMT
Etag: "575e1f72-115"
Last-Modified: Mon, 13 Jun 2016 02:50:26 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
http报文中有不少行内容,这些行字段都是由一些ascii码组成 ,分为请求报文和响应报文
请求报文
由请求行,请求头部,空行和请求报文主体组成
(1)请求行是请求报文的第一行,用来讲明客户端想要作什么。内容由请求方法字段,url字段和http协议版本字段组成,它们之间用空格分开
(2)请求头部由关键字/值对组成,每行一对
最经常使用的请求头是content-type和content-length
(3) 空行
经过发送回车和换行符,通知web服务器空行如下不会有请求头部信息了
(4)请求报文主体
get请求不会有请求报文主体,psot请求才会有请求报文主体
响应报文
由起始行,响应头部,空行和响应报文主体这几个部分组成
(1) 起始行,响应报文的起始行也叫状态行,用来讲明服务器响应客户端请求的情况。通常啊为协议及版本号,数字状态码,状态状况。例如: http/1.1 200 OK
(2) 响应头部,和请求报文相似,起始行的后面通常有若干个头部字段每一个头部字段都包含一个字和一个值,俩者之间用冒号分隔。
(3) 空行,经过发送回车和换行符,通知客户端空行下文无头部信息了
(4) 响应报文主体,壮哉了要返回给web客户端的数据。这些数据能够是文件,二进制,等
web客户端发送一条http请求报文,请求http://www.joker.com/index.html资源,请求报文的起始行中有一个get命令,资源名称为index.html。使用http1.1协议,因为请求的方法是get,所以请求报文不须要有请求主体。
web服务器收到请求后,返回一条http响应报文。这条响应报文中包含了http的版本号http1.1成功的状态码200,状态描述ok,以及若干响应头部字段,在全部这些内容以后跟着包含了所请求资源的响应主体。content-lenght响应主体的长度,content-type文档的mime类型
http协议属于osi模型中的第七层应用层协议,重要的应用就是www服务应用。以http协议进行通讯时,须要有客户端和服务器端,在web客户端向web服务器端发送请求报文以前,先要经过tcp/ip协议在web客户端和服务器之间创建一个tcp/ip链接
媒体资源
当web服务器响应http请求时,回味每个http对象数据加一个mime类型。当web浏览器后去到服务器返回的对象时,会去查看相关的mime类型,并进行响应处理。
mime类型存在于http响应报文的响应头部信息里,它是一种文本标记
咱们能够在nginx的配置文件conf目录下,查看它支持的媒体类型
[root@Poppy conf]# cat mime.types types { text/html html htm shtml; text/css css; text/xml xml; image/gif gif; image/jpeg jpeg jpg;
Uniform Resource Location. 统一资源定位符,也被称为网页地址,是因特网上标注的资源惟一地址。是internet上用来描述信息资源的字符串,主要用在各类www客户端和服务器程序上。
URL 的格式由下列三部分组成
URL说明
Uniform Resource Identifier.统一 资源标识符,是一个用于标识某一互联网资源名称的字符串。这个字符串在世界范围内惟一标识并定位某一个信息资源
URI说明与URL说明同样,可是URI能够指向邮箱
URL是URI命名机制的一个子集
介绍:
纯粹的HTML格式的网页,包含图片,视频,js,css等一般被称为“静态网页”,静态网页是相对于动态网页而言的,指没有后台数据库,不含程序,如php,jsp,asp,不可交互的网页
特色:
开发者编写的是什么,它显示的就是什么。静态网页维护和更新相对比较麻烦,每一个不一样的网页都须要单独编辑更新,因此,静态网页适用于更新较少的宣传展现型网站
常见扩展名为:
几个重要的特征:
静态网页语言:
常见的静态语言有html,js,css,xml等
核心特色:
静态网页的架构思想
在高并发,高访问量的场景下作架构优化,涉及的关键环节就是把动态网页转成静态网页,而不是直接请求数据库和动态服务器,而且能够把静态内容推送到前端缓存中提供服务,可提高用户体检,节约服务器和维护成本
介绍:
动态网页是与静态网页相对而言的,动态网页的URL后缀不是.htm,html,xml,js,css等静态网页的常见扩展名形式,而是.asp,.aspx,.php,js,do,cgi等形式的,而且通常在动态网页网址中会有标志性的符号--"?","&",此外,还须要后端数据库支持
特色:
程序在服务器端解析,会消耗大量的cpu和内存,i/o等资源,而且多数还要提供读取数据库等服务,所以,其访问效率远不如静态网页,在服务器端解析动态程序的服务常见有php,java容器
动态网页的架构思想
静态网页的性能效率是动态网页的10-30倍,且动态网站效率不好,并发能力也很低,在高并发场景中,应尽量转换成静态网页提供服务。动态转静态几乎是全部高并发网站必备的架构方案思路
伪静态就是经过某些技术把动态网页的URL地址假装成静态网页URL地址,但实质上用户访问的仍是动态网页,只不过看起来符合静态网页地址特征,所以,用户及搜索引擎会误觉得是静态网页
特色:
从网站的RUL地址看,伪静态表面上看起来是静态内容,但这实际上是经过rewrite规则实现的URL地址重写。改写后的URL地址规范,美观,有利于搜索引擎抓取,以及提高用户访问体验。
做用:
把动态网页URL改写成静态网页的URL,虽然消除了动态网页中的参数,可是并不须要生成任何网页,仅仅是改变了网页地址路径。这样作的主要目的是,一是让搜索引擎收录网站内容,让更多的用户访问企业网站内容,二是提高用户访问体验,动态地址带特殊符号等的URL看起来也不如静态网页地址舒服
小结:
ip
独立ip,即Internet Protocol,独立ip数是指不一样的IP地址的计算机访问网站时被计的总次数。
公司,学校,家里通常都是nat上网,属于一个独立ip,可是若是是ADSL拨号上网,拨号了三次,每次都访问网站,那么计做三次访问,由于ip每次不同,都是独立的
pv
访问量,即Page View,页面流浪,无论客户端是否是相同,也无论ip是否是相同,用户只要访问网站页面就会被计算pv,一次页面计一个pv
pv的具体度量方法是从客户端浏览器发出一个对web服务器的请求,web服务器接到这个请求后,将该请求对应的网页发送给浏览器,这样就产生了一个pv。只要这个该请求对应的网页发送给了浏览器,不管这个页面是否彻底打开,都会被计数,通常为了防止用户快速刷pv,不少网站会把pv的统计程序放在页面的最下面
用pv衡量网站时,pv数反映出来的是浏览某网站的页面数量,没刷新一次页面也算一次pv。所以能够说pv数与来访用户的数量成正比,但pv数并非真正的页面来访者数量,而是网站被访问的页面数量。由于一个来访者可能产生多个pv
uv
独立访客,即Unique Visitor,同一个客户端访问网站被计为一个访客。一天内相同的客户端访问同一个网站只计一次uv。uv通常是以cookie等计数做为统计数据的
所谓的并发就是单位时间内,服务器可以同时处理的最大链接数,由于有的请求1秒结束,有的请求可能10秒才结束,所以,网站并发不是客户端每秒的并发请求数,而是服务器在一段时间内能够处理的最大链接数,这个链接既包含正在创立的链接,也包含已经创建的链接。
咱们去餐馆吃饭,餐馆一共有10张桌子,每张桌最多坐4我的同时吃饭,通常来讲,这个餐馆可以接收的并发吃饭人数为10*4,即40个并发,这里就是没有考虑时间问题,1秒并发能够是40个,20分钟也能够是40个,由于第一秒能够是40我的同时进来,可是第二秒就无人可进了,满员了,若是说10分钟并发是40个,下一个10分钟仍是40个,第三个10分钟还能够是40个
其余服务并发链接
QPS Query Per Second,每秒查询率
用于衡量一个特定的查询服务器在规定时间内所处理流量多少的标准,DNS系统及数据库等服务的查询性能常常用QPS来衡量
IOPS Input/Output Operations Per Second,每秒进行读写(i/o)操做次数
多用于数据库,衡量随机访问性能。存储端的IOPS性能和主机端的i/o是不一样的,IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次i/o须要多少次访问存储才能够完成。例如,主机写入一个最小的数据块,也要通过发送写入请求,写入数据,收到写入确认三个步骤,也就是3个存储端访问