使用http与https协议建立连接的过程

http协议: 是互联网上应用最为广泛的网络协议,是客户端和服务器端请求和应答的标准,是一个从www(万维网)服务器传输超文本到本地浏览器的传输协议,能够使得网络传输更加高效。
https协议: 是以安全为目标的http通道,简单讲就是http的安全版本。http通过与ssl加密协议结合实现更安全的传输(https)。

  • http协议传输的数据是未加密的,是明文传输,所以使用http协议传输一些敏感信息是不安全的,为了实现敏感数据的加密传输,网景公司设计了SSL(Secure Sockets Layer)协议,用于对http协议传输的数据进行加密,从此https协议就产生了。简单来说,https协议是由ssl+http协议组合而成的加密数据传输协议,可用于敏感数据传输与网络身份验证,比http协议更加安全。

http与https协议的区别:

  • http是超文本传输协议,信息是明文传输。https则是具有安全性的ssl加密传输协议。
  • http与https使用的是完全不同的连接方式,用的端口号也不一样,http使用的端口为80,https为443。
  • http连接很简单,是无状态的,https协议是由ssl+http构建的可进行加密传输、身份认证的网络协议,比http更加安全。

加密算法基本介绍:

  • 秘钥大致可分为两种,一种是非对称加密(公开秘钥加密),另一种是对称加密(共享秘钥加密)。
    • 非对称加密:公开秘钥是任何人都可以轻易获得,并且可以随意发送。但是公开密钥加密后的内容只有提供公开秘钥的服务方可以使用自己的私有秘钥进行解密
    • 对称加密:加密和解密使用的是同一秘钥,所以只要获得加密秘钥就可以进行解密。
  • CA认证:第三方数字签名认证机构,为了确认https中服务器发送的公开秘钥没有被篡改,因此会先发送给可信的第三方进行签名,客户端使用机构的公开秘钥进行签名认证,用来保证服务器公开秘钥的可靠性。
  • https中的加密是使用服务器的非对称秘钥对一个随机生成的对称秘钥进行解密以实现加密通信的。

http建立连接的过程:

  • 客户端向服务器发送请求报文
  • 服务器根据请求报文收集对应的组合成响应报文
  • 客户端收到响应报文后进行解析渲染

tcp三次握手:

  • 客户端发送连接请求SYN到服务端,等待确认
  • 服务端收到SYN连接请求后若确认连接则回复一个ACK确认,并发送SYN连接请求,等待确认
  • 客户端收到服务端的ACK确认和SYN连接请求后回复一个ACK确认,并进入连接完成状态
  • 三次握手完成,客户端与服务端成功建立连接

tcp四次挥手:

  • 客户端发送FIN请求到服务端,请求断开连接
  • 服务端收到请求后若同意断开连接则向客户端回复一个ACK确认,继续处理未完成动作
  • 服务端处理完成后向客户端发送FIN请求,准备关闭连接
  • 客户端收到ACK确认和FIN请求后回复ACK确认给服务端,并断开与服务器连接
  • 四次挥手完成,服务端与客户端连接断开

https建立连接的完整流程:

在这里插入图片描述

  • 客户端向服务端发送一个招呼报文(hello),包括自己支持的ssl版本,加密算法等信息。
  • 服务端回复一个招呼报文(hi),包括自己支持的ssl版本,加密算法等信息。
  • 服务端发送自己经过CA认证的公开密钥。
    • 服务端向CA认证机构发送自己的公开密钥(FPkey)。
    • CA认证机构使用自己的私有秘钥给FPkey加上签名返回给服务端。
  • 服务端发送结束招呼报文,ssl第一次握手结束。
  • 客户端使用FPkey对自己的随机密码串(Ckey)进行加密并发送给服务端。
    • 客户端首先使用CA的公开秘钥对FPkey的签名进行认证,确认秘钥未被替换。
  • 客户端发送提示报文,后续报文将使用Ckey进行加密。
  • 客户端发送finished报文,表示该次发送结束。
    • 后续是否通信取决于客户端的finished报文能否被服务端成功解密。
  • 服务端发送提示报文,表示他之后的报文也是用Ckey进行加密。
  • 服务端发送finished报文,至此ssl握手结束,成功建立ssl连接。
  • 客户端开始发送http请求报文。
    • 建立tcp连接,开始传输数据。
  • 服务端发送http回复报文。
  • 客户端发送断开连接报文,并断开tcp连接。
发布了62 篇原创文章 · 获赞 68 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/magic_world_wow/article/details/103972157