HTTP状态码与http发展过程

HTTP状态码

1开头:临时响应, 服务器收到请求,需要请求者继续执行操作

2开头:成功,操作被成功接收并处理

200:成功请求,服务器接受请求并成功处理
201(已创建) 请求成功并且服务器创建了新的资源。
202(已接受) 服务器已接受请求,但尚未处理。
203(非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
204(无内容) 服务器成功处理了请求,但没有返回任何内容。
205(重置内容) 服务器成功处理了请求,但没有返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如,清除表单内容以输入新内容)。
206(部分内容) 服务器成功处理了部分 GET 请求。

3开头:要完成请求需要进一步操作

301和302都是重定向,也就是从一个地址跳到另一个地址,是通过各种方法把各种网络请求重新定个方向,转到其他位置的意思。浏览器在拿到服务器返回的301 302状态码后会自动跳到新的url地址,用户看到得效果就是输入的地址A瞬间变成了另一个地址B。状态码为302,网页获取不到数据时,解决方法可以是把f12里的url复制粘贴到浏览器里,再刷新原来的页面
不同点:
301:永久跳转,旧地址的资源永远的不能用了,浏览器取得新的内容的时候也会把地址由旧地址变成新地址。而且浏览器会缓存这个请求,下次再访问的时候就直接请求新地址了。使用场景:域名换了等等,比如原来域名是www.a.com,现在是www.b.com,有的人不知道变了还去访问a,后面就嗯嗯嗯
302:临时跳转,旧地址的资源还可以访问,只是暂时从旧地址跳到新地址,搜索引擎在取得新内容的同时,还会保留旧地址。浏览器不会缓存这个请求,每次请求旧地址都会重定向到新地址。使用场景:单点登录,比如未登录的用户访问用户中心就会重定向到登录页面,想起了一些十秒钟没动就会强制登出的学校网站。。
303:跟302一样,但是用户要用get方法定向取得请求的资源
304:未修改,自从上次请求后,请求的网页没修改过,所以服务器返回次响应是不会返回网页内容。涉及到缓存什么的,浏览器有两种缓存模式,强缓存,协商缓存,强缓存命中时不会发服务器请求,协会,但是浏览器不会返回数据,而是读取本地缓存
305:使用代理,用户得用代理才能访问请求

4开头: 请求错误

