HTTP协议基础

121 阅读25分钟

目录

一、web安全基础

1、web安全概述

1、1web应用架构

C/S(Client/Server)架构

B/S(Browser/Server)架构

1、2web架构

1.2.1.Web架构基础

1.2.2Web安全组件

1.2.3Web架构安全策略

1.2.4Web架构模式

二、HTTP基础

1、1HTTP协议解析

1、1、1报文结构与特点

1.1.1.1报文结构

1.1.1.2特点

1.1.2.发起http请求

1.1.3.HTTP协议详解

1.1.2.1.HTTP请求与响应

1.1.2.1.1.HTTP请求

1.1.2.1.2HTTP响应

1.1.2.2HTTP请求方法

1.1.2.3HTTP协议版本与请求方法

3、HTTP状态码

4、URI和URL的区别

5、HTTPS

5.1.HTTP中存在的问题

5.2.HTTPS简介

5.3.SSL简介

5.4.HTTPS和HTTP的区别

HTTP(HyperText Transfer Protocol)

HTTPS(HyperText Transfer Protocol Secure)


一、web安全基础

1、web安全概述

        Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用,Web应用已经融入到日常生活中的各个方面:网上购物、网络银行应用、证券股票交易、政府行政审批等等。在这些Web访问中,大多数应用不是静态的网页浏览,而是涉及到服务器侧的动态处理。此时,如果Java、PHP、ASP等程序语言的编程人员的安全意识不足,对程序参数输入等检查不严格等,会导致Web应用安全问题层出不穷。

        HTTP与HTTPS的区别:http协议传输数据时不进行加密,https协议传输数据时会对数据进行加密。

1、1web应用架构

WEB应用架构:C/S(client/server)、B/S(borwer/server)

C/S(Client/Server)架构

定义:C/S架构,即客户端/服务器架构,是一种分布式应用架构。在这种架构中,应用程序被分为两部分:客户端和服务器端。客户端运行在用户的设备上(如PC、手机等),负责用户界面的展示和与用户的交互;服务器端则负责处理数据逻辑和存储数据。

特点

        客户端需要安装专用的软件。

        客户端和服务器之间通过特定协议进行通信。

        适用于对性能和安全性要求较高的场景,如游戏、大型数据库应用等。

B/S(Browser/Server)架构

定义:B/S架构,即浏览器/服务器架构,是随着互联网技术的发展而兴起的。在这种架构中,用户通过Web浏览器(如Chrome、Firefox等)访问服务器上的Web应用。服务器处理用户的请求并返回相应的HTML页面或数据。

特点

        客户端无需安装特定软件,只需有Web浏览器即可。

        客户端和服务器之间通过HTTP/HTTPS等协议进行通信。

        易于维护和升级,用户只需更新服务器端的应用即可。

        适用于广泛的互联网应用,如网上购物、网络银行、社交媒体等。

1、2web架构

1.2.1.Web架构基础

Web架构通常包括前端(客户端)、后端(服务器端)以及它们之间的通信协议(如HTTP/HTTPS)。在网安领域,Web架构的安全性不仅取决于这些基本组件,还涉及一系列的安全设备和策略。

1.2.2Web安全组件

Web架构中,常见的安全组件包括:

  1. 防火墙(Firewall)

    • 位于网络入口处,用于防止未经授权的访问和数据传输。
    • 通过包过滤、应用代理等方式,对网络流量进行监控和限制,保护网络免受恶意攻击。
  2. 入侵检测系统(IDS)

    • 实时监测网络流量的安全组件,能够检测出网络中存在的异常行为和潜在威胁。
    • 通过收集和分析网络中的数据包、日志等信息,发现潜在的攻击行为,并及时发出警报或采取防护措施。
  3. 入侵预防系统(IPS)

    • 一种主动防护设备,能够在发现潜在威胁时自动采取措施,防止攻击行为的发生。
    • 通常采用深度包检测等技术,对网络流量进行实时监测和过滤,确保网络的安全性。
  4. Web应用防火墙(WAF)

    • 专门针对Web应用的安全组件,通过识别和过滤恶意请求,防止常见的Web应用攻击(如SQL注入、跨站脚本攻击等)。
    • WAF可以部署为硬件型、软件型或云WAF,根据实际需求选择合适的部署方式。
  5. 安全事件管理(SIEM)

    • 综合性的安全组件,能够对各种安全设备和日志进行统一管理和分析。
    • 实时收集、处理和分析网络中的日志和事件信息,帮助管理员及时发现潜在的安全威胁和异常行为。

