图解HTTP 笔记(二)

与HTTP协作的web服务器

用单台虚拟主机实现多个域名

  • 虚拟主机:允许一台服务器HTTP服务器搭建多个web站点。
  • 在相同IP地址下,在发送HTTP请求时,必须在host首部内完整指定URI

通信数据转发程序:代理、网关、隧道

这些应用程序可以将请求转发给通信线路上的下一站服务器,并且能接受从那台服务器发送的响应再转发给客户端。

代理

  • 有转发功能的应用程序,位于服务端和客户端之间。
  • 代理不改变URI,会将接受到的请求发送给前方持有资源的目标服务器。
  • via首部字段标记经过的主机信息。

在这里插入图片描述

  • 代理包括缓存代理和透明代理。
  • 缓存代理:代理转发响应时,会预先将资源的副本缓存到代理服务器上,当再次接收到相同资源的请求时,将之前缓存的资源作为响应返回。
  • 透明代理:不对报文做任何加工的代理类型;反正,对报文进行加工的代理称为非透明代理。
  • 使用代理服务器的理由:利用缓存技术减少网络带宽的流量、组织内部针对特定网站的访问控制,以获取访问日志为主要目的。

网关

在这里插入图片描述

  • 为通信线路上的服务器提供非HTTP协议服务。
  • 利用网关能提高通信的安全性,在客户端与网关之间的通信线路上加密。

隧道

在这里插入图片描述

  • 要求建立起一条与其他服务器的通信线路,并使用SSL等加密手段进行通信。
  • 隧道的目的是确保客户端与服务端进行安全通信。
  • 隧道不会解析HTTP请求,则原样中转,会在通信双方断开连接时结束。

保存资源的缓存

在这里插入图片描述
类似于上方的缓存代理,缓存服务器是代理服务器的一种。
缓存服务器可以避免多次从服务器转发资源。

缓存的有效期限

  • 若源服务器资源更新,则缓存服务器会项源服务器确认资源的有效性。若判断缓存失效,则缓存服务器会再次从源服务器上获取新资源。

客户端的缓存

  • 缓存不仅在缓存服务器中,也可以在客户端浏览器中。
  • 客户端缓存称为临时网络文件。缓存有效,则直接从本次磁盘读取。
  • 在有效期限上与缓存服务器性质相同。

HTTP首部

HTTP报文首部

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

HTTP首部字段

HTTP首部字段传递重要信息

  • 首部字段给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容

HTTP首部字段结构

首部字段名:字段值

例如
content-type:text/html
  • 单个字段名可对应多个字段值
  • 若字段重复,不同浏览器处理放肆不同。

HTTP首部字段类型

  1. 通用首部字段

请求报文和响应报文均会使用的首部字段在这里插入图片描述
2. 请求首部字段在这里插入图片描述

  1. 响应首部字段
    在这里插入图片描述
  2. 实体首部字段

请求报文和响应报文均使用的首部字段。
在这里插入图片描述

HTTP通用首部字段

Cache-Control

Cache-Control:private,max-age=0,no-cache

指令参数多选,且用逗号分隔。
在这里插入图片描述
在这里插入图片描述

Cache-Control:public 
Cache-Control:private

在这里插入图片描述

Cache-Control:no cache    //防止返回过期的资源

在这里插入图片描述

Cache-Control:no-store     //暗示请求或响应中包含机密信息
Cache-Control:max-age=64088

在这里插入图片描述

Cache-Control:s-maxage=604800

max-age指令相同,区别在于s-maxage只适用于供多用户使用的公共缓存服务器。
当使用这个指令时则直接忽略max-age指令的处理。

Cache-Control:min-fresh=60    //过了60秒的资源无法作为响应返回

指令要求缓存服务器返回至少还未过指定时间的缓存资源。

Connection

Connection:close

HTTP默认连接为持久连接,该指令表示服务端想明确断开连接。

Connection:不再转发的首部字段名

表示可控制不在转发给代理的首部字段

Data

表明创建HTTP报文的日期和时间

Pragma

发送时同时含有下面两个首部字段

Cache-Control:no-cache
Pragma:no-cache

在这里插入图片描述

Trailer

事先说明在报文主体后记录了那些首部字段,可应用在分块传输编码。在这里插入图片描述

Transfer-Encoding

规定传输报文主体时采用的编码方式,仅对分块传输编码有效。

Upgrade

用于检测HTTP协议及其他协议是否可使用更高的版本进行通信。在这里插入图片描述

via

  • 使用var是为了追踪客户端与服务器之间的请求和响应报文的传输路径
  • 每经过一层代理附加该首部字段信息。在这里插入图片描述

Warning

HTTP警告码
在这里插入图片描述

