本系列学习笔记只关注重点知识的归纳总结。绝大部分内容来自一本教材《计算机网络教程》谢钧、谢希仁编著。

ISP

从 1993年开始,由美国政府资助的 NSFNET 逐渐被若干个商用的因特网主干网替代,而政府机构不再负责因特网的运营,而是让各种 ISP 来运营。ISP 又常译为因特网服务提供商。

ISP可以从因特网管理机构申请到成块的IP地址,同时拥有通信线路(大的ISP自己建设通信线路,小的ISP则向电信公司租用通信线路),以及路由器等连网设备。任何机构和个人只要向ISP交纳规定的费用,就可从ISP得到所需的IP地址,并通过该ISP接入到因特网。我们通常所说的“上网”就是指“通过某个ISP接入到因特网”。

IP地址的管理机构不会把一个单个的IP地址分配给某个单个用户(不“零售”IP地址),而是把一批IP地址有偿分配给经审查合格的ISP(只“批发”IP 地址)。从以上所讲的可以看出,现在的因特网已不是某个单个组织所拥有而是全世界无数大大小小的ISP所共同拥有。

在图中,最高级别的第一层 ISP(tier-1 ISP)的服务面积最大,一般都能够覆盖国际性区域范围,并拥有高速链路和交换设备。第一层 ISP通常也被称为因特网主干网(Internet backbone),并直接与其他第一层ISP相连。第二层ISP和一些大公司都是第一层ISP的用户,通常具有区域性或国家性覆盖规模,与少数第一层ISP相连接。第三层ISP又称为本地ISP,它们是第二层ISP的用户,且只拥有本地范围的网络。一般的校园网或企业网,以及住宅用户和无线移动用户等,都是第三层ISP的用户。ISP向它的用户收费,费用通常根据连接两者的带宽而定。一个ISP也可以选择与其他同层次ISP相连,当两个同层次ISP彼此直接相连时,它们被称为彼此是对等(peer)的。

相隔较远的两台主机的通信可能需要经过多个ISP(下图中的灰色粗线表示主机A要经过许多不同层次的ISP才能把数据传送到主机B)。顺便指出,一旦某个用户能够接入到因特网,那么他就能够成为一个 ISP。他需要做的就是购买一些如调制解调器或路由器这样的设备,让其他用户能够和他相连接。因此,下图所示的仅仅是个示意图,一个ISP可以很方便地在因特网拓扑上增添新的层次和分支。

image-20210721101626568

Internet拓扑结构

因特网的拓扑结构可以划分为以下的两大块: (1)边缘部分。由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来运行各种网络应用,为用户直接提供电子邮件、文件传输、网络音/视频等服务。 (2)核心部分。由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和数据交换)。

image-20210721103131842

核心部分起特殊作用的是路由器(router),它是一种专用计算机(但不是主机)。路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。

image-20210721103608169

路由器的关键是数据的分组交换,早先的电话网是电路交换,下面列举并对比不同交换技术的特点:

电路交换——整个报文的比特流连续地从源点直达终点,好像一条物理的线路直接将源点和终点连接起来一样。

报文交换——整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。

分组交换——单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点。注意,分组交换结点的输出接口和输入接口能够并行工作,当输出端口在发送一个分组时,其输入端口可以同时接收下一个分组。

image-20210721103523426

主要性能指标

1.速率

速率就是数据的传送速率,它也称为数据率(data rate)或比特率(bit rate)。如 100 M 以太网,省略了单位中的bit/s,它的意思是速率为 100 Mbit/s 的以太网。

2.带宽

“带宽”(bandwidth)有以下两种不同的意义。

(1)指某个信号具有的频带宽度。信号的带宽是指该信号所包含的各种不同频率成分所占据的频率范围。单位是赫(或千赫、兆赫、吉赫等)记为Hz。而表示通信线路允许通过的信号频带范围就称为线路的带宽(频带宽度)。

(2)表示网络的通信线路所能传送数据的能力,单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。单位是“比特每秒”,记为bit/s。

其实,“带宽”的这两种表述之间有着密切的关系。一条通信链路的“频带宽度”越宽,其所传输数据的“最高数据率”也越高。

3.吞吐量

吞吐量(throughput)也称为吞吐率,表示在单位时间内通过某个网络(或信道、接口)的数据量。显然,吞吐量受网络的带宽或网络的额定速率的限制。例如,对于一个 100 Mbit/s的以太网,其典型的吞吐量可能也只有 70 Mbit/s。请注意,有时吞吐量还可用每秒传送的字节数或帧数来表示。

4.时延

时延(delay 或 latency)是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需要的时间。时延有时也称为延迟或迟延。需要注意的是,网络中的时延是由以下几个不同的部分组成的。

(1)发送时延

发送时延(transmission delay)是主机或路由器将分组发送到通信线路上所需要的时间,也就是从发送分组的第一个比特算起,到该分组的最后一个比特发送到线路上所需要的时间。发送时延也叫作传输时延。发送时延=分组长度/发送速率。

(2)传播时延

传播时延(propagation delay)是电磁波在信道中需要传播一定的距离而花费的时间。传播时延=信道长度/电磁波在信道上的传播速率。

(3)处理时延

主机或路由器在收到分组时要花费一定的时间进行处理,例如,分析分组的首部、从分组中提取数据部分、进行差错检验或查找适当的路由等,这就产生了处理时延。

(4)排队时延