1.2.3Web架构安全策略

除了上述安全组件外,网安的Web架构还需要遵循一系列的安全策略,包括:

  1. 访问控制

    • 实施严格的访问控制策略,确保只有授权用户才能访问Web应用。
    • 使用身份验证和授权机制,如用户名和密码、OAuth、JWT等。
  2. 数据加密

    • 对敏感数据进行加密处理,防止数据在传输和存储过程中被窃取或篡改。
    • 使用HTTPS协议对Web应用进行加密传输,确保数据的安全性。
  3. 安全更新和补丁管理

    • 定期更新Web应用、操作系统和安全组件的补丁,以修复已知的安全漏洞。
    • 建立有效的补丁管理流程,确保所有系统都保持最新的安全状态。
  4. 日志和监控

    • 记录和分析Web应用的日志信息,以便及时发现和响应潜在的安全威胁。
    • 使用日志分析工具(如Wireshark、Fiddler等)对网络流量进行监控和分析。

1.2.4Web架构模式

Web架构中,还涉及一些特定的架构模式,如:

  1. CDN(内容分发网络)

    • 提高Web应用的访问速度,并隐藏真实源IP地址,增加攻击难度。
    • CDN节点可以缓存静态资源,减轻源服务器的压力。
  2. 反向代理

    • 作为Web应用的前端服务器,处理来自客户端的请求,并将其转发给后端的Web服务器。
    • 反向代理可以提供负载均衡、缓存和SSL卸载等功能。
  3. 负载均衡

    • 将客户端的请求分发到多个后端服务器上,以提高Web应用的可用性和性能。
    • 负载均衡器可以根据多种策略(如轮询、最少连接数等)来分发请求。

中间件是介于应用系统和系统软件

二、HTTP基础

        随着web2.0时代的到来,互联网从传统的C/S架构转变为更加方便快捷的B/S架构。B/S即浏览器/服务器结构,就像我们访问过的所有网站,客户机只需要一个浏览器就可以访问

      当客户端与web服务器进行交互时,就存在web请求,这种请求都基于统一的应用层协议(http协议)交互数据。

1、1HTTP协议解析

        HTTP即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从web服务器传送到web浏览器。

1、1、1报文结构与特点

1.1.1.1报文结构

        HTTP报文分为请求报文和响应报文两种类型,它们的结构相似,但含义不同。

请求报文

        请求行:包含请求方法、请求URL和HTTP协议版本。

        请求头部:包含多个字段,用于告知服务器关于请求的各种信息。

        空行(可选):用于分隔请求头部和请求数据。

        请求数据(可选):包含要发送给服务器的数据,如表单数据、文件内容等。

响应报文

        状态行:包含HTTP协议版本、状态码和状态信息。

        响应头部:包含多个字段,用于描述响应的各种属性信息,如内容类型、内容编码、长度和连接方式等。

        空行(可选):用于分隔响应头部和响应数据。

响应数据:包含服务器返回给客户端的实体内容,如HTML文档、图片、视频等。

1.1.1.2特点

HTTP协议具有以下几个特点:

  1. 无连接:每次请求都是独立的,服务器处理完请求后立即关闭连接(除非特别指定为keepalive)。
  2. 无状态:协议对于事务处理没有记忆能力,每次请求都需要提供完整的请求信息。
  3. 面向对象:可以传输任何类型的数据对象。
  4. 无阻塞:不会限制客户端的请求数量和大小,使得服务器可以处理大量的请求。
  5. 可缓存:允许客户端缓存服务器响应的内容,以提高响应速度和减少网络流量。

