http协议类

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等


主要特点:

  1. 简单快速
  2. 灵活(不同数据传输)
  3. 无连接(不保持连接)
  4. 无状态(无法区分请求属于谁)

报文组成

  1. 请求报文
    客户端发送一个HTTP请求到服务器的请求消息内容包括:
    • 请求行(方法,页面地址、http协议、版本)
    • 请求头
    • 空行
    • 请求体
  2. 响应报文
    服务器响应消息内容:
    • 状态行
    • 响应头
    • 空行
    • 响应体

http请求方法

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

方法介绍

  1. GET 请求指定的页面信息,并返回实体主体
  2. POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  3. HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
  4. PUT 从客户端向服务器传送的数据取代指定的文档的内容。
  5. DELETE 请求服务器删除指定的页面。
  6. CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  7. OPTIONS 允许客户端查看服务器的性能。
  8. TRACE 回显服务器收到的请求,主要用于测试或诊断。

POST、GET区别

  1. 回退时Get无害、Post会再次提交
  2. Get产生url地址可收藏、 Post不可
  3. Get请求会被主动缓存、Post请求不会(可收到设置)
  4. Get请求参数会被完整保留到浏览器历史记录里、Post参数不会被保留
  5. Get请求url参数有长度限制、Post没有
  6. Get通过url传参,Post参数放在request Body中

本质上都是基于tcp/ip

  • get header data 放在一起发生tcp数据包
  • post 发送两次数据包 header 服务器返回100continue dat 服务器返回200成功

http状态码

  • 1xx 指示信息
  • 2xx 成功
    • 200 成功
    • 206 range头请求,服务器完成了(请求大视音频)
  • 3xx 重定向
    • 301 页面转移url
    • 302 临时转移url
    • 304 客户端有缓存文件可用
  • 4xx 客户端错误
    • 400 客户端语法错误
    • 401 请求未授权
    • 403 请求被禁止
    • 404 资源未找到
  • 5xx 服务端错误
    • 500 服务器错误、原来缓存文件可以继续使用
    • 503 请求未完成

http持久连接

http请求是每次请求响应就建立一次连接然后断开;持久化即建立一次连接后可以接受多个http请求/响应

  • 仅http1.1版本支持

http管线化

多个请求打包 、响应打包

  • 通过持久连接完成,所以仅http/1.1支持
  • GET HEAD请求可以管线化
  • POST管线化有限制
  • 初次创建连接时不应启动管线机制,服务端不一定支持http/1.1

http2.0

特点
  1. 二进制格式
    把原来的“Header+Body”的消息“打散”为数个小片的二进制“帧”(Frame),用“HEADERS”帧存放头数据、“DATA”帧存放实体数据。数据分帧后“Header+Body”的报文结构就完全消失了,协议看到的只是一个个的“碎片”。
  2. 多路复用-多个往返通信都复用一个连接来处理
    消息的“碎片”到达目的地后应该怎么组装起来呢?HTTP/2为此定义了一个“流”(Stream)的概念,它是二进制帧的双向传输序列,同一个消息往返的帧会分配一个唯一的流ID。这些数据帧按照次序组装起来就是HTTP/1里的请求报文和响应报文。因为“流”是虚拟的,实际上并不存在,所以HTTP/2就可以在一个TCP连接上用“流”同时发送多个“碎片化”的消息,这就是常说的多路复用( Multiplexing)
  3. header压缩 通讯双方各自cache一份header fields表
    在客戶端和服务器两端建立“字典”,用索引号表示重复的字符串,还釆用哈夫曼编码来压缩整数和字符串,可以达到50%~90%的高压缩率。
  4. 服务端推送
    服务端可以新建“流”主动向客戶端发送消息。比如,在浏览器刚请求HTML的时候就提前把可能会用到的JS、CSS文 件发给客戶端,减少等待的延迟,这被称为“服务器推送”(Server Push,也叫Cache Push)。
建立连接
  • http请求时
    与 WebSocket 协议 [RFC 6455] 类似, HTTP/2 使用 Upgrade 的头部字段来探测对方是否支持 HTTP/2 协议
    GET / HTTP/1.1
    Host: server.example.com
    Connection: Upgrade, HTTP2-Settings
    Upgrade: h2c
    HTTP2-Settings: <base64url encoding of HTTP/2 SETTINGS payload>
    
  • https请求时
    双方在 TLS 握手阶段, 通过 ALPN 拓展字段已经协商好了双方使用的应用层协议, 因此当 TLS 握手完成后便可以进行 HTTP/2 的通信交互

HTTP2特性

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值