HTTP的一些总结

目录

报文

报文方法

响应报文的状态码

中转服务器

HTTPS


​​​​​​​

报文

报文

用于 HTTP 协议交互的信息被称为 HTTP 报文。 请求端(客户端) 的HTTP 报文叫做请求报文, 响应端(服务器端) 的叫做响应报文

 

请求报文

 

请求报文分为报文首部,空行,报文主体。

报文首部分为请求行,首部字段,其他

请求行分为请求方法,请求URI,http协议版本;首部字段分为请求首部字段,通用首部字段,实体首部字段

 

报文主体使用键值对的形式存储发送信息!!!!!!!!!!!!

 

响应报文

响应报文分为报文首部,空行,报文主体

报文首部分为状态行,首部字段,其他

状态行分为http协议版本,状态码;首部字段分为响应首部字段,通用首部字段,实体首部字段

 

报文和实体

HTTP 报文是用于 HTTP 协议通信交互的信息。实体是通信时请求或响应的有效载荷数据。

 

报文分为报文首部,空行和报文主体。

实体分为实体首部字段和实体主体,实体主体是我们要传输的信息

 

实体首部字段包含在报文首部中,实体主体在一般情况下就是报文主体

当报文主体也就是实体主体进行编码的时候,会在原来实体主体的信息上加上相关的编码信息,所以会导致报文主体包括了实体主体和编码信息,这时报文主体不等于实体主体。

 

编码提高传输效率

服务器通过对响应报文返回的结果进行编码能提高传输的效率

 

内容编码

内容编码指明应用在实体内容上的编码格式, 并保持实体信息原样压缩

分块传输编码

在 HTTP 通信过程中,请求的编码实体资源尚未全部传输完成之前,浏览器无法显示请求页面,在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。这种把实体主体分块的功能称为分块传输编码

 

范围请求

可恢复机制(所谓恢复是指能从之前下载中断处恢复下载)需要指定下载的实体范围。指定范围发送的请求叫做范围请求

 

执行范围请求时,会用到请求首部字段Range来指定资源的byte范围 。

 

内容协商

内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。

报文方法

方法是客户端申请访问服务器的不同访问类型。

 

方法类型

 

GET :获取资源

GET 方法用来请求访问已被 URI 识别的资源 ,

URI(统一资源标识符)

URLUniform

Resource Locator, 统一资源定位符)

 

URI 用字符串标识某一互联网资源, 而 URL表示资源的地点

 

 

POST:传输实体主体

POST 方法用来传输实体的主体

 

PUT:传输文件

PUT 方法用来传输文件

 

HEAD:获得报文首部

HEAD 方法和 GET 方法一样,只是不返回报文主体部分。

 

DELETE: 删除文件

DELETE 方法用来删除文件,是与PUT相反的方法。DELETE方法按请求URI 删除指定的资源。

 

OPTIONS:询问支持的方法

OPTIONS方法用来查询针对请求URI指定的资源支持的方法。

 

TRACE:追踪路径

TRACE 方法是让Web服务器端将之前的请求通信环回给客户端的方法。

 

CONNECT:要求用隧道协议连接代理

CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP 通信。

 

响应报文的状态码

状态码的职责是当客户端向服务器端发送请求时,简要描述返回的请求结果状态。借助状态码, 用户可以知道服务器端是正常处理了请求,还是出现了错误。

 

状态码的组成

状态码如200 OK,以3位数字原因短语组成。

 

状态码的类别

 

2XX 成功:2XX 的响应结果表明请求被正常处理了。

200 OK :表示从客户端发来的请求在服务器端被正常处理了

204 No Content :该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。

206 Partial Content :该状态码表示客户端进行了范围请求, 而服务器成功执行了这部分的GET 请求。

 

3XX 重定向:3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。

301 Moved Permanently :永久性重定向该状态码表示请求的资源已被分配了新的 URI, 需要用相同方法重新访问新URI,且要更新书签,也就是说,如果已经把资源对应的URI保存为书签了, 这时应该按Location首部字段提示的URI 重新保存。

302 Found :临时性重定向。该状态码表示请求的资源已被分配了临时的新URI,需要用相同方法重新访问新URI,但不用更新书签

