文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
说一说HTTP1.0,1.1,2.0 的区别
HTTP/1.0
HTTP/1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接
- 服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
这种方式就好像我们打电话的时候,只能说一件事儿一样
- 说完之后就要挂断,想要说另外一件事儿的时候就要重新拨打电话。
HTTP/1.0中浏览器与服务器只保持短暂的连接,连接无法复用。
也就是说每个TCP连接只能发送一个请求。
- 发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。
我们知道TCP连接的建立需要三次握手,是很耗费时间的一个过程。
- 所以,HTTP/1.0版本的性能比较差。
HTTP/1.1
相比较于HTTP/1.0来说,最主要的改进就是引入了持久连接。
- 所谓的持久连接即TCP连接默认不关闭,可以被多个请求复用。
由于之前打一次电话只能说一件事儿,效率很低。
- 后来人们提出一种想法,就是电话打完之后,先不直接挂断,而是持续一小段时间
- 这一小段时间内,如果还有事情沟通可以再次进行沟通。
客户端和服务器发现对方一段时间没有活动,就可以主动关闭连接。
- 或者客户端在最后一个请求时,主动告诉服务端要关闭连接。
HTTP/1.1版还引入了管道机制(pipelining),即在同一个TCP连接里面,客户端可以同时发送多个请求。
- 这样就进一步改进了HTTP协议的效率。
有了持久连接和管道,大大的提升了HTTP的效率。
- 但是服务端还是顺序执行的,效率还有提升的空间。
HTTP/2
HTTP/2 为了解决HTTP/1.1中仍然存在的效率问题,HTTP/2 采用了多路复用。
- 即在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应。
- 能这样做有一个前提,就是HTTP/2进行了二进制分帧
- 即 HTTP/2 会将所有传输的信息分割为更小的消息和帧(
frame
),并对它们采用二进制格式的编码。也就是说,老板可以同时下达多个命令,员工也可以收到了A请求和B请求,于是先回应A请求,结果发现处理过程非常耗时
- 于是就发送A请求已经处理好的部分, 接着回应B请求,完成后,再发送A请求剩下的部分。
- A请求的两部分响应在组合到一起发给老板。
而这个负责拆分、组装请求和二进制帧的一层就叫做二进制分帧层。
- 除此之外,还有一些其他的优化,比如做Header压缩、服务端推送等。
Header压缩就是压缩老板和员工之间的对话。
服务端推送就是员工事先把一些老板可能询问的事情提现发送到老板的手机(缓存)上。
- 这样老板想要知道的时候就可以直接读取短信(缓存)了。
目前,主流的HTTP协议还是HTTP/1.1 和 HTTP/2。
- 并且各大网站的HTTP/2的使用率也在逐年增加。
DNS 解析 优化手段?
DNS缓存:
- DNS缓存是本地DNS服务器和浏览器中的一种机制,用于缓存已解析的域名和对应的IP地址。
- 当再次访问相同域名时,可以直接从缓存中获取IP地址,避免重复查询和延迟。
域名预取:
- 浏览器可以在用户点击链接之前提前解析网页中的链接中的域名,将这些域名解析为IP地址并缓存起来。
- 这样当用户点击链接时,可以立即建立连接,减少等待时间
HTTP 和 HTTPS 的区别?
HTTP和HTTPS用于在客户端和服务器之间传输数据的方式。
它们之间的主要区别在于以下几个方面:
安全性:
- HTTP是明文传输的协议,数据并没有经过加密,容易被窃听、篡改或其他安全风险。
- HTTPS通过使用SSL(安全套接层)或TLS(传输层安全)协议对HTTP进行加密
- 确保数据在传输过程中的安全性和完整性。
- 这样,即使被截获的数据也无法被解读和篡改。
端口号:
HTTP
默认使用端口号80进行通信。- HTTPS默认使用端口号443进行通信。
证书:
- HTTPS使用数字证书对网站的身份进行认证。
- 证书由可信的第三方机构颁发,用于证明服务器是可信的,并且可以用来加密和解密通信过程中的数据。
- HTTP不需要证书,任何人都可以发送HTTP请求和接收HTTP响应。
性能开销:
- 由于HTTPS需要进行加密和解密操作
- 因此相对于HTTP来说,会有更多的计算和处理开销,会轻微地增加通信的延迟和资源消耗。
总的来说,HTTPS是对HTTP的增强和加密升级,提供了更高的安全性。
在处理敏感信息、进行用户登录/注册、在线支付等场景中,使用
HTTPS
更为安全可靠。
- 而在一些不涉及敏感信息的场景,使用HTTP可以提高性能和简化配置。
HTTPS 大概过程流程讲一下?
HTTPS 的工作流程可以简单描述为以下几个步骤:
客户端发起连接:
- 客户端通过浏览器等应用向服务器发送HTTPS请求。
- 请求的URL以
https://
开头,表明是要使用HTTPS协议进行通信。服务器证书:
- 服务器接收到来自客户端的HTTPS请求后,会将自己的数字证书发送给客户端。
- 证书中包含了服务器的公钥,同时由可信的权威机构(证书颁发机构,
CA
)对服务器的身份进行认证。客户端验证证书:
客户端收到服务器的证书后,会对证书进行验证。
主要包括以下几个步骤:
验证证书的合法性:客户端会检查证书的有效期、签发机构和相关属性,确保证书的合法性。
验证证书的可信性:客户端会检查证书的颁发机构是否被信任,以确保证书是由可信的第三方机构颁发的。
密钥交换:
- 在证书验证通过后,客户端会生成一个随机的对称加密密钥(
session key
),并使用服务器的公钥进行加密。- 然后将加密后的密钥发送给服务器。
会话加密:
- 服务器收到客户端发送的加密密钥后,使用自己的私钥进行解密,得到对称加密密钥(
session key
)。客户端和服务器都会使用这个对称密钥来加密和解密后续的通信数据。
安全通信:
- 客户端和服务器之间的所有通信都会使用对称密钥进行加密和解密。
- 这样,即使有人拦截到通信数据,也无法解密和获取其中的内容。
总的来说,HTTPS的工作流程通过使用数字证书对服务器进行身份验证
- 采用对称加密密钥来加密通信数据,确保了数据传输的安全性和私密性。
这样,即使在公共网络上传输敏感信息,也能够保护用户的隐私和数据安全。
HTTPS 是如何保证通信安全的?
HTTPS保证通信安全主要依赖于两种技术:SSL/TLS协议和HTTP协议。
- 具体来说,HTTPS使用标准的HTTP在应用层进行信息传输
- 但在HTTP下面添加了
SSL/TLS
协议层对数据进行加密,以此来确保数据安全。为了避免数据在传输过程中被替换,比如黑客修改了你的报文内容,但是你并不知道,所以我们让发送端做一个数字签名
把数据的摘要消息进行一个加密,比如 MD5,得到一个签名,和数据一起发送。
- 然后接收端把数据摘要进行 MD5 加密,如果和签名一样,则说明数据确实是真的。