深入浅出RPC服务 | 不同层的网络协议
字数 1888 2025-08-11 08:36:11

深入浅出RPC服务与网络协议分层教学文档

一、RPC服务概述

RPC(Remote Procedure Call)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。本系列文章从RPC产生的历史背景开始讲解,涉及RPC核心原理、RPC实现等,通过图文类比的方式剖析它的内部世界。

二、网络协议基础

为什么需要网络协议?

网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。就像不同语言的人需要共同语言才能交流一样,网络上的计算机也需要共同协议才能通信。

一次请求涉及的网络协议

  1. 机器定位:通过IP协议(网络层)确认目标机器
  2. 程序定位:通过端口号(传输层TCP协议)确定目标程序
  3. 请求区分:通过消息ID(应用层RPC协议)关联请求和响应
  4. 物理传输:由物理层的光缆、电缆、无线信道等支持,配合PPP、ARP等协议

三、网络协议分层详解

应用层协议

HTTP协议

  • 超文本传输协议(Hyper Text Transfer Protocol)
  • 简单的请求-响应协议,运行在TCP之上
  • 规定客户端和服务器之间的消息格式和响应方式

HTTPS协议

  • Hyper Text Transfer Protocol over SecureSocket Layer
  • 在HTTP基础上加入SSL/TLS加密层
  • 默认端口与HTTP不同,提供身份验证和加密通信
  • 广泛用于安全敏感通信如支付交易

RPC协议

  • 远程过程调用协议
  • 允许程序调用远程计算机上的服务
  • 隐藏底层网络技术细节

RTMP协议

  • 实时消息传输协议(Real Time Messaging Protocol)
  • 基于TCP,用于Flash/AIR平台与流媒体服务器间的音视频通信
  • 包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种

P2P协议

  • 点对点网络技术
  • 依赖参与者计算能力和带宽而非集中式服务器
  • 用于文件共享、VoIP等实时媒体通信

DNS协议

  • 域名系统协议
  • 将域名和IP地址相互映射的层次结构数据库
  • 采用递归查询方式响应请求

GTP协议

  • GPRS隧道协议(GPRS Tunneling Protocol)
  • 分为GTP-C(控制面)、GTP-U(用户面)和GTP'(计费传输)
  • 用于2.5G/3G/4G/5G移动通信网络

DHCP协议

  • 动态主机配置协议
  • 集中管理、分配IP地址
  • 使主机动态获得IP、网关、DNS等信息

其他应用层协议

FTP、Gopher、IMAP4、IRC、NNTP、XMPP、POP3、SIP、SMTP、SNMP、SSH、TELNET、RTCP、RTP、RTSP、SDP、SOAP、STUN、NTP、SSDP、BGP等

传输层协议

TCP协议

  • 传输控制协议(Transmission Control Protocol)
  • 面向连接、可靠、基于字节流的传输层协议
  • 提供进程间通信能力
  • 关键设计要素:
    • 源端口号和目标端口号:确定目标应用
    • 包序列号:解决乱序问题
    • 确认序列号:解决丢包问题
    • 状态位(SYN/ACK/RST/FIN):维护连接状态
    • 窗口大小:流量控制

网络层协议

IP协议

  • 网际互连协议(Internet Protocol)
  • TCP/IP体系中的网络层协议
  • 提供无连接、不可靠、尽力而为的数据包传输服务
  • 提高网络可扩展性,实现大规模异构网络互联

链路层协议

PPP协议

  • 点对点协议(Point to Point Protocol)
  • 提供多协议数据包传输的标准方法
  • 替代非标准的SLIP协议
  • 可携带IP、DECnet、IPX等多种协议

四、协议分层关系与数据传输流程

发送端流程

  1. 应用层:用户数据加上RPC头部,传递给传输层
  2. 传输层:将整个数据作为消息体,加上TCP头部,传递给网络层
  3. 网络层:将整个数据作为消息体,加上IP头部,传递给链路层
  4. 链路层:加上MAC头部,通过物理层传输

接收端流程

  1. 链路层:解析以太网头部,取出数据传递给网络层
  2. 网络层:解析IP头部,取出数据传递给传输层
  3. 传输层:解析TCP头部,取出数据传递给应用层
  4. 应用层:解析RPC协议头部,获取原始用户数据

五、TCP协议设计详解

TCP协议的设计目的是解决IP协议无法处理的进程间通信问题,其主要设计考虑包括:

  1. 端口机制:区分不同应用程序
  2. 序列号系统:确保数据有序到达
  3. 确认机制:保证数据可靠传输
  4. 状态控制:管理连接生命周期
  5. 流量控制:通过窗口大小调节传输速率

