TCP/UDP与IP的区别

IP协议支持两台计算机间通信
TCP/UDP协议提供两个进程间通信,通过端口号完成目标计算机上特定进程的寻址。
UDP的应用程序接口提供了消息传递的抽象。不需要创建开销和确认消息,适用于不需要可靠传输单个或多个消息的服务和应用。
TCP的应用程序提供了进程对之间的双向流抽象。TCP是基于流,面向连接的编程,发送进程和接收进程间建立双向的通信通道,该连接只针对端到端,与中间的路由无关。TCP是可靠传输,其机制包括:排序、流控制、重传、缓冲、校验和。
套接字提供进程间通信的一个端点,它绑定了计算机IP地址和其一个本地端口。除IP组播意外,一个进程可以利用多个端口接受消息,但是一个端口只能为一个进程服务。
UDP数据报的故障类型:遗漏、排序。

TCP流通信
  • 规定数据大小,分割消息
  • 丢失消息确认方案与重传机制
  • 流控制
  • 检测消息重复和排序
  • 消息目的地。在流通信之前,需先建立连接(connect-accept),建立连接后,进程不需要IP地址和端口,即可读和可写
  • 客户和服务器的套接字对由一对流 连接,每个方向一个流,因此每个套接字都拥有输入流和一个输出流
CORBA

CORBA(common object request broker architecture 公共对象请求代理结构)是独立于语言的RMI(远程方法调用)框架,主要包含以下部分:

  • 接口定义语言
  • 体系结构
  • 外部数据表示
  • 远程对象引用的标准格式

此处需要第五章RMI的概念
CORBA的公共数据表示CDR—外部数据表示。只包含所传对象的值,不包含值的类型。

类型

表示


示例

string

字符串的字符数,后面依次是字符

smith => 5 s m i t h

sequence

长度,后面依次是元素

unsigned long

无符号长整型

1898 => 1 8 9 8

RMI与RPC

RMI:远程方法调用,客户端Java虚拟机上的对象像调用本地对象一样调用服务器Java虚拟机上的方法,涉及对象的序列化和解序列化。
如果对象中包含对其他对象或者数组的引用,则该引用将被序列化为句柄。
反射 实现了通过类名创建类,为给定的类创建具有给定参数的构造函数。
RPC:远程过程调用,通过网络从远程计算机上请求调用某种服务。

远程对象引用

远程对象引用是远程对象的标识符,在分布式系统的所有进程中是唯一的。

构造远程对象引用的一种方法是拼接计算机的互联网地址、创建远程对象引用的进程的端口号、创建时间、本地对象编号。

注意: 远程对象引用不是远程对象的地址

java多台服务器同时从数据库抓取任务_组播

IP组播

IP组播使IP数据包传送给组播组内计算机中。IP数据包能在局域网和互联网上组播,在互联网组播时,受到存活时间(TTL)的限制,限制组播数据报传输的距离。
组播组由D类互联网地址制定,前4位是1110的地址。组播组中的计算机既可接收IP数据包 也可发送IP数据包。应用通过将套接字加入到组,以加入到一个组播组中,因此IP组播属于应用编程级。
当一个组播消息到达计算机时,消息副本被转发到所有已经加入到指定组播地址和指定端口号的本地套接字上。

网络虚拟化

网络虚拟化是在一个已有的网络上构造多个不同的虚拟网络。每个虚拟网络被设计成支持特定的分布式应用,并为特定的应用进行优化,且不改变底层网络的特征。
覆盖网络是一个结点和虚拟链接组成的虚拟网络,位于底层网络(IP网络)之上。一个覆盖网络是一层,是在标准体系结构(TCP/IP)外存在的一层。开发者可以重新定义网络的核心元素、包括寻址、协议、路由。
示例:分布式散列表
以业务数据的散列值作为key(data key),业务数据本身位value, 装入分布式系统(bucket)中,这样系统不需要中心节点,可以达到去中心化,同时,如果hash 算法得当且哈希桶数足够多,可以达到数据均摊效果。分布式散列表中,有多个节点(主机),可令节点Id = data key (散列值足够大 不存在散列碰撞的情况,key 可作为唯一值),那么该系统的路由算法可采用“key-based routing” 也就是再分布式系统的物理层之上,构造分布式自己的拓扑结构,即 覆盖网络,其数据通讯是依赖互联网实现的。系统在路由是,只需按照节点Id路由,无需根据下层的网络属性路由(协议类型,IP地址,端口号)。

MPI

MPI(message passing interface 消息传递接口)是消息传递标准,包括协议和语义说明。多应用于并行计算。