http和https
HTTP协议是超文本传输协议的缩写,是用于从万维网传输超文本到浏览器的传输协议。
HTTP基于TCP/IP通信协议来传递数据(HTML文件,图片文件、查询结果等)。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
浏览器输入网址后都发生了什么
- 域名解析成ip地址
- 客户端发送一个带有SYN标志的数据包给服务器(一握)
- 服务器收到后,回传一个SYN/ACK标志的数据包以示传达确认信息(二握)
- 客户端在回传一个待ACK标志的数据包,代表握手结束
- 服务器处理数据并返回数据
- 客户端请求关闭连接(一挥)
- 服务器确认是否还有数据要传输(二挥)
- 服务端无数据在传输,准备关闭连接(三挥)
- 客户端断开连接(四挥)
- 浏览器解析HTML,生成DOM树,解析CSS,生成CSS规则树
- DOM和CSS规则树合并成渲染树,开始渲染
- 遇到JS执行JS脚本
http版本的区别:
Http1.0
HTTP1.0默认使用 Connection:cloose
,浏览器每次请求都需要与服务器建立一个 TCP 连接,服务器处理完成后立即断开 TCP 连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。
Http1.1
HTTP1.1默认使用 Connection:keep-alive
(长连接),避免了连接建立和释放的开销;通过 Content-Length 字段来判断当前请求的数据是否已经全部接受。不允许同时存在两个并行的响应。
Http1.1缺陷
(1)高延迟,带来页面加载速度的降低。(网络延迟问题只要由于队头阻塞,导致宽带无法被充分利用)
(2)无状态特性,带来巨大的Http头部。
(3)明文传输,不安全。
(4)不支持服务器推送消息。
HTTP2.0新特性
(1)二进制传输
http2.0将请求和响应数据分割为更小的帧,并且它们采用二进制编码(http1.0基于文本格式)。多个帧之间可以乱序发送,根据帧首部的流表示可以重新组装。
(2)Header压缩
Http2.0开发了专门的“HPACK”算法,大大压缩了Header信息。
(3)多路复用
http2.0中引入了多路复用技术,很好的解决了浏览器限制同一个域名下的请求数量的问题。
多路复用技术可以只通过一个TCP链接就可以传输所有的请求数据。
(4)服务端推送
HTTP2.0在一定程度上改不了传统的“请求-应答”工作模式,服务器不再完全被动地响应请求,也可以新建“流”主动向客户端发送消息。(例如,浏览器在刚请求html的时候就提前把可能会用到的JS,CSS文件发送给客户端,减少等待延迟,这被称为“服务端 推送Server Push”)
服务器也不能随便将第三方资源推送给服务器,必须经过双方确认。
HTTP2.0缺点
(1)TCP以及TCP+TLS建立连接的延迟(握手延迟)
(2)TCP的队头阻塞没有彻底解决(http2.0中,多个请求是跑在一个TCP管道中的,一旦丢包,TCP就要等待重传(丢失的包等待重新传输确认),从而阻塞该TCP连接中的所有请求)
Http3.0
基于UDP协议的“QUIC”协议,让HTTP跑在QUIC上而不是TCP上。从而产生了HTTP3.0版本,它解决了“队头阻塞”的问题。
特点:
(1)实现了类似TCP的流量控制,传输可靠性的功能。
(2)实现了快速握手功能(QUIC基于UDP,UDP是面向无连接的,不需要握手和挥手,比TCP快)
(3)集成了TLS加密功能
(4)多路复用,彻底解决TCP中队头阻塞的问题(单个“流”是有序的,可能会因为丢包而阻塞,但是其他流不会受到影响)
总结:
HTTP1.1的缺点:安全性不足和性能不高;
HTTP2.0完全兼容HTTTP1.0,是“更安全的HTTP,更快的HTTPS”,头部压缩,多路复用等技术充分利用了带宽,降低了延迟。
HTTP3.0的底层支撑协议QUIC基于UDP实现,又含TCP的特点,实现了又快又可靠的协议。
https证书:
https证书即是SSL/TLS证书,其中SSL证书版本有1.0、2.0以及3.0三个版本,2.0和3.0之间的不同之处就是,SSL 3.0提供了额外的安全级别。
TLS证书还有1.0、1.1、1.2以及1.3四个版本,1.3版本是目前最新版本,主流版本是1.2版本,一般建议大家使用1.2和1.3版本均可
网站部署https证书的具体作用:
1.防止信息被非法分子盗用
2.提升企业网站排名
3.防止流量劫持
4.提升企业形象
http状态码:
100-199 用于指定客户端应相应的某些动作。
200-299 用于表示请求成功。
200:成功
300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。
400-499 用于指出客户端的错误。
404:
500-599 用于支持服务器错误。
500:服务器出错
http协议 和 https协议 的区别:
- http 传输的数据都是未加密的,也就是明文的,因此使用http协议传输 隐私等身份信息就非常不安全
- 为了办证传输的安全性,诞生了https协议,简单来说https协议是由SSL+http协议构建的可进行加密传输,身份认证的网络协议
- https主要作用:
- 简历信息的安全通道,来保证数据传输的安全性
- 确认网站的真实性
- 区别:
- http不需要证书,https需要用到对应CA证书(一般证书都需要费用)
- http明文传输,https是构建的进而进行加密传输、身份认证的网络协议,可以防止传输内容被篡改,比http协议更加安全
- http使用80端口,https使用的是443端
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战