细说HTTP和HTTPS那些事~

229 阅读6分钟

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

开始之前先看两张图片 在这里插入图片描述

在这里插入图片描述 一张访问的域名是www.csdn.net, 一张是www.12306.cn 在这里插入图片描述

HTTP和HTTPS的基本概念

1.HTTP:超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,可以使浏览器更加高效,网络传输减少。

2.HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

说一千道一万:HTTPS主要协议作用就是:建立一个信息安全通道,来确保数组的传输,确保网站的真实性。 HTTPS = HTTP + SSL/TLS

在这里插入图片描述

HTTP的八种请求方式

方法描述
GET请求指定的页面信息,并返回实体主体
HEAD类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头
POST向指定URL提交数据或附加新数据
PUTPOST方法很像,也是向服务器提交数据,但是PUT指定了资源在服务器的位置
DELETE删除服务器上的某资源
OPTIONS用于获取当前URL所支持的方法,如果请求成功,会有一个Allow的头包含着“GET,POST”这样的信息
CONNECT将请求链接转换到TCP/IP通道
TRACE被用于激发一个远程的,应用层的请求消息回路

HTTP和HTTPS的发展历史

  1. 发展历史 在这里插入图片描述
  2. http/1和 http/2的区别 在同时请求相同数量的图片时,HTTP/2性能更占优势。 原因如下: 在这里插入图片描述 从图中就能看出来,HTTP/2采用了多路复用:通过单一的HTTP/2发起多重请求-响应消息,多个请求stream共享一个TCP连接,实现多留并行而不是依赖建立多个TCP连接。

HTTP VS HTTPS

HTTP:

  1. http传输的数据都是未加密的,也就是明文的。所以无法保证数据的完整性。
  2. 无状态:协议对客户端没有状态存储,对事物处理没有“ 记忆 ”能力,比如访问一个网站需要反复进行登陆操作。
  3. 无连接:在HTTP/1.1之前,每次请求都需要通过TCP三次握手和四次挥手,和服务器重新建立连接。所以每次都需要重新响应请求,需要耗费不必要的时间和流量。
  4. 客户端发起请求,服务端响应。

HTTPS:

  1. HTTPS协议是由HTTP和SSL协议构建的可进行加密传输和身份认证的网络协议,比HTTP更具有安全性。
  2. HTTPS需要CA证书,费用较高。
  3. 使用不同的链接方式,端口也不同,HTTP的端口为80,HTTPS的端口为443

HTTP工作流程

在这里插入图片描述 当我们从浏览器输入一个url地址之后,第一步就是要对url进行域名解析

DNS概念

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

HTTPS的工作原理

  1. 客户使用https url访问服务器,web服务器建立SSL链接。
  2. web服务器接收到客户端的请求之后,会将网络的安全证书返回给客户端。
  3. 客户端和web服务器端开始协商SSL链接的安全等级,也就是加密等级。
  4. 客户端浏览器通过协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
  5. web服务器通过自己的私钥解密会话公钥。
  6. web服务器通过会话密钥加密与客户端之间的连接。 在这里插入图片描述

HTTPS 的缺点

  1. HTTPS握手阶段比较费时,会使页面加载时间延长,增加耗电。
  2. HTTPS的缓存不如HTTP高效,会增加数据开销。
  3. SSL证书也需要钱,功能越强大的证书费用越高。
  4. SSL证书需要绑定一个IP,布恩在同一个IP上绑定多个域名,IPV4资源支持不了这种消耗。

HTTP状态码

状态码相应类别原因短句
1xx信息性状态码(Informations)服务器正在处理请求
2xx成功状态码(Seccess)请求已正常处理完毕
3xx重定向状态码(Redirection)需要进行额外操作以完成请求
4xx客户端错误状态码(Client Error)客户端原因导致服务器无法处理请求
5xx服务器错误状态码(Server Error)服务器原因导致请求出错

常见的HTTP状态码

  1. 200 OK 服务器已经成功的处理了请求.
  2. 204 No Content 请求成功处理,没有实体的主体返回.
  3. 301 Moved Permantly 请求的资源已经分配到新的URL,以后请求资源应该访问新的URL
  4. 302 Found 请求的资源已经分配到了新的URL,希望客户端本次能使用新的URL访问.与301不同的是这种资源的变更时临时的
  5. 304 Not Modified 表示客户端附带条件请求时,服务器允许请求数据,但是未满足条件. PS:附带条件的请求是指采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部
  6. 400 Bad Request 请求报文中存在语法错误
  7. 403 Forbidden 请求资源的访问被服务器拒绝了
  8. 404 Not Found 服务器上无法找到请求资源
  9. 500 Internal Server Error 服务器端在执行请求时发生错误
  10. 503 Service Unavailable 服务器暂时处于超负载或正在进行停机维护

最后一道面试被问到的问题:200和304的区别

200和304的区别

当客户第一次请求服务器资源,服务器成功返回资源,这时状态码为200。状态码为200的数据包里往往包含着用户从服务器获取的数据。 **每个资源请求完成后,通常会被缓存到客户端,并会记录资源的有效时间和修改时间。**当客户再次请求该资源首先从缓存中查找该资源。如果该资源存在,并且在有效期,则不会重新请求服务器,就不会产生对应的请求数据。 如果不在有效期,客户端会重新向服务器请求数据。服务器会判断修改时间,如果没有修改过,就会返回状态码304,告诉客户端该资源仍然有效,客户端就会直接使用缓存的资源。 针对304的响应,渗透人员可以分析对应的请求包,获取资源路径。如果该资源不限制访问,就可以直接请求获取。否则,就需要进行Cookie劫持,进行获取。