说明发的请求错了,服务器不懂
400:bad request. 语法错了,可能是前端传的参数格式不对,跟后端对不上
401:未授权,得先身份验证,可能是因为没登录
403:服务器拒绝请求,可以简单的理解为没有权限访问此站。该状态表示服务器理解了本次请求但是拒绝执行该任务,该请求不该重发给服务器,真牛啊。403下面还有很多分类,出403错可能是因为身份验证的时候密码输错了;服务器繁忙,同一ip地址发送请求过多;你的ip被ban了;duns解析错误,需要重建dns缓存
404:服务器找不到请求的网页,可能是url,端口号写错了,或者访问的服务器网页已被删除或是修改
405:不允许使用该方法
408:请求超时了
409(冲突) 服务器在完成请求时发生冲突。
410:请求的资源已永久删除
412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
413(请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
415(不支持的媒体类型) 请求的格式不受请求页面的支持。
416(请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态码。
417(未满足期望值) 服务器未满足”期望”请求标头字段的要求

5开头:服务器出错

500:服务器内部出错了
501:服务器无法识别请求方法,不具备完成请求的功能
502:错误网关,bad gateway,可能是因为连接超时,像是没挂梯子就访问谷歌,解决方法:刷新下可能会好,或者清下缓存
503:服务不可用,可能是停机了
504:网关超时,服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505(HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

http发展过程

http1.0

每次请求都必须新建一次连接,必须通过TCP的三次握手才能开始传输数据,连接结束之后还要经历四次挥手。
不跟踪每个浏览器的历史请求
存在队头阻塞问题,下一个请求必须在前一个请求响应到达后发送。如果某请求一直不到达,那么下一个请求就一直不发送。

http1.1

支持长连接,通过Keep-Alive保持HTTP连接不断开,避免重复建立TCP连接
管道化,通过长连接实现在一个连接中传输多个文件
加入缓存处理(新字段cache-control)
支持断点续传
增加了Host字段,可以在一台 Web 服务器,同ip端口上使用不同的主机名来创建多个虚拟 Web 站点
添加了其他请求方法:put、delete、options…
对动态生成的内容提供更好的支持:通过引入 Chunked Transfer 机制,将动态生成的内容分割成若干个任意大小的数据块,每个数据块发送时会附上上个数据块的长度,最后一个0长度的块作为发送数据完成的标志
并行连接管理:浏览器为每个域名同时维护6个 TCP 持久连接,通过 CDN 的域名分片机制,优化了网络传输,提高了页面的下载速度. (CDN(Content Delivery Network)是一种分布式网络架构,CDN 会将网站的静态内容(如 HTML、CSS、JavaScript 文件、图像等)复制到位于全球各地的多个服务器节点上,当用户请求访问网站时,CDN会根据用户的地理位置和网络状况选择最近或最优的服务器节点, 当用户请求访问静态内容时,CDN 服务器会尽可能地提供缓存的内容,避免从源服务器获取。)

spyd

多路复用–解决队头阻塞,允许一个连接上无限制并发流
头部压缩–解决巨大的HTTP头部,使用专门的HPACK算法,每次请求和响应只发送 差异头部,一般可以达到50%~90%的高压缩率。
请求优先级–先获取重要数据
服务器推送–可以让服务端主动把资源文件推送给客户端。当然客户端也有权力选择是否接收。
提高安全性–支持使用HTTPS进行加密传输。

http2

HTTP2是基于SPDY,专注于性能,最大的一个目标是在用户和网站键只用一个连接 。
二进制传输:将请求和响应数据分为更小的帧,并且采用二进制编码
Header压缩:采用HPACK算法压缩头部,同时同一个域名下的两个请求,只会发送差异数据,减少冗余的数据传输,降低开销
完全多路复用:同一个域名下所有通信都是单个连接上完成,单个连接可以承载任意数量的双向数据流,数据流以消息形式发送,而消息由一个或多个帧组成,可以乱序发送
服务端推送:服务端可以新建“流”主动向客户端发送消息,提前推送客户端需要的静态资源,减少等待延迟
提高安全性:HTTP2也是明文的,只不过格式是二进制的,但HTTP2都是https协议的,跑在TSL上面。

http3

HTTP3选择了UDP协议,基于UDP实现了类似TCP的多路数据流、传输可靠性等功能,将这套功能称为QUIC协议,实现了快速握手
集成了TLS的加密功能
多路复用,彻底解决了头阻塞问题(一个物理连接上可以有多个独立的逻辑数据流,实现了数据流的单独传输)
实现了类似TCP的流量控制、传输可靠性的功能

https

HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

过程

tcp三次握手后
客户端发送一个client hello给服务端,客户端会告诉服务端支持TLS哪个版本和支持的加密套件,然后生成一个随机数发给服务端

服务端发送一个client hello给客户端,服务端会告诉客户端,服务端确认支持的TLS版本以及选择的加密套件,并且生成一个随机数发给客户端
服务器会再发一个响应来出示自己的证书
这样浏览器可以根据对照自己的证书信任列表来确认这个服务器是否可信
服务器把公钥发给客户端
服务器告诉客户端发完了

客户端生成第三个随机数,也叫预主密钥,这第三个随机数会用刚刚收到的公钥进行加密,并将加密后的随机数发给服务端
客户端告诉服务器往后的数据就用商议好的算法和密钥来加密
客户端表示这边的TLS协商已经没有问题了,加密开始

服务器告诉客户端这边也准备好了,表示TLS握手成功
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值