赞
踩
在网络技术中,URI(Uniform Resource Identifier,统一资源标识符)和URL(Uniform Resource Locator,统一资源定位符)是两个非常基本的概念,它们都用于在网络上标识资源,但它们之间存在一些区别:
URI(统一资源标识符):
https://example.com/path?query=123
是一个URI。URL(统一资源定位符):
https://example.com/path?query=123
是一个URL,它告诉你如何通过HTTPS协议访问example.com上的某个资源。总结来说,每个URL都是URI,但不是每个URI都是URL。URI更广泛,它还包括URN,而URN仅仅标识资源的名称,不提供定位信息。例如,urn:isbn:0451450523
是一个URN,用于标识特定的书籍,但并不提供获取书籍的具体位置。
概念:将域名转换为ip的分布式系统
考点号来分隔,代表不同层次,越靠右层级越高
递归查询:DNS客户端只需要发送一个查询请求,就可以等待完整的解析结果
迭代查询:DNS客户端通过向上级DNS服务器发送请求,获取更高级的域名服务器地址,向其发送请求,直到获得完整的解析结果
总结:递归查询适合普通用户和客户端,迭代查询适用于DNS服务器之间的通信
简单:基本报文格式为header+body,头部信息是key-value简单文本的形式
灵活和易于扩展:协议中的各种请求方法、URL\URI、状态码、头字段等每个组成部分没有被定死,允许自行补充;在应用层,下层可以随意变换;HTTPS是在http和tcp之间添加了ssl/tsl安全传输层,HTTP/3则是把TCP换成了基于UDP的QUIC
无状态:服务器不会去记忆HTTP的状态,可以减轻服务器负担
明文传输:信息透明易被窃取
不安全:通信使用明文;不验证身份、无法证明完整性
应用广泛且跨平台
只支持GET,只能返回HTML格式
第一个正式版本
引入请求头和响应头,支持多种请求方法和状态码
不支持持久连接
提出了长连接,客户端和服务端任意一端没有明确提出断开连接,则保持tcp连接
管道网络传输:解决请求的队头堵塞;可以同时发送多个请求,服务器必须按照接受请求的顺序处理,会造成响应队头堵塞
基于HTTPS;为改善HTTP1.1而提出,同时兼容了HTTP1.1
在语法方面做了很多改变,基本改变了HTTP报文传输
HPACK
压缩算法对请求响应头部进行压缩,减少了传输的头部数据量,降低了延迟。特性 | 改进 | HTTP1存在问题 |
---|---|---|
头部压缩(HPACK) | 使用HPACK 压缩算法对请求和响应的头部进行压缩,减少了传输的头部数据量,降低了延迟。HPACK算法:静态字典(为高频出现的字符串和字段建立一张静态表),动态字典(生效的前提,必须同一个连接,重复传输完全相同的HTTP头部)、Huffman编码(压缩算法) | 1. 含有很多固定字段 2. 大量的请求和相应的报文有很多字段值重复 3. 字段是ASCII编码,效率低,需要改成二进制编码 |
二进制帧 | 将数据分割成二进制帧进行传输,主要有头信息帧(Headers Frame)和数据帧(Data Frame),还可以使用位运算,增加数据传输的效率。 | HTTP1文本格式降低了传输效率 |
并发传输 | 引入了Stream概念,多个Stream可以复用在一条TCP连接上。每个HTTP请求用独一无二的Stream ID来标识,使得接收端可以通过Stream ID有序组装成完整的HTTP消息。不同Stream的帧可以乱序发送,允许并行交错地发送请求和响应。 | |
服务器推送 | 服务器可以对一个客户端请求发送多个响应,即服务器可以在没有客户端明确请求的情况下,向客户端推送额外的资源。 |
但是 HTTP/2 仍然存在着队头阻塞的问题,只不过问题是在传输层
客户端发送的请求必须是奇数号Stream,服务器主动推送的则是偶数号。
服务器推送资源时,通过帧中的Promise Stream ID
告诉客户端包体的位置
HTTP1.1 基于请求-响应模型。同一个连接中,HTTP完成一个事务(请求与响应),才能处理下一个事务。即:再发出请求等待响应的过程种是没办法做其他事情的,会造成【队头阻塞】问题。
HTTP2通过Stream这个设计(多个Stream复用一条TCP连接,达到并发的效果),解决了【队头阻塞】的问题, 提高了HTTP传输的吞吐量。
HTTP2在访问HTML的时候主动推送CSS文件,减少消息传递次数
关键:Stream
队头阻塞:TCP是字节流协议
TCP与TLS的握手时延迟
网络迁移需要重新连接
HTTP/3 把TCP协议改成UDP,基于QUIC协议
零RTT连接建立:允许在首次连接时进行零往返时间连接连接建立,减少连接延迟
无队头阻塞:使用UDP协议传输护数据时,一个连接上的多个stream没有依赖,一个丢失并不会影响后续的处理
连接迁移:允许在网络切换时,将连接迁移到新的IP,从而减少连接的中断时间
向前纠错机制:每个数据包包含了部分其他数据包的内容,因此少量丢包时可以通过其他包重组数据;通过牺牲数据上限减少数据重穿
基于UDP在应用层实现了QUIC协议,有类似于TCP的连接管理、拥塞窗口、流量控制的网络特性,使UDP变得可靠
在协议内部包含了TLS1.3,自己的帧会携带TLS里面的记录,仅需一个RTT就可以同时完成建立连接和密钥协商;在第二次连接时,应用数据包可以和QUIC握手消息一起发送,达到0-RTT
浏览器判读命中资源是否有效命中强缓存,如果命中则直接读取,不需要进行通讯
Expires强缓存
:使用原理是判读本地时间和时间戳,若本机时间不准则容易出问题,基本已废弃
Cache-Control强缓存
:http1.1中增加该字段,单位是秒
定义:通过服务端告知客户端是否可以使用缓存
当请求响应码是304时,代表可以使用本地缓存的资源
Last-Modified
和If-Modified-Since
的协商缓存Last-Modified
字段Cache-Control:no-cache
Last-Modified
时候,会在下次的请求标头中携带字段If-Modified-Since
也就是服务器第一次修改给他的时间,之后的每次请求都会带上此字段进行对比,状态码200说明说明资源无新更改,304走缓存ETag
的协商缓存解决了上面缓存的缺陷,将比较时间戳的形式改成了比较文件指纹(根据文件内容算出唯一哈希值)
过程
1.
缺点
采用非对称加密的方式交换会话密钥,后续则不再使用
通信过程中,全部使用对称加密的会话密钥方式加密
使用原因:对称加密运算速度快,密钥必须保密;非对称加密解决密钥交换问题,但是速度慢
摘要算法只能保证内容不被修改,不能保证发送者身份;计算机采用非对称加密来解决
数字签名
解决问题:缺少身份验证的过程,会存在中间人篡改公钥
定义:是数字证书的验证过程的一部分,确保数字证书是由可信的证书颁发机构签发,并最终连接到根证书,形成一条链条
根证书:信任链的顶端,也称根CA证书,是数字证书体系中的根基,有操作系统或者浏览器内置
中间证书颁发机构:在信任链中,根证书下方可能有一个或多个CA,数字证书由中间CA签发
服务器证书:在最底层,由中间CA签发,包含了服务器公钥和相关信息,需在客户端验证的过程中被验证
端口号:HTTP是80,HTTPS是443
HTTPS在进行完TCP三次握手之后,还需进行SSL/TSL的握手过程,才可进入加密报文传输
HTTPS协议需要向CA中心申请数字证书,保证服务器身份可靠
客户端请求:客户端发送加密通信请求(ClientHello),与服务器建立连接。
服务器响应:服务器生成一对公私钥,并将公钥提交给CA机构。CA使用自己的私钥对服务器的公钥进行加密,生成CA数字证书。
证书发送:服务器通过响应(ServerHello)将CA数字证书发送给客户端。
证书验证:客户端使用内置的CA公钥解密并验证数字证书是否合法,提取出服务器的公钥。如果验证失败,客户端会发出警告。
生成会话密钥:客户端使用服务器的公钥生成一个随机密钥(会话密钥),并将加密后的密钥发送给服务器。
服务器解密:服务器用私钥解密该随机密钥,获得会话密钥。
加密通信:双方使用会话密钥进行加密通信,确保数据的安全传输。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。