1.1.2.发起http请求

        当在浏览器地址栏中输入一个URL,并按回车键后就发起了这个HTTP请求,很快就会看到这个请求的返回结果。

        URL(统一资源定位符)也被称为网页地址,是互联网标准的地址。URL的标准格式如下:协议://服务器IP[:端口]/路径/[?查询]。例如http://192.168.4.200/sqli-labs/Less-1/?id=2就是一个标准的URL。

        借助浏览器可以快速发起一次HTTP请求,如果不借助浏览器应该怎样发起HTTP请求呢?其实可以借助很多工具发起http请求,例如,在linux系统中的curl命令。严格地说,浏览器也属于HTTP工具中的一种。

        在windows中,也可以用curl.exe工具发起请求,通过curl+URL命令就可以简单地发起一个HTTP请求,非常方便。但windows没有自带curl.exe,打开curl.se/download.html可

进行下载

编辑

安装完成后打开cmd界面向百度发起http请求,返回这个html数据,如图所示。如果想查看访问URL后服务器返回的HTTP请求头,加上-I参数即可:

编辑

图1:百度页面的html数据

编辑

        图2:添加-I参数获取http响应头

        此时脱离了浏览器来获取服务器响应和HTML数据,可以发现,就某些方面而言,浏览器在http协议方面只不过多了html渲染的功能,让用户看到更直观的界面。

1.1.3.HTTP协议详解

        HTTP协议定义了客户端(如浏览器)与服务器之间的通信规范,以实现对各种资源(如HTML页面、图像、音频、视频等)的传输和访问。它是一个无状态的应用层协议,即不会保存客户端与服务器之间的历史记录,每个请求都是独立的。HTTP协议采用客户端-服务器架构模式,客户端向服务器发送请求,服务器返回相应的响应。也就是说,http请求只能由客户端发起,而服务器不能主动向客户端发送数据。

        HTTP遵循请求/应答模型,web浏览器向web服务器发送请求时,web服务器处理请求并返回适当的应答,如图3所示:

客户端连接到服务器

客户端(如浏览器)通过URL向服务器的HTTP端口(默认为80)建立一个TCP套接字连接。

1、发送HTTP请求

        客户端通过TCP套接字向服务器发送一个文本的请求报文。

        请求报文包括请求行、请求头部、空行(可选)和请求数据(可选)四个部分。

        请求行包含请求方法(如GET、POST)、请求URL和HTTP协议版本。

        请求头部包含多个字段,用于告知服务器关于请求的各种信息,如客户端类型、支持的内容格式、是否支持压缩等。

2、服务器接受请求并返回HTTP响应

        服务器接收到请求报文后,解析请求,找到对应的请求资源(如果找不到则发送错误信息)。

        服务器将找到的资源封装在HTTP响应报文中,并通过TCP套接字发送给客户端。响应报文包括状态行、响应头部、空行(可选)和响应数据四个部分。

        状态行包含HTTP协议版本、状态码和状态信息。状态码用于表示请求的成功或失败,如200表示成功,404表示未找到资源。

3、释放连接

        如果连接模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接。

        如果连接模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求。

1.1.2.1.HTTP请求与响应
1.1.2.1.1.HTTP请求

HTTP请求包括三部分,分别是请求行(请求方法)、请求头(消息报头)和请求正文。下面是HTTP请求的一个例子:

POST /login.php HTTP /1.1   //请求行
HOSTwww.xxser.com         //请求头
User-AgentMozilla/5.0 (windows NT 6.1;rv:15.0) Gecko/20100101 Firefox/15.0
                            //空白行,代表请求头结束
Username=admin&password=admin  //请求正文

        HTTP请求行的第一行即为请求行,请求行由三部分组成,该行的第一部分说明了该请求是POST请求;该行的第二部分是一个斜杠(/login.php),用来说明请求的是该域名根目录下的login.php;该行的最后一部分说明使用的是HTTP1.1版本。

        第二行至空白行为HTTP中的请求头(也被称为消息头)。其中,HOST代表请求的主机地址,User-Agent代表浏览器的标识。请求头由客户端自行设定。

HTTP请求的最后一行为请求正文,请求正文是可选的,它最常出现在POST请求方法中。

1.1.2.1.2HTTP响应

与HTTP请求对应的是HTTP响应,HTTP响应也由三部分内容组成,分别是响应行、响应头(消息报头)和响应正文(消息主题)。

