computer network

本篇文章中,我们用“计算机网络”来表示一组通过单一技术相互连接的自主计算机集合。虽然分布式系统和计算机网络易被混淆,但是由一组独立的计算机组成的分布式系统呈现给用户的是一个关联。最著名的分布式系统是万维网。网络与分布式之间的区别在于软件特别是(操作系统),而不是硬件。

第一章 引言

1.1 使用计算机网络

1.1.1 商业用途

img

这样的安排安排方式称为客户机——服务器模型。构建计算机网络的第一个目标:信息共享,第二个:通信媒介。
img
对很多公司来说,构建计算机网络的第三个目标是电子商务

1.1.2 家庭应用

img
另一宗无处不在的应用是普适计算,就是各种测量和报告通过网络获得。

1.1.3 移动用户

这里主要涉及如下几个名称:无线热点、固定无线和移动无线、智能手机、移动商务、近场通信、传感器网络、可穿戴式计算机等。

1.1.4 社会问题

1.2 网络硬件

关于计算机网络的分类,没有一种被普遍接受的分类方法,但是有两个维度非常重要:传输技术和网络尺度。从广义上讲,普遍使用的传输技术有两种,分别是:广播式链路和点到点链路。
在一个由点到点链路组成的网路中,为了从源端到达接收方,短消息必须首先访问一个或多个中间机器,这种短消息在某些情况下被称为数据包或包packet。只有一个接收方和发送方,因此也被称为单播
无线链路是广播网络常见的一个例子,一个区域内的通信由该区域内的机器共享,而该区域的划分取决于无线信道和传输机器。
广播系统往往还提供将一个数据包发送所有目标机器的可能性,只要在地址字段中使用一个特殊的编码。这种传输模式称为广播,有些广播系统还支持给一组机器发送数据包的模式,这种传输模式称为组播另一种对网络分类的标准是网络尺度

1.2.1 个域网

个域网:允许设备围绕着一个人进行通信。例子:计算机可以通过无线网络与其他外围设备连接。

1.2.2 局域网

局域网是一种私有网络,一般在一座建筑物内或建筑物附近,当用于公司时,就称为企业网络。
在大多情况下,每台计算机与安装在天花板上帝的一个设备通信,如图a所示,这个设备称为接入点、无线路由器或者基站
img

图b显示了一个交换式以太网的拓扑例子,每台计算机按照以太网协议规定的方式运行,通过一条点到点链路连接到一个盒子,这个盒子称为交换机,这就是交换式以太网名字的由来。一个交换机有多个端口,每个端口连接一台计算机。

如果将交换机插入到彼此的端口中形成一个环,这会出现什么情况呢?这正是协议的工作任务 ,协议必须梳理数据包的路径,并选择该走的路径,抵达预计的计算机。

经典以太网:所有的数据包在一条线性电缆上广播,因而一次至多只有一台机器能发送成功,为此,需要一个分布式仲裁机制来解决冲突问题。

无线和有线广播网络可分为静态设计和动态设计,两种设计取决于如何分配信道,一个典型的静态分配方案是将时间划分成离散的时间间隔(时间槽)并使用轮循算法,每台机器只能子啊分配给它的时间槽到来时广播,但是这样就造成了 浪费,当时间槽到来时没有任何数据需要发送。所以大多数系统试图用动态分配信道

一个公共信道的动态分配方法可以是集中式的,也可以是分散式的。

1.2.3 城域网

其范围可覆盖一个城市,最有名的城域网例子是许多城市都有的有线电视网。

img

1.2.4 广域网

下图为连接澳大利亚3个分支办事处的WAN。把这些机器称为主机,将连接这些主机的网络剩余部分称为通信子网,简称为子网(subnet)。 子网的工作是把信息从一个主机携带到另一个主机,就像电话系统把说话者的话(实际上是声音)传递给接听者一样。

在大多数广域网中,子网由两个不同部分组成:传输路线和交换元素传输线路负责在机器之间移动比特,交换元素简称为交换机。当数据到达一条入境线路时,交换元素必须选择 一条出境线路把数据转发出去。这些负责交换的计算机现在成为路由器

img

