第1章 Web服务基础
1.1 HTTP服务的重要基础
1.1.1 用户访问网站基本流程
我们每天都会使用Web客户端(浏览器)上网浏览网页,当我们在浏览器里输入网站地址时,很快就会看到网站的内容,那么在其背后是怎样实现流程呢?下面就为大家讲述从用户输入网址到看到网站内容的完整流程。
第一步:当用户在浏览器里输入www.etiantian.org网站地址后,系统首先会查找系统本地的DNS缓存及hosts文件信息,确定是否存在www.etiantian.org域名对应的IP解析记录,如果有就直接获取IP地址,然后去访问这个IP地址对应域名的服务器。
第二步:如果客户端本地DNS缓存及hosts文件没有www.etiantian.org域名对应的解析记录,系统会把浏览器的解析请求发送给客户端本地设置的DNS服务器地址(通常称为LDNS,即Local DNS)解析,如果LDNS服务器的本地缓存有对应的解析记录就会直接返回IP地址给客户端,如果没有,则LDNS会负责继续请求其他的DNS服务器。
第三步:LDNS通过向其他DNS服务器请求对www.etiantian.org域名的解析,会获取到来自授权服务器对域名的最终IP解析记录(例如1.1.1.1)。
第四步:LDNS把来自授权服务器的IP解析记录发给客户端浏览器,并把该域名和IP对应解析缓存起来,以便下一次更快的返回相同解析请求的记录。
第五步:客户端获得了www.etiantian.org对应的IP地址,接下来,浏览器会请求获得IP地址对应的网站服务器。
第六步:网站服务器接收到客户的请求并响应处理,将客户请求的内容返回给客户端浏览器。至此,一次访问浏览网页的完整过程就完成了。
1.1.2 DNS系统解析基本流程
1、DNS简介
DNS,全称Domain Name System,在一个网站运行中起到了至关重要的作用,其只要作用是把网站域名解析为对应的IP地址。这个从域名到IP的解析过程,被称为A记录。
DNS系统除了负责这个最重要的A记录解析外,还有很多功能,例如:
1)设置CNAME别名记录,这个别名解析功能常被CDN加速服务商应用。
2)设置MX邮件记录,在购买或搭建邮件服务时会被用到。
3)设置PTR记录,反向解析,即把IP地址解析为对应的域名,和A记录的解析相反,此功能在邮件服务等业务中会用到。
注意:DNS和邮件服务不要搭建,容易出现问题。
DNS系统的架构类似于一颗倒挂着的树,顶点是根,用点(“.”)来表示,下图为DNS系统的树状结构图:
2、DNS解析流程
(1)DNS解析流程说明
第一步:客户端用户在浏览器里输入www.etiantian.org网站地址后回车,系统首先会查找系统本地的DNS缓存及hosts文件信息,确定是否存在www.etiantian.org城名对应的IP解析记录,如果有就直接获取到IP地址,然后去访问这个IP地址对应的www.etiantian.org域名的服务器。
第二步:如果客户端本地DNS缓存及本地hosts文件没有www.etiantian.org域名对应的解析记录,那么,系统会把浏览器的解析请求发送给在客户端本地设置的DNS服务器地址(LDNS,即Local DNS)解析,如果LDNS服务器的本地缓存有对应的解析记录就会直接返回IP地址给客户端;如果没有,则LDNS会负责继续请求其他的DNS服务器。
第三步: LDNS从DNS系统的根开始请求对www.etiantian.org域名的解析,根DNS服务器在全球一共有13台,根服务器下面是没有www.etiantian.org域名解析记录的,但是根下面有www.etiantian.org对应的顶级域.org的解析记录,因此,根会把.org对应的DNS服务器地址返回给LDNS。
第四步: LDNS获取到.org对应的DNS服务器地址后,就会去.org服务器请求www.etiantian.org域名的解析,而.org服务器下面也没有www.etiantian.org域名对应的解析记录,但是有etiantian.org域名的解析记录,因此,.org服务器会把etiantian.org对应的DNS服务器地址返回给LDNS。
第五步:同理,LDNS获取到etiantian.org对应的DNS服务器地址后,就会去etiantian.org服务器请求对www.etiantian.org域名的解析。
第六步: etiantian.org域名DNS服务器会把www.etiantian.org对应的IP解析记录(例如1.1.1.1)发给LDNS。
第七步: LDNS把来自授权DNS服务器的与www.etiantian.org对应的IP解析记录发给客户端浏览器,并且LDNS会在本地把域名和IP的对应解析记录缓存起来,以便下一次更快地返回相同解析请求的记录。至此,整个DNS的解析流程就完成了。
(2)DNS解析流程图
1.2 HTTP协议
1.2.1 HTTP协议简介
HTTP协议,全称为HyperText Transfer Protocol,中文名为超文本传输协议,是互联网中最常用的一种网络协议。 HTTP的重要应用之一是WWW服务。
HTTP协议是互联网上常用的通信协议之一。它有很多的应用,但最流行的就是用于Web浏览器和Web服务器之间的通信,即WWW应用或称Web应用。
WWW,全称为World Wide Web,常称为Web。它是目前互联网上最受用户欢迎的信息服务形式。HTTP协议的WWW服务应用的默认端口为80,另外一个加密的WWW服务应用https的默认端口为443,主要用于网银、支付等和钱相关的业务。
1.2.2 HTTP请求方法
在HTTP通信中,每个HTTP请求报文都包含一个方法,用以告诉Web服务器端需要执行哪些具体的动作。下表是一些常用的HTTP请求方法。
HTTP方法 | 作用描述 |
---|---|
GET | 客户端请求指定资源信息,服务端返回指定资源 |
HEAD | 只请求响应报文中的HTTP首部 |
POST | 将客户端的数据提交到服务器 |
DELETE | 请求服务器删除Request-URI所标识的资源 |
MOVE | 请求服务器将指定的页面移至另一个网络地址 |
1.2.3 HTTP状态码
HTTP状态码是用来表示Web服务器响应HTTP请求状态的数字代码,一般是一个三位数字代码,作用是告知Web客户端此次请求是否成功,或者是否要采取其他的动作方式。
状态码可以分为五大类,如下表所示
状态码范围 | 作用描述 |
---|---|
100~199 | 用于指定客户端相应的某些动作 |
200~299 | 用于表示请求成功 |
300~399 | 用于已经移动的文件,并且常被包含在定位头信息中指定新的地址信息 |
400~499 | 用于指出客户端的错误 |
500~599 | 用于指出服务器的错误 |
生产场景中常见的状态码及描述
状态代码 | 详细描述说明 |
---|---|
200-OK | 服务器成功返回网页 |
301-Moved Permanently | 永久跳转,所请求的网页将永久跳转到被设定的新位置 |
403-Forbidden | 禁止访问 |
404-Not Found | 服务器找不到客户端请求的指定页面 |
500-Internal Server Error | 内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求。 |
502-Bad Gateway | 坏的网关 |
503-Server Unavailable | 服务当前不可用 |
504-Gateway Timeout | 网关超时 |
1.2.4 HTTP报文
HTTP报文分为两种,一种是从客户端发往服务器的HTTP报文,称为请求报文;另一种是从服务器发往客户端的报文,称为响应报文。
1、HTTP请求报文介绍
http请求报文由请求行、请求头、空行和请求报文主体组成。
报文格式 | 报文信息 |
---|---|
请求行 | 请求方法 网址 协议版本 |
请求头 | 字段名1:值1 字段名2:值2 …… |
空行 | 空白无内容 |
请求报文主体 | GET方法没有请求报文主体,POST方法才有 |
其中:请求行有请求方法、网址、协议版本组成,中间用空格分隔。
常见的请求头部信息:
请求头信息 | 说明 |
---|---|
Accept:image/gif,image/jpeg | 媒体类型 |
Accept-Language:zh-cn | 语言类型 |
Accept-Encoding:gzip,deflate | 支持压缩 |
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT;……) | 客户端类型 |
Host:www.etiantian.org | 主机名 |
2、HTTP响应报文介绍
HTTP响应报文由起始行、响应头部、空行和响应报文主体组成。
报文格式 | 报文信息 |
---|---|
起始行 | 协议版本 数字状态码 状态信息 |
响应头 | 字段名1:值1 字段名2:值2 …… |
空行 | 空白无内容 |
响应报文主体 | <html> <head><title>oldboy's blog</title></head> <body> I am oldboy,mysql blog is https://oldboy.blog.51cto.com </body> </html> |
3、HTTP报文请求应答流程详图