HTTP协议

人生就像一列开往坟墓的列车,路途上会有很多站,很难有人至始至终陪你走完全程,当陪你的人要下车时,即便不舍,也要心存感激,然后挥手告别。---sunnyhuang

HTTP

1. OSI 七层模型指什么

七层模型图

开放式系统互联通信参考模型(OSI)

主机层

Data(数据层)7.应用层 6. 表示层 5.会话层

Segments(数据段) 4.传输层

媒介层

网络分组/数据报文 3. 网络层

Bit/Frame(数据帧) 2. 数据链路层

Bit(比特) 1. 物理层

应用层: 规定了数据的传输协议,提供为应用软件而设的界面,以设置与另一应用软件之间的通信。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。

表示层:解决不同系统之间的通信。例如:linux下的qq和windows下的qq可以通信

会话层:建立一个连接(自动的手机信息,自动的网络寻址)

传输层:每一个应用程序都会在网卡注册一个端口号,该层就是端口和端口之间的通信,常用的是TCP/IP协议

网络层:此处需要确定计算机的位置,怎么确定?IPv4,IPv6!

数据链路层:可以简单的理解为:规定了0和1的分包形式,确定了网络数据包的形式

物理层:物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输

2.HTTP 的工作原理是什么?

HTTP(超文本传输协议)是应用层协议。HTTP协议采用的是请求/响应模型,当客户端给服务器建立连接后,向服务器发送一个请求,服务器接收到相应的请求后,给客户端一个响应信息。

  1. 客户端连接到web服务器:HTTP客户端与web服务器建立一个TCP连接
  2. 客户端向服务器发起HTTP请求:通过已经创建好了的TCP连接,客户端给服务器发送一个请求报文
  3. 服务器接收HTTP请求并返回HTTP响应:服务器解析请求,定位请求资源,服务器将资源副本写到TCP连接,由客户端读取
  4. 释放TCP连接:若connection模式为close,则服务器主动关闭TCP连接,释放TCP连接,若connection模式为keep alive,则该连接会保持一段时间,在该时间内可以继续接受请求

3.URL的格式是什么?常见的协议

URL(统一资源定位符):协议+域名+端口+路径组成

常见的协议

  1. 网络层协议: IP协议、ICMP协议、ARP协议、RARP协议。
  2. 传输层协议:TCP协议、UDP协议。
  3. 应用层协议: FTP、Talnet、HTTP、SMTP

4.HTTP 协议有几种和服务器交互的方法

  1. GET:最常用的方法,通常用于请求服务器发送某个资源,通常返回在响应主体
  2. POST: 向指定资源提交数据,请求服务器进行处理,如:表单的数据提交,文件的上传等,请求数据会被包含在请求体中。
  3. HEAD: 和GET方法类似,但是它不会资源的内容,而是返回资源的一些基本信息。主要运用于
    • 在不获取资源的情况下获取资源信息(类型、大小等)
    • 通过状态码产看资源是否存在
    • 通过查看首部,测试资源是否被修改了
    • HEAD方法常被用于客户端查看服务器的性能。
  4. PUT: 和GET从服务器获取资源相反,PUT用于想服务器写入资源。PUT的语义就是让服务器用请求的主体部分创建一个请求URL命名的文档,如果存在就替换。
  5. TRACE: 客户端发送一个请求的时候,这个请求可能会穿过防火墙、代理、网关和一些其它应用程序,没个中间节点都可能修改HTTP请求,TRACE方法允许客户端在最终请求发往服务器的时候,看看它变成了什么样子。
  6. DELETTE:用于要求服务器删除请求的URL。
  7. OPTIONS: OPTIONS方法用于请求 web服务器告知其支持的各种功能

5.状态码200301304403,404,500503分别代表什么意思

200: 表示请求得到响应的相应 OK

**301: **表示客户请求的文档在其他地方,新的URL在Location中指出,浏览器会自动地访问新的URL地址 Moved Permanently(永久行的移动)


HTTP协议_第1张图片
301状态码

**302: ** ---类似于301,但是表示临时的替代,而不是永久性替代,浏览器也会自动跳到新的URL地址, “Moved Temporatily”(临时的移动)

304: ---(未修改)自从上次请求后,请求的内容没有被修改过,不会返回内容,直接用浏览器的缓存内容。通常(If-Modified-Since在请求头中,浏览器端缓存页面的最后修改时间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间Last-Modified进行比较,如果时间一致,就使用缓存)If-Modified-Since解析

403: ---(禁止)资源不可用,服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。Forbidden

404: ---(未找到) 找不到资源 Not Found

500: ---(服务器内部错误)服务器遇到了意料不到的情况,不能完成客户的请求

503: --- (服务不可用)服务器目前无法使用(由于超载或停机维护)

