HTTP和HTTPS,你真的知道吗?

说到HTTP,让我们首先从他的定义说起:
那什么是HTTP呢?HTTP是一种超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口,这个端口指的是服务器的端口,而客户端使用的端口是动态分配的。当我们没有指定端口访问时,浏览器会默认帮我们添加80端口。HTTPS默认端口为443。

HTTP的特点

1.支持客户/服务器模式

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。常用请求方法有GET、POST、HEAD。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小、因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。

4.无连接:每次请求一次,释放一次连接。无连接表示每次连接只能处理一个请求,优点是节省传输时间,实现简单,无连接也就是短连接。长连接解决效率问题,当建立好一个连接后,可以多次请求,缺点是容易造成占用资源不释放的问题。当HTTP协议头部中字段Connection:keep-alive表示支持长链接。

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则必须重传,这样可能导致每次连接传送的数据量增大;但如果服务器不需要先前信息时应答就较快。为了解决HTTP协议无状态产生了两种用于保持HTTP连接状态的技术cookie和session

这里提到了cookie和session,那么就先了解一下cookie和session以及他们的区别吧

cookie和session的区别:

作用:HTTP协议属于一个无状态协议(因为HTTP是短连接,服务端没有保持用户状态,表示下次请求服务端不知道是哪个客户端)可以结合session和cookie来实现服务端保持用户会话状态。cookie和session都是用来跟踪浏览器用户身份的会话方式

区别:session是服务端保存信息 cookie是客户端保存信息

服务端是登录成功时,保存sessionid和session对象,并响应set-cookie头,值为sessionid,客户端保存该cookie信息,每次请求都携带该cookie信息,服务端根据sessionid键可以查找到对应值得session对象。

cookie是通过客户端保持状态的解决方案,cookie就是由服务器发给客户端的特殊信息,这些信息以文本文件的方式存放在客户端,之后客户端每次向服务器发送请求时都会带上cookie

当用户使用浏览器访问一个支持cookie的网站的时候,用户会提供包括用户名在内的个人信息且提交至服务器,当服务器向客户端回传相应的超文本时也会发回这些个人信息,个人信息会存放在HTTP响应头(Response Header);当浏览器接收到来自服务器的响应后,会将信息存放在统一的位置

session是通过服务器来保持状态的解决方案,在session被创建后,可以向session中增加内容,这些内容只会保存在服务器中,发到客户端只有sessionid;当客户端再次发送请求的时候,会将这个sessionid带上,服务器接收到请求之后会依据sessionid找到相应的session,从而再次使用,保持用户状态。

HTTP请求的方法

HTTP1.0定义了三种请求方法:GET,POST和HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。

GET:请求指定的页面信息,并返回实体主体。

HEAD:类似get请求,只不过返回的响应中没有具体的内容,用于获取报头。

POST:向指定资源提交数据进行处理请求(例如提交表单或上传文件)数据被包含在请求体中;POST请求可能会导致新的资源建立(和/或)已有资源修改。

PUT:向指定资源位置上传其最新内容。

DELETE:请求服务器删除Request-URL所标识的资源。

CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

OPTIONS:允许客户端查看服务器的性能,返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送"*"的请求来测试服务器的功能性。

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

HTTP工作原理:

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或错误代码、服务器信息、响应头部和响应数据。

HTTP的原理:

​ 1.客户端浏览器通过网络与服务器建立连接(通过TCP实现,一般端口号为80),建立连接后客户端可发送请求给服务器(请求的格式为:统一资源标识符(URL)、版本协议号,后边是MIME信息包括请求修饰符、客户机信息和许可内容)。

​ 2.服务器接收到请求后会返回一定的响应(其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容)

HTTP的缺点:

1.使用明文通信,一些重要的内容会被窃听

2.不能验证对方的身份,可能是伪造的信息

3.无法验证报文的完整性,有可能已经被修改

HTTPS如何解决HTTP的问题:

HTTPS只是在HTTP的基础之上增加了加密处理、认证机制和完整性保护,即HTTPS=HTTP+加密+认证+完整性保护。

加密:HTTPS通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。

数据一致性:数据在传输过程中不会被窃听者所修改,用户发送的数据会完整的传输到服务端,保证用户发的是什么,服务器接收的是什么。

身份认证:是指确认对方的真实身份,也就是证明是自己,它可以防止中间人攻击并建立用户信任。

