计算机网络和因特网笔记
1、什么是因特网
端系统通过 通信链路(communication link)和 分组交换机(packet switch)连接到一
起。在1.2节中,我们将介绍许多类型的通信链路,它们由不同类型的物理媒体组成。这
些物理媒体包括同轴电缆、铜线、光纤和无线电频谱。不同的链路能够以不同的速率传输
数据,链路的 传输速率(transmission rate)以比特/秒(bit/s,或bps)度量。当一台端系
统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节。由此
形成的信息包用计算机网络的术语来说称为 分组(packet)。这些分组通过网络发送到目
的端系统,在那里被装配成初始数据。
分组交换机从它的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该
分组。市面上流行着各种类型、各具特色的分组交换机,但在当今的因特网中,两种最著
名的类型是 路由器(router)和 链路层交换机(link-layer switch)。这两种类型的交换机朝
着最终目的地转发分组。链路层交换机通常用于接入网中,而路由器通常用于网络核心
中。从发送端系统到接收端系统,一个分组所经历的一系列通信链路和分组交换机称为通
过该网络的 路径(mute或path)。
用于传送分组的分组交换网络在许多方面类似于承载运输车辆的运输网络,该网络包
括了高速公路、公路和交叉口。例如,考虑下列情况,一个工厂需要将大量货物搬运到数
千公里以外的某个目的地仓库。在工厂中,货物要分开并装上卡车车队。然后,每辆卡车
独立地通过高速公路、公路和立交桥组成的网络向仓库运送货物。在目的地仓库,卸下这
些货物,并且与一起装载的同一批货物的其余部分堆放在一起。因此,在许多方面,分组
类似于卡车,通信链路类似于高速公路和公路,分组交换机类似于交叉口,而端系统类似
于建筑物。就像卡车选取运输网络的一条路径前行一样,分组则选取计算机网络的一条路
径前行。
2、网络核心
2.1、分组交换
在各种网络应用中,端系统彼此交换 报文(message)。报文能够包含协议设计者需
要的任何东西。报文可以执行一种控制功能,也可以包含数据,例如电子邮件数据、JPEG图像
或MP3音频文件。为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据
块,称之为 分组(packet)。在源和目的地之间,每个分组都通过通信链路和 分组交换机
(packet switch )传送。(交换机主要有两类:路由器(router)和 链路层交换机
(link-layer switch)。)分组以等于该链路最大传输速率的速度传输通过通信链路。因此,
如果某源端系统或分组交换机经过一条链路发送一L比特的分组,链路的传输速率为R比特/秒,
则传输该分组的时间为L/R秒。
- 存储转发传输
多数分组交换机在链路的输入端使用 存储转发传输(store-and-forward transmission)
机制。存储转发传输是指在交换机能够开始向输岀链路传输该分组的第一个比特之前,必
须接收到整个分组。- 排队时延和分组丢失
每台分组交换机有多条链路与之相连。对于每条相连的链路,该分组交换机具有一个
输出缓存(output buffer,也称为 输出队列(output queue)),它用于存储路由器准备发往
那条链路的分组。该输出缓存在分组交换中起着重要的作用。如果到达的分组需要传输到
某条链路,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。因
此,除了存储转发时延以外,分组还要承受输岀缓存的 排队时延(queuing delay)。这些时
延是变化的,变化的程度取决于网络的拥塞程度。因为缓存空间的大小是有限的,一个到
达的分组可能发现该缓存已被其他等待传输的分组完全充满了。在此情况下,将出现分组
丢失(丢包)(packet loss),到达的分组或已经排队的分组之一将被丢弃。- 转发表和路由选择协议
在因特网中,每个端系统具有一个称为IP地址的地址。当源主机要向目的端系统发
送一个分组时,源在该分组的首部包含了目的地的IP地址。如同邮政地址那样,该地址
具有一种等级结构。当一个分组到达网络中的路由器时,路由器检查该分组的目的地址的
一部分,并向一台相邻路由器转发该分组。更特别的是,每台路由器具有一个 转发表
(forwarding table),用于将目的地址(或目的地址的一部分)映射成为输岀链路。当某分
组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索其转发表,以发现适当
的出链路。路由器则将分组导向该出链路。
2.2 电路交换
在电路交换网络中,在端系统间通信会话期间,预留了端系统间沿路径通信所需要的
资源(缓存,链路传输速率)。在分组交换网络中,这些资源则不是预留的;会话的报文
按需使用这些资源,其后果可能是不得不等待(即排队)接入通信线路。
- 链路中的电路是通过 频分复用 (Frequency- Division Multiplexing, FDM )
或 时分复用(Time-Division Multiplexing, TDM)来实现的。- 分组交换与电路交换的对比
在描述了电路交换和分组交换之后,我们来对比一下这两者。分组交换的批评者经常
争辩说,分组交换不适合实时服务(例如,电话和视频会议),因为它的端到端时延是可
变的和不可预测的(主要是因为排队时延的变动和不可预测所致)。分组交换的支持者却
争辩道:①它提供了比电路交换更好的带宽共享;②它比电路交换更简单、更有效,实现
成本更低。分组交换与电路交换之争的有趣讨论参见[Molinero-Fernandez 2002 ]。概括而
言,嫌餐馆预订麻烦的人宁可要分组交换而不愿意要电路交换。
3、分组交换网中的时延、丢包和吞吐量
3.1 分组交换网中的时延概述
前面讲过,分组从一台主机(源)出发,通过一系列路由器传输,在另一台主机
(目的地)中结束它的历程。当分组从一个节点(主机或路由器)沿着这条路径到后继节
点(主机或路由器),该分组在沿途的每个节点经受了几种不同类型的时延。这些时延最
为重要的是 节点处理时延(nodal processing delay) 排队时延(queuing delay)、传输时延
(transmission delay)和 传播时延(propagation delay),这些时延总体累加起来是节点总时
延(tolal nodal delay)。
3.2 时延的类型
- 处理时延
检查分组首部和决定将该分组导向何处所需要的时间是 处理时延的一部分。处理时延
也能够包括其他因素,如检查比特级别的差错所需要的时间,该差错岀现在从上游节点向
路由器A传输这些分组比特的过程中。- 排队时延
在队列中,当分组在链路上等待传输时,它经受 排队时延。一个特定分组的排队时延长
度将取决于先期到达的正在排队等待向链路传输的分组数量。如果该队列是空的,并且当前
没有其他分组正在传输,则该分组的排队时延为0。另一方面,如果流量很大,并且许多其
他分组也在等待传输,该排队时延将很长。我们将很快看到,到达分组期待发现的分组数量
是到达该队列的流量的强度和性质的函数。实际的排队时延可以是毫秒到微秒量级。- 传输时延
假定分组以先到先服务方式传输— 这在分组交换网中是常见的方式,仅当所有已经
到达的分组被传输后,才能传输刚到达的分组。用L比特表示该分组的长度,用R bps
(即b/s)表示从路由器A到路由器B的链路传输速率。例如,对于一条10Mbps的以太网
链路,速率尺二10Mbps;对于100Mbps的以太网链路,速率R = 100Mbps。 传输时延是厶/
尺。这是将所有分组的比特推向链路(即传输,或者说发射)所需要的时间。实际的传输
时延通常在毫秒到微秒量级。- 传播时延
一旦一个比特被推向链路,该比特需要向路由器B传播。从该链路的起点到路由器B
传播所需要的时间是 传播时延。
传输时延与传播时延的比较
计算机网络领域的新手有时难以理解传输时延和传播时延之间的差异。该差异是微妙
而重要的。传输时延是路由器推出分组所需要的时间,它是分组长度和链路传输速率的函
数,而与两台路由器之间的距离无关。另一方面,传播时延是一个比特从一台路由器传播
到另一台路由器所需要的时间,它是两台路由器之间距离的函数,而与分组长度或链路传
输速率无关。
3.3 排队时延和丢包
什么时候排队时延大,什么时候又不大呢?该问题的答案很大程度取决于流量到达该
队列的速率、链路的传输速率和到达流量的性质,即流量是周期性到达还是以突发形式到
达。为了更深入地领会某些要点,令a表示分组到达队列的平均速率(a的单位是分组/
秒,即pkt/s)。前面讲过R是传输速率,即从队列中推出比特的速率(以bps即b/s为单
位)。为了简单起见,也假定所有分组都是由L比特组成的。则比特到达队列的平均速率
是La bps。最后,假定该队列非常大,因此它基本能容纳无限数量的比特。比率La/R被
称为 流量强度(traffic intensity),它在估计排队时延的范围方面经常起着重要的作用。如
果La/R>l,则比特到达队列的平均速率超过从该队列传输岀去的速率。在这种不幸的情
况下,该队列趋向于无限增加,并且排队时延将趋向无穷大!因此,流量工程中的一条金
科玉律是:设计系统时流量强度不能大于1。
现在考虑La/R<=1时的情况。这时,到达流量的性质影响排队时延。例如,如果分组
周期性到达,即每L/R秒到达一个分组,则每个分组将到达一个空队列中,不会有排队时
延。另一方面,如果分组以突发形式到达而不是周期性到达,则可能会有很大的平均排队
时延。例如,假定每(L/R)N秒同时到达N个分组。则传输的第一个分组没有排队时延;
传输的第二个分组就有L/R秒的排队时延;更为一般地,第几个传输的分组具有(n-1)
L/R秒的排队时延。
以上描述周期性到达的两个例子有些学术味。通常,到达队列的过程是随机的,即到
达并不遵循任何模式,分组之间的时间间隔是随机的。在这种更为真实的情况下,量La/
R通常不足以全面地表征时延的统计量。不过,直观地理解排队时延的范围很有用。特别
是,如果流量强度接近于0,则几乎没有分组到达并且到达间隔很大,那么到达的分组将
不可能在队列中发现别的分组。因此,平均排队时延将接近0。另一方面,当流量强度接
近1时,当到达速率超过传输能力(由于分组到达速率的波动)时将存在时间间隔,在这
些时段中将形成队列。当到达速率小于传输能力时,
队列的长度将缩短。无论如何,随着流量强度接近1,
平均排队长度变得越来越长。
丢包
在上述讨论中,我们已经假设队列能够容纳无穷多的分组。在现实中,一条链路前的
队列只有有限的容量,尽管排队容量极大地依赖于路由器设计和成本。因为该排队容量是
有限的,随着流量强度接近1,排队时延并不真正趋向无穷大。相反,到达的分组将发现
一个满的队列。由于没有地方存储这个分组,路由器将 丢弃(drop)该分组,即该分组将
会 丢失(lost) 。
3.4 端到端时延
前面的讨论一直集中在节点时延上,即在单台路由器上的时延。我们现在考虑从源到
目的地的总时延。为了能够理解这个概念,假定在源主机和目的主机之间有/N-1台路由
器。我们还要假设该网络此时是无拥塞的(因此排队时延是微不足道的),在每台路由器
和源主机上的处理时延是dproc,每台路由器和源主机的输出速率是R bps,每条链路的传
播时延是dprop。节点时延累加起来,得到端到端时延:
dend = N(dproc + dtrans + dprop)
同样,式中dtrans = L/R,其中L是分组长度。
3.5 计算机网络中的吞吐量
除了时延和丢包,计算机网络中另一个至关重要的性能测度是端到端吞吐量。为了定
义吞吐量,考虑从主机A到主机B跨越计算机网络传送一个大文件。例如,也许是从一个
P2P文件共享系统中的一个对等方向另一个对等方传送一个大视频片段。在任何时间瞬间
的 瞬时吞吐量(instantaneous throughput)是主机B接收到该文件的速率(以bps计)。
如果该文件由F比特组成,主机B接收到所有F比特用去T秒,
则文件传送的 平均吞吐量(average throughput.)是F/T bps。对于某些应用程序如因特网电
话,希望具有低时延和在某个阈值之上(例如,对某些因特网电话是超过24kbps,对某些
实时视频应用程序是超过256kbps)的一致的瞬时吞吐量。对于其他应用程序,包括涉及
文件传送的那些应用程序,时延不是决定性的,但是希望具有尽可能高的吞吐量。
4、协议层次及服务模型
4.1 分层的体系架构
- 协议分层
我们对航线已经进行了充分讨论,现将注意力转向网络协议。为了给网络协议的设计
提供一个结构,网络设计者以 分层(layer)的方式组织协议以及实现这些协议的网络硬件
和软件。每个协议属于这些层次之一,就像图1・22所示的航线体系结构中的每种功能属
于某一层一样。我们再次关注某层向它的上一层提供的 服务(service),即所谓一层的
服务模型(service model)。就像前面航线例子中的情况一样,每层通过在该层中执行某些动
作或使用直接下层的服务来提供服务。例如,由第n层提供的服务可能包括报文从网络的
一边到另一边的可靠交付。这可能是通过使用第n-1层的边缘到边缘的不可靠报文传送
服务,加上第几层的检测和重传丢失报文的功能来实现的。
将这些综合起来,各层的所有协议被称为 协议栈(protocol stack) o因特网的协议栈由
5个层次组成:物理层、链路层、网络层、运输层和应用层。
1.1 应用层
应用层是网络应用程序及它们的应用层协议存留的地方。因特网的应用层包括许多协
议,例如 HTTP (它提供了 Web文档的请求和传送)、SMTP (它提供了电子邮件报文的传
输)和 FTP (它提供两个端系统之间的文件传送)。我们将看到,某些网络功能,如将像
WWW. ietf. org这样对人友好的端系统名字转换为32比特的网络地址,也是借助于特定的应
用层协议即域名系统( DNS )完成的。
应用层协议分布在多个端系统上,而一个端系统中的应用程序使用协议与另一个端系统
中的应用程序交换信息分组。我们把这种位于应用层的信息分组称为 报文(message)。
1.2. 运输层
因特网的运输层在应用程序端点之间传送应用层报文。在因特网中,有两种运输协
议,即TCP和UDP,利用其中的任一个都能运输应用层报文。TCP向它的应用程序提供了
面向连接的服务。这种服务包括了应用层报文向目的地的确保传递和流量控制(即发送
方/接收方速率匹配)。TCP也将长报文划分为短报文,并提供拥塞控制机制,因此当网络
拥塞时,源抑制其传输速率。UDP协议向它的应用程序提供无连接服务。这是一种不提供
不必要服务的服务,没有可靠性,没有流量控制,也没有拥塞控制。在本书中,我们把运
输层的分组称为 报文段 (segment) 。
1.3. 网络层
因特网的网络层负责将称为 数据报(datagram)的网络层分组从一台主机移动到另一
台主机。在一台源主机中的因特网运输层协议(TCP或UDP)向网络层递交运输层报文段
和目的地址,就像你通过邮政服务寄信件时提供一个目的地址一样。
因特网的网络层包括著名的网际协议IP,该协议定义了在数据报中的各个字段以及端
系统和路由器如何作用于这些字段。IP仅有一个,所有具有网络层的因特网组件必须运行
IP。因特网的网络层也包括决定路由的路由选择协议,它根据该路由将数据报从源传输到
目的地。因特网具有许多路由选择协议。如我们在1・3节所见,因特网是一个网络的网
络,并且在一个网络中,其网络管理者能够运行所希望的任何路由选择协议。尽管网络层
包括了网际协议和一些路由选择协议,但通常把它简单地称为IP层,这反映了 IP是将因
特网连接在一起的黏合剂这样的事实。
1.4. 链路层
因特网的网络层通过源和目的地之间的一系列路由器路由数据报。为了将分组从一个
节点(主机或路由器)移动到路径上的下一个节点,网络层必须依靠该链路层的服务。特
别是在每个节点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个
节点。在该下一个节点,链路层将数据报上传给网络层。在本书中,我们把链路层分组称为 帧(fnmie)。
1.5. 物理层
虽然链路层的任务是将整个帧从一个网络元素移动到邻近的网络元素,而物理层的任务
是将该帧中的一个个比特从一个节点移动到下一个节点。在这层中的协议仍然是链路相关
的,并且进一步与该链路(例如,双绞铜线、单模光纤)的实际传输媒体相关。
- 封装
图1・24说明了一个重要概念:封装(encapsulation)。在发送主机端,一个 应用层报文
(application-layer message)(图1・24中的M)被传送给运输层。在最简单的情况下,
运输层收取到报文并附上附加信息(所谓运输层首部信息,图1-24中的H1,该首部将被
接收端的运输层使用。应用层报文和运输层首部信息一道构成了 运输层报文段 (transportlayer segment)。
运输层报文段因此封装了应用层报文。附加的信息也许包括了下列信息:
允许接收端运输层向上向适当的应用程序交付报文的信息;差错检测位信息,该信息让接
收方能够判断报文中的比特是否在途中已被改变。运输层则向网络层传递该报文段,网络
层增加了如源和目的端系统地址等网络层首部信息(图1・24中的Hn),生成了 网络层数据报
(network-layer datagTam)。该数据报接下来被传递给链路层,链路层(自然而然地)
增加它自己的链路层首部信息并生成 链路层帧(link layer frame)。所以我们看到,在每一
层,一个分组具有两种类型的字段:首部字段和 有效载荷字段(payload field)。有效载荷
通常是来自上一层的分组。
这里一个有用的类比是经过公共邮政服务在某公司办事处之间发送一封备忘录。假定
位于某办事处的Alice要向位于另一办事处的Bob发送一封备忘录。该备忘录类比于应用
层报文。Alice将备忘录放入办事处之间的公函信封中,并在公函信封上方写上了 Bob的
名字和部门。该办事处之间的公函信封类比于运输层报文段,即它包括了首部信息(Bob
的名字和部门编号)并封装了应用层报文(备忘录)。当发送办事处的收发室拿到该办事
处之间的备忘录时,将其放入适合在公共邮政服务发送的信封中,并在邮政信封上写上发
送和接收办事处的邮政地址。此处,邮政信封类比于数据报,它封装了运输层的报文段
(办事处之间的公函信封),该报文段封装了初始报文(备忘录)。邮政服务将该邮政信封
交付给接收办事处的收发室。在此处开始了拆封过程。该收发室- 取出了办事处之间的公函
信封并转发给Bob。最后,Bob打开信封并拿走了备忘录。


浙公网安备 33010602011771号