http(hyper text transfer protocol,超文本传输协议),用于在web服务器和浏览器之间传输html(超文本标记语言)的协议。http协议以明文传输内容,如果攻击者街区了传输报文,就可以直接获取其中的信息。
为了解决http协议明文传输的缺陷,https(hyper text transfer protocol over secure socket layer,安全套接字层超文本传输协议)应运而生。https在http的基础上加入了ssl协议,ssl依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
http
http基于tcp/ip通信协议,一般用于B/S架构。http使用URI来传输数据和建立连接
- URI:Uniform Resource Identifiers,统一资源标识符,标示一个具体的资源,我们可以通过URI知道一个资源是什么
- URL:Uniform Resource Location,统一资源定位符,定位具体的资源,标示了一个具体的资源位置
http报文
请求报文
1、请求行:包括请求方法、URL、协议/版本
2、请求头
3、请求正文
响应报文
1、状态行
2、响应头
3、响应正文
http的特点
1、支持客户端/服务端模式,是一种请求/响应模式的协议
2、简单快速:客户端向服务器请求服务时,只需传送请求方法和路径,请求方法如GET、POST等
3、灵活:允许传输任意类型的数据对象,类型由Content-Type标记
4、无连接:限制每次连接只处理一个请求,完成请求和应答后就断开连接。这个特点不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,Cookie和Session
5、无状态:对于事物处理没有记忆,后续处理需要前面的信息, 则必须重传
http建立连接的过程(TCP3次握手和4次挥手)
三次握手
报文主要字段:
- 序号:表示发送的数据字节流,确保TCP传输有序,对每个字节编号
- SYN:连接序号的标识,用户建立连接,SYN=1表示请求连接
- ACK:确认序号的标识,ACK=1表示确认号有效,ACK=0表示报文不含确认序号信息
- 确认序号:发送方期待接受的下一序列号,接受成功后的数据字节序号+1,只有ACK=1时有效
- FIN:结束标识,用于释放连接,FIN=1表示关闭本方数据流
建立TCP连接时,需要客户端和服务器共发送3个包
1、客户端发送请求标识SYN=1和初始序号seq=x。服务器收到后知道客户端发送正常,自己接收正常
2、服务器发送请求标识SYN=1,发送确认标识ACK=1,发送自己的序号seq=y,发送客户端的确认序号ack=x+1。客户端收到后知道自己发送、接收正常,服务器也发送、接收正常
3、客户端发送确认标识ACK=1,发送自己的序号seq=x+1,发送服务器的确认序号ack=y+1。服务器收到后,知道自己发送、接收正常,客户端发送、接收正常
四次挥手
1、客户端发送结束标识FIN=1,序号seq=u,进入fin-wait-1状态
2、服务器发送确认标识ACK=1,序号seq=v,确认序号ack=u+1,进入close-wait状态
3、客户端进入fin-wait-2状态。服务器继续发送结束标识FIN=1,确认标识ACK=1,序号seq=w,确认序号ack=u+1,进入last-ack(最后确认)状态
4、客户端发送确认标识ACK=1,序号u+1,确认序号w+1,进入time-wait。服务器收到后立即close,客户端经过2个最长报文段寿命后close。
为什么客户端最后还要等待2msl?
客户端需要保证最后一次发送的ACK报文到服务器,如果服务器未收到,可以请求客户端重发。
https
https是http的安全版,在http下加入ssl层。https协议的主要作用有两种:
1、简历一个信息安全通道,保证数据传输安全
2、确认网站的真实性
和http的区别
1、https协议需要到ca申请证书
2、http是明文传输协议,https是具有安全性的ssl加密传输协议
3、http和https使用完全不同的连接方式,端口也不一样,前者用80端口,后者用443端口
https建立连接
1、客户端使用https的url访问服务器,请求建立连接
2、服务器将网站的证书信息(包含公钥)发送给客户端
3、客户端和服务器开始协商ssl连接的安全等级
4、客户端根据协商的安全等级建立会话密钥,然后利用公钥将会话密钥加密,并发送到服务器
5、服务器解密公钥获得密钥
6、服务器利用会话密钥加密和客户端之间的通信
https的优缺点
优点
1、可认证用户和服务器,确认数据发送到正确的客户端和服务器
2、可防止数据在传输过程中不被窃取、改变,确保数据完整性
3、大幅增加了中间人攻击的成本
4、在搜索引擎的排名会更高
缺点
1、存在加密解密操作,完成一次通信的时间变长了,并且安全算法增加了额外的资源消耗
2、https连接缓存不如http高效,会增加数据开销和功耗,甚至已有的安全措施也会因此受到影响
3、证书成本
4、ssl证书需要绑定ip,一个ip不能绑定多个域名,增加了ipv4的消耗
5、加密范围有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面不起作用。ssl证书的信用链体系并不安全,在某些国家可以控制CA根证书的情况下,中间人攻击一样可行
网友评论