303 See Other :该状态码表示由于请求对应的资源存在着另一个URI,应使用 GET方法定向获取请求的资源。303 状态码和 302 Found 状态码有着相同的功能,但303状态码明确表示客户端应当采用GET方法获取资源。

304 Not Modified :该状态码表示客户端发送附带条件的请求时服务器端允许请求访问资源但未满足条件的情况。304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系。

307 Temporary Redirect :临时重定向。该状态码与302 Found 有着相同的含义。尽管302标准禁止POST 变换成GET,但实际使用时大家并不遵守。307 会遵照浏览器标准,不会从 POST 变成 GET。

 

4XX 客户端错误:4XX 的响应结果表明客户端是发生错误的原因所在

400 Bad Request:该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。

401 Unauthorized :该状态码表示发送的请求需要有通过 HTTP 认证的认证信息。另外若之前已进行过 1 次请求,第二次又出现该状态码,则返回用户认证失败。

403 Forbidden :该状态码表明对请求资源的访问被服务器拒绝了

404 Not Found :该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。

 

5XX 服务器错误:5XX 的响应结果表明服务器本身发生错误。

500 Internal Server Error:该状态码表明服务器端在执行请求时发生了错误

503 Service Unavailable :该状态码表明服务器暂时处于超负载或正在进行停机维护, 现在无法处理请求。

中转服务器

代理

代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器,代理不改变请求URI, 会直接发送给前方持有资源的目标服务器。持有资源实体的服务器被称为源服务器,从源服务器返回的响应经过代理服务器后再传给客户端。

可级联多台代理服务器。请求和响应的转发会经过数台类似锁链一样连接起来的代理服务器。 转发时,需要附加Via 首部字段以标记出经过的主机信息。

 

代理服务器的分类

缓存代理和非缓存代理

代理转发响应报文时,缓存代理会预先将资源的副本(缓存)保存在代理服务器上。当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前缓存的资源作为响应返回

 

透明代理和非透明代理

转发请求或响应时,不对请求报文或响应报文做任何加工的代理类型被称为透明代理

 

为什么要使用代理服务器?

利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的等等

 

网关

不同子网络之间传送数据的时候要经过不同子网络的网关传输。

 

严格来说,代理连接的是两个或多个使用相同协议的应用程序,而网关连接的则是两个或多个使用不同协议的应用程序。网关扮演的是‘协议转换器’的角色,即使客户端和服务端使用的是不同的协议,客户端也可以通过网关来和客户端进行交互

 

 

隧道

隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。 隧道可使用SSL

加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信

 

 

缓存

缓存是指在返回响应报文的时候代理服务器客户端将资源的副本保存起来,下次再次对同样资源的请求时可以不从服务器获取而是直接从代理服务器返回从客户端本地读取。缓存的优点可减少对源服务器的访问,因此也就节省了通信流量和通信时间

 

有缓存也不能保证每次都使用缓存,因为缓存有有效期,当判定缓存过期后,将重新从服务器获取资源数据。

 

HTTPS

HTTP/1.0和HTTP/1.1的主要区别:

HTTP/1.1使用持续连接流水线处理技术

HTTP/1.1增加了一些状态码。

 

 

HTTP的优点

简单,灵活,适用性广。

缺点

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

2、不验证通信方的身份,因此有可能遭遇伪装

3、无法证明报文的完整性,所以有可能已遭篡改

 

 

HTTPS的优缺点

优点:

现行最安全的网络协议,可以最大限度的保护客户端的信息安全。确认网站的真实性。

缺点:

1、速度比http慢。ssl握手加密阶段费时,加大了CPU负载。

2ssl数字证书需要付费

3ssl证书绑定IP地址,不支持一个服务器(一个IP)搭建多个域名的网站

4、某些国家控制CA机构

 

HTTPHTTPS的区别

1、安全性

2、端口不同80/443

 

 

HTTPS

HTTPS 并非是应用层的一种新协议,只是HTTP 和TCP之间的通信接口部分用SSL(Secure Socket Layer安全套接层协议)和TLS(Transport Layer Security安全传输层协议)协议连接

 

加密方法

加了密的报文不是不会被监听,而是监听到的是加密的而不是原有信息。

 