6.报文有哪几部分组成?

一个HTTO报文有三部分组成

  1. 对报文进行描述的起始行 ----start line
  2. 包含属性的首部块 ----header
  3. 可选的包含数据的主体部分 ----body

HTTP报文分2大类

请求报文 :向web服务器请求一个动作




 /*请求一般没有数据的内容*/

响应报文: 将请求结果返回给客户端





7.请求头的格式和作用是什么?给个范例截图说明

格式:键值对

作用:告诉客户端一些请求的基本要求和样式


HTTP协议_第2张图片
request headers.png

8.首部的格式和作用是什么?给个范例截图说明

格式: 键值对

首部的分类:1. 通用首部字段(General)2. 请求首部字段(Request),3. 响应首部字段(Response),4. 实体首部字段(Entity)

HTTP协议_第3张图片
首部.png

9主体的作用是什么?给个范例

主体: 主体是HTTP的第三个部分,该部分是可选择的,一般有主体的请求方法是post。主体是HTTP报文的负荷,就是HTTP所要传输的内容。

HTTP协议_第4张图片
response内容.png

10 简述浏览器缓存是如何控制的

第一次请求

HTTP协议_第5张图片
没有缓存的时候

有缓存后第二次请求

HTTP协议_第6张图片
第二次请求
  • Cache-control:每个资源都可以通过设置cache-control来简历缓存策略。例如,若设定Cache-Control: max-age=604800,(单位为秒),则表示这个资源的有效时间为 7 天。 ----服务器返回Cache- Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会修改另一个消息处理过程中的缓存处理过程
  • Expires:响应头从另一个角度——指明缓存的具体过期日期,来控制资源何时过期。在过期时间以内,若再次发起请求,通常浏览器都不会与服务器进行任何通信,而是直接使用本地副本。当 Expires 和 Cache-Control 同时出现时,通常后者会覆盖前者的设定。 ----Response Headers中,指定过期时间
  • Last-Modified和ETag:服务器可在 HTTP 返回头中包含Last-Modified字段或者ETag字段。Last-Modified 表示被请求资源在服务器端的上次修改时间,而 ETag 则是一个唯一文件标识符,每次文件修改后都会生成一个新的 ETag。服务器通过向浏览器发送这两个字段,来告知浏览器其获得的资源的版本。
    无论通过 Cache-Control 还是 Expires 设置缓存,在过期时间以内,当用户点击浏览器刷新按钮时,为了确保用户所加载的资源是最新的,大部分浏览器不会再直接使用缓存中的数据,而是发出一个条件请求(Conditional GET Request)。对于这类请求,浏览器会在请求头中包含If-Modified-Since或If-None-Match字段。前者即浏览器当初得到的 Last-Modified;后者即浏览器当初得到的 ETag。当服务器发现资源的更新时间晚于 If-Modified-Since 所提供的时间,或者资源在服务器端当前的 ETag 和 If-None-Match 提供的不符时,会响应整个资源,否则只会响应一个 304 Not Modified 状态码(因此浏览器将不需要重新下载整个资源)。这种机制可以最大程度上减少数据下载量。此外,如果缓存的资源已过期,浏览器通常有两种选择:重新下载这个资源,或发出一个条件请求。很多浏览器都会采取后者,以节约资源。
  • ---Last-modified实体头指定服务器上保存内容的最后修订时间。
  • Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。

11.下图各个参数是什么意思

HTTP协议_第7张图片
参数的意思

通用首部General

  • Request URL: 资源的路径
  • Request Method: 资源的请求的方法
  • Status Code: 返回的状态码
  • Remote Address: 远程服务器的ip地址和端口号

反应头部(Response Headers)

  • Connection:表示是否需要持久连接(close/keep-alive ),如果Servlet看到这里的值为“Keep- Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。
  • Content-Length: 表示实际传输返回的长度
  • Date: 返回文档的当地时间
  • server: 表示服务器的类型
  • X-Powered-By: 表示语言解析器

请求头(Request Headers)

  • accept: 浏览器可接受的MIME类型。
  • Accept-Encoding 浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
  • Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
  • Connection:表示是否需要持久连接
  • Content-Length:表示请求消息正文的长度。
  • Content- Type 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置 Content-Type,因此HttpServletResponse提供了一个专用的方法setContentTyep。
  • Cookie: 个人的信息保存量,来区分不同的人不同的界面
  • Host: 指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。
  • Origin: 用来说明最初请求是从哪里发起的,只用于post请求
  • Referer: 表示上一个页面的地址,包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
  • User-agent: 浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。
  • X-Requested-With: 用于区分是传统的同步请求,还是AJAX异步请求

参考链接

http综合

X-Requested-With区别

If-Modified-Since

浏览器缓存知识

你可能感兴趣的:(HTTP协议)