HTTP协议

文章目录:

  1. HTTP协议的主要特点
  2. HTTP报文的组成成分
  3. HTTP方法
  4. POST和GET的区别
  5. HTTP状态码
  6. 持久连接
  7. URL和URI的区别
  8. 管线化

1. HTTP协议的主要特点:

 

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

2. HTTP报文的组成成分:

 

请求行包括:

  • http方法
  • 页面地址
  • 协议
  • 版本号

请求头包括:

  • 一些key/value值来告诉服务端,浏览器需要哪些内容,什么类型

空行的功能:

  • 当遇到空行时,告诉服务端一下不是请求头的内容了,是请求体的内容。

3. HTTP协议方法:

  • GET  --->  获取资源
  • POST ---> 传输资源
  • PUT ---> 更新资源
  • DELETE ---> 删除资源
  • HEAD ---> 获得报文首部

4. GET和POST的区别:

  GET在浏览器回退时时无害的,POST会再次提交请求

  GET请求会被浏览器主动缓存,而POST不会,除非手动设置

  GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留

  GET请求在URL中传送的参数是有长度限制的(2kb),而POST没有限制

  GET参数通过URL传递,POST放在Request body中

5. HTTP状态码:

  • 1XX :  指示信息 -- 表示请求已经接收,继续处理
  • 2XX:成功 -- 表示请求已经被服务器成功接收
  • 3XX:重定向 -- 要完成请求必须进行更进一步的操作
  • 4XX:  客户端错误 -- 请求有语法错误或请求无法实现
  • 5XX:服务端错误 -- 服务器未能实现合法的请求

 

  • 200:ok -- 客户端请求成功
  • 206:Partial-Content -- 客户端发送一个带有range头的GET请求。 场景:加载视频,音频过大时。
  • 301:Moved Permantly -- 永久性重定向
  • 302:Found -- 临时重定向
  • 304:Not-Modifed -- 客户端有缓冲的文档并发出了一个条件性的请求,服务端告诉客户,原来的缓冲的文档还可以继续使用。场景:当协商缓存时,返回304。
  • 403:Forbidden -- 对被请求的页面访问禁止
  • 500:Internal Server Error:服务器发生错误
  • 503:Server Unavailable:服务器临时过载

6. 长连接与短连接:

  Connection: keep-alive

  HTTP1.0 默认使用短连接,也就是浏览器每进行一次http操作,就建立一次连接,任务结束后就中断连接,如每一个静态资源请求时都是一个单独的连接。

  HTTP1.1 默认使用长连接,使用长连接,请求头会有Connection: keep-alive字段,在长连接的情况下,当一个网页打开完成后,客户端和服务端之间用于传输http的tcp连接不会关闭,如果客户端再次访问服务端页面,会继续使用这一条已经建立的连接。keep-alive不会永远保持,它会有一个持续时间,一般在服务器中配置,另外长连接需要服务器和客户端都支持才可以。  

  HTTP2.0

  1. 多路复用(一个tcp/ip连接可以请求多个资源)
  2. 首部压缩(http头部压缩,减少体积)
  3. 二进制分帧(在应用层跟传送层之间增加一个二进制分帧,改进传输性能,实现低延迟和高吞吐量)
  4. 服务器端推送(服务端可以对客户端的一个请求发出多个响应,可以主动通知客户端)
  5. 请求优先级(如果某个资源被赋予了优先级,它就会基于这个优先级来处理,由服务器来决定需要多少资源来处理该请求)

7. URL和URI的区别

  URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的

  URI一般由三部组成:
    ①访问资源的命名机制
    ②存放资源的主机名
    ③资源自身的名称,由路径表示,着重强调于资源。

 

  URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

  采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:
    ①协议(或称为服务方式)
    ②存有该资源的主机IP地址(有时也包括端口号)
    ③主机资源的具体地址。如目录和文件名等

 

8. 管线化:

- 在传统持久连接中,某个连接上消息的传递类似于

请求1 --> 响应1 --> 请求2 --> 响应2 --> 请求3 --> 响应3

 

- 管线化是把多个请求打包,一起发送给服务端,然后服务端把所有响应打包,一次响应过来。

请求1 --> 请求2 --> 请求3 --> 响应1 --> 响应2 --> 响应3

 

posted @ 2018-05-04 00:47  lius_liu  阅读(216)  评论(0)    收藏  举报