我爱编程

任务34-HTTP

2016-12-20  本文已影响0人  小木子2016

1. OSI 七层模型指什么 (难度***)

OSI(Open System Interconnection,开放系统互连),七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯 。这七层由下往上可分为:

2. HTTP 的工作原理是什么? (难度***)

HTTP协议定义web客户端如何从web服务器请求web页面,以及服务器如何把web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。下图表明了这种请求/响应模型。


以下是HTTP请求/响应的步骤:
(1)客户端连接到web服务器
一个HTTP客户端,通常是浏览器,与web服务器的HTTP端口(默认80)建立一个TCP套接字连接。
(2)发送HTTP请求
通过TCP套接字,客户端向web服务器发送一个文本的请求报文,一个请求报文交由请求行、请求头部、空行和请求数据4部分组成。
(3)服务器接收请求并返回HTTP响应
web拂去其解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
(4)释放连接TCP连接
web服务器主动关闭TCP套接字,释放TCP连接;客户端被动关闭TCP套接字,释放TCP连接。
(5)客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的预付对其进行格式化,并在浏览器窗口中显示。

3. URI 的格式是什么?常见的协议有哪些 (难度***)

URI( Uniform Resource Identifier)统一资源标识符
格式:

常见协议:
IP(Internet Protocol):网络协议
HTTP (HyperText Transfer Protocol):超文本传输协议
HTTPS(Hypertext Transport Protocol Server):超文本传输安全协议
ARP(Address Resolution Protocol):地址解析协议
FTP(File Transfer Protocol):文件传输协议
SMTP(Simple Mail Transfer Protocol):简单邮件传输协议
SFTP(Simple File Transfer Protocol ):简单文件传输协议
TCP(Transfer Control Protocol):传输控制协议
UDP(User Datagram Protocol):用户数据包协议

4. HTTP 协议有几种和服务器交互的方法 (难度***)

5. 状态码200,301,304,403,404,500,503分别代表什么意思 (难度****)

6. 报文有哪几部分组成? (可选 难度****)

7. 请求头的格式和作用是什么?给个范例截图说明 (可选 难度****)

请求头

Host:URI信息
Accept:浏览器能接收的资源类型
Accept-Encoding:告诉服务器能够发送哪些编码
Accept-Language:告诉服务器能够发送哪些语言
Cache-Control:缓存控制
Connection:客户端和服务器是否保持连接
Cookie:浏览器缓存
User-Agent:HTTP客户端程序的信息

8. 首部的格式和作用是什么?给个范例截图说明 (可选 难度****)

首部包括:普通首部(General)、请求首部(Request Headers)、响应首部(Response Headers)。

首部

首部 |描述
-------| ------| ------
Cache-Control| 控制缓存
Connection|控制不再转发给代理的首部字段、管理持久连接
Data|创建HTTP报文的时间和日期
pragma|报文指令
Trailer|事先说明在报文主体后记录了哪些首部字段,可以应用在HTTP1.1版本分块传输编码时使用。
Transfer-Encoding|规定了传输报文主体时采用的编码方式
Upgrade|用于检测HTTP协议及其他协议是否可以使用更高版本进行通信
Via|追踪客户端与服务器之间的请求响应和响应报文的传输途径。还可以避免请求回环的发生。
Warning|告知用户一些与缓存相关问题的警告

首部 |描述
-------| ------| ------
Accept |用户代理可处理的媒体类型
Accept-Charset |优先的字符集
Accept-Encoding |优先的内容编码
Accept-Language |优先的语言(自然语言)
Authorization Web |认证信息
Expect |期待服务器的特定行为
From |用户的电子邮箱地址
Host |请求资源所在服务器
If-Match |比较实体标记(ETag)
If-Modified-Since |比较资源的更新时间
If-None-Match |比较实体标记(与 If-Match 相反)
If-Range |资源未更新时发送实体 Byte 的范围请求
If-Unmodified-Since |比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards |最大传输逐跳数
Proxy-Authorization |代理服务器要求客户端的认证信息
Range |实体的字节范围请求
Referer |对请求中 URI 的原始获取方
TE |传输编码的优先级
User-Agent |HTTP 客户端程序的信息

首部 |描述
-------| ------| ------
Accept-Ranges|是否接受字节范围请求
Age|推算资源创建经过时间
ETag|资源的匹配信息
Location|令客户端重定向至指定URI
Proxy-Authenticate|代理服务器对客户端的认证信息
Retry-After|对再次发起请求的时机要求
Server|HTTP服务器的安装信息
Vary|代理服务器缓存的管理信息
WWW-Authenticate |服务器对客户端的认证信息

9. 主体的作用是什么?给个范例(可选 截图说明难度****)

主体就是客户端和服务端之间传输的主要内容。
主体可以承载很多类型的数字数据:图片、视频、HTML文档、软件应用程序等。


报文主体

10. 简述浏览器缓存是如何控制的(可选 难度*****)

(1)缓存的分类
缓存分为服务端侧(server side,比如 Nginx、Apache)和客户端侧(client side,比如 web browser)。
服务端缓存又分为 代理服务器缓存 和 反向代理服务器缓存(也叫网关缓存,比如 Nginx反向代理、Squid等),其实广泛使用的 CDN 也是一种服务端缓存,目的都是让用户的请求走”捷径“,并且都是缓存图片、文件等静态资源。
客户端侧缓存一般指的是浏览器缓存,目的就是加速各种静态资源的访问,想想现在的大型网站,随便一个页面都是一两百个请求,每天 pv 都是亿级别,如果没有缓存,用户体验会急剧下降、同时服务器压力和网络带宽都面临严重的考验。

(2)浏览器缓存控制机制有两种:HTML Meta标签 vs. HTTP头信息
①HTML Meta标签控制缓存
浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: Expires; Cache-control等)。但是也有非HTTP协议定义的缓存机制,如使用HTML Meta 标签,Web开发者可以在HTML页面的<head>节点中加入<meta>标签,代码如下:

<pre>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</pre>

上述代码的作用是告诉浏览器当前页面不被缓存,每次访问都需要去服务器拉取。使用上很简单,但只有部分浏览器可以支持,而且所有缓存代理服务器都不支持,因为代理不解析HTML内容本身。而广泛应用的还是 HTTP头信息 来控制缓存,下面我主要介绍HTTP协议定义的缓存机制。
②HTTP头信息控制缓存

浏览器第一次请求 浏览器再次请求

11. 下图各个参数是什么意思(可选 难度*****)

版权归本人及饥人谷所有,转载请注明出处。

上一篇下一篇

猜你喜欢

热点阅读