HTTP协议

来源:互联网 发布:李炎恢php 编辑:程序博客网 时间:2024/06/16 15:56

1.http是一个面向对象的应用层协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议,使用TCP连接进行可靠的传送,无连接无状态,默认使用80端口
2.任何格式的内容都可以发送,这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。命令有:PUT、PATCH、HEAD、 OPTIONS、DELETE。

请求格式

这里写图片描述

这里写图片描述

请求报文首部结构为:

  • 请求行
  • 请求首部字段
  • 通用首部字段
  • 实体首部字段

除了数据部分,每次通信都必须包括头信息(HTTP header),头信息第一行是请求命令,包括请求方式和协议版本。在报头行之后是一个回车换行,用以表示应答消息的报头部分的结束,以及应答消息实体的开始.

请求首部字段

  • Accept:浏览器可接受的MIME类型。
  • Accept - Charset:浏览器可接受的字符集。
  • Accept - Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
  • Accept - Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
  • Authorization:授权信息,通常出现在对服务器发送的WWW - Authenticate头的应答中。
  • Expect:使用这个来告诉服务器,期望出现的某种特定行为。当服务器无法理解客户端的期望作出回应发生错误时,会返回状态码417 Expection Failed.
  • Cookie:携带用户信息
  • From:用来告知服务器使用用户代理的用户的电子邮件地址,其使用目的是为了显示搜索引擎等用户代理的负责人的电子邮件联系方式。
  • Host:请求的资源所处的互联网主机名和端口号。在HTTP/1.1规范中,是唯一一个必须包含在请求内的首部字段。
  • If-match:条件请求,服务器会比对if-match的字段值和资源的ETag值,仅当两者一致时,才会执行请求。
  • If - Modified - Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。
  • if-None-Match:和if-match作用相反,当if-none-match字段值的实体标记与请求资源的ETag不一致时,它就告知服务器处理该请求
  • **if-Range:**if-range字段值和请求资源的ETag值或时间相一致时,则作为范围请求处理,反之,则返回全体资源。
  • if-Unmodeified-Since:指定的请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,才能处理请求。如果在指定日期后发生了更新,则以状态码412 Precondition Failed作为响应返回。
  • Max-Forwards:该字段以十进制整数形式指定可经过的服务器最大数目,服务器在往下一个服务器转发请求之前,会将Max-forwards值减1后重新赋值。当服务器接收到Max-forwards值为0的请求时,则不再进行转发,而是直接返回响应。
  • Proxy-Authorization:接收到从代理服务器发来的认证质询时,客户端会发送包含该字段的请求,以告知服务器认证所需要的信息。
  • Range:服务器资源的指定范围
  • Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
  • TE:告知服务器客户端能够处理响应的传输编码方式以及相对优先级
  • User - Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。
  • UA - Pixels,UA - Color,UA - OS,UA - CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。

响应格式

这里写图片描述

响应报文首部结构为:

  • 状态行
  • 响应首部字段
  • 通用首部字段
  • 实体首部字段

在响应和请求中唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况

响应首部字段

  • Server:服务器上安装的HTTP服务器应用程序的信息
  • Accept-Ranges:用来告诉客户端服务器是否能处理范围请求,以指定获取服务器某个部分的资源。
  • Age:告知客户端,源服务器在多久之前创建了响应
  • ETag:可将资源以字符串形式做唯一性标识的方式,服务器会为每份资源分配对应的ETag值。当资源更新时,ETag值也需要更新。
  • Retry-After:告知客户端应在多久之后再次发送请求
  • Vary:当代理服务器接收到带有Vary首部字段指定获取资源的请求时,如果使用Accept-Language字段的值相同,那么就直接从缓存返回响应。反之,则需要先从源服务器端获取资源后才能作为响应返回。
  • WWW-Authenticate:用于HTTP访问认证
  • Proxy-Authenticate:把由代理服务器所要求的认证信息发送给客户端。
  • Location:表示客户应该在哪提取文档

通用首部字段

  • Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep - Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content - Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。
  • Pragma:虽然作为通用首部字段,但只用在客户端发送的请求中,客户端会要求所有的中间服务器不返回缓存的资源。
  • Date:表明创建HTTP报文的日期和时间
  • Trailer:说明在报文主体后记录了哪些首部字段
  • Transfer-Encoding:规定了传输报文主体时采用的编码方式
  • Upgrade:用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数可以用来指定一个完全不同的通信协议。
  • Via:追踪客户端与服务器之间的请求和响应报文的传输路径
  • Waring:告知用户一些与缓存相关的问题的警告。
  • catch-control:这个字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令,缓存指令是单向的,即请求中存在一个指令并不意味着响应中将存在同一个指令。
    这里写图片描述

实体首部字段

  • Allow:服务器支持哪些请求方法
  • Content-Type:关于字符的编码,服务器回应的时候,必须告诉客户端,数据是什么格式。客户端可以用Accept声明可以接受哪些字符的编码。
  • Content-Encoding :说明数据的压缩方法。
  • Content-language:告知客户端实体主体使用的自然语言
  • Content-Location:报文主体返回资源对应的URL
  • Content - Length:表示请求消息正文的长度。
  • Content-MD5:检查报文主体在传输过程中是否保持完整,以及确认传输到达。
  • Content-Range:返回响应时使用,告知客户端作为响应返回的实体的哪个部分符合范围请求。
  • Expires:指定什么时候文件已经过期,从此不再缓存它
  • Last-Modified:文档的最后改动时间

http状态码
这里写图片描述

HTTPS

1.是以安全为目标的http通道,https的基础是SSL,SSL用40位关键字作为RC4流加密算法,SSL协议是位于传输层与应用层之间的子层,分为SSL记录协议和SSL握手协议。默认端口是443.
这里写图片描述

2.Https的通信过程
这里写图片描述

3.Https通信的优点

  • 客户端产生的密匙只有客户端和服务器端能够得到
  • 加密的数据只有客户端和服务器端才能得到明文
  • 客户端到服务器端的通信是安全的

WEB 缓存

1.WEB缓存位于Web服务器和客户端之间,缓存会根据请求保存输出内容的副本。
2.缓存的优点

  • 减少响应延迟:因为请求被缓存服务器而不是源服务器响应,这个过程耗时减少。
  • 减少网络带宽消耗:当副本被重用时会减少客户端的带宽消耗

3.Web缓存机制
这里写图片描述

1 0
原创粉丝点击