2019-04-26

2019-04-28  本文已影响0人  Ffvc

目录

第4章 Web服务基础

4.1 http服务重要基础

4.1.1用户访问网站基本流程

4.1.2 DNS系统解析基本流程

4.2 HTTP协议

4.2.1 HTTP协议简介

4.2.2 HTTP协议版本

4.2.3 HTTP请求方法

4.2.4 HTTP状态码

4.2.5 HTTP报文

4.2.6 HTTP协议原理及重点分析 (重点了解)**

4.3 HTTP资源

4.3.1媒体类型

4.3.2 URL介绍

4.3.3 URI介绍

—————————————————————————————————————————————

4.1http服务重要基础

4.1.1用户访问网站基本流程

我们每天都会使用Web客户端上网浏览网页。最常见的Web客户端就是Web浏览器,如通用的微软Internet Explorer(IE)以及技术人员偏爱的火狐浏览器、谷歌浏览器等。

下面为大家讲解从客户端用户的web浏览器里输入网站地址,到看到网站内容的完整访问流程:

第一步:客户端用户在浏览器输入www. etiantian.org网站地址,回车后,系统首先会检查系统本地的DNS缓存及hosts文件信息,确定是否存在www. etiantian.org域名对应的解析记录,如果有就直接获取IP地址,然后去访问对应的服务器。

第二步:如果客户端本地DNS缓存及hosts文件没有该域名对应的解析记录,那么系统会把浏览器的解析请求发送给客户端本地设置的DNS服务器地址(通常称此DNS为LDNS,即Local DNS)解析,如果 LDNS服务器的本地缓存有对应的解析记录就会直接返回IP地址给客户端,如果没有,则LDNS会负责继续请求其他的DNS服务器。

第三步:LDNS从DNS系统的(“.”)根开始请求对该域名的解析,并针对各个层级的DNS服务器系统进行一系列的查找,最终会找到该域名对应的授权服务器,而这个授权DNS服务器正是企业购买域名时用于管理域名解析的服务器,这个授权服务器会有该域名对应的IP解析记录。如果此时没有,就表示企业的域名管理人员没有为该域名做解析设置,即网站还没有架设好。

第四步:该域名的授权DNS服务器会把对应的最终IP解析记录发给LDNS。

第五步:LDNS把来自授权DNS服务器该域名对应的IP解析记录发给客户端浏览器,并且会把该域名和IP的对应解析缓存起来,以便下一次更快地返回相同解析请求的记录,这些缓存记录在指定时间内不会过期。

第六步:客户端浏览器获取了www. etiantian.org的对应IP地址,接下来,浏览器会请求获得IP地址对应的网站服务器,网站服务器接收到客户的请求并响应处理(此处的处理可能是数百台集群的服务器系统,也可能是一台云主机),将客户请求的内容这回给客户端浏览器。至此,一次访问浏览网页的完整过程就完成了。

image.png

✧提示:上述仅仅是客户端用户第一次访问网站的基本过程,连续访问后,系统本地和LDNS层级都会有缓存记录,再访问时流程就会有些变化,会直接取本地缓存记录,这样访问过程就很快了。在上述整个访问流程里,包含了DNS的解析流程及HTTP协议的通信原理等重要的技术点,后者在下文会有详细说明。

✧****提示:

1)查看Windows客户端本地缓存的DNS解析记录的命令如下。

C:\ >ipconfig /displaydns

意思为Display the contents of the DNS Resolver

Cache (显示DNS CACHE内容),“/displaydns"前要有空格

2)清除Windows客户端本地缓存的DNS解析记录的命令如下。

C:\ >ipconfig /flushdns

意思为Purges the DNS Resolver cache (清除DNS CACHE

内容),“/flushdns”前要有空格

3)Windows系统下hosts域名解析记录的位置如下。

C:\ Windows \System32\drivers\etc\hosts

4.1.2 DNS****系统解析基本流程

1. DNS****简介:

DNS全称Domain Name System他在一个网站运行中起到了至关重要的作业,其主要作用是把网站域名解析为对应的IP地址,例如:把www.etiantian.org解析为对应的IP地址记录如1.1.1.1,这个从域名到IP的解析过程,称作A记录,即Address Record。

DNS系统除了负责这个最重要的A记录解析外,还有很多的功能!例如:

设置CNAME别名记录,这个别名解析功能常被CDN加速服务商应用。

设置MX邮件记录,这个MX记录功能,在购或搭建邮件服务时会被用到。

设置PTR记录,反向解析,即把IP地址解析为对应的域名,和A记录的解析相反,邮件服务等业务中会用到。

DNS系统的架构类似于一颗倒挂着的树,他的顶点用(“.”)来表示,整个DNS系统的树状结构如下图

image.png

2. DNS解析流程:

(1)DNS解析流程说明:

第一步:客户端用户在浏览器输入www.etiantian.org网站地址后回车,系统首先会查找系统本地的DNS缓存及hosts文件信息,确定是否存在www.etiantian.org域名对应的IP解析记录,如果有就直接获取IP地址,然后去访问这个IP地址对应的www.etiantian.org域名服务器。一般第一次请求时,DNS缓存是没有解析记录的,而hosts多为内部临时测试使用的。

第二步:如果客户端本地DNS解析及本地hosts文件没有www.etiantian.org域名对应的解析记录,那么系统会把浏览器的解析请求发送给在客户端本地设置的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服务器是该域名的授权DNS服务器,这个DNS服务器正是企业购买域名时用于管理解析的服务器,这个服务器就会有与www.etiantian.org对应的IP解析记录,如果此时没有,就表示企业的域名人员没有为www.etiantian.org域名做解析,即网站没有做好。

第六步:etiantian.org域名DNS服务器会把www.etiantian.org对应的IP解析记录发给LDNS

第七步:LDNS把来自授权DNS服务器的与www.etiantian.org对应的IP解析记录发给客户端浏览器,并且LDNS会在本地把域名和IP的对应解析记录缓存起来,以便下一次更快地返回相同解析请求的记录。至此,整个DNS的解析流程就完成了。

image.png

4.2 HTTP协议

4.2.1HTTP协议简介

HTTP协议,全称HyperText Transfer Protocol,中文名为超文本传输协议,是互联网中最常用的一种网络协议。HTTP的重要应用之一就是WWW服务。设计HTTP协议的最初目的就是提供一种发布和接收HTML页面的方法。

HTTP协议是互联网上常用的通信协议之一,他有很多的应用,但最流行的就是用于Web浏览器和web服务器之间的通信,即WWW服务应用或称Web服务。

WWW,全称World Wide Web,常称为web,中文译为“万维网”,它是目前互联网上最受用户欢迎的信息服务方式。HTTP协议的WWW服务应用的默认端口为80端口,另外一个加密的WWW服务应用https的默认端口为443。主要应用于网银,支付等和钱有关的业务。

4.2.2 HTTP协议版本

HTTP协议从诞生到现在已经经历了若干个版本,其中最主要的版本为HTTP/1.0和HTTP/1.1.。HTTP/1.0是第一个得到广泛应用的版本,而HTTP/1.1为当前使用的主流版本

1.HTTP/1.0简介

HTTP/1.0是第一个得到广泛使用的http版本,HTTP/1.0在HTTP/0.9的基础上增加了HTTP请求头,可支持更多的请求方法,并且能对多媒体对象进行处理,HTTP/1.0使得包含包含生动图片的Web页面和交互式表格成为可能,而正是这些页面和表格促使互联网被人们广泛的接受,HTTP/1.0中规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后即断开TCP连接,服务器不跟踪每个用户也不记录过去的请求。

2.HTTP/1.1简介

HTTP/1.1的重点是修复HTTP设计中的缺陷,从可扩展性,缓存处理,带宽优化,持久连接,host头,错误通知,消息传递,内容协商,等多个方面都做了相关的改进,HTTP/1.1是当下主流的HTTP版本。