TCP通过这些机制实现了可靠的、面向连接的通信服务,能够适应从硬线连接到分组交换的各种网络环境。

深入浅出RPC服务与网络协议分层教学文档 一、RPC服务概述 RPC(Remote Procedure Call)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。本系列文章从RPC产生的历史背景开始讲解,涉及RPC核心原理、RPC实现等,通过图文类比的方式剖析它的内部世界。 二、网络协议基础 为什么需要网络协议? 网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。就像不同语言的人需要共同语言才能交流一样,网络上的计算机也需要共同协议才能通信。 一次请求涉及的网络协议 机器定位 :通过IP协议(网络层)确认目标机器 程序定位 :通过端口号(传输层TCP协议)确定目标程序 请求区分 :通过消息ID(应用层RPC协议)关联请求和响应 物理传输 :由物理层的光缆、电缆、无线信道等支持,配合PPP、ARP等协议 三、网络协议分层详解 应用层协议 HTTP协议 超文本传输协议(Hyper Text Transfer Protocol) 简单的请求-响应协议,运行在TCP之上 规定客户端和服务器之间的消息格式和响应方式 HTTPS协议 Hyper Text Transfer Protocol over SecureSocket Layer 在HTTP基础上加入SSL/TLS加密层 默认端口与HTTP不同,提供身份验证和加密通信 广泛用于安全敏感通信如支付交易 RPC协议 远程过程调用协议 允许程序调用远程计算机上的服务 隐藏底层网络技术细节 RTMP协议 实时消息传输协议(Real Time Messaging Protocol) 基于TCP,用于Flash/AIR平台与流媒体服务器间的音视频通信 包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种 P2P协议 点对点网络技术 依赖参与者计算能力和带宽而非集中式服务器 用于文件共享、VoIP等实时媒体通信 DNS协议 域名系统协议 将域名和IP地址相互映射的层次结构数据库 采用递归查询方式响应请求 GTP协议 GPRS隧道协议(GPRS Tunneling Protocol) 分为GTP-C(控制面)、GTP-U(用户面)和GTP'(计费传输) 用于2.5G/3G/4G/5G移动通信网络 DHCP协议 动态主机配置协议 集中管理、分配IP地址 使主机动态获得IP、网关、DNS等信息 其他应用层协议 FTP、Gopher、IMAP4、IRC、NNTP、XMPP、POP3、SIP、SMTP、SNMP、SSH、TELNET、RTCP、RTP、RTSP、SDP、SOAP、STUN、NTP、SSDP、BGP等 传输层协议 TCP协议 传输控制协议(Transmission Control Protocol) 面向连接、可靠、基于字节流的传输层协议 提供进程间通信能力 关键设计要素: 源端口号和目标端口号:确定目标应用 包序列号:解决乱序问题 确认序列号:解决丢包问题 状态位(SYN/ACK/RST/FIN):维护连接状态 窗口大小:流量控制 网络层协议 IP协议 网际互连协议(Internet Protocol) TCP/IP体系中的网络层协议 提供无连接、不可靠、尽力而为的数据包传输服务 提高网络可扩展性,实现大规模异构网络互联 链路层协议 PPP协议 点对点协议(Point to Point Protocol) 提供多协议数据包传输的标准方法 替代非标准的SLIP协议 可携带IP、DECnet、IPX等多种协议 四、协议分层关系与数据传输流程 发送端流程 应用层 :用户数据加上RPC头部,传递给传输层 传输层 :将整个数据作为消息体,加上TCP头部,传递给网络层 网络层 :将整个数据作为消息体,加上IP头部,传递给链路层 链路层 :加上MAC头部,通过物理层传输 接收端流程 链路层 :解析以太网头部,取出数据传递给网络层 网络层 :解析IP头部,取出数据传递给传输层 传输层 :解析TCP头部,取出数据传递给应用层 应用层 :解析RPC协议头部,获取原始用户数据 五、TCP协议设计详解 TCP协议的设计目的是解决IP协议无法处理的进程间通信问题,其主要设计考虑包括: 端口机制 :区分不同应用程序 序列号系统 :确保数据有序到达 确认机制 :保证数据可靠传输 状态控制 :管理连接生命周期 流量控制 :通过窗口大小调节传输速率 TCP通过这些机制实现了可靠的、面向连接的通信服务,能够适应从硬线连接到分组交换的各种网络环境。