http协议介绍
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。
http协议的优点
- 必有客户端和服务端
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、DELETE、POST。每种方法规定了客户与服务器联系的类型不同。
- 通信速度快:由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
- 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
注:http0.9没有实现持久连接。 http1.0需要自行添加keep-alive参数。http1.1默认持久连接
因为实现了持久连接。所以就可以实现多请求同时发送(管线化)
http的缺点
- 通讯使用明文,未加密,并且 TCP/IP 协议是可能会被窃听的网络,所以通讯内容可能会被窃听
- 没有验证通讯方的身份,因此可能会遭遇伪装
- 没有办法验证报文的完整性,所以可能会被篡改
https协议
http+加密+认证+完整性保护 = https
http直接和tcp通信,但是https是http先和ssl协议通信。然后再ssl和tcp通信
解决明文问题
https解决明文问题是采用混合密钥加密的方法。即并用共享密钥加密和公开密钥加密
ps:共享密钥加密是双方都用相同的密钥加密解密。速度较快。但是不安全。因为攻击者拿到密钥就可以解密信息如des,aes
公开密钥加密是发送者用一个公开密钥加密。接收者用私有密钥解密。安全,但是速度慢
注:https虽然安全。但是加密和解密会占用内存和cpu。相比http慢2-100倍。而且还要付费。对于安全需求不高的网站还是用http
https解决认证问题
- 用户将用户名和密码以post的形式发到服务器
- 服务器发放sessionId绑定用户信息。并返回给客户端
- 客户端接收sessionId并保存cookies。下次发送请求时就把cookies发送给服务器。服务器验证是否是同一用户
https解决数据完整性问题
摘要算法
数字摘要是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。“数字摘要“是https能确保数据完整性和防篡改的根本原因。
明文 --> hash运算 --> 摘要 --> 密钥加密 --> 数字签名
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。