http
2022-04-04 22:24:15 1 举报
AI智能生成
11
作者其他创作
大纲/内容
http简介
http是一种超文本传输协议,工作与应用层,同时也是一种无状态协议,底层是TCP协议,客户端发送http请求,服务端收到后发送http响应。
正是因为http是无状态协议,所以会导致效率较低,需要在传输过程中携带很多请求体,比如session和cookie等等。
http1.0和http1.1的区别
1.http1.0是默认短连接,http1.1是长连接,可以减少关闭和建立连接的消耗和延迟,提高带宽。
2.错误通知:http1.1提供了更多的错误状态码,比如409:请求的资源与资源当前状态发生冲突,410:服务器上的某个资源被永久性删除。
3.Host头域:http1.0是认为每个服务器都绑定一个唯一的ip地址,但是随着时代的发展,虚拟机技术越来越成熟,一台服务器上可能布置着数百个虚拟机,所以在http1.1中必须携带host头域,如果不携带会返回200(BAD REQUEST)状态码。
4.带宽优化:在http1.0中每次请求都是请求的完整对象,但是有时候我们只需要一个对象的部分资源,这样很影响带宽和吞吐率,所以在http1.1中,增加了206状态码,可以请求部分资源。
5.缓存处理:在htpp1.0中主要使用header里的if-modifie-since来作为主要的缓存策略,但是在http1.1中提供了更多的缓存策略,Entity tag,If-Unmodified-Since, If-Match, If-None-Match,如果没有发生改变会通知客户端直接从缓存中拿取数据。
http2.0的改变
1.选择了二进制分帧方式进行传输,舍弃了原本的纯文本格式的形式进行通信,将传输的信息分成更小的消息和帧
2.允许服务器主动推送资源,在很多时候网页有很多静态资源,不需要客户端再次发送请求,允许服务器主动发给客户端。
3.多路复用,http2.0的通信都在一条连接上完成,简单来说访问一个网页,你的所有请求都是在一条tcp连接上完成。
4.头部压缩:这也是http2.0的较大的一个改变,因为http协议是无状态协议,,每次请求都必须携带很多字段,但是这些字段有很多是重复的,所以影响带宽,因此在http2.0中引入了头部信息压缩机制,头信息会在压缩后发送,客户端和服务器同时维护同一张表,所有字段都会存入这个表,生成一个索引号,然后以后只需要发送索引号即可。
状态码
1xx:信息性状态码
100(continue):继续
2xx:成功状态码
200(ok):正常返回信息
3xx:重定向
300:请求的资源包括多个位置
301(move permanently):请求的资源已永久性移动到新位置
302:临时性重定向
304(not modify):自从上次请求后,请求的资源未被更改过
4xx:客户端错误
400(bad request):服务器无法理解请求的格式,并且客户端也不应该继续发送相同的格式
401:请求未授权
402:禁止访问
404:无法找到与请求的uri相匹配的资源
409:请求的资源与资源当前状态发送冲突
410:服务器上某个资源已被删除
5xx:服务器端错误
500:最常见的服务器端错误
503:服务器暂时无法处理请求
0 条评论
下一页