HTTP协议
HTTP 1.0和 HTTP 1.1区别
1.连接方面:http1.0 默认使用非持久连接,而 http1.1 默认使用持久连接。http1.1 通过使用持久连接来使多个 http 请求复用同一个 TCP 连接,以此来避免使用非持久连接时每次需要建立连接的时延。 2.资源请求方面,在 http1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,http1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分。 3.http1.1 相对于 http1.0 还新增了很多请求方法,如 PUT、HEAD、OPTIONS 等。
HTTP 1.1 和 HTTP 2.0 的区别
1.二进制协议:2.0是彻底的二进制协议,而1.1的报文的头信息必须是文本 2.多路复用:2.0复用tcp连结,避免了“队头阻塞”的问题。(队头阻塞是由 HTTP 基本的“请求 - 应答”模型所导致的。HTTP 规定报文必须是“一发一收”,这就形成了一个先进先出的“串行”队列,如果前一个请求处理太慢,就会导致后边的请求一起等待,浪费了时间成本。)
输入URL
1.解析URL:判断输入是否合法,不合法就放入搜索引擎。判断非法字符,如果有则进行转义 2.缓存判断: 判断请求的资源是否在缓存里,如果不在,向服务器发起新的请求 3.DNS解析:把输入的URL解析成为服务器的IP地址 4.TCP三次握手: SYN是同步的意思,ACK是确认的意思。(DDos攻击:不断发送SYN,但不进行下一步,会导致服务器崩溃。) 5.发送HTTP请求: 6.响应HTTP请求: 7.页面渲染 8.TCP四次挥手:客户端和服务器都可以主动发起关闭请求。此处引用B站蛋老师的一张图 四次挥手主要是可能服务端还有未传输完毕的数据,需要两次确认
keep-alive
HTTP1.0 中默认是在每次请求/应答,客户端和服务器都要新建一个连接,完成之后立即断开连接,这就是短连接。当使用Keep-Alive模式时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接,这就是长连接
HTTP3.0
HTTP/3基于UDP协议实现了类似于TCP的多路复用数据流、传输可靠性等功能,这套功能被称为QUIC协议。
HTTP缓存
强缓存: Expires:缓存过期时间,Expires=max-age + 请求时间,需要和Last-modified结合使用。 cache-control:
- max-age 指定一个时间长度,在这个时间段内缓存是有效的,单位是s。
- public 表明响应可以被任何对象(发送请求的客户端、代理服务器等等)缓存。
- private 表明响应只能被单个用户(可能是操作系统用户、浏览器用户)缓存,是非共享的,不能被代理服务器缓存。
- no-cache 强制所有缓存了该响应的用户,在使用已缓存的数据前,发送带验证器的请求到服务器。
- no-store 禁止缓存,每次请求都要向服务器重新获取数据。
协商缓存(对比缓存):服务器根据http头信息中的Last-Modify/If-Modify-Since或Etag/If-None-Match来判断是否命中协商缓存。浏览器发送请求和资源标识时,如果是最新资源,返回304,直接从缓存里拿数据。如果不是最新资源,则返回200、最新资源和新的资源标识。
HTTP状态码
一、2xx(成功)
(1)200:成功
二、3xx(重定向)
(1)301:永久重定向。表示请求的资源已经分配到了新的URL (2)302:临时重定向。 (3)304:与协商缓存相关。和重定向无关
三、4xx(错误状态码)
(1)400:请求报文存在语法错误 (2)404:表示在服务器上没有找到请求的资源
四、5xx(服务器错误)
(1)500:表示服务器端在执行请求时发生了错误 (2)503:表明服务器暂时处于超负载或正在停机维护,无法处理请求
HTTPS
HTTPS与HTTP
相当于加了一个安全层SSL/TLS,协议TLS/SSL具有身份验证、信息加密和完整性校验的功能。
TLS/SSL的工作原理
TLS/SSL的功能实现主要依赖三类基本算法:散列函数hash、对称加密、非对称加密。
- 基于散列函数验证信息的完整性
- 对称加密算法采用协商的秘钥对数据加密
- 非对称加密实现身份认证和秘钥协商
对称加密是:双方使用同一秘钥加密。是1对1的。无法保证秘钥传输的安全性。 非对称加密:有两个秘钥,一个公钥,一个私钥。把公钥公开,私钥保密。想通讯的客户,使用公钥对数据加密,我们可以使用私钥解密,就可以保护数据的安全。但是这样速度很慢。
TLS/SSL的工作方式就是客户端使用非对称加密与服务器进行通信,实现身份的验证并协商对称加密使用的秘钥。(这样也不一定是安全的的,可能会存在一个中间人,截取了对方发给我们的公钥,然后将他自己的公钥发送给我们,当我们使用他的公钥加密后发送的信息,就可以被他用自己的私钥解密。然后他伪装成我们以同样的方法向对方发送信息,这样我们的信息就被窃取了) 所以就有了数字证书:首先使用一种 Hash 算法来对公钥和其他信息进行加密,生成一个信息摘要,然后让有公信力的认证中心(简称 CA )用它的私钥对消息摘要加密,形成签名。最后将原始的信息和签名合在一起,称为数字证书。当接收方收到数字证书的时候,先根据原始信息使用同样的 Hash 算法生成一个摘要,然后使用公证处的公钥来对数字证书中的摘要进行解密,最后将解密的摘要和生成的摘要进行对比,就能发现得到的信息是否被更改了。
网络模型
一、OSI七层模型
- 应用层:为用户直接提供各种网络服务。(比如发送邮件,发送消息等)
- 表示层:对应用层的数据进行编码和转换。
- 会话层:建立、管理和终止表示层实体之间的通信会话。
- 传输层:定义传输方式TCP或者UDP
- 网络层:IP协议层,根据IP地址找到相应的路径,传递数据
- 数据链路层:网络层交下来的 IP 数据报封装成帧,并在链路的两个相邻节点间传送帧,每一帧都包含数据和必要的控制信息。
- 物理层:传输介质
二、TCP/IP五层协议
相当于把OSI模型的应用层、表示层、会话层整合为一层,取名为应用层。其余相似
|