HTTP/1.1 200 OK                      //响应行
Date:Thu,28 FEB 2013 07:36:47  GMT   //响应头
ServerBWS/1.0
Content-Length4199
Content-type:text/html;charset=utf-8
Cache-Controlprivate
ExpiresThu28 Feb 2013 073647 GMT
Content-Encoding:gzip
Set-cookie:H_PS_PSSID=2022_1438_1944_1788;path=/;domain=.xxser.com
Connection:keep-Alive
                     //空白行,代表响应头结束
                     //响应正文或者叫消息主题
    index.html
    ....

HTTP响应的第一行为响应行,其中有http版本(http/1.1)、状态码(200)以及消息“ok”。

第二行至末尾的空白行为响应头,由服务器向客户端发送。

消息报头之后是响应正文,是服务器向客户端发送的HTML数据。

1.1.2.2HTTP请求方法

HTTP请求的方法非常多,其中GET、POST最常见。

(1)GET

        请求内容:GET方法通常用于请求服务器发送资源(如网页、图片等)。虽然GET请求可以包含查询字符串(URL中?后面的部分),用于传递一些参数给服务器,但这些参数是附加在URL上的,并且受到URL长度限制(不同浏览器和服务器有不同的限制,但通常认为最大长度约为2048个字符)。

        安全性:由于GET请求的参数都包含在URL中,因此这些参数会被记录在浏览器的历史记录中,也可能被缓存或保存在服务器日志中。这可能导致敏感信息(如密码、个人身份信息等)的泄露,因此GET请求不适合用于传输敏感数据。

        缓存:GET请求是可缓存的,这意味着如果两个请求的URL完全相同(包括查询字符串),那么浏览器或服务器可能会返回缓存的响应,而不是重新生成一个新的响应。

        幂等性:GET请求被认为是幂等的,即多次执行相同的GET请求应该返回相同的结果(不考虑缓存和过期的情况)。

        GET方法用于获取请求页面的指定信息(以实体的格式)。如果请求资源为动态脚本(非HTML),那么返回文本是web容器解析后的HTML源代码。而不是源文件。例如请求index.jsp,返回的不是index.jp的源文件,而是经过解析后的HTML代码。

如下HTTP请求:

GET /index.php?Id=1 HTTP/1.1
HOST:www.xxser.com

        使用GET请求index.php,并且id参数为1,在服务器端脚本语言中可以选择性地接收这些参数,比如id=1&name=admin,一般都是由于开发者内定好的参数项目才会接收,比如开发者只接收id参数项目,若加了其他参数项,如:

index.php?I=1&username=admin    //多个参数项以“&”分隔

        服务器端脚本不会理会加入的内容,依然只会接收id参数,并且去查询数据,最终向服务器端发送解析过的HTML数据,不会因为你的干扰而乱套。

(2)HEAD

        用途:类似于GET请求,但服务器只返回响应的头部信息,不返回实际的数据内容。

        特点:HEAD请求通常用于检查资源的元数据,如资源是否存在、资源的最后修改时间等。HEAD请求也是幂等的。

        HEAD方法除了服务器不能在响应报文中返回消息主体外,其他都与GET方法相同。此方法经常被用来测试超文本链接的有效性、可访问性和最近的改变。攻击者编写扫描工具时,就常用此方法,因为只测试资源是否存在,而不用返回消息主题,所以速度一定是最快的。一个经典的HTTP HEAD请求如下:

HEAD /index.php HTTP/1.1
 HOST:www.xxser.com

(3)POST

        请求内容:POST方法用于向服务器提交数据,这些数据包含在请求体中,而不是附加在URL上。因此,POST请求可以发送大量数据,不受URL长度限制的限制。

        安全性:由于POST请求的数据包含在请求体中,这些数据不会显示在URL中,也不会被记录在浏览器的历史记录中(除非用户手动保存)。因此,POST请求相对GET请求来说更加安全,更适合用于传输敏感数据(尽管仍然需要通过HTTPS等加密协议来保护数据的安全)。

        缓存:POST请求通常不会被缓存,因为每次POST请求都可能会改变服务器上的资源状态。

        幂等性:POST请求本身不是幂等的,因为多次执行相同的POST请求可能会导致服务器上的资源状态发生不同的变化(例如,多次提交表单可能会导致数据库中插入多条记录)。然而,在实际应用中,可以通过设计来确保某些POST操作是幂等的。

        POST方法也与GET方法相似,但最大的区别在于,GET方法没有请求内容,而POST是有请求内容的。POST请求最多用于向服务器发送大量的数据。GET虽然也能发送数据,但是有大小(长度)的限制,并且GET请求会将发送的数据显示在浏览器端,而POST则不会,所以安全性相对来说高一点。

