https原理和tcp握手机制

一.HTTPS的工作原理

       HTTPS在传输数据前需要客服端(浏览器)与服务器(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息.TLS/SSL协议是一套加密传输协议,使用了非对称加密,对称加密,以及HASH算法.握手过程如下:

       1.客服端将自己支持的一套加密规则发送给网站.

       2.网站从中选择一组加密算法与哈希算法,并将自己的身份信息以证书(SSL证书)的形式发回给浏览器.证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息.

       3,客服端或的网站证书之后浏览器要做以下几件事情:

             a) 验证证书的合法性(颁发机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等,验证方法见附1),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则给出证书不受信任的提示.

              b)如果证书受信,或者用户选择接受不受信任的证书.浏览器生成一串随机数的密码,并用证书中提供的公钥加密.

              c)使用约定好的哈希算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站.

        4.网站接受浏览器发来的数据之后要做一下的操作:

              a)使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的的握手消息,并验证hash值是否与浏览器发来的一直.

              b)使用密码加密一段握手消息,发送给浏览器.

         5.浏览器解密并计算握手消息的hash,如果与服务端发来的hash一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密.


浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得一致的密码,并且可以正常的加密解密数据,为后续真正的数据传输做一次测试.

     HTTPS一般使用的加密与hash算法 `附2:

     非对称加密算法:RSA,DSA/DSS

     对称加密算法:AES,RC4,3DES

     HSAH算法:MD5,SHA1,SHA256       


 二:https协议和http协议的区别:

     1. https协议需要到ca申请

     2. http传输的信息是明文的,https传输的信息是经过ssl加密

     3.http和https使用的是完全不同的连接方式,端口不一样,http端口号80,https端口为443.

     4.http连接简单,是无状态的.

     5.https协议是有ssl+http协议构建的可进行加密传输//身份认证的网络协议,比http协议安全.


三.tcp协议3次握手,4次挥手

    传输层建立连接和断开连接,一个完整的过程.中间可能出现许多例外,都需要有相应的处理方法.

    1. 建立连接协议,三次握手

    (1).报文1,客服端发送一个带SYN标志的TCP报文到服务器.SYN(synchronous)是TCP/IP建立连接时使用的握手信号。SYN攻击是个比较有意思的事情.

    (2).报文2,服务器端回应客服端,报文带ACK和SYN编制.

    (3).报文3,客服端在回应一个ack报文.  服务器端接受到此ack信号好才启动连接,此时连接才算成立.

    为什么需要三次握手:由于各个网路的情况不同,可能会产生报文传输延时,从而变成失效的连接请求.防止失效的连接请求报文段突然有传到了服务端,从而产生错误.解决网络中存在重复分组的问题.

   只是传输层为了防止失效的连接请求而设立的机制.

   2.连接终止协议,四次挥手  

    tcp连接是全双工,因此每个方向都必须单独进行关闭.每个方向,当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接.

    (1). TCP客服端发送一个FIN,用来关闭客服到服务器的数据传送.

    (2).服务器端接收到FIN,响应一个ACK,确认序号,为接收到的序号加1.

    (3).服务器关闭客服端的连接,发送一个FIN给客服端.

    (4).客服端发回ACK报文确认,并将确认序号设置为序号加1.

    4次挥手,为了断开连接.


猜你喜欢

转载自blog.csdn.net/flyfish_l/article/details/53815093