美文网首页
2019-04-26

2019-04-26

作者: Ffvc | 来源:发表于2019-04-28 00:24 被阅读0次

    目录

    第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命名机制的一个子集。

    相关文章

      网友评论

          本文标题:2019-04-26

          本文链接:https://www.haomeiwen.com/subject/phfrnqtx.html