HTTP知识点
2021-04-16 21:01:12 0 举报
AI智能生成
HTTP知识点
作者其他创作
大纲/内容
简介
HTTP协议就是客户端和服务器交互的一种通迅的格式
告知服务器意图
HTTP提供了好几种方法给我们使用
GET
PUT
HEAD
DELETE
POST
OPTIONS
总的来说:我们现在盛行的RESTful风格就是充分利用了这些方法
持久连接
在HTTP1.0的时候,每一次进行HTTP通信就会断开一次连接
在HTTP1.1版本,就是持久连接了。一次HTTP连接能够处理多个请求
持久连接为“管线化”方式发送成为了可能:在一次HTTP连接里面,不需要等待服务器响应请求,就能够继续发送第二次请求
常用状态码
2XX--一般表示为成功处理
200 正常处理
204 成功处理,但服务器没有新数据返回,显示页面不更新
206 对服务器进行范围请求,只返回一部分数据
更多脑图和最新原创技术文章可关注公众号:Java3y
3XX--一般表示为重定向
301 请求的资源已分配了新的URI中,URL地址改变了。【永久重定向】
302 请求的资源临时分配了新的URI中,URL地址没变【转发】
303 与302相同的功能,但明确客户端应该采用GET方式来获取资源
304 发送了附带请求,但不符合条件【返回未过期的缓存数据】
307 与302相同,但不会把POST请求变成GET
4XX--客户端出错
400 请求报文语法错误了
401 需要认证身份
403 没有权限访问
404 服务器没有这个资源
更多脑图和最新原创技术文章可关注公众号:Java3y
5XX--服务器出错
500 内部资源出错了
503 服务器正忙
HTTPS简述
HTTPS就是披着SSL的HTTP
HTTP在建立通信线路的时候使用公开私有密钥,当建立完连接后,随后就使用共享密钥进行加密和解密了
HTTPS是基于第三方的认证机构来获取认受认可的证书
过程
用户向web服务器发起一个安全连接的请求服务器返回经过CA认证的数字证书,证书里面包含了服务器的public key(公钥)用户拿到数字证书,用自己浏览器内置的CA证书解密得到服务器的public key用户用服务器的public key加密一个用于接下来的对称加密算法的密钥,传给web服务器4.1因为只有服务器有private key可以解密,所以不用担心中间人拦截这个加密的密钥服务器拿到这个加密的密钥,解密获取密钥,再使用对称加密算法,和用户完成接下来的网络通信
网站通信粗略过程
DNS:负责解析域名
HTTP:产生请求报文数据
TCP协议:分割HTTP数据,保证数据运输
IP协议:传输数据包,找到通信目的地地址。
HTTP是不保存状态的协议
HTTP是无状态的,也就是说,它是不对通信状态进行保存的。它并不知道之前通信的对方是谁
由于我们很多时候都是需要知道对方是谁,于是我们就有了Cookie来解决
提升传输效率
使用压缩技术把实体主体压小,在客户端再把数据解析
使用分块传输编码,将实体主体分块传输,当浏览器解析到实体主体就能够显示了。
这种技术可以实现断点续传
服务器与客户端之间的应用程序
代理
网关
能够提供非HTTP请求的操作,访问数据库什么的
隧道
建立一条安全的通信路径,可以使用SSL等加密手段进行通信。
HTTP请求和响应报文组成
请求报文
a、请求行:包含请求方法、URI、HTTP版本信息b、请求首部字段c、请求内容实体d、空行
响应报文
A:一个状态行【用于描述服务器对请求的处理结果。】B:首部字段【用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据】C:一个空行D:实体内容【服务器向客户端回送的数据】
HTTP1.1版本新特性
a、默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,可以发送多次HTTP请求
b、管线化,客户端可以同时发出多个HTTP请求,而不用一个个等待响应(理论->未实践)
c、断点续传:实际上就是利用HTTP消息头使用分块传输编码,将实体主体分块传输。
HTTP2
HTTP2与HTTP1.1最重要的区别就是解决了线头阻塞的问题!其中最重要的改动是:多路复用 (Multiplexing)
HTTP2所有性能增强的核心在于新的二进制分帧层(不再以文本格式来传输了)
其他重要改动
使用HPACK对HTTP/2头部压缩
服务器推送
流量控制(针对传输中的流进行控制(TCP默认的粒度是针对连接))
流优先级(Stream Priority)它被用来告诉对端哪个流更重要。
更多脑图和最新原创技术文章可关注公众号:Java3y
0 条评论
下一页