💡
gRPC用的什么协议?TCP三次握手?四次挥手?FIN-WAIT-2是什么时候的?
  1. gRPC 使用的协议:gRPC 是一个高性能、开源和通用的 RPC 框架,它由 Google 开发。gRPC 使用 HTTP/2 作为网络协议,利用了 HTTP/2 的多路复用、流量控制、优先级和双向流等特性。在数据格式方面,gRPC 默认使用 Protocol Buffers,这是 Google 开发的一种高效的二进制序列化协议。
  1. TCP 三次握手:TCP 三次握手是建立 TCP 连接的过程,包括以下步骤:
      • 第一次握手:客户端发送一个 SYN 包(SYN=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认。
      • 第二次握手:服务器收到 SYN 包,必须确认客户的 SYN(ACK=j+1),同时自己也发送一个 SYN 包(SYN=k),即 SYN+ACK 包,然后服务器进入 SYN_RECV 状态。
      • 第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK (ACK=k+1),这个时候,客户端和服务器都进入 ESTABLISHED 状态,完成三次握手。
  1. TCP 四次挥手:TCP 四次挥手是断开 TCP 连接的过程,包括以下步骤:
      • 第一次挥手:客户端发送一个 FIN 包到服务器,表示它已经结束了数据的发送,客户端进入 FIN_WAIT_1 状态。
      • 第二次挥手:服务器收到 FIN 包后,发送一个 ACK 包给客户端,服务器进入 CLOSE_WAIT 状态,客户端接收到 ACK 包后,进入 FIN_WAIT_2 状态。
      • 第三次挥手:服务器将最后的数据发送完后,它也发送一个 FIN 包给客户端,服务器进入 LAST_ACK 状态。
      • 第四次挥手:客户端收到 FIN 包后,它需要发送一个 ACK 包给服务器,客户端进入 TIME_WAIT 状态,等待一段时间后,如果没有收到服务器的再次请求,客户端关闭连接。服务器在收到 ACK 包后,也关闭连接。
  1. FIN-WAIT-2 状态:在 TCP 四次挥手的过程中,FIN-WAIT-2 是客户端的一个状态。当客户端发送完 FIN 包,收到服务器的 ACK 包后,就进入了 FIN-WAIT-2 状态。在这个状态下,客户端正在等待服务器的 FIN 包。当客户端收到服务器的 FIN 包,它需要发送一个 ACK 包给服务器,然后客户端进入 TIME_WAIT 状态,等待一段时间后,如果没有收到服务器的再次请求,客户端关闭连接。