http和https

作者: 卫青臣 | 来源:发表于2021-03-12 09:26 被阅读0次

    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根证书的情况下,中间人攻击一样可行

    相关文章

      网友评论

        本文标题:http和https

        本文链接:https://www.haomeiwen.com/subject/awroqltx.html