公司并不租赁专用的传输线路,而是把自己的办事处连接到Intrenet上。在这种方式下,办事处之间可以通过虚拟链路相互连接,而这些虚拟线路使用了底层的Internat的容量。

img

子网由不同公司负责运行,子网经营者称为网络服务提供商,子网运营商要与Internet的其他网络连接,这样的子网运行商称为Internet服务器,相应的子网称为ISP网络

网络如何决定使用哪条路径的策略称为路由算法,其种类很多。每个路由器如何决定把一个数据包发送到哪个位置的策略称为转发算法

img

1.2.5 互联网络

一组相互连接的网络称为互联网络或互联网。
子网:网络运营商所拥有的一组路由器和通信线路,子网和他的主机结合在一起形成了一个网络。
将两个或多个网络连接起来并提供必要转换的机器,其硬件和软件方面的总称是网关。(路由器)

1.3 网路软件

1.3.1 协议层次结构

为了降低网络设计的复杂性,绝大多数网络都组织成一个层次栈或分级栈,每一层都建立在其下一层的基础之上。这种分层的基本思想是:一个特定的软件(或硬件)像其用户提供某种服务,但是内部状态和算法 的细节隐藏起来。所谓协议,是指通信双方就如何进行通信的一种约定。下图展示了一个五层网路。虚线表示虚拟通信,实线表示物理通信。
img

层和协议的集合称为网络体系结构。一个特定的系统所使用的一组协议,即每一层一个协议,称为协议栈(protocal stack)。网络体系结构、协议栈以及协议本身是本文的主要内容。

现考虑一个更加技术性的例子,下图为如何向5层网络的最顶层提供通信。
img
对于第四层上传递的消息大小没有任何限制,但是几乎所有第三层协议对此都会加强一个限制。第三层把入境消息分割成较小的单元,即 数据包或包,并且在每个数据包前面加上第三层的头。第三层的M1和M2,是被单独传输的。

1.3.2 层次设计问题

从接收到的信息中发现错误所用的一种机制是检错编码;还有纠错编码。由于网络上有许多计算机,每一层在特定的消息中都需要一种机制来标识发送方和接收方,这种机器在下层和高层分别称为寻址和命名
接下来介绍几个名词:

-网络互联: 由于不同的网络技术往往具有不同的限制,如通信信道上发送消息的顺序不固定,还有网络能够传输消息的最大长度差异而导致分段机制的出现,这些问题综合起来就是所谓的网络互联。
-可扩展的:网络规模变大时仍能工作良好的设计被说成是可扩展的。
-统计复用:许多网络设计根据主机的短期需求变化动态共享网络带宽,而不是给主机分配可用可不用的带宽。即根据统计需求来共享带宽。
-流量控制:解决快速发送方不会用数据把慢速接收方淹没的问题。网络超载问题就是拥塞。

大多数网络必须为那些需要这种实时传递的应用程序提供服务,并为高吞吐量的应用程序提供服务。服务质量是给予调和这些竞争需求机制的名称。

1.3.3 面向连接与无连接服务

下层可以向上层提供两种不同类型的服务:面向连接的服务和无连接的服务。

  • 面向连接的服务:这种连接最本质的方面在于它像一个通道,发送方把对象(数据位)压入管道的一端,接收方在管道的另一端将他们取出来。大多数情况,数据位均保持顺序
  • 无连接服务:按邮政系统建模的。每个报文(信件)都携带了完整的目标地址,报文在不同的上下文中有不同的称呼:数据包/包是网络层的报文。如果中间节点接收到该报文的全部内容之后并将其发送给下一个节点,这种处理方式称为存储-转发交换;若在没有全部传输完就传送下一个节点名,称为直通式交换

可靠的面向连接服务有两个细微的变异形式:报文序列和字节流。不可靠(意味着没有被确认)的无连接服务通常称为数据报服务。
有确认的数据报服务:为如:寄挂号信时要求一个回执一样,当发送方收到回执时可绝对相信这封信已被送到对方手中;以及手机上的文本消息等实例。
请求-应答服务:发送方传入一个有某请求的数据报,接受方有一个包含请求结果的应答数据的回馈 。例如,一个手机用户向地图服务发出一个请求,要求查询当前位置的地图数据。

img

1.3.4服务原语

