计算机和因特网

一、什么是因特网

1.1 描述因特网的两种方式

1.1.1 从基本硬件和软件组件描述

我们将桌面PC、Linux服务器、手机电视等与因特网相连的设备称之为主机(host)或者端系统(end system)。端系统通过通信链路(communication link)和分组交换机(packet switch)连接到一起。

通信链路是由不同类型的物理媒体组成,包括同轴电缆、铜线、光纤和无线电频谱。不同的链路能够以不同速率传输数据,传输速率以bit/s或bps度量。当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节,由此形成的信息包称之为分组(packet)。

分组交换机从它的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该分组。目前市场上最著名的分组交换机类型是路由器(router)和链路层交换机(link-layer switch),其作用是向着目的地转发分组。

端系统通过因特网服务提供商(Internet Service Provider,ISP)接入因特网,包括公司ISP、大学ISP,公共场所提供的WIFI接入的ISP。每个ISP自身就是一个由多台分组交换机和多段通信链路组成的网络,各ISP为端系统提供不同类型的网络接入,如DSL接入、高速局域网接入和移动无线接入等。因特网就是将端系统彼此互联,因此为端系统提供接入的ISP也必须互联。

image_thumb[4]

                                                                             图1.1 因特网及一些部件

1.1.2 从为分布式应用提供服务描述

从为应用程序提供服务的基础设施的角度描述,诸如手机电脑应用程序,提供的即时通讯、视频会议、多人游戏等,这些应用都涉及到多个相互交换数据的端系统,故它们被称为分布式应用程序(distributed application)。因特网应用程序运行在端系统,而不是运行在网络核心中的分组交换中。

我们将因特网描述为应用程序的平台,那么一个端系统上的应用程序如何指令因特网向另一个端系统上的应用程序发送数据?与因特网相连的端系统提供一个套接字接口(socket interface),该接口规定了运行在一个端系统上的程序请求因特网基础设施向另一个端系统上的目的地程序交付数据的方式。因特网套接字接口是一套发送程序必须遵循的规则集合。

1.2 什么是协议

协议(protocol)定义了在两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送/接收一条报文或其他事件所采取的的动作。例如在两台物理连接的计算机中,硬件实现的协议控制了在两块网络接口卡间的“线上”比特流;在端系统中,拥塞控制协议控制了在发送方和接收方之间传输的分组发送的速率;路由器中的协议决定了分组从源到目的地的路径。

二、网络边缘

我们通常把与因特网相连的计算机和其他设备称为端系统,这是因为它们位于因特网的边缘。端系统也称为主机,它们能运行应用程序,而主机又被划分为两类:客户(client)和服务器(server)。

2.1 接入网

接入网指将端系统物理连接到其边缘路由器(edge router)的网络,边缘路由器是由端系统到任何其他远程端系统的路径上的第一台路由器。如图2.1蓝色线部分显示的几种类型的接入链路和环境。

clip_image002_thumb[2]_thumb[2]

                                                                                    图2.1 接入网

2.1.1 家庭接入:DSL、电缆、FTTH、拨号和卫星

数字用户线(Digital Subscriber Line, DSL):用户通常从提供本地电话接入的本地电话公司处获得DSL因特网接入,因此使用DSL接入事,用户的本队电话公司也是它的ISP。

clip_image003_thumb[2]_thumb

                                                                                  图2.2 DSL因特网接入

如图2.1.1,每个用户的DSL调制解调器使用现有的电话线(即双绞铜线)与位于电话公司的本地中心局(CO)中的数字用户线接入复用器(DSLAM)交换数据。家庭的DSL调制解调器得到数字数据后将其转换为高频音,以通过电话线传输给本地中心局;在中心局,来自家庭的模拟信号在DSLAM处被转换回数字形式。

家庭电话线同时承载了数据和传统的电话信号,它们用不同频率进行编码:

  • 高速下行通道,位于50kHz到1MHz频段;
  • 中速上行通道,位于4kHz到50kHz频段;
  • 普通双向电话信道,位于0到4kHz频段。

上行指从端系统到网络提供商,下行指网络提供商到端系统。这种方式使得单根DSL线路就像3根单独的线路一样,因此电话呼叫和因特网连接能够同时共享DSL链路。如图2.1.1,在用户一侧,一个分配器把到达家庭的数字信号和电话信号分隔开,并将数据信号转发给DSL调制解调器;在电话公司一侧,在本地中心局中,DSLAM把数据和电话信号分隔开,并将数据送往因特网。

