分布式系统概念与设计读书笔记-网络与网际互连

Posted by keys961 on July 9, 2018

1. Overview

1.1. 相关概念声明

  • 通信子系统:为分布式系统提供通信设施的软硬件组件
  • 主机:计算机和其它使用网络进行通信的设备
  • 结点:网络上所有的计算机或交换设备
  • 子网:(可参考《计算机网络 5th Edition》) 一个路由单位

下面的省略内容可参考计算机网络教材,都有更加详细的说明。

1.2. 分布式系统连网问题

a) 性能

感兴趣的参数指标有:

  • 延迟:执行发送操作后和数据到达目标计算机之前的一段时间,主要由软件开销、路由延迟和负载有关
  • 数据传输率:传输过程开始后,数据在2计算机间传输的速度,主要由信道物理规律决定

消息传输时间 = 延迟 + 数据长度/数据传输率

  • 系统总带宽:用于度量吞吐量,表示在给定时间内网络可以传输的数据总理

b) 可伸缩性

计算流量以及用户量增长,当机器数量和它们成正比增长时,不能很好提供良好的性能

c) 可靠性

许多应用可保证从故障恢复,因此不要求无错通信。而物理层的可靠性很高,一般错误的检测和校验在应用级软件上完成,错误通常是软件故障

d) 安全性

需要建立一个安全的网络环境。防火墙、密码技术、安全通道等需要应用。

e) 移动性

移动设备位置改变,需要网络提供可靠性,需要对互联网机制进行进一步开发

f) QoS

QoS给计算机网络提出新要求,要求通信通道由足够带宽和较低的延迟,一些应用能动态改变它们的要求,指定可接受的最低服务质量和期望最佳值

g) 组播

一对多的通信需求可用多个地址模拟,但代价很大,不具备容错性。现许多网络技术支持同时向多个接收方传递消息。

2. 网络类型

类型有:个域网、局域网、城域网、广域网以及它们的无线变体

互联网络(如互联网)基于这些网络构造出来的

3. 网络原理

3.1. 数据包传输

数据串被分割成数据包,最简单的数据包包含

  • 长度有限的二进制数据序列,长度有限是为了
    • 网络中每台计算机能为可能到来的最大数据包分配足够缓冲空间
    • 避免长消息不分割传递带来的过度延迟(主要是等待信道空闲)
  • 识别源和目的结点的寻址信息

3.2. 数据流传输

数据流是连续的,需要及时传输,若过迟到达则会被丢弃。

因此及时传输数据流需要依赖一定服务质量的网络连接。

3.3. 交换模式

a) 广播

不涉及交换的传输技术。任何信息都可被传到任意结点,有接收方判断是否接收。

b) 电路交换

电话网就是使用了电路交换

c) 包交换

存储转发网络,将数据包从源地址转发到目标地址。交换结点上有计算机,到达后先存储到结点内存中,然后再由程序选择数据包的外出路径

d) 帧中继

给包交换网络引入电路交换的优势,用很快交换小数据包(帧)来解决延迟问题。交换结点检测帧头来路由帧,而帧不会整体存储再结点,而是以流的形式通过结点。

3.4. 协议

a) 协议层

网络软件按层的层次结构排列。每一层为上层提供接口,并扩展下层通信系统的限制。

发送数据,从顶层到底层,逐步封装;接受数据,从底层到顶层,逐步解封。

参考OSI和TCP/IP即可。

b) 数据包封装

传输前将消息分割成数据包(packet),分割在传输层完成,由网络层传输数据包(而网络层将数据包分割成帧,在链路层传播)

物理:bit

链路:frame

网络:packet

传输:segment

最大长度MTU——最大传输单元。如以太网是1500字节数据量,网络层的IP协议MTU是64KB等等。

c) 端口

传输层任务是在一对端口间提供与网络无关的消息传送服务。

端口:主机中由软件定义的端点,隶属于进程。

d) 寻址

传输地址包括:主机的网络地址(如IP地址)和端口号

