共计 3480 个字符,预计需要花费 9 分钟才能阅读完成。
导读:
本系列文章从 RPC 产生的历史背景开始解说,波及 RPC 外围原理、RPC 实现、JSF 的实现等,通过图文类比的形式分析它的外部世界,让大家对 RPC 的设计思维有一个宏观的意识。
作者:王禹展 京东衰弱
网络协议
为什么须要网络协议?
网络协议是为计算机网络中进行数据交换而建设的规定、规范或约定的汇合。
网络中一个微机用户和一个大型主机的操作员进行通信,因为这两个数据终端所用字符集不同,因而操作员所输出的命令彼此不意识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为规范字符集的字符后,才进入网络传送,达到目标终端之后,再变换为该终端字符集的字符。就像咱们谈话用某种语言一样,在网络上的各台计算机之间也有一种语言,这就是网络协议,不同的计算机之间必须应用雷同的网络协议能力进行通信。
一次申请都须要用到那些协定?
1. 要传输数据,首先如何晓得对应的机器的地址?通过 IP 能够确认具体的机器(网络层的 IP 层协定)。
2. 找到指标机器后,须要晓得该机器上那个程序承受本次申请?通过端口就能确定具体的程序(传输层的 TCP 层协定)。
3. 确定完程序后,怎么辨别不同的申请,每一个申请如何关联对应的响应呢?(应用层的 RPC 协定)通过音讯 id 辨别。
4. 以上这些最初是由物理层的光缆、电缆、无线信道等反对的,如何管制信号在物理层之上的传递,还须要 PPP 协定、ARP 协定等。
不同层的协定简介
应用层的协定
HTTP 协定
超文本传输协定(Hyper Text Transfer Protocol,HTTP)是一个简略的申请 - 响应协定,它通常运行在 TCP 之上。它指定了客户端可能发送给服务器什么样的音讯以及失去什么样的响应。
HTTPS 协定
全称:Hyper Text Transfer Protocol over SecureSocket Layer,是以平安为指标的 HTTP 通道,在 HTTP 的根底上通过传输加密和身份认证保障了传输过程的安全性。HTTPS 在 HTTP 的根底下退出 SSL,HTTPS 的平安根底是 SSL,因而加密的具体内容就须要 SSL。HTTPS 存在不同于 HTTP 的默认端口及一个加密 / 身份验证层(在 HTTP 与 TCP 之间)。这个零碎提供了身份验证与加密通信办法。它被宽泛用于万维网上平安敏感的通信,例如交易领取等方面。
RPC 协定
一种通过网络从近程计算机程序上申请服务,而不须要理解底层网络技术的协定。
RTMP 协定
全称:Real Time Messaging Protocol(实时音讯传输协定)。该协定基于 TCP,是一个协定族,包含 RTMP 根本协定及 RTMPT/RTMPS/RTMPE 等多种变种。RTMP 是一种设计用来进行实时数据通信的网络协议,次要用来在 Flash/AIR 平台和反对 RTMP 协定的流媒体 / 交互服务器之间进行音视频和数据通信。反对该协定的软件包含 Adobe Media Server/Ultrant Media Server/red5 等。RTMP 与 HTTP 一样,都属于 TCP/IP 四层模型的应用层。
P2P 协定
点对点技术又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都汇集在较少的几台服务器上。P2P 网络通常用于通过 Ad Hoc 连贯来连贯节点。这类网络能够用于多种用处,各种档案分享软件曾经失去了宽泛的应用。P2P 技术也被应用在相似 VoIP 等实时媒体业务的数据通信中。
DNS 协定
DNS 是一种能够将域名和 IP 地址互相映射的以层次结构散布的数据库系统。DNS 零碎采纳递归查问申请的形式来响应用户的查问,为互联网的运行提供关键性的根底服务。目前绝大多数的防火墙和网络都会凋谢 DNS 服务,DNS 数据包不会被拦挡,因而能够基于 DNS 协定建设荫蔽信道,从而顺利穿过防火墙,在客户端和服务器之间传输数据。
GTP 协定
全称:GPRS 隧道协定(GPRSTunnelingProtocol),能够分解成三种独立的协定,GTP-C(管制面)、GTP-U(用户面)及 GTP’(计费传输)。GTP- C 用于 GPRS 外围网络中,用于不同网络节点之间的信令数据。GTP-U 用于承载用户数据。GTP 能够用在 UDP 或 TCP 上,GTP v1 仅用于 UDP 上。用于 GPRS(2.5 代通信技术)、UMTS(3G 挪动通信技术)、LTE(3G 与 4G 技术之间的过渡)和 5G 网络。
DHCP 协定
全称:Dynamic Host Configuration Protocol(动静主机配置协定),通常被利用在大型的局域网络环境中,次要作用是集中地治理、调配 IP 地址,使网络环境中的主机动静的取得 IP 地址、Gateway 地址、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,是一种面向连贯的、牢靠的、基于字节流的传输层通信协议,TCP 旨在适应反对多网络应用的分层协定层次结构。连贯到不同但互连的计算机通信网络的主计算机中的成对过程之间依附 TCP 提供牢靠的通信服务。TCP 假如它能够从较低级别的协定取得简略的,可能不牢靠的数据报服务。原则上,TCP 应该可能在从硬线连贯到分组替换或电路替换网络的各种通信零碎之上操作。
网络层协定
IP 协定
IP 指网际互连协定,Internet Protocol 的缩写,是 TCP/IP 体系中的网络层协定。设计 IP 的目标是进步网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是宰割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立倒退。依据端到端的设计准则,IP 只为主机提供一种无连贯、不牢靠的、尽力而为的数据包传输服务。
链路层协定
PPP 协定
点对点协定(Point to Point Protocol,PPP)为在点对点连贯上传输多协定数据包提供了一个规范办法。PPP 最后设计是为两个对等节点之间的 IP 流量传输提供一种封装协定。在 TCP-IP 协定集中它是一种用来同步调制连贯的数据链路层协定(OSI 模式中的第二层),代替了原来非标准的第二层协定,即 SLIP。除了 IP 以外 PPP 还能够携带其它协定,包含 DECnet 和 Novell 的 Internet 网包交换协定(IPX)。
每层协定之间的关系
发送端的流程
1. 发送端将用户数据抛给 RPC 层时,RPC 协定将用户的数据(音讯体)加上 RPC 头部,而后抛给下一层“传输层“
2.”传输层”收到“应用层”的数据后,不会思考上一次的协定是啥,它会将整个传递进来的数据作为‘音讯体’,加上 TCP 头部后持续向下一层“网路层”抛。
3.”网络层“收到数据后,也不会思考上一次的协定是啥,会将整个传递进来的数据作为‘音讯体’并加上 IP 头部,持续持续抛向下一层”数据链路层“。
4.”数据链路层“同样加上 MAC 头部,最初由物理层通过光电信号传输到接收端。
接收端的流程
1. 承受端收到数据后,”数据链路层“开始解析,辨认以太网头部,取出数据后向上抛给”网络层“。
2.”网络层“辨认 IP 头部后,取出数据,向上抛给”传输层“。
3.”传输层“收到数据后,辨认 TCP 头部,取出数据后持续向上抛给”应用层“。
4.”应用层“辨认 RPC 协定头部,最终取出发送端的用户数据。
每层协定的设计
TCP 协定
设计的目标
在网络倒退的过程中,IP 协定提供了让彼此相连的主机之间可能进行数据传送。然而 IP 协定无奈让接管信息的主机晓得从远处传送来的数据到底要给到哪一个过程进行解决。TCP(传输控制协议)就是为了解决 过程间的通信 问题而倒退进去的协定。
1. 源端口号和指标端口号:没有这两个端口号。数据就不晓得应该发给哪个利用。
2. 包的序列号:为什么要给包编号呢?是为了解决乱序的问题。不编好号怎么确认哪个应该先来,哪个应该后到呢。
3. 确认序列号:收回去的包应该有确认,要不然我怎么晓得对方有没有收到呢?如果没有收到就应该从新发送,直到送达。这个能够解决不丢包的问题。
4. 状态位:SYN 是发动一个连贯,ACK 是回复,RST 是从新连贯,FIN 是完结连贯等。TCP 是面向连贯的,因此单方要保护连贯的状态,这些带状态位的包的发送,会引起单方的状态变更。
5. 窗口大小:TCP 要做流量管制,通信单方各申明一个窗口,标识本人以后可能的解决能力,发的太快解决不过去,发的太慢就会有闲暇,应用窗口大小来达到一个最佳的解决程度。