《图解HTTP》读感

前言

如果有一定的计算机网络基础,这本书读起来会比较快,下文是我个人的一些收获和补充,之前博文里写过的内容这里不赘述。

一、HTTP各版本

  1. HTTP/0.9于90年问世,是HTTP协议的最初版本,请求方式只支持GET,并且只能请求HTML格式的资源。
  2. HTTP/1.0在96年公布,至今还被广泛使用着。新增了POST和HEAD请求方式。任何格式的内容都可以发送,包括图像、视频、二进制文件等。HTTP/1.0是短连接的,每次TCP连接只能发送一个请求,当服务器响应后就会关闭这次连接,下一个请求需要再次建立TCP连接。但是网页的内容越来越丰富,需要加载的资源越来越多,多次请求都重新建立TCP连接的成本比较高。为了解决这个问题,有些浏览器在请求时,用了一个非标准的Connection:keep-alive字段,要求服务器不要关闭TCP连接,服务器的响应也要包含这个字段。
  3. HTTP/1.1在97年公布,是目前主流的HTTP版本。新增了一些请求方法,引入了长连接,引入了管道机制,在同一个TCP连接里,客户端可以同时发生多个请求。
  4. HTTP/2.0的目标是改善用户的速度体验。它使用了多路复用的技术。在一个TCP连接里,客户端和服务端都可以同时发送多个请求或响应。增加了服务器推送,服务器可以对一个客户端的请求,发起多个响应,可以推送额外的资源,这样可以减少请求的次数。HTTP/2.0客户端和服务端都要维护一个首部字段表,记录见过的首部字段,如果下次发送报文首部没有变化就不发送首部,如果变化只发送变化了的那部分并且更新表,减少了重复发送。

二、URL、URI

URI是统一资源标识符,用来标识互联网某一资源,URL是统一资源定位符,URL是URI的一种(子集),具有标识功能的同时可以获取资源路径。

三、HTTP存在的问题

  1. 通信使用未加密的明文,内容容易被窃听
  2. 不验证对方身份,可能出现伪装
  3. 无法验证报文完整性,报文可能被篡改

解决方法:
使用HTTPS,在HTTP和TCP之间加一层SSL安全协议(HTTPS使用了SSL和TLS两个协议,有时候统一叫做SSL协议)。SSL协议具有加密、证书、完整性保护的功能。

报文采用对称加密,对称加密的密钥采用非对称加密
通过数字证书验证对方身份
通过消息摘要验证报文完整性

四、对称加密和非对称加密

对称加密:
对称加密指加密和解密使用相同密钥的加密算法。大多数的对称算法中,加密密钥和解密密钥是相同的。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。

非对称加密:
在这里插入图片描述
非对称加密算法中加密、解密的密钥不同,发送方使用接收方公开的公钥加密,接收方使用自己的私钥解密,除了接收方,其他人根据接收方的公钥计算出他的私钥是不可行的,通常非对称加密算法的设计建立在数学难题上。
在这里插入图片描述
SSL利用两者的优势,通信的报文用对称加密,为了防止对称加密密钥在传输过程中被窃听,采用非对称加密算法对对称加密密钥进行处理。

五、数字证书

只有加密算法还不够,因为服务器可能是别人伪装的,SSL使用数字证书验证对方的身份
在这里插入图片描述

六、SSL握手过程

在这里插入图片描述

  1. 客户端发送client_hello报文,服务端回应server_hello报文。
    作用是:双方协商SSL协议的版本、加密算法、密钥长度
  2. 服务端发送certificate报文,报文里包括服务端的公钥证书
  3. 服务端发送server_hello_done报文给客户端,hello消息阶段就此结束
  4. 客户端检查服务器证书的合法性,然后发送client_key_exchange报文,报文通过服务端的密钥进行加密,报文内容是之后会用到的对称加密的密钥
  5. 客户端继续发送change_cipher_spec报文,作用是提示服务器之后的消息使用对称加密密钥加密。
  6. 客户端再发送一个finished报文,报文利用协商好的加密算法、对称密钥进行加密和摘要计算(MAC计算,保证报文完整性),会包含连接开始到现在全部报文的校验值
  7. 如果服务端可以正确解密客户端发来的finished报文,服务端就也发送change_cipher_spec报文和finished报文给客户端,SSL握手完成。之后就可以进行HTTP请求了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江南无故人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值