端口号小于1023是公共端口号,被限制在特权进程中;1024~49151是IANA拥有的服务描述的已注册端口;其它的到65535可用于个人目的。

e) 数据包传递

采用2种方法传递:

  • 数据报包传递:每个包的传递都是一次性的,不需要计划,一旦被传递,网络就不再保存它。数据包序列的顺序是无法保证的。
  • 虚电路包传递:源主机和目的主机需要建立虚电路,确定路由,然后才能传输数据包,其传输时延迟较短。

上述2种和传输层协议没关系。

3.5 路由

局域网外,路由是必要功能。一个数据包传输要经过一个或多个路由结点才能到达目的地(除非是在同一网络中),而决定数据包传输到的目的地址的路由由路由算法实现,包括:

  • 决定数据包穿梭于网络的路径
  • 需要动态更新网络知识(监控流量、检测配置变化或故障)

算法包括2类:

  • 距离矢量(如RIP协议,有无穷计数收敛速度很慢的问题)
  • 链路状态路由(如IS-IS,OSPF协议)

3.6 拥塞控制

为了避免数据包在网络传输时经拥塞结点而被丢弃的情况,将数据包保存在拥塞结点之前的结点中,之至拥塞减少。

会增加延迟,但不会极大降低吞吐量。

通常是通过通知发生拥塞的路由上的结点实现。

3.7. 网际互连

需要集成多个子网,要实现:

  • 统一的互连网络寻址方案(如IP地址)
  • 定义互连网络的数据包格式和处理协议(如IP协议)
  • 互连组件,用于按照互连网络地址将数据包路由到目的地,可用多种网络计数的子网传递数据包
    • 路由器(网络层):负责将任意连接的互连网络数据包准确传到下一条连接
    • 网桥(链路层):连接不同种类(同一子网)的网络
    • 集线器(物理层):将多个网络连接器来,但是只作用于物理层,连冲突域都无法分离
    • 交换机(链路层):功能和集线器类似,但能分割冲突域
    • 隧道:在相异网络环境下传输数据包的软件层,不同的底层网络协议被隐藏器来(如两台IPv6主机通信,中间有IPv4路径,则可构造隧道以隐藏不同协议的不兼容性)

4. 互联网协议

4.1. IP寻址

IP地址方案满足

  • 通用
  • 地址空间的使用必须是有效的
  • 方案有助于开发灵活有效的路由方案,地址本身不能包括太多用于路由的信息

IP的A,B,C,D,E类地址(开头1的个数)可参考计算机网络教材

4.2. IP协议

协议具体内容可参考计算机网络教材

IP地址和以太网地址翻译转换由ARP和RARP协议完成

4.3. IP路由

a) 主干

互联网拓扑图概念上被分割成自治系统(AS),再被细分为区域。

每个AS都有一个主干区域。将非主干区域连接到主干区域的路由器集合,以及这些路由器互连的链路构成网络的主干。

b) 路由协议

如RIP,OSPF(AS内部),BGP(AS与AS之间)

c) 默认路由

路由表找不到对应条目情况下,走默认路由。是表格大小和路由有效性的折中。

d) 本地子网的路由

若2主机在同一网络中,利用地址的主机标识符就能得到目的主机的地址(如MAC地址),只要一跳就能传到目的地。IP层用ARP协议获取目的地的网络地址,然后使用底层网络传输数据包。

e) CIDR

对A~C类网络进行改进,增加掩码域,IP地址与掩码逻辑与相同的主机在统一网络上。这比A~C类网络有更大的灵活性,不需要给网络单独分类,因此叫无类别域间路由

f) NAT

即网络地址翻译,用于缓解IP地址不够用的问题(另一方面是因为不是所有访问互联网的计算机都需要分配全局唯一的IP地址)

实现为:维护一个地址翻译表,使用TCP/UDP源端口和目的端口域,将每个到达的应答消息分配到发送该请求消息的内部计算机。(请求的源端口等于应答的目的端口)

