深入浅出RPC服务 | 不同层的网络协议
导读:
本系列文章从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 要做流量控制,通信双方各声明一个窗口,标识自己当前能够的处理能力,发的太快处理不过来,发的太慢就会有空闲,使用窗口大小来达到一个最佳的处理水平。
深入浅出RPC服务 | 不同层的网络协议的更多相关文章
- 网络协议 20 - RPC 协议(上)- 基于XML的SOAP协议
[前五篇]系列文章传送门: 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - DNS 协议:网络世界的地址簿 网络协议 17 - HTTPDNS:私人定制的 DNS 服务 网络协议 ...
- 网络协议 19 - RPC协议综述:远在天边近在眼前
[前五篇]系列文章传送门: 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - DNS 协议:网络世界的地址簿 网络协议 17 - HT ...
- 网络协议 19 - RPC协议综述
这几年微服务很火,想必各位博友或多或少的都接触过.微服务概念中, 各服务间的相互调用是不可或缺的一环.你知道微服务之间是通过什么方式相互调用的吗? 你可能说,这还不简单,用 socket 呗. ...
- C# RFID windows 服务 网络协议方式
上篇话说是串口方式操作RFID设备. 下面介绍网络协议方式. 设备支持断线重连. 那我们的服务也不能差了不是. 所以这个服务类也是支持的哦. 不解释上代码: namespace Rfid { /// ...
- 对TCP/IP网络协议的深入浅出归纳
前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...
- 转:对TCP/IP网络协议的深入浅出归纳
转自:http://blog.jobbole.com/74795/ 前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没 ...
- 对TCP/IP网络协议的深入浅出归纳(转)
前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...
- 网络协议 17 - HTTPDNS:私人定制的 DNS 服务
[前五篇]系列文章传送门: 网络协议 12 - HTTP 协议:常用而不简单 网络协议 13 - HTTPS 协议:加密路上无尽头 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - ...
- 以太坊测试网络搭建以及RPC服务开启-配置注意事项
.Eth QA Test环境: 数据文件路径: C:\Users\Administrator\AppData\Roaming\Ethereum console启动参数: --rpc --testnet ...
- 深入浅出 RPC - 浅出篇+深入篇
摘自: http://blog.csdn.net/mindfloating/article/details/39473807 近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 ...
随机推荐
- 华为云IoT设备接入服务全体验
摘要:华为云IoT设备接入服务,海量设备,一键接入,你值得拥有! 本文分享自华为云社区<[云驻共创]Huawei Mate 40产线直击之 华为云IoT设备接入服务全体验>,原文作者:启明 ...
- 云小课 | 华为云KYON:网段零修改上云,简单又好用
摘要:KYON(Keep Your Own Network)是华为云推出的企业级云网络解决方案,KYON能让用户直接将IDC组网搬到云上,网段零修改,简单又好用. 本文分享自华为云社区<[云小课 ...
- 云小课|云小课带你快速掌握云数据迁移CDM
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:欢迎来到云数据迁移 ...
- Taro架构构析(1):多端框架分析,Taro WePY uni-app对比
多端框架分类 全包型 这类框架最大的特点就是从底层的渲染引擎.布局引擎,到中层的 DSL,再到上层的框架全部由自己开发,代表框架是 Qt 和 Flutter.这类框架优点非常明显:性能(的上限)高:各 ...
- Typora 一行显示多图
图片下显示说明 ![](https://pic.cnblogs.com/avatar/80824/20200328151729.png) <center style="font-siz ...
- PPT 如何做出高大上的表格
字不如表.表不如图 如何做 https://www.bilibili.com/video/BV1ha411g7f5?p=17
- 使用 FHE 实现加密大语言模型
近来,大语言模型 (LLM) 已被证明是提高编程.内容生成.文本分析.网络搜索及远程学习等诸多领域生产力的可靠工具. 大语言模型对用户隐私的影响 尽管 LLM 很有吸引力,但如何保护好 输入给这些模型 ...
- 使用 Diffusers 通过 DreamBooth 来训练 Stable Diffusion.md
邀请参与我们的 DreamBooth 微调编程马拉松活动! DreamBooth 是一种使用专门的微调形式来训练 Stable Diffusion 的新概念技术.一些人用他仅仅使用很少的他们的照片训练 ...
- 【申请教程】ChatGPT访问互联网插件
https://openai.com/blog/chatgpt-plugins 大家好,我是章北海mlpy 申请ChatGPT插件很久了,一直没下文 最近看到两种套路,我早上试了一下,看能否快速成功吧 ...
- 【django drf】 阶段练习
目录 需求 settings.py views.py urls.py serializers.py permissions.py page.py authenticate.py model.py 权限 ...