一、http服务重要基础
1.1、用户访问网站基本流程
1.2、DNS系统解析基本流程
1.DNS简介
DNS,全称为Domain Name System,它在一个网站中起到至关重要的作用,其主要作用是把网站域名解析为对应的IP地址,这个从域名到ip的解析过程,称为A记录,即Address Record。
DNS系统除了A记录解析外,还有很多功能,例如:
设置CNAME别名记录,这个别名解析功能常被CDN加速服务商应用。
设置MX邮件记录,这个MX记录功能,在购买或搭建邮件服务时会被用到。
设置PTR记录,反向解析,即把IP地址解析为对应的域名,和A记录的解析相反,邮件服务等业务中会用到。
2.DNS解析流程
二、HTTP协议
2.1、HTTP协议简介
HTTP协议中文名为超文本传输协议,是互联网中最常用的一种网络协议。HTTP的重要应用之一就是WWW服务。设计HTTP协议最初的目的就是提供一种发布和接收HTML(一种页面标记语言)页面的方法。
HTTP协议是互联网上常用的通信协议之一。他有很多应用,但最流行的就是用于web浏览器和web服务器之间的通信,即WWW应用或称web应用。
WWW,全称World Wide Web,常称为Web,中文译为“万维网”。它是目前互联网上最受用户欢迎的信息服务形式。HTTP协议的WWW服务应用的默认端口为80,另外的一个加密的WWW服务应用https的默认端口为443,主要用于网银、支付等和前相关的业务。
2.2、HTTP协议版本
2.3、HTTP请求方法
常用的HTTP请求方法:
HTTP方法 | 作用 |
---|---|
GET | 客户端请求指定资源类型,服务器返回指定资源 |
HEAD | 只请求响应报文中的HTTP首部 |
POST | 将客户端的数据提交到服务器,例:注册表单。 |
PUT | 从客户端向服务端传送的数据取代指定的文档内容。 |
DELETE | 请求服务器删除Request-URI所标识的资源。 |
MOVE | 请求服务器将数据指定的页面移至另一个网络地址。 |
2.4、HTTP状态码
2.4.1HTTP状态码介绍
HTTP状态码是用来表示Web服务器响应HTTP请求状态的数字代码。每当Web客户端向Web服务端发送一个HTTP请求时,Web服务器都会返回一个状态响应代码。这个状态码是一个三位数字代码,作用是告知Web客户端此次请求是否成功,或者是否要采取其他的动作方式。
不同范围的状态码及其对应的参数:
状态码范围 | 作用描述 |
---|---|
100-199 | 用于指定客户端相应的某些动作 |
200-299 | 用于表示请求成功 |
300-399 | 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息 |
400-499 | 用于指出返回客户端的错误。 |
500-599 | 用于指出服务器端的错误 |
2.4.2HTTP状态码的命令行查看
可以通过curl命令在Linux命令行中查看和HTTP响应的数字状态码,命令如下
查看响应头:
[root@web01~]# 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: Fri, 26 Apr 2019 03:49:15 GMT
Etag: "575e1f60-115"
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
2.5、HTTP报文
HTTP报文中有很多内容,不同行的字段都是一些ASCLL码串,各个字段的程度也是不同的。HTTP报文分为两种,一种是从Web客户端发往Web服务端的HTTP报文,称为请求报文。另一种是从Web服务器发往Web客户端的报文,称为响应报文,HTTP的请求和响应报文的格式类似。
1.HTTP请求报文介绍
HTTP请求报文由请求行、请求头部、空行和请求报文主题几个部分组成。
HTTP请求报文格式说明:
报文格式 | 报文信息 |
---|---|
请求行 | 请求方法 URL 协议版本 |
请求头 | 字段名1:值1 字段名2:值2 …… 例如 Accept:image/gif,image/jpeg Accept-Language:zh-cn …… |
空行 | 空白无内容 |
请求报文主题 | GET方法没有请求报文主题,POST方法才有。 |
(1)请求行
请求行是请求报文的第一行,用来说明客户端想要什么。内容由请求方法字段、URL字段和HTTP协议版本共三个字段组成,它们之间用空格分隔。
请求报文的起始请求行信息:
请求方法字段示例 | URL字段示例 | HTTP协议版本 |
---|---|---|
GET | /index.html | HTTP/1.1 |
(2)请求头部
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部的作用是客户端把请求的相关信息告诉给服务器。
常见的请求头部信息:
请求头部信息 | 说明 |
---|---|
Accept:image/gif,image/jpeg | 媒体类型 |
Accept-Language:zh-cn | 语言类型 |
Appept-Encoding:gzip,defate | 支持压缩 |
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT;…) | 客户端类型 |
Host:www.etiantian.org | 主机名 |
(3)空行
最后一个请求头部信息之后是一个空行,发送回车符和换行符,通知Web服务器空行以下不会有请求头部的信息了。
(4)请求报文主题
请求报文主题中包括了要发送给Web服务器的数据信息;请求报文主体不会应用于HTTP的GET命令方法,而是应用于POST方法。POST方法适用于需要客户填写表单的场合。
2.HTTP响应报文介绍
HTTP响应报文由起始行、响应头部、空行和响应报文报文主体这几个部分组成,和HTTP请求报文格式类似。
报文格式 | 报文信息 |
---|---|
起始行 | 协议及版本号 数字状态码 状态信息 |
响应头部 | 字段名1:值1 字段名2:值2 …… 例如 Content-Type:text/htm;charset=utf-8 Comtent-Length:78 …… |
空行 | 空包无内容 |
响应报文主体 | <html> <head><title>oldboy's blog</title></head> <body>I am oldboy,mysql blog is http://oldboy.blog.51ctoeto.com </body> </html> |
(1)起始行
响应报文的起始行,也叫状态行,用来说明服务器响应客户端的状况。一般为协议及版本号,数字状态码、状态情况。例如:HTTP/1.1 200 ok.
(2)响应头部
和请求报文类似,起始行的后面一般有若干个头部字段。每个头部字段都包含一个名字和一个值,来那个者之间用冒号。头部结尾也是以一个空行结束。
(3)空行
最后一个响应头部信息之后是一个空行,发送回车符和换行符,通知客户端空行下文无头部信息了。
(4)响应报文主体
响应报文主体中装载了要返回给客户端的数据。这些数据可以是文本,也可以是二进制的(如图片、视频)。
3.HTTP报文请求应答流程详图
三、HTTP资源
3.1媒体类型
互联网上的数据有很多不同的类型,Web服务器会把通过Web传输的每个对象都打上MIME类型的数据格式标签。
当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图像类型 |
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视频类型 |
3.2URL介绍
URL,中文翻译为统一资源定位符,也被称为网页地址。如同网络上的门牌,它是因特网上标准的资源唯一地址。通俗的说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW服务端和服务器程序上。采用RUL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。严格讲,每个URL都是一个URI,它标识一个互联网资源,并制定对其进行操作或取得该资源的方法。
URL的格式由下列三部分组成:
第一部分是协议,例如:Hhttp
第二部分是主机资源服务器IP地址或域名,例如:www.etiantian.org
第三部分是主机资源的具体地址,如目录和文件名等,例如:oldboy/index html
第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。
第一部分和第二部分是不可缺少的,第三部分可以省略。
标准的URL及说明:
协议 | 分隔符号 | IP地址域名 | 分隔符号 | 资源目录地址 |
---|---|---|---|---|
http | :// | www.etiantian.org | / | oldboby/index.html |
http | :// | www.etiantian.org | / | video/index.html |
3.3URI介绍
URI,中文翻译为统一资源标识符,是一个用于标识某一互联网资源名称的字符串。这个字符串在世界范围内唯一标识并定位某一个信息资源。互联网上每个可用的数据资源,如HTML、图片、视频等皆通过统一资源标识符进行定位。
网站URI说明:
协议 | 分隔符号 | IP地址域名 | 分隔符号 | 资源目录地址 |
---|---|---|---|---|
http | :// | www.etiantian.org | / | oldboy/index.html |
http | :// | www.etiantian.org | / | oldboy/index.html |
指向一个用户邮箱的URI:
协议(服务形式) | 分隔符号 | 用户名 | 分隔符号 | 域名 |
---|---|---|---|---|
mailto | : | oldboby | @ | etiantian.org |
网友评论