分组在进行网络传输时,要经过许多的路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。排队时延的长短往往取决于网络当时的通信量,随时间变化会很大。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。

这样,分组从一个结点转发到另一个结点所经历的总时延就是以上4种时延之和,下图画出了这几种时延所产生的地方,希望读者能够更好地分清这几种时延:

image-20210721111041748

5.丢包率

丢包率即分组丢失率,是指在一定的时间范围内,分组在传输过程中丢失的分组数量与总的分组数量的比。丢包率具体可分为接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等。

在计算机网络中,分组丢失主要有两种情况:

  • 一种情况是由于分组在传输过程出现了比特级差错,被结点丢弃。
  • 一种情况就是当分组到达一台队列已满的分组交换机时,被交换机丢弃。

因此,丢包率反映了网络的拥塞情况。一般无拥塞时路径丢包率为 0,轻度拥塞时丢包率为1%~4%,严重拥塞时丢包率为 5%~15%。具有较高丢包率的网络通常无法使网络应用正常工作。

丢包率是网络运维人员非常关心的一个网络性能指标,但对于普通用户来说往往并不关心这个指标,因为他们通常感觉不到网络丢包。大多数网络应用底层所使用的通信软件会为用户提供可靠的传输服务,它们会自动重传丢失的分组并自动调整发送速率进行网络拥塞控制。在网络拥塞,丢包率较高时,用户所感觉到的往往是网络延时变大,“网速”变慢,而不是信息的丢失。

6.利用率

利用率有信道利用率和网络利用率两种。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。网络利用率则是全网络的信道利用率的加权平均值。

信道利用率并非越高越好。这是因为,根据排队论,当某信道的利用率增大时,该信道引起的时延也就迅速增加。当网络的利用率达到其容量的 1/2 时,时延就要加倍。当网络的利用率接近最大值1时,网络的时延就趋于无穷大。因此我们必须有这样的概念:信道或网络利用率过高会产生非常大的时延。也就是说,一定不要让信道或网络的利用率接近于 1。

因此一些拥有较大主干网的ISP通常会控制它们的信道利用率不超过50%。如果超过了就要准备扩容。

但是也不能使信道利用率太低,这会使宝贵的通信资源被白白浪费。这时需要使用更好的协议来提高信道利用率,我们还会看到一些机制,可以根据情况动态调整输入到网络中的通信量,使网络利用率保持在一个合理的范围内。

Internet体系结构

国际标准化组织(ISO)于1977年成立了专门机构研究互联互通问题。不久,他们就提出著名的开放系统互连参考模型,简称为 OSI。该模型是一个7层协议的体系结构(下图(a))。

在OSI 模型之前,TCP/IP 协议簇就已经在运行,并逐步演变成 TCP/IP 参考模型(下图(b))。得到最广泛应用的不是法律上的国际标准OSI,而是非国际标准TCP/IP。

OSI的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用。TCP/IP是一个四层的体系结构,不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。在学习计算机网络原理时往往采取折中的办法,即综合 OSI和TCP/IP的优点,采用一种只有五层协议的原理体系结构(下图(c))。

image-20210721125250448

(1)应用层(application layer)

应用层的任务是如何通过应用进程间的交互来完成特定的网络应用。应用层协议定义的是应用进程间通信和交互的规则。我们将应用层交互的数据单元称为报文(message)。

(2)运输层(transport layer)

运输层(或翻译为传输层)的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。主要有两个运输层协议:

  1. 传输控制协议(Transmission Control Protocol,TCP)——提供面向连接的,可靠的数据传输服务,其数据传输的单位是报文段(segment)。
  2. 用户数据报协议(User Datagram Protocol,UDP)——提供无连接的,尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。

(3)网络层(network layer)

网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫作IP数据报。

无论在哪一层传送的数据单元,习惯上都可笼统地用”分组”(packet)来表示。

网络层的一个重要任务就是选择合适的路由(route),将源主机运输层所传下来的分组,通过网络中的路由器的转发(通常要经过多个路由器的转发),最后到达目的主机。因特网由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来。因特网主要的网络层协议是无连接的网际协议(Internet Protocol,IP)和许多种路由选择协议,网络层也叫作网际层或IP层。

(4)数据链路层(data link layer)

计算机网络由主机、路由器和连接它们的链路组成,从源主机发送到目的主机的分组必须在一段一段的链路上传送。数据链路层的任务就是将分组从链路的一端传送到另一端。我们将数据链路层传送的数据单元称为帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、差错控制等)。

(5)物理层(physical layer)

物理层完成计算机网络中最基础的任务,即在传输媒体上传送比特流,将数据链路层帧中的每个比特从一个结点通过传输媒体传送到下一个结点。物理层传送数据的单位是比特。

发送方发送1(或0)时,接收方应当收到1(或0)而不是0(或1)。因此物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要考虑所采用的传输媒体的类型,如双绞线、同轴电缆、光缆等。当然,哪几个比特代表什么意思,则不是物理层所要管的。请注意,传递信息所利用的一些物理传输媒体本身是在物理层的下面。因此也有人把物理传输媒体当作第0层。

小结

下面用一张图形象的表示数据在各层之间的传输过程。

image-20210721130513776

现实应用中的数据传输示意图:

image-20210721134239770

TCP/IP体系结构协议族示意图:

image-20210721135004065

用下面的图也能形象的表示这个过程,现在以太网帧中已经不包含帧尾部校验和了:

image-20210813153823566

(完)