请求首部字段

在这里插入图片描述

Authorization

在这里插入图片描述

Expect

Expect:100-continue     //等待状态码100响应

If-xxx

附带条件的请求。服务器收到附带条件的请求,只有判断指定条件为真时,才会执行请求。

If-Match

在这里插入图片描述

If-Modified-Since

在这里插入图片描述

If-Range

在这里插入图片描述在这里插入图片描述

Max-Forwards

TRACE方法类似在这里插入图片描述
在这里插入图片描述

Referer

告知服务器请求的原始资源的URI,知道请求的URI从哪个web页面发起,即当前访问URL的上一个URL

User-Agent

将创建请求的浏览器和用户代理名称等信息传达给服务器。

Host

被请求资源的主机和端口号

Host:www.xxxx.com:801

cookie

表示请求者身份

X-Forworded-For

代表请求端的IP,可多个使用逗号隔开。

响应首部字段

Accept-Ranges

Accept-Ranges:bytes

Accept-Ranges:none

ETag

在这里插入图片描述
ETag不论多么细微的变化都会改变其值,但弱ETag只用于提示资源是否相同。

Vary

在这里插入图片描述

WWW.Authenticate

用于HTTP访问认证,告知客户端适用于访问请求URI所指定资源的认证方案。

server

实体首部字段

用于补充内容的更新时间等与实体相关的信息。

Content-Encoding

告知服务器端对实体的主体部分选用的内容编码方式
主要内容编码方式有以下四种

gzip
compress
deflate
identify

Content-MD5

在这里插入图片描述

Content-Range

Content-Range:bytes 5001-10000

为cookie服务的首部字段

cookie指某些网站为了辨别用户身份,进行session跟踪而存储在用户本地终端上的数据,而这些数据通常会进行加密处理

在这里插入图片描述

Set-Cookie

在这里插入图片描述

  • cookie可通过用新的cookie来覆盖过期的cookie,即可实现对客户端cookie的实质性删除操作。
  • path属性安全机制效果较差
  • 不指定domain属性更安全
  • HttpOnly属性可以避免xss利用javascript劫持cookie

其他首部字段

X-Frame-Options

属于HTTP响应首部,用于控制网站内容在其他web网站的Frame标签内的显示问题,主要目的是防止点击劫持的攻击。

X-Frame-Options:DENY  //拒绝


X-Frame-Options:SAMEORIGIN

X-XSS-Protection

  • 属于HTTP响应首部,针对xss的一种对策,用于控制浏览器xss防护机制的开关
  • 需要服务器对DNT作对应的支持
 X-XSS-Protection:0   //xss过滤设置为无效状态
 
 X-XSS-Protection:1    //xss过滤设置为有效状态

DNT

属于HTTP请求首部,do not track

DNT:0  同意被追踪

DNT:1   拒绝被追踪

P3P(在线隐私偏好平台)

  • 属于HTTP响应首部
  • 可以让个人隐私变为一种仅供程序可理解的形式,以达到保护用户的隐私

确保web安全的HTTPS

HTTP的缺点

通信使用明文(不加密),可能会被窃听

  • HTTP本身不具有加密的功能,无法对请求和响应的内容进行加密。
  • 为防止窃听,加密对象有通信的加密和内容的加密。
  • 通信的加密:HTTP协议与SSLTLS组合使用,用SSL建立安全通信线路后,其中与SSL组合使用的HTTP被称为HTTPS或者HTTP over SSL
  • 内容的加密:对HTTP协议传输的内容本身加密,即把HTTP报文进行进行先加密再发送。
  • 内容加密的前提是要求客户端和服务器同时具备加密和解密机制。

不验证对方的身份就可能遭遇伪装

  • HTTP协议不会确认通信方,不管是谁发过来的请求都会返回响应。
  • 无法阻止DoS攻击,无法确认正在通信的对方是否具备访问权限等等。
  • SSL不仅提供加密处理,还提供一种证书的手段,来确认通信方。在这里插入图片描述
  • 证书由值得信赖的第三方机构颁发。

无法证明报文完整性,可能被纂改。

  • 所谓完整性即信息的准确度。
  • 接受的内容可能有误,无法判断。像这样,请求或响应在传输途中遭攻击者拦截并纂改内容的攻击称为中间人攻击。
  • 常用MD5SHA-1等散列值校验以及确认文件的数字签名方法来防止纂改内容。

HTTP+加密+认证+完整性保护=HTTPS

HTTPS

访问HTTPS通信有效的web网站时,浏览器的地址栏内会出现一个带锁的标记,对HTTPS的显示方式会因浏览器的不同而有所改变。

