深入浅出RPC服务 | 不同层的网络协议

深入浅出,rpc,服务,不同,网络协议 · 浏览次数 : 48

小编点评

**网络协议简介** **网络协议**是计算机网络中通信通信的关键基础设施,它规范了不同设备之间的通信方式,使其可以相互连接并进行数据传输。 **RPC (Remote Procedure Call)**是一种通过网络从远程计算机程序上调用服务的协议。它使用TCP协议,通过建立连接后,向远程程序发送并执行用户定义的程序。 **IP (Internet Protocol)**是网络层协议,是互联网通信基础设施的核心。IP协议提供了一种标准化的方式,使不同设备可以相互访问网络资源。 **TCP (Transmission Control Protocol)**是传输层协议,是可靠的数据传输协议。TCP负责确保数据完整性、顺序和延迟的平衡。 **IP协议与TCP协议的关系** IP和TCP协议是互相关的,IP是TCP的基础设施。IP协议提供地址和路由功能,而TCP协议则负责数据传输和连接管理。 **其他重要协议** 除了TCP、IP、RPC以外,还有许多其他协议,例如FTP、Gopher、IMAP4、NNTP、XMPP、POP3、SMTP、SNMP、SSH、TELNET、RTCP、RTP、RTSP、SDP、SOAP、STUN、NTP、SSDP、BGP等。

正文

导读:

本系列文章从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服务 | 不同层的网络协议相似的内容:

深入浅出RPC服务 | 不同层的网络协议

本系列文章从RPC产生的历史背景开始讲解,涉及RPC核心原理、RPC实现、JSF的实现等,通过图文类比的方式剖析它的内部世界,让大家对RPC的设计思想有一个宏观的认识。

IceRPC之深入理解调度管道->快乐的RPC

作者引言 很高兴啊,我们来到了IceRPC之深入理解调度管道->快乐的RPC,为上篇的续篇,深入理解常见的调度类型, 基础引导,有点小压力,打好基础,才能让自已不在迷茫,快乐的畅游世界。 传入请求 了解如何处理传入的请求 接收传入的请求 调度器的调度方法接受传入的请求。该传入请求是由连接,在收到来自

深入浅出 OkHttp 源码解析及应用实践

OkHttp 在 Java 和 android 世界中被广泛使用,深入学习源代码有助于掌握软件特性和提到编程水平。本文首先从源代码入手简要分析了一个请求发起过程中的核心代码,接着通过流程图和架构图概括地介绍了OkHttp的整体结构,重点分析了拦截器的责任链模式设计,最后列举了OkHttp拦截器在项目中的实际应用。

【深入浅出系列】之代码可读性

代码可读性其实是一个比较宽泛的问题,也是一个老生常谈的问题,随着编码经验积累,在不同职业阶段,我们对可读性都会有不同的理解和认识,本文从我自己的角度和经验,讨论了一些比较浅的理解,如何写出易读、易懂的优秀代码,可能是我们coder永远追寻的目标之一,即使它没有终点。

深入浅出线程池

线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际 运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线 程并行执行不同的任务。

深入浅出:SPI机制在JDK与Spring Boot中的应用

本文深入探讨了Spring Boot中与Java的标准SPI相似的机制,揭示了它的工作原理、应用场景及与标准SPI的异同。

【知识点】深入浅出STL标准模板库

本文全面介绍了C++标准模板库(STL)的基础知识,涵盖了容器、算法和迭代器的概念及其常见应用,旨在帮助读者掌握STL的基本用法和重要概念。

Nuxt.js 深入浅出:目录结构与文件组织详解

摘要:本文详述了Nuxt.js框架中关键目录与配置文件的作用及使用方法,包括布局设定、页面结构管理、插件集成、静态资源处理、 Vuex状态管理、项目配置文件nuxt.config.js详解以及package.json、.eslintrc.js、.babelrc等辅助配置文件的配置方式,为构建高效Nu...

OpenCV实战:从图像处理到深度学习的全面指南

> 本文深入浅出地探讨了OpenCV库在图像处理和深度学习中的应用。从基本概念和操作,到复杂的图像变换和深度学习模型的使用,文章以详尽的代码和解释,带领大家步入OpenCV的实战世界。 # 1. OpenCV简介 ## 什么是OpenCV? ![file](https://img2023.cnblo

聊聊Embedding(嵌入向量)

摘要自《深入浅出Embedding》一问。具体详细内容请移步该书。 ## 概述 简单来说,嵌入是用向量表示一个物体,这个物体可以是一个单词、一条语句、一个序列、一件商品、一个动作、一本书、一部电影等,可以说嵌入(Embedding)涉及机器学习、深度学习的绝大部分对象。这些对象是机器学习和深度学习中