工作步骤:

  • 内部计算机发送TCP/UDP包到外部,路由器接收,将源IP和端口号保存到地址翻译表中的一个项
  • 路由器替换源IP和端口号为外部的IP和虚拟端口号,虚拟端口号类似指针,执行刚保存的地址翻译表中的项
  • 路由器从外部接受UDP/TCP包后,将利用目的端口号访问地址翻译表中的项,从而对包的目的地址和端口进行替换,然后转发到内部计算机

4.4. IPv6

地址128bit,详细细节间计算机网络教材

  • 路由速度:头复杂度降低,不使用任何校验和,因此速度变快,处理时间减少
  • 实施以及其它特殊服务:流量类别和流标号域与此有关
  • 可扩展性:保留下一个头域,支持未来的扩展
  • 组播和选播:IPv4与v6都支持组播,但IPv6支持选播,即将数据包发给至少一个订阅了相关地址的主机
  • 安全性:IPv6使用加密的安全有效负载扩展头实现安全,有需要可为有效负载加密或应用数字签名(而IPv4也可以,这时使用实现IPSec的隧道)

4.5. 移动IP

DHCP: 实现为任意地方的计算机分配一个IP地址

移动IP: 保证移动计算机保持单个IP,因为“主”域的子网中每台计算机拥有固定IP。当移动主机在主站点连接到互联网时,数据包正常发送;若在其它地方,由主代理和外部代理重新路由。

  • 主代理:保存移动主机的当前位置最新情况(可到达该计算机的IP地址)。当主机离开时,主代理充当一个代理服务器,通知本地路由器取消该主机IP地址的所有缓存记录。主代理作为代理服务器时,响应移动主机IP地址的ARP请求,将自己的局域网地址作为移动主机的网络地址发送给该请求。
  • 外部代理:主机到新站点时,通知该站点外部代理,代理分配一个该本地子网的新临时IP地址,然后和主代理联系,将移动主机的主IP地址以及临时分配的IP地址告知给主代理

4.6. TCP & UDP

都使用端口,端口用于寻址特定计算机上的进程,仅在此计算机有效。

a) UDP

IP在传输层的赋值,不提供传输保障。

b) TCP

基于字节流的抽象,提供任意长度字节串的可靠传输,且面向端到端。

TCP面向连接,需要建立连接才能进行通信(三次握手,双向通信;四次挥手)

可靠机制有:

  • 排序:顺序保证
  • 流控制:通过片段确认机制(返回输入最大序号和窗口大小)完成,发送方不能让接收方/中间结点过载

2个重要算法:

  • Nagle: 当数据每次以很少量的方式进入发送端时,发送端先只发送第一个字节,把后面的缓冲器来,直到第一个字节被确认后,把缓冲的一起发送出去(然后继续缓冲发送数据,等待发送的段被确认后再把缓冲数据发出,循环往复)
  • Clark: 禁止接收端发送只有1个字节的窗口更新段,强制接收端必须等待一段时间,直到由一定可用空间后再通告给对方窗口大小
  • 重传:发送后需要得到确认,否则超时要重传
  • 缓冲:接收方的接收缓冲区用于平衡发送方和接收方的流量,若发送太多,缓冲区满,消息不会得到确认,发送方可能被迫重传
  • 校验和:若不匹配,则被丢弃

4.7. 域名

通过DNS,将域名转换成IP地址。而DNS协议是UDP上的应用层协议。

实现可见计算机网络教材。

4.8. 防火墙

目的在于监控和控制进出内部网络的所有通信,由一组进程实现,作为通信内部网络的网关,应用组织的安全策略,包含:

  • 服务控制:确定哪些内部服务可被外部访问,拒绝其它服务的访问请求
  • 行为控制:用于防止恶意行为,如进行地址过滤,消息内容过滤等
  • 用户控制:对某些用户允许访问外部服务,其它用户禁止访问外部服务

4.9. 虚拟私网(VPN)

通过使用IP层的密码保护安全通道,VPN将防火墙保护的界限延伸到内部网络之外。IPSec是实现VPN的基础。

其可以用于外部用户,或在使用公共互联网链接的位于不同站点的企业内部网之间实现安全连接。

更多可参考计算机网络教材。