HTTPS不是应用层的一种新协议,只是HTTP协议的改进(HTTP协议中的部分通信接口被ssl/tls协议代替),通常HTTP直接与TCP进行通信,当使用ssl协议时则先与ssl通信,再由ssl和TCP通信。

HTTPS的原理:

1.客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接

2.Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端

3.客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级

4.客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站

5.Web服务器利用自己的私钥解密出会话密钥

6.Web服务器利用会话密钥加密与客户端之间通信

HTTP和HTTPS的区别:

1.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议

2.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443

3.http的连接很简单,是无状态的;https协议是由SSL+Http协议构建的可进行加密传输、身份验证的网络协议

SSL和TLS

SSL是"Secure Sockets Layer",叫做"安全套接层",出现就是为了解决HTTP传输不安全的问题;SSL被标准化之后改为TLS(“Transport Layer Security”),叫做"传输层安全协议"

SSL协议是位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持,分为两层:

SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议之上,为高层协议提供数据封装、压缩、加密等基本功能的支持

SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前、通讯双方进行身份认证、协商加密算法、交换加密密钥

SSL协议提供的服务有:

1.认证用户和服务器,确保数据发送到正确的客户端和服务器

2.加密数据以防止数据中途被窃取

3.维护数据的完整性,确保数据在传输过程中不被改变

加密

加密分为对称加密、非对称加密和混合加密

对称加密

又被称为私钥加密,即信息的发送方和接收方使用同一个秘钥去加密和解密信息,采用了对称密码编码技术

优点:算法公开、计算量小、加密速度快、加密效率高

缺点:

​ 1.数据传送之前,发送方和接收方需要协商好秘钥,两方都要保存好秘钥,任意一方不慎将秘钥泄露,信息加密就会变得不再安全

​ 2.每对用户每次使用对称加密算法时,都需使用其他人不知道的唯一秘钥,会使得收发双方拥有的钥匙数量巨大,密钥管理成为双方的负担

3.对称加密算法一般不能提供信息完整性的鉴别,无法验证发送者和接受者的身份

常见对称加密算法:DES、3DES、IDEA、RC4、RC5、RC6和AES

非对称加密

非对称加密算法需要使用两个秘钥:公钥和私钥;

公钥和私钥是一对,如果用公钥对数据加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,只有用对应的公钥才能解密

实现过程:甲方生成一对秘钥将其中一把作为公用密钥向其他方公开;得到该公钥的乙方使用该秘钥对机密信息进行加密后再发送给甲方;甲方再用自己的专用秘钥对加密后的信息进行解密。甲方只能用专用秘钥解密由其公钥加密后的信息

​ 优点:安全 缺点:速度比较慢

常见非对称加密算法:RSA、ECC(移动设备用)、DSA(数字签名)

混合加密

结合对称加密和非对称加密的优缺点,混合使用两种加密算法,TLS用的这种

实现过程:首先使用非对称加密,用来传输对称加密的秘钥,以此可解决对称加密传输过程不安全的问题;然后用随机数产生对称算法,再用公钥加密。对方拿到密文后用私钥解密,取出会话秘钥

摘要算法(Hash算法)

Hash算法特别在于是一种单向算法,用户可以通过hash算法对目标生成信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。Hash算法常用在不可还原的密码存储、信息完整性校验

可以把Hash算法理解成一种特殊的压缩算法,它能够把任意长度的数据压缩成一种固定长度的字符串,像是给数据加了一把锁

常见摘要算法:MD2、MD4、MD5、HAVAL、SHA

有些网站可以将MD5加密后的密码还原,其实是把一些常用的MD5原文和密文进行了保存,它的还原只是在数据库中查找出来的,对于比较麻烦的密码采用MD5加密后是还原不出来的

认证

如何确定自己的唯一性,上述过程中出现过公钥加密,私钥解密;这个私钥只有自己一个人所有,能够辨别唯一性,我们可以把顺序调换一下,变成私钥加密,公钥解密。使用私钥再加上摘要算法,就能够实现数字签名,从而实现认证

综合使用对称加密、非对称加密和摘要算法,实现了加密、数据认证、认证,但也不是完全安全了,还存在一个数字签名的认证问题,因为私钥是自己的,公钥是谁都可以发布的,所以必须发布经过认证的公钥,才能解决公钥信任问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值