OSI 七层模型指什么 (难度***
)
应用层 ……………….计算机:应用程序,如FTP,SMTP,HTTP
表示层 ……………….计算机:编码方式,图像编解码、URL字段传输编码
会话层 ……………….计算机:建立会话,SESSION认证、断点续传
传输层 ……………….计算机:进程和端口
网络层…………………网络:路由器,防火墙、多层交换机
数据链路层 ………..网络:网卡,网桥,交换机
物理层…………………网络:中继器,集线器、网线、HUB
HTTP 的工作原理是什么? (难度***
)
- 客户端和服务器建立连接,此时HTTP开始运作;
- 客户端向服务器发送一个请求,这个请求包括URL、协议版本号、相关信息;
- 服务器根据请求返回相关信息;
- 浏览器进行解析和渲染,将请求页面直观的展现出来。
URI 的格式是什么?常见的协议有哪些 (难度***
)
- 格式
- 方案,也就是我们常说的协议
- 服务器位置
- 资源路径
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>
- 对于web页面来说最常用的协议就是http和https
- user和password现在不常见了,不会在URL明文书写用户名和密码了,都是通过登录的方式
- 主机可以是IPO地址过着域名
- 端口号用来区分主机上的进程,方便找到web服务器,http默认是80
- path是资源的路径,也就是存放位置,不一定和物理路径完全对应,符合web服务器路由约定即可
- params,在一些协议中需要参数来访问资源,例如ftp是二进制还是文本传输,参数是名值对,用;隔开
- query:这个是get请求最常用的传递参数方式了 ?a=1&b=2&=3
- hash也成为片段,设计为标识文档的一部分,很多MVVM框架用作了路由功能
- 常见的协议类型有 file ftp http https ed2k mailto
HTTP 协议有几种和服务器交互的方法 (难度***
)
- get
最常用的方法,通常用于请求服务器发送某个资源 - post
POST用于向服务器发送数据,通常用来支持HTML的表单(input、select、textarea),表单中的数据会被发送到服务器 - head
主要用于 - 在不获取资源的情况下获取资源信息(类型、大小等)
- 通过状态码产看资源是否存在
- 通过查看首部,测试资源是否被修改了
- put
用于向服务器写入资源。出于安全性,需要看服务器是否支持。 - trace
客户端发送一个请求,这个请求可能会穿过防火墙、代理、网关和一些其它应用程序,每个中间节点都可能修改HTTP请求,TRACE方法允许客户端在最终请求发往服务器的时候,看看它变成了什么样子 - delete
DELETE方法用于要求服务器删除请求的URL,和PUT一样,服务器可能会不支持 - options
OPTIONS方法用于请求 web服务器告知其支持的各种功能
状态码200,301, 304,403,404,500,503分别代表什么意思 (难度****
)
状态代码 | 状态信息 | 含义 |
---|---|---|
200 | OK | 一切正常,对GET和POST请求的应答文档跟在后面。 |
301 | Moved Permanently | 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。 |
302 | Found | 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求http://host/~user (缺少了后面的斜杠),有的服务器 返回301,有的则返回302。 |
304 | Not Modified | 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告 诉客户,原来缓冲的文档还可以继续使用。即使用缓存 |
403 | Forbidden | 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。 |
404 | Not Found | 无法找到指定位置的资源。这也是一个常用的应答。 |
500 | Internal Server Error | 服务器遇到了意料不到的情况,不能完成客户的请求。 |
503 | Service Unavailable | 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个 Retry-After头。 |
报文有哪几部分组成? (可选 难度****
)
HTTP报文是简单的格式化数据块,由3个部分组成
- 对报文进行描述的起始行 —— start line
- 包含属性的首部块 —— header
- 可选的包含数据的主体部分 —— body
起始行和首部就是由行分隔的ASCII文本,主体是一个可选的数据块,可能是文本、二进制或者空
请求头的格式和作用是什么?给个范例截图说明 (可选 难度****
)
首部 | 描述 |
---|---|
Client-IP | 客户端IP |
From | 客户端邮件地址 |
Host | 接收请求的服务器的主机名和端口号 |
Referer | 提供了包含当前请求URI的文档的URL,告诉服务器自己来源 |
User—Agent | 发起请求的客户端应用程序 |
Accept | 告诉服务器能够发送那些媒体类型 |
Accept-Charset | 告诉服务器能够发送那些字符集 |
Accept-Encoding | 告诉服务器能够发送那些编码 |
Accept-Language | 告诉服务器能够发送那些语言 |
Expect | 允许客户端列出请求所要求的服务器行为 |
If-Match | 如果ETag和文档当前ETag匹配,就获取文档 |
If-Modified-Since | 除非在某个指定日期之后修改过,否则限制这个请求 |
If-None-Match | 如果ETag和当前文档ETag不符合,获取资源 |
If-Range | 允许对文档否个范围内的条件请求 |
If-Unmodified-Since | 在某个指定日期之后没有修改过,否则现在请求 |
Cookie | 客户端字符串 |
首部的格式和作用是什么?给个范例截图说明 (可选 难度****
)
请求头部的格式是:<method><request-URL><version>,
响应头部的格式是:<version><status><reason-phrase>;
主体的作用是什么?给个范例(可选 截图说明难度****
)
主体为被发送的数据。
简述浏览器缓存是如何控制的(可选 难度*****
)
浏览器是否使用缓存、使用多久是由服务器控制的。当浏览器请求网页时,服务器端返回的http响应报文中,包含了有关缓存的关键信息。
关于缓存控制,主要有以下4种首部字段:
- Cache-Control:控制缓存的行为;
- Expires:资源失效的日期;
- Last-Modified:资源最终修改的时间;
- ETag:实体标识,对资源以字符串形式做唯一性标识的方式,当资源更新时,ETag也需要更新。
当通过Cache-Control或Expires设置页面使用缓存时,当用户刷新页面,浏览器会在请求报文中加入条件请求:If-Modified-Since
或If-None-Match
。前者即浏览器最初得到的Last-Modified,后者即浏览器最初得到的ETag,当服务器发现资源的更新时间晚于If-Modified-Since,或在服务器端的资源当前ETag与If-None-Match不符时,服务器会响应整个资源,否则只会响应一个303 Not Modified 状态码(浏览器将从缓存中获取资源)。
下图各个参数是什么意思(可选 难度*****
)
General:起始行,描述请求报文的基本信息
Request URL:表示请求资源的URL地址;
Request Method:表示发送请求报文的方式,为PUT方法;
Status Code:表示此时请求报文的状态码,为一切正常,成功连接;
Remote Address:表示请求服务器的主机地址和端口号;
Response Headers:响应报文
Connection:表示当前服务器和客户端的连接状态,为保持连接;
Content-Length:表示回应报文字符的长度,=12;
Content-Type:表示响应信息发送的方式;
Date:表示生成响应报文的时间;
Server:表示服务器应用程序及其版本号,使用的是nginx的1.6.2版本;
X-Powered-By:表示访问网站的应用程序是用Express开发的;
Request Headers:请求报文的头部信息,用来描述请求报文的属性块
Accept:告诉服务器客户端接收哪些类型的响应,此处为所有;
Accept-Encoding:客户端接收哪种编码方式,为gzip,deflate,sdch;
Accept-Language:客户端接收什么语言,为中文简体;
Connection:表示当前服务器和客户端的连接状态,为保持连接,这个属性是通用头部;
Content-Length:表示请求报文字符的长度,=56;
Content-Type:表示请求信息发送的方式,为POST方法;
Cookie:缓存资源;
Host:表示请求服务器的主机地址和端口号,此处地址为note.ruoyu.site;
Origin:表示请求服务器的源地址;
Referer:告诉服务器发送请求的来源;
User-Agent:指客户端发送请求的应用程序及其版本号;
X-Requsted-With:表示发送请求报文的应用程序是以XMLHTTPRequest的形式发送的数据。
Form Data:上传的文件信息
article:表示是若愚@饥人谷相关信息