在连接方面,HTTP/1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和相应,减少了建立和关闭连接的消耗和时间延迟。

在请求头方面,HTTP/1.1增加了更多的请求头和相应头信息,用以增强HTTP功能,例如:host主机头功能,可以让web浏览器使用主机头名来明确表示要访问服务器上的那个web站点,这样就可以使用web服务器在同一个IP地址和端口号上配置多个虚拟web站点。

4.2.3HTTP请求方式

在HTTP通信中,每个HTTP请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面,提交内容到服务器等。常见的HTTP请求方法见表4-1

常用的HTTP请求方法

HTTP方法 作用描述
GET 客户端请求指定资源信息,服务器返回指定资源
HEAD 只请求响应报文中的HTTP首部
POST 将客户端的数据提交到服务器
PUT 用从客户端向服务器传送的数据取代指定的文档内容
DELETE 请求服务器删除所标识的资源
MOVE 请求服务器将指定的页面移至另一个网络地址

4.2.4HTTP状态码

1.HTTP状态码介绍

HTTP状态码(HTTP Status Code)用来表示Web服务器响应HTTP请求状态的数字代码。每当Web客户端向web服务器放送一个HTTP请求时,Web服务器都会返回一个状态码,这个状态码是一个三位数字代码。作用是告诉web客户端此次请求是否成功,或者是否要采取其他的动作方式。

不同范围的状态码及其对应的作用

状态码范围 作用描述

100-199 用于指定客户端相应的某些动作
200-299 用于标识请求成功
300-399 用于已经移动的文件,并且常被包含在定位头信息中指定的新的地址信息
400-499 用于指出客户端的错误
500-599 用于指出服务端的错误

HTTP响应的状态码种类很多,但是在实际工作场景中,经常遇到的状态码却不多,生产场景下常见的重要状态码及其对应的作用。

生产场景下常见的状态码及其作用说明

状态代码 详细描述说明

200-ok 服务器成功返回网页,这是成功的HTTP请求返回的标准状态码
301-Moved Prmanently 永久跳转,所请求的将永久跳转到被设定的新位置
403-Forbidden 禁止访问,虽然请求合法,但是服务器端因为匹配了预先设置的规则而拒绝相应客户端的请求
404-Not Found 服务器找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源导致
500-Internal Server Error 内部服务器错误,服务器遇到了意料不到的错误,不能完成客户端的请求
502-Bad Gateway 坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器
503-Service Unavailable 服务器当前不可用,可能是服务器超载或停机维护导致
504-Gateway Timeout 网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定时间内完成请求处理

2.HTTP状态码的命令行查看

可以通过curl命令在命令行查看HTTP响应的数字状态码,命令如下

image.png

✧提示:

1)学习Linux时,要能在搭建HTTP服务时模拟出这些状态码对应的状态,这样在实际生产场景中遇到相关问题才能够快速解决掉。

2)HTTP/1.0中只定义了16个状态响应码,而在HTTP/1.1中新增了24个状态响应码。

4.2.5 HTTP报文

HTTP报文中有很多行内容,这些行的字段都是由一些ASCII码串组成,但各个字段的长度是不同的。HTTP报文可分为两种,一种是从Web客户端发往Web服务器的HTTP报文,成为请求报文(Request Message)。另外一种是从Web服务器法网Web客户端的报文,成为响应报文(Response Message),HTTP的请求和响应报文的格式类似。

1. HTTP请求报文(Request Message)介绍

HTTP请求报文由请求行、请求头部(header)、空行和请求报文主体几个部分组成。

请求报文格式说明

报文格式 报文信息
请求行 请求方法URL协议版本
请求头 字段名1:值1
字段名2:值2
……
例如:
Accept:image/gif,image/jpeg
Accept-Language:zh-cn
……
空行 空白无内容
请求报文主体 GET方法没有请求报文主体,POST方法才有

