HTTP 是基于 TCP/IP 协议的应用层协议

1,051 阅读3分钟

http (Hyper Text Transfer Protocol)

  • 最早版本是1991年发布的0.9版。该版本极其简单,只有一个命令GET。

GET /index.html

  • 1996年5月,HTTP/1.0 版本发布,内容大大增加 post head方法,引入了HTTP Header概念,让http处理请求和相应更加灵活,传输的数据不再仅限于文本

常用字段,状态码

Content-Type:application/xx 数据格式不固定,可能是文本也可能是二进制,必须由上层应用程序来解释

Content-Encoding/Accept-Encoding 节约带宽 压缩数据

Conten-Type/Accept:客户端和服务器进行内容协商

Connection: keep-alive提议

1d09c65a-4830-42de-b37a-f6eab3f6f523.jpg

  • 1997年 http 1.1 使用寿命最长 1.0每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。

持久链接Connection: keep-alive落实

缓存机制Cache-Ccontrol:no-cache 可以缓存但是使用之前必须要去服务器验证是否过期

管道机制 可以在一次TCP链接中发送多个请求,但是先进先出的机制导致head-of-line blocking

538d4350-c260-4577-8b86-fd32e8452ce1.jpg

  • 2015年http 2 是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为"帧"(frame):头信息帧和数据帧

171d58b41cbdf8c6.png

浏览器可以随时发送请求,而不必等待前一个请求接收到响应之后;同样,服务器也可以按需决定优先返回哪些内容,而不必在意顺序,因为每份数据都有ID来标识。这样就实现了资源的并行传输。

  • http 3

前端的感受

  • 请求方法是客户端发出,要求服务器执行的,对资源的一种操作

传输的建立、请求的发起、响应的回传

一个完整的URL

scheme:[//[user[:password]@host[:port]][/path][?query][#fragment]

  1. scheme: 使用的协议 FTP HTTP HTTPS

  2. user[:password]: FTP 协议中表示访问资源的用户名和密码

  3. host:主机 IP地址域名

  4. port:端口号 HTTP默认80端口

  5. path: 访问资源的路径

  6. query:请求数据以?开始

  7. fragment:定位锚点 以#开始

常用的Http状态码

HTTP状态码表示服务器响应状态的3位数字,客户端发送请求至目标服务器,服务器响应浏览器的请求并且附带状态码 主要包括 1** (消息) 2** (成功) 3** (重定向) 4** (请求错误) 5** 6**(服务器错误)

HTTP状态码描述
100继续,继续响应剩余部分,进行提交请求,如果已经完成忽略
200成功处理请求
301永久移动
302临时移动
304请求资源未修改
401未授权 要求身份验证
403禁止 请求被拒绝
404未找到资源
500服务器错误
503服务不可用

常用的请求方法

常用HTTP header字段