对称加密/共享密钥加密

加密和解密同用一个密钥的方式称为共享密钥加密/对称加密但是以共享密钥方式加密时必须将密钥也发给对方,这时密钥的安全性就没法保证。

 

非对称加密/公开密钥加密

公开密钥加密使用一对密钥,一把叫做私钥,另一把叫做公钥,非对称加密。私钥不能让其他任何人知道,而公钥则可以随意发布,任何人都可以获得

 

过程:

①客户端请求获取服务器端的公钥,服务器发送公钥,因为公钥不怕被监听,所以客户端顺利获取。

②客户端使用该公钥对请求报文进行加密,然后发送请求报文给服务器端,虽然会被监听,但是没有私人密钥监听到也非常难破解,服务器端顺利获得请求。

③服务器端用自己的私钥对请求报文进行解密,得到真正的信息。

但是服务器端往客户端发送报文时就不是安全的了,因为客户端没有私钥

 

 

HTTPS采用混合加密方法

因为公钥加密报文虽然能保证安全性但是效率不及共享密钥加密,但是又不能只用共享密钥或只用公共密钥加密,应充分利用各自的优势。

 

过程

①客户端请求获取服务器端发送的公钥,服务器发送公钥,明文传输。

②客户端使用该公钥对请求报文(该请求报文实际上是自己生成的共享密钥)进行加密,然后发送请求报文给服务器端,这个过程和上边一样,没有私钥只有报文非常难破解。

③服务器端获得报文,用私钥解密后,获得共享密钥,整个过程共享密钥没有被外人破解,而此时双方都已经知道密钥了,以后就直接用共享密钥加密就好

注意这里有漏洞可以让外人也拿到共享密钥:

  1. 客户端向网站服务器请求,服务器把公钥A明文传输给客户端。
  2. 中间人劫持到公钥A,保存下来,把数据包中的公钥A替换成自己伪造的公钥B(它当然也拥有公钥B对应的私钥B’)。
  3. 客户端生成一个用于对称加密的共享密钥X,用公钥B(客户端无法得知公钥被替换了)加密后传给服务器。
  4. 中间人劫持后用私钥B’解密得到密钥X,再用公钥A加密后传给服务器。
  5. 服务器拿到后用私钥A’解密得到密钥X。

这样在双方都不会发现异常的情况下,中间人通过一套“狸猫换太子”的操作,掉包了服务器传来的公钥,进而得到了密钥X。根本原因是浏览器无法确认收到的公钥的合法性,是不是网站自己的,但是我们不能再对公钥进行非对称加密,不然要永远循环下去。

 

数字证书

数字证书用来证明公钥的合法性唯一性

 

数字证书

解决上述中间人拦截的方法就是要让客户端确定自己刚开始接收到的公钥是不是对应服务器传过来的。

①客户端请求获取服务器端发送的公钥。

②服务器在发送公钥前,需要向CA认证机构申领一份带有CA数字签名的数字证书,数字证书里含有证书持有者信息公钥信息等。

CA认证机构用自己的私钥对该数字签名加密后把带有CA数字签名的数字证书明文传给服务器。

④服务器获得此证书后把证书(相当于密钥加服务器信息)明文传给客户端。

客户端从自己的浏览器里获取CA公钥来解密此证书,如果解密得到的数字签名不符合或者数字签名符合但服务器信息对不上,则判定有中间人拦截篡改此证书。如果没有,则像上面一样用服务器公钥传递共享密钥。

 

数字签名:

数字签名是由证书里的信息的hashcode得到的hash

 

如果中间人篡改服务器传给客户端的证书怎么办?

即使它拦截了证书,篡改了公钥,保留了服务器信息,但是数字签名只能解密不能加密,因为中间人没有CA私钥。这样在客户端就会发现根据证书内容使用相同的函数求得的hash值跟解密后的数字签名不同。

如果有其他获得CA认证的证书掉包服务器传给客户端的证书怎么办?

即使它掉包了证书,但是里面的服务器信息和客户端当初请求的服务器不一样,很容易被客户端查出来。如果又把自己的信息改为客户端当初请求的服务器信息,那么数字签名又对不上了。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值