例如,上传文件、提交留言等,只要是向服务器传输大量的数据,通常都会使用POST请求。一个经典HTTP POST请求如下:

POST /login.php HTTP/1.1
 HOST:www.xxser.com
 Content-Length:26
 Accept:text/html,applicationxhtml+xml,application/xml;q=0.9,*/*;q=0.8
 Origin:http://home.2cto.com
 User-Agent:Mozilla/5.0 (windows NT 6.1) Applewebkit/537.17 (KHTML,like Gecko)
 Chrome/24.0.1312.57 safari/537.17 SE 2.X MetaSr 1.0
 Content-Type:application/x-www-form-urlencoded
 Accept-Language:zh-CN,zh;q=0.8
 Accept-Charset:GBK,UTF-8;q=0.7,*;q=0.3
 User=admin&pw=123456789

用POST方法向服务器请求login.php,并且传递参数user=admin&pw=123456789。

(4)PUT

        用途:用于向服务器发送数据以更新现有资源。如果资源不存在,则创建新的资源。

        特点:与POST类似,但PUT请求通常是幂等的,即多次执行相同的PUT请求不会产生不同的结果。PUT请求也包含请求体,其中包含了要更新的数据。

        PUT方法用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将会用此请求中的数据替换原先的数据,作为指定资源的最新修改版。如果请求指定的资源不存在,将会创建这个资源,且数据位请求正文,请求如下:

PUT /input.txt
HOST:www.xxser.com
Content-Length:6

这段HTTP PUT请求将会在主机根目录下创建input.txt,内容为123456。通常情况下,服务器都会关闭PUT方法,因为他会为服务器建立文件,属于危险的方法之一。

(5)DELETE

        用途:用于请求服务器删除指定的资源。

        特点:DELETE请求不包含请求体,只通过URL指定要删除的资源。DELETE请求是幂等的,因为多次执行相同的DELETE请求应该产生相同的结果(即资源被删除)。

        DELETE方法用于请求源服务器删除请求的指定资源。服务器一般都会关闭此方法,因为客户端可以进行删除文件操作,属于危险方法之一。

(6)TRACE

        用途:用于回显服务器收到的请求,主要用于测试和诊断。

        特点:TRACE请求会将服务器收到的请求原样返回给客户端,包括请求头、请求体等。TRACE请求通常用于检查请求在服务器中的处理路径和状态。

TRACE方法被用于激发一个远程的应用层的请求消息回路,也就是说,回显服务器收到的请求。TRACE方法允许客户端去了解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断。但此方法非常少见。

(7)CONNECT

        用途:用于建立一个到服务器的隧道,通常用于HTTPS连接。

        特点:CONNECT请求通常不是由客户端直接发出的,而是由代理服务器在需要时发出的。它允许客户端通过代理服务器与服务器建立加密的TCP连接。

HTTP1.1协议规范保留了connect方法,此方法是为了用于能动态切换到隧道的代理。

(8)OPTIONS

        用途:用于获取服务器针对特定资源所支持的HTTP请求方法。也可以用于检查服务器性能或进行跨域资源共享(CORS)的预检请求。

        特点:OPTIONS请求不包含请求体,服务器在响应中会列出针对请求资源的所有支持的方法。

        OPTIONS方法被用于请求获得由URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。HTTP OPTIONS请求如下:

OPTIONS /HTTP/1.1
HOST:www.xxxser.com
Allow:OPTIONS,TRACE,GET,HEAD,POST
Server:Microsoft-IIS/7.5
Public:OPTIONS,TRACE,GET,HEAD,POST
X-Powerd-By:ASP.NET
Date:Sun,14 Jul 2013 15:50:58
Content-Length:0

(9)PATCH

        用途:用于对资源进行部分修改。与PUT不同,PATCH请求只更新资源的部分内容,而不是替换整个资源。

        特点:PATCH请求包含请求体,其中指定了要修改的资源部分和新的值。PATCH请求通常不是幂等的,因为多次执行相同的PATCH请求可能会产生不同的结果(取决于修改的内容和资源的当前状态)。

以上为HTTP/1.1标准方法,但HTTP中的请求方法还不止这些,例如WebDAV。

1.1.2.3HTTP协议版本与请求方法

HTTP/1.0:定义了GET、POST和HEAD三种请求方法。

HTTP/1.1:在HTTP/1.0的基础上增加了PUT、DELETE、OPTIONS、TRACE和CONNECT等请求方法,并引入了持久连接(Keep-Alive)等特性。

HTTP/2:基本沿用了HTTP/1.1的请求方法,但对协议进行了优化,提高了传输效率和速度。引入了多路复用、头部压缩和服务器推送等新特性。

HTTP/3:基于QUIC协议实现,继续使用HTTP/2的请求方法,并改进了传输层,使用UDP代替TCP以提高传输速度和可靠性。

三、HTTP状态码

当客户端发出HTTP请求,服务器接收后,会向客户端发送响应信息,其中,HTTP响应中的第一行中,最重要的一点就是HTTP状态码,内容如下:

HTTP/1.1 200 OK

此状态码为200,在HTTP协议中表示请求成功。HTTP协议中的状态码由三位数字组成,第一位数字定义了响应的类别,且只有以下5种:

①、1xx:信息提示,表示请求已成功被接收,继续处理。其范围为100~101。
②、2xx:成功,服务器成功地处理了请求,其范围为200~206
③、3xx:重定向,重定向状态码用于告诉浏览器客户端,它们访问的资源已被移动,
并告诉客户端新的资源地址位置。这时,浏览器将被重新对新资源发起请求。
其范围为300~305。
④、4xx:客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求,或者最常见的是,请求一个不存在的URL。其范围为400~415。
⑤、5xx:有时候客户端发送了一条有效请求,但web服务器自身却出错了,可能是web服务器运行出错了,或者网站都挂了。5xx就是用来描述服务器内部错误的,其范围为500~505。

常见状态码描述如下:

200:客户端请求成功,是最常见的状态
302:重定向。
404:请求资源不存在,是最常见的状态。
401:请求未经授权。
400:客户端请求有语法错误,不能被服务器所理解。
403:服务器收到请求,但是拒绝提供服务
500:服务器内部错误,是最常见的状态。
503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

四、URI和URL的区别

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

URI:Uniform Resource Identifier 统一资源标识符

URL:Uniform Resource Location 统一资源定位符

URI 是用来标示 一个具体的资源的,我们可以通过 URI 知道一个资源是什么。

URL 则是用来定位具体的资源的,标示了一个具体的资源位置。互联网上的每个文件都有一个唯一的URL。

五、HTTPS

5.1.HTTP中存在的问题

请求信息明文传输,容易被窃听截取。
数据的完整性未校验,容易被篡改
没有验证对方身份,存在冒充危险

5.2.HTTPS简介

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

5.3.SSL简介

SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。

5.4.HTTPS和HTTP的区别

HTTP(HyperText Transfer Protocol)

定义:HTTP是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是Web上数据交换的基础。

特点

        明文传输:HTTP协议在传输数据时不对数据进行加密,因此存在数据被窃听的风险。

        无状态:HTTP协议本身是无状态的,即服务器不保留客户端的状态信息。

        可扩展:HTTP/1.1之后,通过扩展头部字段等方式支持了更多的功能。

HTTPS(HyperText Transfer Protocol Secure)

定义:HTTPS是HTTP的安全版本,在HTTP的基础上增加了SSL/TLS协议层,用于加密客户端和服务器之间的数据传输。

特点

        数据加密:HTTPS使用SSL/TLS协议对数据进行加密和解密,确保数据传输的安全性。

        验证身份:HTTPS还通过证书机制验证服务器的身份,防止中间人攻击。

        安全性更高:由于数据加密和身份验证的机制,HTTPS比HTTP更加安全。

码字不易,您的点赞是对我最大的鼓励和支持!