DSL标准定义了多个传输速率,包括12Mbps下行和1.8Mbps上行传输速率[ITU 1999],以及55Mbps下行和15Mbps上行传输速率[ITU 2006]。因为上下行速率不同,所以这种接入被称为不对称的,而且实际速率可能小于上述速率。

电缆因特网接入(cable Internet access):DSL利用电话公司的本地电话基础设施,电缆因特网接入利用了有限电视公司现有的有线电视基础设施。如图2.1.3,这里同时使用了光纤和同轴电缆,因此是一个混合光纤同轴(Hybird Fiber Coax,HFC)系统,光缆将电缆头端连接到地区枢纽,从这里使用了传统的同轴电缆到达各家各户。

clip_image004_thumb[3]_thumb[1]

                                                                                                            图2.3 混合光纤同轴接入网

电缆因特网接入需要特殊的调制解调器,被称为电缆调制解调器(cable modem),电缆调制解调器通常是一个外部设备,通过一个以太网端口连接到家庭PC。在电缆头端,电缆调制解调器端接系统(Cable Modem Termination System,CMTS)与DSL网络的DSLAM具有类似功能,即将来下行的电缆调制解调器发送的模拟信号转换回数字形式。电缆调制解调器将HFC网络划分为下行和上行两个信道,同样这种接入也不是对称的,下行信道分配的传输速率通常比上行信道的高,如DOCSIS 2.0标准定义了高达42.8Mbps的下行速率和高达30.7Mbps色的上行速率,当时实际取得速率不一定能到最大速率。

电缆因特网接入的一个重要特征是共享广播媒体。特别是由头端发送的每个分组向下行经每段链路到每个家庭;每个家庭发送的每个分组经上行信道向头端传输。例如几个用户同时下载一个文件,那么每个用户接收到的文件的速率实际就低于电缆总计下行速率;如果仅有很少用户活跃用户在进行Web操作,那么每个用户几乎都可以以全部下行速率接受Web网页。这样就需要一个分布式多路访问协议来协调传输和避免碰撞。

光纤到户(Fiber To The Home):即从本地中心局直接到家庭提供一条光纤路径。这里存在两种竞争性的光纤分布体系结构:主动光纤网路(Active Optical Network,AON)和被动光纤网络(Passive Optical Network,PON)。

clip_image005_thumb[2]_thumb[2]

                                                                                                           图2.4 FTTH因特网接入

AON的本质是交换因特网,这里我们先讨论PON。如图2.1.4是使用PON分布体系结构的FTTH,每个家庭具有一个光纤网络端接器(Optical Network Terminator,ONT),它由专门的光纤连接到邻近的分配器(splitter)。该分配器把一些家庭(通常少于100)集结到一根共享的光纤,该光纤再连接到本地电话和公司的中心局中的光纤线路端接器(Potical Line Terminator,OLT)。该OLT提供了光信号和电信号之间的转换,经过本地电话公司路由器与因特网相连。在家庭中,用户将每一台家庭路由器与ONT相连,并经过这台家庭路由器接入因特网。在PON体系结构中,所有从OLT发送到分配器的分组在分配器处复制。

拨号和卫星一般不经常使用,而且速度太慢。

2.1.2 企业(和家庭)接入:以太网和我WiFi

目前在公司,校园和家庭环境中,更多使用局域网(LAN)将端系统连接到边缘路由器。如图2.1.5,以太网用户使用双绞铜线与一台以太网交换机相连,以太网交换机或这样相连的交换机网络再与更大的因特网相连。使用以太网接入,用户通常以100Mbps或1Gbps速率接入以太网交换机,而服务器可能有1Gbps到10Gbps的接入速率。

clip_image006_thumb[2]_thumb[2]

                                                                                                        图2.5 以太网因特网接入

在无线LAN环境中,无线用户从/到一个接入点发送/接受分组,该接入点与企业网相连(很可能使用有线以太网),企业网再与有线因特网相连。一个无线LAN用户通常必须位于接入点几十米范围内。

三、网路核心

网络核心,即由互联因特网端系统的分组交换机和链路构成的网状网络。

3.1 分组交换

在各种网络应用中,端系统彼此交换报文(message),报文能够包含协议设计者需要的任何东西。报文可以执行一种控制功能,也可以包含数据。为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,称之为分组(packet)。在源和目的地之间,每个分组都通过通信链路和分组交换机(packet switch)传送。分组以等于该链路最大传输速率的速度传输通过通信链路,即如果某源端系统或分许交换机经过一条链路发送一个L比特的分组,链路的传输速率为R比特/秒,则传输该分组的时间为L/R秒。

