计算机网络通信漫谈 - 从TCP/IP到gRPC

计算机通信的层次

计算机通信是计算机网络形成的基础,这篇博客我们来简单了解一下现有的计算机网络通信协议。

网络分层模型

理论上有OSI七层模型,但在实际应用中我们更常用TCP/IP四层模型:

  • 应用层:HTTP、FTP、SMTP、gRPC等应用协议
  • 传输层:TCP、UDP等传输控制协议
  • 网络层:IP、ICMP等网络协议
  • 网络接口层:以太网、WiFi等物理传输协议

这种分层设计让我们可以在不改变其他层的情况下优化或替换某一层的实现。就像我们可以在同样的TCP协议上开发HTTP、FTP等不同的应用协议,也可以用WiFi或网线作为物理传输介质。

协议栈的演进

基础传输层 - TCP与UDP

传输层是整个协议栈的核心,提供了两种主要的传输服务:

TCP(传输控制协议): - 面向连接:通信前需要建立连接(三次握手) - 可靠传输:使用确认机制和重传机制保证数据可靠到达 - 流量控制:根据接收方处理能力调整发送速率 - 拥塞控制:根据网络状况调整发送速率 - 适用场景:文件传输、网页访问等对可靠性要求高的应用

UDP(用户数据报协议): - 无连接:不需要建立连接即可传输数据 - 不可靠:不保证数据一定送达 - 无流量控制和拥塞控制 - 开销小、延迟低 - 适用场景:视频直播、游戏等对实时性要求高的应用

应用层的发展

HTTP - 互联网的通用语言

HTTP协议构建在TCP之上,经历了几个重要版本:

HTTP/1.1: - 持久连接:复用TCP连接 - 管道化请求:支持多个请求排队 - 但存在队头阻塞问题

HTTP/2: - 多路复用:在同一连接上并发处理多个请求 - 头部压缩:减少传输开销 - 服务器推送:主动推送相关资源 - 二进制分帧:更高效的数据传输

gRPC - 现代分布式系统的新选择

gRPC是基于HTTP/2构建的高性能RPC框架: - 协议层次: * 应用层:gRPC API * 中间层:HTTP/2 * 传输层:TCP * 安全层:TLS(可选)

四种通信模式: 1. 一元RPC(Unary): - 类似HTTP/1.1的请求-响应模式 - 适用于传统的客户端-服务器交互

  1. 服务器流式RPC(Server Streaming):
    • 客户端发送一个请求,服务器返回数据流
    • 适用于服务器推送场景,如订阅更新
  2. 客户端流式RPC(Client Streaming):
    • 客户端发送数据流,服务器返回一个响应
    • 适用于数据上传场景
  3. 双向流式RPC(Bidirectional Streaming):
    • 客户端和服务器同时收发数据流
    • 适用于实时通信场景,如在线游戏

gRPC的优势: - 基于HTTP/2的高性能 - Protocol Buffers的高效序列化 - 强类型接口定义 - 跨语言支持 - 内置流控和安全机制

安全传输 - TLS的重要性

TLS在传输层和应用层之间提供了安全保障: - 加密:保护数据不被窃听 - 认证:验证通信双方身份 - 完整性:确保数据不被篡改

现代应用如HTTPS和gRPC都默认集成了TLS,为应用提供端到端的安全保障。