https工作原理及tcp握手详解.docxVIP

  • 12
  • 0
  • 约4.41千字
  • 约 7页
  • 2017-05-16 发布于湖南
  • 举报
https工作原理及tcp握手详解

百度优先收录HTTPS:HTTPS工作原理及TCP握手详解 近日,百度在全站实现HTTPS加密搜索后,再次开放收录HTTPS网站,在互联网界引起巨大轰动。已经实现HTTPS的网站喜笑颜开,奔走相告,终于守得云开见月明!而传统HTTP网站则若惊弓之鸟,寻找良机,恐网站受到新算法影响!甚至很多站长并不十分了解HTTPS,本文借此机会给大家介绍HTTPS工作原理和TCP握手机制。   【HTTPS工作原理】   HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的具体描述如下:   1.浏览器将自己支持的一套加密规则发送给网站。   2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。   3.浏览器获得网站证书之后浏览器要做以下工作: a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。   b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。   c) 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。   4.网站接收浏览器发来的数据之后要做以下的操作:   a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。   b) 使用密码加密一段握手消息,发送给浏览器。   5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。 这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试。另外,HTTPS一般使用的加密与HASH算法如下:   非对称加密算法:RSA,DSA/DSS   对称加密算法:AES,RC4,3DES   HASH算法:MD5,SHA1,SHA256 HTTPS对应的通信时序图如下:    【HTTPS协议和HTTP协议的区别】 https协议需要到CA机构(如沃通CA)申请SSL证书,有免费和付费证书,目前沃通CA提供3年期免费SSL证书,支持多个域名!   http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。   http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。   http的连接很简单,是无状态的 。 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议, 要比http协议安全。   【TCP3次握手,4次挥手过程】   1、建立连接协议(三次握手)   (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。   (2)服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。   (3)客户必须再次回应服务段一个ACK报文,这是报文段3。   2、为什么需要三次握手   在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。这两种不用的表述其实阐明的是同一个问题。   谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并

文档评论(0)

1亿VIP精品文档

相关文档