3.1.1 存储转发传输

多数分组交换机在链路的输入端使用存储转发传输(store-and-forward transmission)机制。存储转发传输是指在交换机能够开始向链路传输该分组的第一个比特之前,必须接收到整个分组。

clip_image007_thumb[1]_thumb[1]

                                                                                                        图3.1 存储转发分组交换

在图3.1由两个端系统经一台路由器连接构成的简单网络中,路由器执行的任务是将分组从一条链路转移到另一条唯一的链路。该图显示的时刻,源已经传输了分组1的一部分,分组1的前沿已经到达了路由器,因为该路由器应用了存储转发机制,所以此时它还不能传输已经收到的比特,而是必须先缓存该分组的比特,直到路由器已经接收完了该分组的所有比特后,才能开始向链路传输该分组。因此该机制会有存储转发时延。

3.1.2 排队时延和分组丢失

每台分组交换机有多条链路与之相连,对于每条相连的链路,该分组交换机具有一个输出缓存(output buffer,也称为输出队列(output queue)),它用于存储路由器准备发往那条链路的分组。如果到达的分组需要传输到某条链路,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。这个等待的时间就是排队时延(queuing delay),该时延是变化的,变化程度取决于网络的拥塞程度。

因为缓存空间的大小是有限的,一个到达的分组可能发现该缓存已被其他等待到传输的分组完全充满了,此情况下将出现分组丢失(丢包)(packet loss),到达的分组或已经排队的分组之一将被丢弃。

3.1.3 转发表和路由选择协议

路由器是由一条链路接收到分组,然后向与它相连的另一条链路转发该分组,但与路由器相连的链路很多,路由器是如何决定向哪一条链路转发的呢?

因特网中,每个端系统都有一个被称为IP地址的地址,当源主机要向目的端系统发送一个分组时,源在该分组的首部包含目的地的IP地址。该地址具有一种等级结构,当分组到达网络中的路由器时,路由器会检查该分组的目的地址的一部分,并向一台相邻路由器转发该分组。每台路由器具有一个转发表(forwarding table),用于将目的地址(或目的地址的一部分)映射成为输出链路。当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索其转发表,以发现适当的出链路,路由器则将分组导向该链路。

转发表是通过路由选择协议(routing protocol)自动设置。

3.2 电路交换

分组交换(packet switching),通过网络链路和交换机移动数据方法还有电路交换(circuit switching)。在电路交换网络中,在端系统间通信会话期间,预留了端系统间沿路径通信所需要的资源(缓存,链路传输速率);在分组交换网络中,这些资源则不是预留的:会话的报文按需使用这些资源,其后果可能是不得不排队接入通信链路。

传统的电话网络是电路交换网络的例子,当一个人通过电话网向另一个发送消息,在发送方能够发送消息之前,该网络必须在发送方和接收方之间建立一条连接。这是一条真实的连接,即此时沿着发送方和接收方之间路径上的交换机都将为该连接维护连接状态。用电话术语来说,该连接被称为一条电路(circuit)。当网络创建这种电路时,它也在连接期间在该网络链路上预留了恒定的传输速率(表示为每条链路传输容量的一部分),即为该发送方-接收方连接预留了带宽,以确保发送方能用恒定速率向接收方传送数据。

clip_image008_thumb[4]_thumb[1]

                                                      图3.2 由4台交换机和4条链路组成的一个简单的电路交换网络

图3.2显示的电路交换网络,4条链路互联了4台电路交换机,这些链路中的每条都有4条电路,因此每条链路能够支持4条并行的连接。在这个端到端(end-to-end connection)连接中,使用了第一条链路中的第二条电路和第二条链路中的第四条链路,因为每条链路具有4条电路,则对于每条链路,该连接在连接期间获得链路总传输容量的1/4,即每条链路有1Mpbs的速率,则每个电路交换连接获得250Mpbs传输速率。

3.2.1 电路交换网络中的复用

频分复用(Frequency-Division Multiplexing,FDM):对于FDM,链路的频谱由跨越链路创建的所有连接共享。特别是在连接期间链路为每条连接专用一个频段。在电话网络中,这个频段的宽度通常是4kHz,该频段的宽度称为带宽。

