HTTP 和 HTTPS
http
HTTP 是 超文本传输协议 默认端口号 :80 ,连接是无状态的
HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
http是 一个客户端和服务器端请求和应答的标准(TCP) 服务器传输超文本到本地浏览器的传输协议,
它可以使浏览器更加高效,使网络传输减少 , TCP/IP四层模型当中的应用层
应用层(http/ftp) 传输层(tcp/udp) 网络层(IP/ARP) 数据链路层
https
HTTPS 是 http+ssl(安全套接字层) 带有安全套接字层的超文本传输协议 默认端口 443
https 两种用途 1.是建立一个信息安全通道,来保证数据传输的安全,2.另一种就是确认网站的真实性
SSL依靠ca证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
https 比 http 更安全 但是性能更低
HTTP常见请求头
1.Host (主机和端口号), Connection (链接类型),
2 Upgrade-Insecure-Requests (升级为HTTPS请求),
3 User-Agent (浏览器名称),
4 Accept (传输文件类型),
5Referer (页面跳转处),
6 Accept-Encoding(文件编解码格式),
7 Cookie (Cookie),
8x-requested-with
9 :XMLHttpRequest (表示该请求是Ajax异步请求)。
HTTP重要的响应头
Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)
Server服务器应用程序软件的名称和版本
Content-Type响应正文的类型(是图片还是二进制字符串)
Content-Length响应正文长度
Content-Charset响应正文使用的编码
Content-Encoding响应正文使用的数据压缩格式
Content-Language响应正文使用的语言
Content-Range正文的字节位置范围
Accept-Rangesbytes:表明服务器支持Range请求,单位是字节;none:不支持
正文的内容可以用gzip等进行压缩,以提升传输速率
响应状态码(status code)
常见的状态码:
状态码:为3位数字,2XX表示成功,3XX表示资源重定向,4XX表示客户端请求出错,5XX表示服务端出错
常见的状态码:
- 200:成功
- 302:临时转移至新的url
- 307:临时转移至新的url
- 404:找不到该页面
- 500:服务器内部错误
- 503:服务不可用,一般是被反爬
-
1.支持客户/服务器模式。(C/S模式)
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;
5、HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
- 浏览器先向地址栏中的url发起请求,并获取相应
在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,
并获取相应的响应浏览器每获取一个响应就对展示出的结果进行添加(加载),
js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,
并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染
HTTPS的工作原理
-
(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。
Http的缺点
通信使用明文,内容可能会被窃听 —— 加密通信线路
不验证通信方,可能遭遇伪装 —— 证书
无法验证报文的完整性,可能已被篡改 —— 数字签名
Http+加密+认证+完整性保护=Https
**
-
尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:
(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
(4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。
虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:
-
(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。
非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256