深入浅出RPC服务 | 不同层的网络协议
字数 1888 2025-08-11 08:36:11
深入浅出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通过这些机制实现了可靠的、面向连接的通信服务,能够适应从硬线连接到分组交换的各种网络环境。