001-- 网络连接过程

2020-06-18  本文已影响0人  修_远

[TOC]

专有名词

HTTP 传输过程

这篇文章的标题虽然是连接过程,但这里其实是 HTTP数据交互的一个过程,我们知道HTTP是无连接的,所以这里需要注意下

  1. 客户端向服务端发送请求报文;
  2. 服务端根据请求报文收集对应的资源组合成响应报文;
  3. 客户端收到时响应报文,进行解析;
HTTP数据传输过程

TCP 三次握手连接过程

  1. 客户端发送 SYN 到服务端,等待确认;
  2. 服务端向客户端返回 ACK,同时,自己也发送一个SYN包,即 SYN + ACK 包;
  3. 客户端收到回应,向服务端发送确认包 ACK;
  4. 完成三次握手,客户端与服务端开始传输数据;
TCP 三次握手连接过程

实例

TCP协议中的seq/ack序号是如何变化的?

TCP数据包交互过程

过程1:客户端发送 SYN 到服务端

过程2:服务端向客户端返回 ACK,同时,自己也发送一个SYN包,即 SYN + ACK 包

过程3:客户端收到回应,向服务端发送确认包 ACK

到这里,已经完成三次握手,客户端与服务端开始传输数据

过程4:客户端向服务端发送数据请求,len=725

三次握手接受后,客户端和服务端已经建立了连接,服务端不需要再向客户端返回信息。而这里是客户端第一次向服务端发送数据,所以 seq 和 ack 都是用的上一次的结果。

过程5:服务端应答客户端的请求:返回确认包 ACK

过程6:服务端响应客户端的请求:返回数据包,len=1448

过程7:客户端收到服务端的响应数据:返回确认包 ACK

后面的过程雷同,就不在展开分析了

TCP 四次挥手断开过程

  1. 客户端发送 FIN,提醒服务端自己准备关闭通信;
  2. 服务端收到 FIN,回应 ACK;
  3. 服务端发送 FIN,提醒客户端自己准备关闭通信;
  4. 客户端收到 ACK + FIN,回应一个 ACK;
  5. 四次挥手完毕,关闭连接;
TCP 四次挥手

HTTPS 连接过程

主要过程分为四个

  1. 第一次握手:交换基本信息
  2. 第二次握手:确定加密策略
  3. SSL建立成功:HTTP数据传输
  4. 数据传输完成:断开连接
  1. 第一次握手:交换基本信息
  1. 客户端想服务端法发送一个打招呼报文(hello),包含自己支持的SSL版本、加密算法等信息;

  2. 服务端回复一个打招呼报文(hi),包含自己支持的SSL版本、加密算法等信息;

  3. 服务端发送自己经过 CA 认证的公开密钥

    1. 服务端向 CA 认证机构发送自己的公开密钥(FPKey)
    2. CA 认证机构使用自己的私有密钥给 FPKey 加上签名,并返回给服务端;
  4. 服务端发送结束招呼报文,SSL第一次握手结束;

  1. 第二次握手:确定加密策略
  1. 客户端使用 FPKey,对自己的随机密码串(CKey)进行加密并发送给服务端。客户端使用 CA 的公开密钥对 FPKey 的签名进行认证,确保密钥未被替换;
  2. 客户端发送提示报文,后续报文经用 CKey 进行加密;
  3. 客户端发送 finished 报文,表示该次发送结束。后续是否继续通信取决于客户端的 finished 报文能否被服务端成功解密
  4. 服务端发送提示报文,表示它之后的报文也会用 CKey 进行加密
  5. 服务端发送 finished 报文。至此 SSL 握手结束,成功建立 SSL 连接。
  1. SSL建立成功:HTTP数据传输
  1. 客户端开始发送 HTTP 请求报文。建立 TCP 链接,开始传输数据
  2. 客户端发送 HTTP 回复报文
  1. 数据传输完成:断开连接

客户端发送断开链接报文,并断开 TCP 连接

HTTPS连接过程

HTTPS 中间人拦截过程

中间人拦截过程发生在第一个部分,拦截服务端返回的公钥,构建一对新的密钥伪装成公钥发送给客户端。然后拿到客户端的随机数,再用服务端的公钥进行加密,将密钥发送给服务端。

image

参考链接:
Http和https建立连接全过程
深入揭秘HTTPS安全问题&连接建立全过程
TCP协议中的seq/ack序号是如何变化的?

上一篇下一篇

猜你喜欢

热点阅读