计算机网络&互联网应用商业协议 --- 基本脉络
计算机网络层次:
1. 计算机互联网传输通信最早由 OSI(Open System Interconnect)七层规范。在实际商业应用中,基本采用五层规范。
物理层、链路层、网络层、传输层、应用层。
物理层、链路层不用考虑;应用层( 程序接口 )暂时不用管。
网络层协议负责 为互联网中的不同主机之间提供通信;传输层负责 为主机之间的不同进程提供通信。
1.2 网络层
使用 IP 协议,该协议实现了在整个互联网中唯一确定一台主机的规范。属于 互联网&主机 之间的网络边界。
1.3传输层
使用 TCP协议或UDP协议,实现了进程之间数据传输的规范。
TCP(Transmission Control Protocol):
安全可靠 例如:jdbc协议,类似于 打电话,双方接通之后,才开始通信。
双方都要 各自创建 输入流&流输出,分别用来向对方 接收&发送 信息。
UDP(User Datagram Protocol):
性能更佳 适合注重流畅性的场景,类似于 发短信,发了丢过去就不管了,结束了。
几乎所有协议都是基于 TCP/IP、UDP/IP 协议 封装的上层协议。例如 HTTP协议,本质就是 TCP/IP 协议封装的短连接协议。
场景示例:
https://blog.51cto.com/u_15127555/3460494
https://blog.csdn.net/Ian0903/article/details/79475485
2.互联网商业应用通信协议
AJAX通过xmlHttpRequest对象请求服务器,而http请求通过httpRequest对象请求服务器。Ajax和前端交互有关。
RPC接口即相当于调用本地接口一样调用远程服务的接口;HTTP接口是基于http协议的post接口和get接口。
HTTP服务主要基于HTTP协议(URL传参调用),而RPC服务主要基于 远程过程调用,直接基于的传输层的TCP协议。
一般来说,RPC 服务主要是针对大型企业的且一般使用Maven管理,而 HTTP 服务主要是针对小企业的,因为 RPC 效率更高,而 HTTP 服务开发迭代会更快。
2.1当前流行的rpc框架:
①gRPC 是 Google 最近公布的开源软件,基于最新的 HTTP2.0 协议,并支持常见的众多编程语言。
我们知道 HTTP2.0 是基于二进制的 HTTP 协议升级版本,目前各大浏览器都在快马加鞭的加以支持。
这个 RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。
②Thrift 是 Facebook 的一个开源项目,主要是一个跨语言的服务开发框架。它有一个代码生成器来对它所定义的 IDL 定义文件自动生成服务代码框架。
用户只要在其之前进行二次开发就行,对于底层的 RPC 通讯等都是透明的。不过这个对于用户来说的话需要学习特定领域语言这个特性,还是有一定成本的。
③Dubbo 是阿里集团开源的一个极为出名的 RPC 框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是及其鲜明的特色。
同样的远程接口是基于 Java Interface,并且依托于 Spring 框架方便开发。可以方便的打包成单一文件,独立进程运行,和现在的微服务概念一致。