下面对HTTP请求报文的每个部分逐一阐述。

(1) 请求行

请求行是请求报文的第一行,用来说明客户端想要做什么。内容有请求方法字段、URL字段和HTTP协议版本字段组成,它们之间用空格分隔。下面以GET/index.html HTTP/1.1为例来说明请求报文的起始请求行信息详情。

请求报文的起始请求信息

请求方法字段实例 URL字段实例 HTTP协议版本
GET /inde.html HTTP/1.1

(2) 请求头部

请求头部由关键字/值组成,每行一对,关键字和值用冒号“:”分隔。请求头部的作用是通过客户端吧请求的相关信息告诉给服务器。

常见的请求头部信息

请求头信息 说明
Accept:image/gif,image/jpeg 媒体类型
Accept-Language:zh-cn 语言类型
Accept-Encoding:gzip,deflate 支持压缩
User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT;...) 客户端类型
Host:www.etiantian.org 主机名

与请求报文相关的最常用的请求头是Content-Type和Content-Length。

(3) 空行

最后一个请求头部信息之后是一个空行,通过发送回车符和换行符,通知Web服务器空行以下不会有请求头部的信息了。

(4) 请求报文主体

请求报文主体中包括了要发送给Web服务器的数据信息。请求报文主体不会应用与HTTP的GET命令方法,而是应用与POST方法。POST方法适用于需要客户填写表单的场合。请求报文的主体信息此处就不再举例了。

2. HTTP响应报文(Response Message)介绍

HTTP响应报文由起始行、响应头部(header)、空行和响应报文主体这几个部分组成,和HTTP请求报文格式类似。

下面对响应报文的每个部分逐一阐述。

(1) 起始行

响应报文的起始行也叫状态行,用来说明服务器响应客户端请求的状况。一般为协议及版本号、数字状态码、状态情况。例如:HTTP/1.1 200 OK

(2) 响应头部

和请求报文类似,起始行的后面一般有若干个头部字段。每个头部字段都包含一个名字和一个值,两者之间用冒号分隔。头部结尾也是以一个空行结束的。常见的头部信息有:

Content-Type:text/html;charset=urf-8

Content-Length:78

……

(3) 空行

最后一个响应头部信息是一个空行,通过发送回车符合换行符,通知客户端空行下文无头部信息了。

(4) 响应报文主体

响应报文主体中装载了要返回给客户端的数据。这些数据可以是文本,也可以是二进制的(如图片、视频),下面是响应报文主体的html格式文本数据示例。

<html>

<head><title>oldboy’s blog </title></head>

<body>

I am oldboy,mysql blog is http://oldboy.blog.51cto.com

</body>

</html>

4.2.6 HTTP 协议原理及重点分析

HTTP协议属于OSI模型中的第七层应用层协议,HTTP 协议的重要应用就是WWW服务应用,下面就以WWW服务应用为例介绍HTTP协议的通信原理。以HTTP协议进行通信时,需要有客户端(即终端用户)和服务器端(即Web服务器),在Web客户端向Web服务器发送请求报文之前,先耍通过TCP/IP协议在Web客户端和服务器之间建立一个TCP/IP连接。整个HTP协议请求的工作流程如下:

1)终端客户在Web浏览器地址栏输人访问地址http://www.etiantian.org /index.html。

2)Web浏览器请求DNS服务器把域名www.etiantian.org转换成Web服务器的IP地址,此处的解听过程就是DNS解析的原理流程,前面已经讲过了,此处不再赘述。

3)Web浏览器将端口号(默认是80)从访问地址(URL)中解析出来。

4 )Web浏览器通过解析后的IP地址及端口号与Web服务器之间建立一条TCP连接。

5)建立TCP连接后,Web浏览器向Web服务器发送条HTTP请求报文,请求报文的内容格式及信息细节前面已经讲过了,此处不再赘述。

  1. Web服务器响应并读取浏览器的请求信息,然后返回条HTTP响应报文,响应报文的内容格式及信息细节前文也已经讲过了,此处不再赘述。

