HTTP

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


应用层 ……………….计算机:应用程序,如FTP,SMTP,HTTP

表示层 ……………….计算机:编码方式,图像编解码、URL字段传输编码

会话层 ……………….计算机:建立会话,SESSION认证、断点续传

传输层 ……………….计算机:进程和端口

网络层…………………网络:路由器,防火墙、多层交换机

数据链路层 ………..网络:网卡,网桥,交换机

物理层…………………网络:中继器,集线器、网线、HUB

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

  1. 客户端和服务器建立连接,此时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-SinceIf-None-Match。前者即浏览器最初得到的Last-Modified,后者即浏览器最初得到的ETag,当服务器发现资源的更新时间晚于If-Modified-Since,或在服务器端的资源当前ETag与If-None-Match不符时,服务器会响应整个资源,否则只会响应一个303 Not Modified 状态码(浏览器将从缓存中获取资源)。

https://www.renfei.org/blog/http-caching.html

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


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:表示是若愚@饥人谷相关信息

推荐阅读更多精彩内容