时分复用(Time-Division Multiplexing):对于TDM链路,时间别划分为固定期间的帧,并且每个帧又被划分为固定数量的时隙。当网络跨越一条链路创建一条连接时,网络在每个帧中为该连接指定一个时隙,这些时隙专门由该连接单独使用,一个时隙(在每个帧内)可用于传输该连接的数据。

clip_image009_thumb[2]_thumb[2]

                                                                                                         图3.3 FDM与TDM

图3.3显示了一个支持多达4条电路的特定网络链路的FDM和TDM。对于FDM,每条电路连续地得到部分带宽:其频率被分割为4个频段,每个频段的带宽是4kHz;对于TDM,每条电路在时隙中周期性地得到全部带宽:其时域被分割为帧,在每帧中具有四个时隙,在循环的TDM帧中每条电路被分配相同的专用时隙。对于TDM,一条电路的传输速率等于帧速率乘以一个时隙中的比特数量。

四、分组交换网中的时延、丢包和吞吐量

4.1 分组交换网中的时延概述

当分组从一个节点沿着这条路径到后继节点,该分组在沿途的每个节点经受了几种不同类型的时延,这些时延是节点处理时延(nodal processing delay)、排队时延(queuing dalay)、传输时延(transmission delay)和传播时延(propagation dalay),这些时延累加就是节点总时延(tatal nodal delay)。

  • 处理时延:检查分组首部和决定将该分组导向何处所需要的时间是处理时延的一部分。处理时延也包括其他部分,如检查比特级别的差错所需要的时间。高速路由器通常是微妙或更低到的数量级。
  • 排队时延:在队列中,当分组在链路上等待传输时,它经受排队时延。一个特定分组的排队时延长短取决于先期到达的正在排队等待向链路传输分组的数量。实际排队时延可以是毫秒到微秒量级。
  • 传输时延:假定分组以先到先服务方式传输,仅当所有已经到达的分组被传输后,才能传输刚到达的分组。用L比特表示该分组长度,用Rbps表示路由器A到路由器B的链路传输速率,传输时延是L/R。实际传输时延通常在毫秒级到微妙级。
  • 传播时延:当一个比特从路由器A推出链路,向路由器B传播所需要的时间是传播时延。该比特以该链路的传播速率传播,这个速率取决于链路的物理媒介。传播时延等于两台路由器之间的距离d,除以链路的传播速率s。在广域网中,传播时延为毫秒量级。

这里传输时延是路由器推出分组所需要的时间,它是分组长度和链路传输速率的函数,与两台路由器间的距离无关;传播时延是一个比特从一台路由器经链路传播到另一台路由器所需要的时间,它是两台路由器之间距离的函数。

4.2 计算机网络中的吞吐量

除时延和丢包,计算机网络另一个至关重要的性能测度是端到端吞吐量。假设主机A到主机B跨越计算机网络传送一个大文件,则在任何时间瞬间的瞬时吞吐量(instantaneous throughput)是主机B接收到该文件的速率。如果该文件由F比特组成,主机B接受到所有F比特用去T秒,则文件传送的平均吞吐量(average throughput)是F/Tbps。

clip_image010_thumb[1]_thumb[1]

                                                                           图4.1 一个文件从服务器传送到客户的吞吐量

图4.1a中显示了服务器和客户这两个端系统,它们由两条通信链路和一台路由器相连。令Rs为服务器与路由器之间的链路速率,Rc为路由器和客户之间的链路速率。假定在这个网络中只有从服务器到客户的比特在传送,此时这台服务器不能以快于Rs的速率向链路注入比特,而路由器也不能以快于Rc的速率转发比特。如果Rs<Rc,则在给定Rs的情况下,从服务器注入的比特将顺畅的通过路由器,并以Rs的速率到达客户,因此端到端吞吐量为Rs;如果Rs>Rc,比特将以Rc的速率离开路由器到达客户,因此端到端吞吐量为Rc。因此对于这种简单的两链路网络,其吞吐量是min{Rc, Rs},这就是说它是瓶颈链路(bottleneck link),这时我们可以得到传输一个F比特的大文件所需时间F/min{Rc, Rs}。

同样的在图4.1b中,两主机之间有N条链路,但与两链路相同,其文件传输吞吐量为min{R1, R2, … ,Rn}。但在图4.2的网络中,假设有且只有10个下载正在发生,这里有一条所有10个下载通过的链路。这条链路R的速率为R,假设所有服务器接入链路具有相同的速率Rs,所有客户接入链路具有相同速率Rc。这时假如R速率远大于Rs、Rc,则每个下载的吞吐量仍是min{Rc,Rs}。但如果R与Rs、Rc是相同量级,例R = 5Mbps,Rs = 2Mbps,Rc = 1Mbps,公共链路为10个下载平均划分它的传输速率,则这时的瓶颈就位于该共享链路,它仅能为每个下载提供500kbps的吞吐量。

