要了解http与https的区别,我们首先要了解什么是http协议HTTP(Hypertext Transfer Protocol)
HTTP(Hypettext Transfer Protocol)超文本传输协议,是基于TCP/IP通信协议来传输数据,HTTP使用统一资源标识符(URI)来传输数据和建立连接。HTTP有三点特性:- HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完可用的请求,并受到客户的应答后,即断开连接。采用这种方法可以节省时间。
- HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用合适的MIME-type内容类型。
- HTTP是无状态:无状态是指协议对于事物处理没有记忆功能。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答比较快。
HTTP共有八种请求方法- GET:请求指定的页面信息,并返回实体主体。
- HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
- PUT:从客户端向服务器传送的数据取代指定的文档的内容。
- DELETE:请求服务器删除指定的页面。
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- OPTIONS:允许客户端查看服务器的性能。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。
HTTP状态码:HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:- 1** :信息,服务器收到请求,需要请求者继续执行操作
- 2** :成功,操作被成功接收并处理
- 3** :重定向,需要进一步的操作以完成请求
- 4** :客户端错误,请求包含语法错误或无法完成请求
- 5** :服务器错误,服务器在处理请求的过程中发生了错误
HTTPS(Hypertext Transfer Protocol Secure)
HTTPS(Hypertext Transfer Protocol Secure)超文本传输安全协议是一种网络安全传输协议。HTTP协议传输的数据都为未加密的,也就是明文,因此使用HTTP协议传输隐私信息非常不安全。HTTP使用80端口,HTTPS使用443端口。HTTPS经由超文本传输协议(HTTP)进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网路服务器的身份验证,保证交换数据的隐私和完整性。这个协议由网景公司提出。 HTTPS与HTTP协议的区别:- HTTPS需要用到CA申请证书,一般免费证书很少,需要交付。
- HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
- http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的 。
- HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议, 要比http协议安全。
那么HTTPS是如何使用SSL/TLS来进行加密的呢TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的具体描述如下:
- 浏览器将自己支持的一套加密规则发送给网站。
- 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发送给服务器,证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
- 浏览器获得网站证书之后浏览器要做以下工作:a : 验证证书的合法性;b : 如果证书受信任,或者用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密;c : 使用约定好的HASH算法计算握手消息,并使用生成的随机数密码对消息进行加密,最后将之前生成的所有信息发送给网站。
- 网站接收浏览器发来的数据之后要做以下的操作:a:使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致
b:使用密码加密一段握手消息,发送给服务器。 - 浏览器解密并计算握手消息的HASH,如果与服务器发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。