HTTPS是身披SSL外壳的HTTP

  • HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSLTLS协议来代替。在这里插入图片描述
  • 其他应用层上的协议均可配合SSL协议来使用。
  • SSL是当今世界上最为广泛的网络安全技术。

相互交换密钥的公开密钥加密技术

  • SSL采用公开密钥加密的加密处理方式。近代加密方法中加密算法是公开的,而密钥却是保密的。加密和解密均会用到密钥,即只要持有密钥就能解密。
  • 加密和解密同用一个密钥的方式称为共享密钥加密,也叫对称密钥加密。
  • 密钥发送问题:公开密钥加密。即使一组非对称密钥,一把私有密钥,一把公开密钥。发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,使用自己的私有密钥进行解密。
  • HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段使用共享密钥加密方式。
  • 公开密钥加密的处理速度比共享密钥加密较慢。在这里插入图片描述

证明公开密钥正确性的证书

  • 为了证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥,可以使用有数字证书认证机构和其相关机关颁发的公开密钥证书。
  • 数字认证机构颁发公钥证书的流程:在这里插入图片描述
  • EV SSL证书可证明通信一方的服务器其是否规范,也可确认对方服务器背后运营的企业是否真实存在。
  • 拥有EV SSL证书的web网站的浏览器地址栏出的背景色是绿色,而且在地址栏的右侧显示了SSL证书中记录的组织名称以及颁发证书的认证机构的名称。
  • EV SSL证书可防止用户被钓鱼攻击。
  • HTTP中还使用客户端证书,来证明服务器正在通信的对方是预料之内的客户端,作用跟服务器证书相同,但客户端证书只能证明客户端存在,不能证明用户本人的有效性。
  • 独立构建的认证机构——自认证机构颁发的自签名证书是无用的,当浏览器访问该服务器时,会显示无法确认连接安全性或该网站的安全证书存在问题。
  • 大多数浏览器会预先植入备受信赖的认证机构的证书,但有的浏览器会植入中级认证机构的证书,有的浏览器当作正规证书,有的浏览器当作自签名证书。

HTTP的安全通信机制

HTTP的通信步骤

在这里插入图片描述

  1. 客户端发送Client Hello报文开始进行SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件列表(所使用的加密算法以及密钥长度)。
  2. 服务端可进行SSL通信时,会以Server Hello报文作为应答。报文中包含的内容与客户端的的类别相同。服务器的加密组件内容时从接收到的客户端加密组件内筛选出来的。
  3. 服务器发送Certificate报文,报文中包含公开密钥证书。
  4. 服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。
  5. SSL第一次握手结束后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种Pre-master secret的随机密码串,该报文已被步骤3中的公开密钥加密,
  6. 接着客户端发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。
  7. 客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商能否成功以服务器能否正确解密该报文作为判定标准。
  8. 服务器发送同样Change Cipher Spec报文。
  9. 服务器同样发送Finished报文。
  10. 服务器和客户端Finished报文交换完毕之后,SSL连接就算建立完成,通信也会受到SSL的保护,从此开始进行应用层协议的通信,即发送HTTP响应。
  11. 应用层协议通信,即发送HTTP响应。
  12. 最后有客户端端来连接,断开连接时,发送close_notify报文
  13. 最后发送TCN FIN报文来管不与TCP的通信 (这步上图中作了省略)
  • 第十一步中应用层发送数据时会附加一种叫做MAC的报文摘要,MAC能查知报文是否遭到纂改,从而保护报文的完整性。

SSL和TLS

HTTPS使用SSLTLS这两个协议。在这里插入图片描述

  • 为什么不一直使用HTTPS通信?
    因为与纯文本通信相比,加密不严谨速度慢,而且消耗资源较多,能够处理的请求数量较少,且还需要向认证机构狗奶证书。因此,如果是非敏感信息使用HTTP通信。而HTTPS加密只是对一部分敏感信息加密来节约资源。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在人工智能研究中,状态空间法是一种基于解空间的问题表示和求解方法。该方法通过在可能的解空间内寻找一个解来求解问题。状态空间法以状态和算符为基础来表示和求解问题。在传统人工智能问题中,复杂的求解技术都离不开表示与搜索这两个方面的内容,其中状态空间表示是其中的一个重要概念。状态空间法采用试探搜索方法,在某个可能的解空间内寻找一个解来求解问题。图解人工智能第二章学习笔记中可能会涉及到状态空间法的概念和问题状态描述。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [人工智能及其应用——第二章学习笔记(上)](https://blog.csdn.net/JallinRicher/article/details/122752897)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [《人工智能及其应用》课程笔记(二)第2章 知识表示方法](https://blog.csdn.net/qq_46485137/article/details/122101559)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

poggioxay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值