一个服务由一组原语(primitive)正式说明,用户进程通过这些原语(操作)来访问该服务。原语告诉服务要执行某个动作,或者将对实体所执行的动作报告给用户。下图为简单的原语例子。
img

1.3.5 服务与协议的关系

  • 服务是指某一层向它上一层提供的一组原语(操作),服务定义了准备代表其用户执行哪些操作,但不涉及如何执行这些操作。服务与两层之间的接口有关,低层是服务提供者,而上层是服务用户。
  • 协议是一组规则,规定了同一层上对等实体之间所交换的数据包或者报文的格式和含义。对等实体利用协议来实现他们的服务,它们可以自由的改变协议。

下图为服务与协议的关系

img

1.4 参考模型

两个重要的网络体系结构:OSI参考模型和TCP/IP参考模型,OSI模型本身具有普遍意义,并仍然有效;TCP/IP模型则相反,模型本身没有多大用处却广为流传。

1.4.1 OSI参考模型

img
OSI参考模型本身并不是一个网络体系结构,因为它并没有定义每一层的服务和所用的协议,只是指明了每层应该做些什么事。ISO已经为所有层都定制了相应的标准,虽然这些标准并不属于模型本身。
以下为七层的定义和作用:

  • 物理层:关注在一条通信信道上传输原始比特。设计问题必须确保当一方发送的了比特1时,另一方收到的也是比特1,而不是比特0。
  • 数据链路层:将一个原始的传输设施转变成一条没有漏检传输错误的线路。具体做法是将真实的错误掩盖起来,使得网络层看不到。发送方将输入的数据拆分成数据帧,接收方给发送方发回一个确认帧
    <注意>往往需要一种流量调节机制,避免一个快速发送方用数据“淹没”一个慢速接收方。
  • 网络层:控制子网的运行。一个关键的设计问题 是如何将数据包从源端路由到接收方。
  • 传输层:接收来自上一层的数据,在必要的时候把这些数据分割成较小的单元,然后把这些数据单元传递给网络层。
  • 传输层还决定了会话层,是真正的端到端的层,自始至终将数据从源端携带到接收方。
  • 会话层:允许不同机器上的用户建立会话。会话通常提供各种服务,包括对话控制、令牌管理及同步功能等。
  • 表示层:其以下的各层最关注的是如何传递数据位,而表示层关注的是所传递信息的语法和语义。
  • 应用层:包含了各种用户需要的协议,最广泛之一的协议是超文本传输协议(HTTP),是万维网的基础。

1.4.2 TCP/IP参考模型

  • 链路层:描述了链路必须完成什么功能才能满足无连接的互联网络层的需求,如串行线和经典以太网链路。这不是真正意义上的一个层,而是主机与传输线路之间的一个接口。
  • 互联网层:将整个网络体系结构贯穿在一起的关键层。大致对应于OSI的网路层。该层的任务书允许主机将数据包注入到任何网络,并让这些数据包独立的到达接收方。
    img
    互联网层定义了官方的数据包格式和协议,该协议称为因特网协议(IP),还有一个复制协议,称作因特网控制报文协议。
  • 传输层:设计目标是允许源主机和目标主机上的对等实体进行对话,类似于OSI的传输层一样。有两个协议:
    传输控制协议(TCP):允许从一台机器发出的字节流正确无误地交付到互联网的另一台机器。
    用户数据报协议(UDP):适用于那些不想要TCP的有序性或流量控制功能,而自己提供这些功能的应用程序。
  • 应用层:应用层简单的包含了所需的任何会话和表示功能,包含了所有的高层协议。
    img

1.4.3 本书使用的模型

本书中讨论的模型有五层(由下到上):物理层、数据链路层、网络层、传输层、应用层。

1.4.4 OSI参考模型与TCP/IP参考模型的比较

共同点:都以协议栈概念为主,且彼此独立,各层功能相似。
不同点:层数不同;无连接和面向连接的通信领域不同。

1.4.5 OSI模型和协议的判断

1.5 网络实例

1.5.1 因特网

不是单个网络,而是大量不同网络的集合,这些网络使用特定的公共协议,并提供特定的公共服务
IMP(Interface message processors):接口报文处理器。

1.5.2 第三代移动电话网络