clip_image011_thumb[2]_thumb[2]

                                    图4.2 10个客户从10个服务器下载文件

五、协议层次及其服务模型

5.1 分层的体系结构

分层体系结构使某层所提供的服务实现易于改变。只要该层对其上面的层提供相同的服务,并且使用来自下面层次的相同服务,当某层的实现变化时,该系统的其余部分保持不变。

5.1.1 协议分层

因特网的协议栈(protocol stack)由5个层次组成:物理层、链路层、网络层、运输层和应用层。需要提一下的是,5层协议栈不是唯一的协议栈,还有国际标准组织(ISO)提出的OSI模型,即开放系统互连模型,它是一个7层协议栈:应用层、表示层、会话层、运输层、网络层、数据链路层和物理层。

(1)应用层

应用层是网络应用程序及它们的应用层协议存留的地方。应用层包括很多协议,如HTTP(提供了Web文档的请求和传送)、SMTP(提供了电子邮件报文的传输)、FTP(提供两个端系统之间的文件传送)和DNS(域名系统)。

应用层协议分布在多个端系统上,而一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组,这种位于应用层的信息分组称为报文(message)。

(2)运输层

因特网的运输层在应用程序端点之间传送应用层报文。这里有两种运输协议,TCP和UDP,利用其中任何一个都能运输应用层报文。TCP向它的应用程序提供了面向连接的服务,这种服务包括了应用层报文向目的地的确保传递和流量控制(即发送方/接收方速率匹配),TCP也将长报文划分为短报文,并提供拥塞控制机制,因此当网络拥塞时,源抑制其传输速率。UDP向它的应用程序提供无连接服务,这是一种不提供不必要服务的服务,没有可靠性,没有流量控制,也没有拥塞控制。我们把运输层的分组称为报文段(segment)

(3)网络层

因特网的网络层负责将称为数据报(datagram)的网络层分组从一台主机移动到另一台主机。在一台源主机中的因特网运输层协议向网络层递交运输层报文段和目的地址。

因特网的网络层协议包括网际协议IP,该协议定义了在数据报中的各个字段以及端系统和路由器如何作用于这些字段。IP仅有一个,所有具有网络层的因特网组件必须运行IP。网络层也包括决定路由的路由选择协议,它根据该路由将数据报从源传输到目的地。

(4)链路层

因特网的网络层通过源和目的地之间的一系列路由器路由数据报。为了将分组从一个节点移动到路径上的下一个节点,网络层必须依靠链路层服务。特别是在每个节点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个节点。在该下一个节点,链路层将数据报上传给网络层。

由链路层提供的服务取决于应用于该链路的特定链路层协议,例如以太网、WiFi和电缆接入网的DOCSIS协议。因为数据报从源到目的地传送通常要经过几条链路,一个数据报可能被沿途不同链路上的不同链路层协议处理。我们把链路层分组称为(frame)。

(5)物理层

物理层的任务是将该帧中的一个个比特从一个节点移动到下一个节点。这一层中的协议仍然是链路相关的,并且进一步与该链路的实际传输媒体相关。

5.2 封装

图5.1所示,链路层交换机实现了第一层和第二层;路由器实现了第一层到第三层。这意味着路由器能够实现IP协议,而链路层交换机不能,但链路层交换机能够识别第二层地址。

这个图也说明了封装(encapsulation)的概念。在发送主机端,一个应用层报文(application-layer message)被传送给运输层,运输层收到报文并附上附加信息,该首部将被接收端的运输层使用。应用层报文和运输层首部信息一道构成了运输层报文段(transport-layer segment)。运输层则向网络层传递该报文段,网络层增加了如源和目的端系统地址等网络层首部信息,生成了网络层数据报(network-layer datagram)。该数据报接下来被传递给链路层,链路层增加链路层首部信息并生成链路层帧(link-layer frame)。在每一层,一个分组具有两种类型的字段:首部字段和有效载荷字段(payload field),有效载荷字段通常来自上一层分组。

clip_image012_thumb[2]_thumb[1]

                                                                                             图5.1 主机、路由器和链路层交换机

posted @ 2020-09-17 21:13  Aidan_Chen  阅读(484)  评论(0编辑  收藏  举报