http和https的区别

http和https的区别

一、http协议是位于应用层的协议,在了解http和https的区别之前首先了解一下http的组成部分主要有哪些以及其传输过程中的整体流程和需要注意的关键点。

** HTTP请求报文主要由请求行、请求头部、请求正文3部分组成**
以下是wireshark抓出来的一段HTTP请求报文,可以观察里面有字段信息

GET /admin_ui/rdx/core/images/close.png HTTP/1.1
Accept: */*
Referer: http://xxx.xxx.xxx.xxx/menu/neo
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: xxx.xxx.xxx.xxx
Connection: Keep-Alive
Cookie: startupapp=neo; is_cisco_platform=0; rdx_pagination_size=250%20Per%20Page; SESSID=deb31b8eb9ca68a514cf55777744e339

HTTP响应报文主要由状态行、响应头部、响应正文3部分组成
以下是wireshark抓出来的一段HTTP响应报文

HTTP/1.1 200 OK
Bdpagetype: 1
Bdqid: 0xacbbb9d800005133
Cache-Control: private
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html
Cxy_all: baidu+f8b5e5b521b3644ef7f3455ea441c5d0
Date: Fri, 12 Oct 2018 06:36:28 GMT
Expires: Fri, 12 Oct 2018 06:36:26 GMT
Server: BWS/1.1
Set-Cookie: delPer=0; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=1433_21112_18560_26350_27245_22158; path=/; domain=.baidu.com
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked
 
<!DOCTYPE html>
<!--STATUS OK-->

重点记忆一下常见的状态码和http的传输流程

1xx:指示信息–表示请求已接收,继续处理
100 --客户端必须继续发出请求
101-客户端要求服务器转换HTTP协议版本。
2xx:成功–表示请求已被成功接收、理解、接受
200—OK
204–请求收到,但返回信息为空
206–服务器已经完成了部分用户的GET请求
3xx:重定向–信息不完整需要进一步补充
300 — 请求资源在多处可得到。
301—永久重定向,隐式重定向。
302 临时重定向,显示重定向。
304:客户端请求一个有缓存的资源,服务器返回304告诉客户端,自上次请求后,资源并没有更新,原本的缓存可以继续使用。
4xx:客户端错误–请求有语法错误或请求无法实现
401—未授权 403—禁止访问。 404 –找不到。409:对当前资源状态,请求不能完成
5xx:服务器端错误–服务器未能实现合法的请求
500内部服务器错误,501未实现, 502网关错误,503服务不可用,504 网关超时。

http传输的一次完整的流程(重要):

1、根据域名查询域名的IP地址,DNS解析。
2、TCP连接
3、发送HTTP请求
4、服务器处理请求并返回HTTP报文
5、浏览器解析渲染页面
6、连接结束。
在这里插入图片描述

对于流程中第一点DNS寻址其流程为:
先查找浏览器缓存,如果没命中,查询系统缓存,即hosts文件。
如果没命中,查询路由器缓存。
如果没命中,请求本地域名服务器解析域名,没有命中就进入根服务器进行查询。
没有命中就返回顶级域名服务器IP给本地DNS服务器。
本地DNS服务器请求顶级域名服务器解析,没有命中就返回主域名服务器给本地DNS服务器。
本地DNS服务器请求主域名服务器解析域名,将结果返回给本地域名服务器。
本地域名服务器缓存结果并反馈给客户端。

对于第二点和第六点即——HTTP传输流程中连接和结束就是其TCP三次握手与四次挥手过程,这里简单的放入两个流程图,可以根据流程图进行回忆:

三次握手流程:
在这里插入图片描述
四次挥手流程:
在这里插入图片描述

二、HTTP与HTTPS的区别:

1、HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
2、HTTP协议运行在TCP之上,传输的内容都是明文。HTTPS运行在SSL/TLS(运行在TCP之上)之上,内容加密。
3、连接端口不一样,http是80,https是443.
4、http连接简单,没有状态,https是ssl加密的传输,身份认证的网络协议,更安全。

HTTPS在传统的HTTP和TCP之间加了一层用于加密解密的SSL/TLS层;采用 对称加密和非对称加密结合的方式来保护浏览器和服务端之间的通信安全。对称加密:加密和解密都是同一个密钥。非对称加密:密钥成对出现,分为公钥和私钥,公钥和私钥之间不能互相推导,公钥加密需要私钥解密,私钥加密需要公钥解密。

http传输的一次完整的流程:
浏览器使用Https的URL访问服务器,建立SSL链接;
1、发送非对称加密的公钥A给浏览器
2、客户端(SSL/TLS)解析证书(无效会弹出警告)
3、生成随机值(这个相当于传送数据的密钥),作为对称加密的密钥B。
4、浏览器使用服务器返回的公钥A,对自己生成的对称加密密钥B进行加密,得到密钥C。
5、浏览器将密钥C发送给服务器
6、服务器使用自己的私钥D对接受的密钥C进行解密,得到对称加密密钥B。
7、将信息和密钥B混合在一起进行对称加密
8、将加密的内容发送给客户端
9、客户端用密钥B解密信息
在这里插入图片描述
加密过程使用了对称加密和非对称加密。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值