一.什么是http和hhtps
简介
http又称超文本传输协议,应用十分广泛,用户web浏览器与服务器之间传递消息,不过有一点是,http协议传输方式并没有加密,使用明文传输,安全性并没有那么高,容易被攻击者截取到web浏览器和服务器之间传输的消息。所以一般,银行业务,密码,支付等等不能使用http协议。http协议一般默认端口是80
至于https呢,这个呢,那就比较高级了
https又称超文本传输安全协议,解决了http数据传输过程中的安全问题,https=http+ssl,然后依靠ssl去验证服务器的身份,并且在web浏览器和服务器之间进行加密通信。一般企业都是使用https的,为了数据安全一些。所以https的两种主要作用是:a.确保数据传输过程中的安全性。b.确让网安的真实性。https的一般默认端口是443。
http的交互方式
a.get:向服务器获取url指定的资源,比如我在浏览器输入一个网页地址,一般这时服务器会给我返回我刚才想得到的网址。
b.post:向服务器提交数据,比如我现在在前端页面输入账号,密码用于登录验证,希望登录成功,这时就是post方式,将账号,密码发送到服务器。
c.head:和get方式相似,但是head方式服务器不返回实际内容。我们可以使用head查看数据资源是否被修改。
d.put:向指定的url存储文件。比如服务器用请求部分创建一个url的文档,如果已经存在,我们则可以把该已经存在的资源替换掉。
e.trace:让服务器回显请求中的内容。可以用于判断是否数据传输发现问题
f.delete:删除url指定的服务器上的内容
g.options:用于客户端像服务端询问是否支持特定的选项
h.:connect:用于客户端和目标地址之间建立一个tcp通道
http的响应状态码
有一个版本问题需要注意一下下,响应中的版本号不一定要与请求中的版本号一样,但是大的版本号不能高于请求中的大的版本号。比如请求的是http1.0版本的话,服务器不能使用http2.0进行响应,但是可以使用http1.1进行响应。
http的状态响应码以及说明:
100~199:表示已收到请求,但未完成操作,用于通知客户端
200~299:请求中的操作已成功完成,提一下这里,并不是200就一定没有问题,有些api把全部响应都设置成200,如果需要判断需要进一步使用接口测试进行判断
300~399:告知客户端执行额外的操作,通常用于跳转
400~499:客户端请求由错误
500~599:服务端出现了问题
http的报文
http的报文分为:请求报文和响应报文,而报文又可以分为报文头部和报文主题两个部分。
报文头部:请求或响应的内容和属性
报文主体:应该被发送的数据
让我们看看前面抓的包
二.http的工作原理
http协议是基于tcp/ip协议上的协议,http是在应用层的协议。
前面提到,http是由请求和响应两个部分组成的,并且http是由客户端先发起请求,服务器返回响应。
http是一个无状态的协议,web浏览器和服务器之间不需要建立长久的连接。如web发送一个请求,服务器响应一次以后,连接就自动关闭了。
TCP/IP简介
TCP/IP是一种网络协议套件,它是互联网通信的基础。TCP/IP是一种用于将数据从一个计算机传输到另一个计算机的协议,它定义了计算机在网络中如何建立连接、传输数据和断开连接。TCP/IP包含了一系列协议,其中最常用的是TCP和IP。TCP负责将数据分割成小的数据包,并通过网络传输,确保数据的可靠性和有序性。而IP则负责将数据包发送到正确的目标地址,并在网络中寻找最佳路径。
计算机的五层体系架构
-
物理层(Physical Layer):负责在物理介质上进行比特流的传输,例如电缆、光纤、无线信道等。
-
数据链路层(Data Link Layer):负责将比特流划分为帧,并提供可靠的数据传输,处理差错校验和流量控制,以及物理地址的寻址。
-
网络层(Network Layer):负责进行数据包的路由选择和转发,实现不同网络之间的互连,解决数据的传输路径问题。
-
传输层(Transport Layer):提供端到端的数据传输服务,负责将数据划分为合适的大小并进行可靠的传输控制,同时提供多路复用和分解功能。
-
应用层(Application Layer):提供面向用户的服务接口,包括各种应用程序和协议,例如HTTP、FTP、SMTP等。
这五个层次一起工作,使得不同计算机之间可以进行数据的交换和通信。如果我们听说四层的话,那么一般情况下是物理层和数据链路层结合了叫做网络接口层。
http的工作过程
1.地址解析:如果是http://xxx.com:8080/index.html
分解一下协议名,主机名,端口,路径等部分
协议名:http
主机:xxx.com
端口:8080
路径:index.html
这里就需要dns解析域名得到ip了
2.封装http请求:把主机的消息,封装成一个http的请求数据包
3.封装成tcp包,tcp三次握手
4.客户端发送请求
5.服务器响应
6.断开tcp连接
http的优缺点
优点
1.快速,简单
2.免费,广泛使用,商业验证成功
缺点
1.明文通信,数据可能被窃取
2.数据不加密
3.身份不验证
三.https的工作原理
https的工作过程
1.客户端向服务端发送https的请求,请求携带了客户端支持的加密算法和哈希算法
2.服务器收到了请求,选择客户端所支持的加密算法和哈希算法
3.服务器将算法和证书发送到客户端
4.客户端对服务器端的证书进行验证
5.客户端将加密后的发送给服务端
6.服务器解密得到私钥,通过密码把网页进行对称加密,发送到客户端
7.客户端用之前生成的密钥解密,查看网页
https的优缺点
优点
1.使用https可以确保数据发送到正确的客户机和服务器
2.https协议是http+ssl一起使用的,可以进行加密传输,比http安全,可以防止数据在传输过程中一些安全问题,比如窃取数据,篡改数据等等。
3.可以减少一定量的网络攻击,减少维护成本,注意只是减少一部分,并不是一定完全安全
缺点
1.它需要花钱!!!功能越多,费用越大
2.它需要去进行验证等等,加载时间就会变长,用户体验感可能会变差
3.ssl的加密也是有限的,也不是十全十美的
4.https的流量损耗变大,数据开销变大
四.http和https的区别
HTTP | HTTPS | |
---|---|---|
定义 | HTTP是超文本传输协议,用于在客户端和服务器之间传输数据 | HTTPS是HTTP的安全版本,使用SSL(安全套接层)或TLS(传输层安全)协议对数据进行加密传输 |
加密 | 不加密,数据以明文形式传输 | 使用SSL或TLS协议对数据进行加密,确保数据安全 |
URL | 使用http://前缀 | 使用https://前缀 |
端口号 | 默认端口号为80 | 默认端口号为443 |
安全性 | 数据传输过程不安全,可能被拦截和篡改 | 数据传输过程安全,可以防止数据被窃取或篡改 |
使用场景 | 适用于一般的网站、博客等不涉及敏感信息的场景 | 适用于涉及用户密码、信用卡信息等敏感信息的场景,如电子商务、银行网站等 |
SSL证书 | 不需要SSL证书 | 需要有效的SSL证书,由证书颁发机构颁发 |
性能 | 数据传输速度较快 | 数据传输速度较慢,由于加密和解密的过程 |
SEO | 不利于搜索引擎优化 | 更有利于搜索引擎优化 |
资源消耗 | 资源消耗较少 | 资源消耗较多,加密和解密过程需要占用服务器资源 |
五.http2和http/1.1的区别
http2是http的最新版本,与之前的http/1.1版本相比,有以下区别:
-
多路复用:http2支持多路复用,允许在一个连接上同时发送多个请求和接收多个响应。这样可以提高并发和性能,并减少延迟。
-
头部压缩:http2使用hpack算法对请求和响应头部进行压缩,减少了数据传输的大小,提高了性能。
-
服务器推送:http2允许服务器主动推送资源到客户端,减少了客户端的请求次数,提高了加载速度。
-
优先级:http2引入了流和帧的概念,允许客户端设置请求资源的优先级,提高了用户体验。
总的来说,https提供了更高的安全性,http2在性能和效率上有所提升。在实际应用中,可以同时使用https和http2来提供更安全和高效的数据传输。
六.http改成https以后怎么进行测试(功性健安)
http改成https以后怎么进行测试。
从测试的几个模块看看
功能测试
1.http改成https的url有没有成功的改变成https
2.是否可以正常的进入网页
3.产品要求是否满足
接口测试
关于cookie的操作:cookie中的secure设置以后只能使用https
1.是否有接口文档,如果没有抓包的话需要安装证书,抓个包试一下儿
2.使用postman进行接口测试的话,需要打开设置,关闭ssl认证,试一下(抓包状态码是200也不一定对,接口测试验证一下先)
3.可能还会设计到接口关联,接口压测等等的问题
性能测试
1.对网站进行压测,查看压测情况下网站的表现(别随随便便压别人网站)
2.要对比http和https前面的响应时间的比较,确保不会影响用户
兼容性测试
1.使用该url地址,登录不同的浏览器查看是否成功,是否支持https协议
2.各个浏览器是否网页显示正常,前端加载是否受到了影响
安全测试
1.证书是否合法合规
2.扫描是否存在安全漏洞