7)Web服务器关闭HTTP连接,关闭TCP连接,Web浏览2显示访同的网站内容到屏幕上。

上述就是HTTP协议通信原理过程,整个通信原理的重要知识点有:

用户访问网站的流程。

DNS解析流程细节。

建立TCP连接过程(TCP/IP三次握手原理知识)

发送HTTP报文及HTTP请求报文的细节。

Web服务器响应客户端请求处理细节(网站集群架构细节)(此处后文会讲到)。

利应HTTP报文及HTTP响应报文的细节。

关团TCP连接(TCP/IP协议四次握手原理知识)

如果读者在企业面试HTTP原理时能把上述若干点细节说清楚,则大事必成。

事实上,DNS解析原理、HTTP协议原理、TCP/IP协议原理都是高薪面试的重点,是高级运维必会知识,这里对其中的重要知识点进行汇总,如下:

HTTP协议位于 OSI模型中第7层应用层。

HTTP协议的重要应用是 www服务。

用户上网流程,DNS解析原理流程。

DNS解析获取到IP后,建立TCP连接,然后发送HTTP请求细节和服务器响应细节。

HTTP请求报文与HTTP响应报文知识。

到达hTTP服务后请求后端集群节点的流程为Nginx→fastcgi→PHP→(数据库、存储等)。

TCP/IP协议三次握手和四次握手原理

4.3 HTTP资源

4.3.1 媒体类型

互联网上的数据有很多不同的类型,Web服务器会把通过Web传输的每个对象都打上MIME类型(即MIME type)的数据格式标签。最初设计MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文是存在的问题。

当Web服务器响应HTTP请求时,会为每一个HTTP对象数据加一个MIME类型。当Web浏览器获取到服务器返回的对象时,会去查看相关的额MIME类型,并进行相应处理。

MIME类型存在于HTTP响应报文的响应头部信息里,它时一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间有一条斜杠来分隔,如下表:

生产场景最常见的MIME类型

MIME类型 文件类型
text/html html、htm、shtml 文本类型
text/css css文本类型
text/xml xml文本类型
image/gif gif图像类型
image/jpeg jpeg、jpg图形类型
application/javascript js文本类型
text/plain txt文本类型
application/json json文本类型
video/mp4 mp4视频类型
video/quicktime mov视频类型
video/x-flv flv视频类型
video/x-ms-wmv wmv视频类型
video/x-msvideo avi视频类型

可以从www的重要服务软件Nginx的配置文件conf目录下,查看其支持的媒体类型,乡相关命令如下:

[root@nginx conf] # less mime.types

type {

text/html html、htm、shtml;

text/css css;

text/xml xml;

image/gif gif;

image/jpeg jpeg jpg;

..... 省略....

4.3.2URL介绍

RUL,全称为Uniform Resource Location,中文翻译为同一资源定位符,也被称为网页地址(网址)。如同门牌一样,他是因特网上标准的资源唯一地址。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户端和服务端程序上。严格来讲,每个URL都是一个URI,他标识一个互联网资源,并指定对其进行操作或取得该资源的方法。

URL的格式有下列三部分组成:

第一部分是协议,例如:http。

第二部分是主机资源服务器IP地址或域名(端口号),例如:www.etiantian.org。

第三部分是主机组员的具体地址,如目录和文件名等,例如:oldboy/index.html。

第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”隔开。第一部分和第二部分是不可缺少的,第三部可以省略。如下表所示

4.3.3 URI介绍

URI,全称为Uniform Resource Identifier,中文翻译为同一资源标识符,是一个用于标识某一互联网资源名称的字符串。这个字符串在世界范围内唯一标识并定位某一个信息资源。互联网上每个可用的数据资源(如HTML、图片、视频等)皆通过统一资源标识符进行定位。

大多数读者都熟悉URL,而不是URI。URL是URI命名机制的一个子集。

上一篇下一篇

猜你喜欢

热点阅读