HTTP协议的主要特点

1.简单快速 每个资源的URI是固定的,可以简单快速的获取
2.灵活 通过一个http协议就可以完成不同数据类型的传输
3.无连接 连接一次就断了,不会保持连接
4.无状态 客户端和服务端是两种身份,一次连接后就断开,下次再连接时,服务器无法区分两次连接是否由同一客户端发起

HTTP报文的组成:

  1. 请求报文:请求行、请求头、空行、请求体
  2. 响应报文:状态行,响应头、空行、响应体
    请求行包含:http方法 、页面地址、http协议以及版本
    请求头:key\value值 告诉服务端我要什么内容要注意什么类型
    空行:分隔请求头和请求体
    状态行包含:http协议以及版本
    http状态码

    HTTP方法

    主要用GET和POST,其他基本不用
    GET————-获取资源
    POST———-传输资源

    PUT————-更新资源
    DELETE———删除资源
    HEAD————获取报文首部

    POST和GET的区别

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

  4. GET请求会被浏览器主动缓存,而POST不会,除非手动设置 *
  5. GET请求在URL中的参数有长度限制(2KB),而POST没有限制 *
  6. GET请求参数会被完整的保留在浏览器历史记录中,而POST中的参数不会被保留 *
  7. GET参数通过URL传递,POST放在Request body中 *
  8. GET比POST更不安全,因为GET参数直接暴露在URL上,所以不能用来传递敏感信息
  9. GET产生的URL地址可以被收藏,而POST不可以
  10. GET请求只能进行url编码,POST支持多种编码方式
  11. GET请求的参数类型只接收ASCII字符,POST没有限制

    HTTP状态码

  • 1xx:指示信息-表示请求一接收,继续处理
  • 2xx:成功-表示请求被成功接收(200请求成功,206客户发送带有Range头的GET请求,如指定返回长度的,一般请求音频和视频时,就会返回206)
  • 3xx:重定向(301请求页面永久转移到新url,302请求页面临时转移到新url,304使用浏览器的缓存)
  • 4xx:客户端错误-请求有语法错误或请求无法实现(400客户端有语法错误,401请求未经授权,必须和WWW-Authenticate,403请求页面被禁止,404请求资源不存在
  • 5xx:服务器错误-服务器未能实现合法请求(500服务器发生不可预期的错误,缓存可以用,503 请求未完成,服务器临时过载或宕机,一段时间后可能恢复正常)

    HTTP连接类型

  • 持久连接(http1.1版本才支持)
    Keep-ailve模式(又称持久连接、连接重用)时,客户端到服务器端的连接持续有效,避免后续请求时,重新建立连接

  • 非持久连接(默认的“请求-应答”模式)
    非Keep-ailve模式时,每个请求/应答客户端和服务器都要新建一个连接,完成后就断开

??????

http协议类—-管线化

请求打包发送,响应打包返回
在使用持久连接的情况下,某个连接上的传递类似于
请求1->响应1->请求2->响应2->请求3->响应3

在管线化下就变成类似于
请求1->请求2->请求3->响应1->响应2->响应3