文章目录
- 因特网概述
- 网络、互联网和因特网
- 互联网历史与ISP
- 标准化与RFC
- 因特网的组成
- 三种交换方式
- 电路交换
- 分组交换和报文交换
- 三种交换方式的对比与总结
- 计算机网络的定义和分类
- 计算机网络的定义
- 计算机网络的分类
- 计算机网络的性能指标
- 速率
- 带宽
- 吞吐量
- 时延
- 时延带宽积
- 往返时间
- 利用率
- 丢包率
- 计算机体系结构
- 常见的计算机网络体系结构
- 分层的必要性
- 分层思想举例
- 专用术语
因特网概述
网络、互联网和因特网
-
网络(Network)
:是由若干结点(Node)和连接这些结点的链路(Link)组成的。例如下图所示,笔记本电脑是一个结点,台式电脑是一个结点,网络打印机是一个结点,而将他们互联起来的交换机也是一个结点。当然了,结点之间的互联还需要使用链路,可以是有线链路,也可以是无线链路。在本例中4个结点和三段电路就构成了一个简单的网络
-
多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互连网)。因此,互联网是"网络的网络(Network of Networks)"。
-
我们几乎每天都在使用的因特网(Internet)是世界上最大的互联网,它的用户数以亿计,互联的网络数以百万计。
这里我们需要区分一下这两个英文单词的含义:
- 以小写字母i开头的英文单词,internet是一个通用名词,翻译为互联网,它泛指由多个计算机网络互联而成的网络,在这些网络之间的通信协议可以是任意的
- 以大写字母I来开头的英文单词,Internet则是一个专用名词,翻译为因特网,它指当前全球最大的,开放的,由众多网络互联而成的特定计算机网络,它采用TCP/IP协议族作为通信的规则,其前身是美国的ARPANET
互联网历史与ISP
接下来我们来看看因特网发展的三个阶段,因特网的基础结构大体上经历了三个阶段的演进:
-
第一阶段,从单个网络ARPANET向互联网发展。1969年美国国防部创建了第一个分组交换网ARPANET。到了20世纪70年代中期,人们已认识到不可能仅使用一个单独的网络来满足所有的通信问题,这就导致了后来互联网的出现,这样的互联网就要成为了现在的因特网的雏形。1983年tcpip协议成为ARPANET上的标准协议,使得所有使用tcpip协议的计算机都能利用互联网相互通信,因而人们就把1983年作为因特网的诞生时间。
-
第二阶段逐步建成三级结构的因特网。从1985年起,美国国家科学基金会NSF就围绕6个大型计算机中心建设计算机网络,也就是国家科学基金网,NSFNET,它是一个三级结构的网络,分为主干网、地区网和校园网(企业网)。该网络覆盖了全美国主要的大学和研究所,并且成为因特网中的主要组成部分。1990年美国国防部创建的ARPANET任务完成正式关闭。1991年,美国国家科学基金会NSF和美国的其他政府机构开始认识到,因特网必将扩大其使用范围,不应仅限于大学和研究机构,于是美国政府决定将因特网的主干网转交给私人公司来运营,并开始对接入因特网的单位收费。
-
第三阶段逐渐形成了多层次ISP结构的因特网。从1993年开始,由美国政府资助的NSFNET逐渐被若干个商用的因特网主干网取代,而政府机构不再负责因特网的运营,而是让各种因特网服务提供者ISP来运营。1994年由欧洲原子核研究组织开发的万维网,也就是WWW技术在因特网上被广泛使用,大大方便了广大非网络专业人员对网络的使用,促使因特网迅猛发展。1995年NSFNET停止运作,因特网彻底商业化。
下面我们来解释一下因特网服务提供者ISP(Internet Service Provider)
:
想想看普通用户是如何接入到因特网的呢?实际上是通过ISP接入因特网的。ISP可以从因特网管理机构申请到成块的IP地址,同时拥有通信线路以及路由器等联网设备。任何机构和个人只要向ISP交纳规定的费用,就可以从ISP得到所需要的IP地址,这一点很重要,因为因特网上的主机都必须有IP地址才能进行通信,这样就可以通过该ISP接入到因特网。
我国主要的ISP是我们大家都比较熟悉的中国电信、中国联通和中国移动这三大电信运营商。
根据提供服务的覆盖面积大小及所拥有的IP地址块数量不同,ISP也分成不同的层次:
-
最高级别的第一层ISP的服务面积最大,第一层ISP通常也被称为因特网主干网,一般都能够覆盖国际性区域范围,并拥有高速链路和交换设备。第一层ISP之间直接互联,
-
第二层ISP和一些大公司都是第一层ISP的用户,通常具有区域性或国家性覆盖规模,与少数低层ISP相连接。
-
第三层ISP又称为本地ISP,他们是第二层ISP的用户,且只拥有本地范围的网络,一般的校园网或企业网以及住宅用户和无线移动用户,都是第三层ISP的用户。
从该图可以看出,因特网逐渐演变成基于ISP的多层次结构网络,但今天的因特网由于规模太大,已经很难对整个网络的结构给出细致的描述,但下面这种情况是经常遇到的,就是相隔较远的两台主机间的通信,可能需要经过多个ISP,顺便提一下,一旦某个用户能够接入到因特网,那么它也可以成为一个ISP(例如开个热点)。所需要做的就是购买一些如调制解调器或路由器这样的设备,让其他用户能够和他相连。因此该图所示的仅仅是个示意图,一个ISP可以很方便的在因特网拓扑上添加新的层次和分支。
标准化与RFC
接下来我们介绍一下因特网的标准化工作,因特网的标准化工作对因特网的发展起到了非常重要的作用。因特网在制定其标准上的一个很大的特点,就是面向公众。因特网所有的RFC技术文档,都可以从因特网上免费下载,任何人都可以随时用电子邮件发表对某个文档的意见或建议。因特网协会ISOC是一个国际性组织,他负责对因特网进行全面管理,以及在世界范围内促进其发展和使用。
- ISOC下设的因特网体系结构委员会IAB,负责管理因特网有关协议的开发,
- IAB下的因特网工程部IETF,负责研究中短期工程问题,主要针对协议的开发和标准化,
- IAB下的因特网研究部IRTF从事理论方面的研究和开发一些需要长期考虑的问题。
制定因特网的正式标准,要经过以下4个阶段:
- 第1个阶段是因特网草案阶段,在这个阶段还不是RFC文档,
- 第2个阶段是建议标准,从该阶段开始成为RFC文档。
- 第3个阶段是草案标准,
- 第4个阶段是因特网标准。
值得注意的是并非所有的RFC文档都是因特网标准,只有一小部分RFC文档,最后才能变成因特网标准。
因特网的组成
因特网的拓扑结构虽然非常复杂,并且在地理上覆盖了全球,但从功能上看,可以划分为以下两部分:
边缘部分
:由所有连接在因特网上的主机组成,这部分是用户直接使用的,用来进行通信和资源共享。边缘部分中的主机可以是台式电脑或大型服务器,也可以是笔记本电脑、平板电脑,还可以是智能手机、智能手表以及物联网智能硬件,例如空气质量监测仪、智能摄像头等。核心部分
:核心部分由大量网络和连接这些网络的路由器组成,这部分是为边缘部分提供服务的,也就是提供连通性和交换。在网络核心部分起特殊作用的是路由器,它是一种专用计算机,但我们不称它为主机,路由器是实现分组交换的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
三种交换方式
- 电路交换(Circuit Switching)
- 分组交换(Packet Switching)
- 报文交换(Message Switching)
电路交换
在电话问世后不久,人们就发现要让所有的电话机都两两相连接是不现实的。于是人们认识到,要使得每一部电话能够很方便的和另一部电话进行通信,就应当使用一个中间设备,将这些电话连接起来,这个中间设备就是电话交换机,每一部电话都连接到电话交换机上,可以把电话交换机简单的看成是一个有多个开关的开关器,可以将需要通信的任意两部电话的电话线路按需接通,从而大大减少了连接的电话线数量。
当电话机的数量增多时,就需要使用很多彼此连接起来的电话交换机来完成全网的交换任务,用这样的方法就构成了覆盖全世界的电信网,电话交换机接通电话线的方式称为电路交换。从通信资源的分配角度来看,交换就是按照某种方式动态的分配传输线路的资源。
我们来看下面这个电路交换的示意图,为了简单起见,图中没有区分市话交换机和长途电话交换机。应当注意的是用户线归电话用户专用,而电话交换机之间拥有的大量话路的中继线,则是许多用户共享的。电路交换有以下三个步骤:
- 第一步是建立连接,也就是分配通信资源。例如在使用电路交换打电话之前,必须先拨号请求建立连接,当被叫用户听到电话交换机送来的拨号音并摘机后,从主叫端到被叫端就建立了一条连接,也就是一条专用的物理通路,这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用。
- 第二步是通话,也就是主教和被教双方互相通电话,在整个通话期间,第一步建立连接所分配的通信资源始终被占用。
- 第三步是释放连接,也就是通话完毕挂机后,电话交换机释放刚才使用的这条专用的物理通路。换句话说是把刚才占用的所有通信资源归还给电信网。
分组交换和报文交换
我们先来想一个问题:使用电路交换来传送计算机数据是否可行?
应该说尽管采用电路交换可以实现计算机之间的数据传送,但是线路的传输效率往往很低。这是因为计算机的数据是突发式的出现在传输线路上的。我们可以试想一下,当用户正在输入和编辑一份待传送的文件时,用户所占用的通信资源暂时未被利用,该通信资源也不能被其他用户使用,宝贵的通信线路资源就被白白浪费了。
因此计算机网络通常采用分组交换,而不是电路交换。在因特网中最重要的分组交换机就是路由器,他负责将各种网络互联起来,并对接收到的分组进行转发,也就是在进行分组交换。
我们来看这样一个例子,假设主机H6的用户要给主机H2的用户发送一条消息,通常我们把表示该消息的整块数据称为一个报文,在发送报文之前,先把较长的报文划分成为一个个更小的等长数据段,在每一个数据段前面,加上一些由必要的控制信息组成的首部后,就要构成了一个分组,也可简称为包,相应的首部也可称为包头。
请大家思考一下,添加首部的作用是什么?这不是额外加大了带传输的数据量吗?实际上首部起到非常关键的作用,相信大家至少能想到首部中肯定包含了分组的目的地址,否则分组传输路径中的各分组交换机,也就是各路由器,就不知道如何转发分组了。
分组交换机收到一个分组后,先将分组暂时存储下来,再检查其首部,按照首部中的目的地址进行查表转发,找到合适的转发接口,通过该接口将分组转发给下一个分组交换机。
在本例中主机H6将所构造出的各分组依次发送出去,各分组经过途中各分组交换机的存储转发(分组不一定是同一线路),最终到达主机H2,主机H2收到这些分组后,去掉他们的首部,将各数据段组合还原出原始报文。
在上述的分组交换过程中:
- 发送方所要完成的任务是
构造分组
和发送分组
。 - 路由器也就是分组交换机所要完成的任务是
缓存分组
和转发分组
,简称为存储转发。 - 接收方所要完成的任务是
接收分组
和还原报文
与分组交换类似,报文交换中的交换节点,也采用存储转发方式,但报文交换对报文的大小没有限制,这就要求交换节点需要有较大的缓存空间。需要注意的是报文交换主要用于早期的电报、通信网,现在较少使用,通常被较先进的分组交换方式所取代。因此我们不再详细介绍报文交换了。
三种交换方式的对比与总结
接下来我们对电路交换、报文交换、分组交换这三种交换方式进行一下对比。
假设ABCD是分组传输路径上所要经过的4个节点交换机,纵坐标为时间:
-
对于电路交换,通信之前首先要建立连接,连接建立好之后,就可以使用已建立好的连接进行数据传送,数据传送结束后需要释放连接,以归还之前建立连接所占用的通信线路资源,
-
对于报文交换可以随时发送报文,而不需要事先建立连接。整个报文先传送到相邻节点交换机,全部存储下来后进行查表转发,转发到下一个节点交换机,
-
对于分组交换可以随时发送分组,而不需要事先建立连接,构成原始报文的一个个分组,依次在各节点交换机上存储转发,各节点交换机在发送分组的同时,还缓存接收到的分组。
另外注意: -
当使用电路交换时,一旦建立连接中间的各节点交换机就是直通形式的,比特流可以直达终点。
-
当使用报文交换时,整个报文需要在各节点交换机上进行存储转发,由于不限制报文的大小,因此需要各节点交换机都具有较大的缓存空间。
-
当使用分组交换时,构成原始报文的一个个分组,在各节点交换机上进行存储转发,相比报文交换,减少了转发时延,还可以避免过长的报文,长时间占用链路,同时也有利于进行差错控制。
最后我们总结一下这三种交换方式各自的优缺点。
电路交换的优点如下:
- 通信时延小,这是因为通信线路为通信双方用户专用,数据直达,因此通信时延非常小,当连续传输大量数据时,这一优点非常明显。
- 有序传输,这是因为通信双方之间只有一条专用的通信线路,数据只在这一条线路上传输,因此不存在失序问题。
- 没有冲突,不同的通信双方拥有不同的信道,不会出现征用物理信道的问题。
- 使用范围广,电路交换既适用于传输模拟信号,也适用于传输数字信号。
- 实时性强,这主要得益于其通信时延小的优点。
- 控制简单,电路交换的节点交换机及其控制都比较简单,
电路交换的缺点如下:
- 建立连接时间长,电路交换的平均连接建立时间对计算机通信来说太长了。
- 线路独占,使用效率低,电路交换一旦建立连接,物理通路就被通信双方独占,即使通信线路空闲,也不能供其他用户使用,因而信道利用率很低。
- 灵活性差,只要连接所建立的物理通路中的任何一点出现了故障,就要必须重新拨号建立新的连接,这对十分紧急和重要的通信是很不利的。
- 难以规格化,电路交换时数据直达,不同类型不同规格不同速率的终端,很难相互进行通信,也难以在通信过程中进行差错控制。
报文交换的优点如下:
- 无需建立连接,报文交换不需要为通信双方预先建立一条专用的通信线路,不存在建立连接的时延,用户可以随时发送报文。
- 动态分配线路,当发送方把报文传送给节点交换机,时节点交换机先存储整个报文,然后选择一条合适的空闲线路,将报文发送出去。
- 提高线路可靠性。如果某条传输路径发生故障,会重新选择另一条路径传输,数据因此,提高了传输的可靠性。
- 提高线路利用率。通信双方不是固定占用一条通信线路,而是在不同的时间分段部分占用物理线路,因而大大提高了通信线路的利用率。
- 提供多目标服务,一个报文可以同时发送给多个目的地址,这在电路交换中是很难实现的。
报文交换的缺点如下:
- 引起了转发时延,这是因为报文在节点交换机上要经历存储转发的过程。
- 需要较大的存储缓存空间,这是因为报文交换对报文的大小没有限制。
- 需要传输额外的信息量,这是因为报文需要携带目标地址、源地址等信息。
分组交换的优点如下:
- 无需建立连接,分组交换不需要为通信双方预先建立一条专用的通信线路,不存在建立连接的时延,用户可以随时发送分组。
- 线路利用率高,通信双方不是固定占用一条通信线路,而是在不同的时间分段部分占有物理线路,因而大大提高了通信线路的利用率。
- 简化了存储管理,这是相对于报文交换而言的,因为分组的长度固定,相应的缓冲区的大小也固定,管理起来相对容易
- 加速传输,由于分组是逐个传输的,这就使得后一个分组的存储操作与前一个分组的转发操作可以同时进行。
- 减少出错概率和重发数据量。因为分组比报文小,因此出错概率必然减小。即便分组出错,也只需重传出错的部分,这比重传整个报文的数据量小很多,这样不仅提高了可靠性,也减少了传输时延。
分组交换的缺点如下:
- 引起了转发时延,这是因为分组在节点交换机上要经历存储转发的过程。
- 需要传输额外的信息量,将原始报文分割成等长的数据块,每个数据块都要加上源地址、目的地址等控制信息,从而构成分组,因此使得传送的信息量增大了。
- 当分组交换采用数据报服务时,可能会出现失去丢失或重复分组,分组到达目的节点时,需要重新还原成原始报文,比较麻烦。若分组交换采用虚电路服务,虽然没有分组失序问题,但有呼叫建立数据传输和虚电路释放三个过程。
计算机网络的定义和分类
计算机网络的定义
首先来看计算机网络的定义,计算机网络的精确定义并未统一,换句话说,全世界没有一个对计算机网络的公认的唯一定义。
这里我们给出一个计算机网络的最简单定义:即计算机网络是一些互相连接的、自治的计算机的集合。
我们可以从该定义中找出三个关键词:
- 互联是指计算机之间可以通过有线或无线的方式进行数据通信,
- 自治是指独立的计算机,它有自己的硬件和软件可以单独运行使用
- 集合是指至少需要两台以上计算机
计算机网络的分类
按交换技术分类,可以分为:
- 电路交换网络
- 报文交换网络
- 分组交换网络
按网络的使用者分类,可以分为:
公用网
:公用网是指电信公司出资建造的大型网络,公用的意思就是所有愿意按电信公司的规定,缴纳费用的人都可以使用这种网络,因此公用网也可称为公众网专用网
:用网是指某个部门为本单位的特殊业务工作的需要而建立的网络,这种网络不向本单位以外的人提供服务,例如军队、铁路、电力等系统均有本系统的专用网
按传输介质分类,可以分为:
- 有线网络:有线网络包括双绞线网络、光纤网络等
- 无线网络:无线局域网所使用的WIFI技术目前应用比较普遍
按网络的覆盖范围分类,可以分为:
广域网WAN
:广域网的覆盖范围通常为几十公里到几千公里,可以覆盖一个国家地区,甚至横跨几个州,因而有时也称为远程网。广域网是因特网的核心部分,其任务是为核心路由器提供远距离,例如跨越不同的国家的高速连接,互联分布在不同区域的城域网和局域网城域网MAN
:城域网的覆盖范围一般是一个城市,可跨越几个街区,甚至整个城市,其作用距离为5~50公里。城域网通常作为城市骨干网,互联大量企业机构和校园局域网,近几年城域网已开始成为现代城市的信息服务基础设施,为大量用户提供接入和各种信息服务,并有趋势将传统的电信服务、有线电视服务和互联网服务融为一体。局域网LAN
:局域网一般用微型计算机或工作站通过高速通信线路相连,速率通常在10兆比特每秒以上,但地理上则局限在较小的范围内,如一个实验室一幢楼或一个校园内,距离一般在一公里左右,局域网通常由某个单位单独拥有使用和维护。在局域网发展的初期,一个学校或工厂往往只拥有一个局域网,现在局域网已被非常广泛的使用,一个学校或企业大都拥有许多个互联的局域网,这样的网络通常称为校园网或企业网。个域网PAN
:个域网是个人区域网络的简称,它不同于上述网络,不是用来连接普通计算机的,而是在个人工作的地方把属于个人使用的电子设备,例如便携式计算机、打印机、鼠标、键盘耳机等,用无线技术连接起来的网络,因此也常称为无线个人区域网WPAN,其覆盖范围大约为10米
需要注意的是若中央处理机之间的距离非常近,例如仅一米的数量级甚至更小,则一般就称之为多处理机系统,而不称它为计算机网络。
计算机网络还可以按拓扑结构分类,可以分为:
-
总线型网络:总线型网络使用单根传输线,把计算机连接起来。它的优点是建网容易增减节点方便节省线路,缺点是重负载时通讯效率不高,总线任意一处出现故障,则全网瘫痪。
-
星型网络:星型网络是将每个计算机都以单独的线路与中央设备相连。中央设备早期是计算机,后来是集线器,现在一般是交换机或路由器,这种网络拓扑便于网络的集中控制和管理,因为端用户之间的通信必须经过中央设备,缺点是成本高,中央设备对故障敏感
-
环形网络:环形网络是将所有计算机的网络接口连接成一个环,最典型的例子是令牌环局域网,环可以是单环,也可以是双环,环中信号是单向传输的
-
网状型网络:网状型网络,一般情况下,每个节点至少有两条路径与其他节点相连,多用在广域网中,其优点是可靠性高,缺点是控制复杂,线路成本高。
需要注意的是以上4种基本的网络拓扑还可以互联为更复杂的网络
计算机网络的性能指标
常用的计算机网络性能指标有以下8个,它们是:
- 速率
- 带宽
- 吞吐量
- 时延
- 时延带宽积
- 往返时间
- 利用率
- 丢包率
速率
为了能够更好的理解速率,我们需要先了解比特,如下图:
我们要注意这里的k是1024也就是2的10次方
比特的英文单词为bit,常简写为小写字母b
字节的英文单词为Byte,常简写为大写字母B
这里顺便提一下,也许大家有购买新硬盘或U盘的经历,在使用中会发现操作系统给出的容量与厂家标称的容量不同,例如这是我计算机中的一块固态硬盘,标称容量为250GB,但操作系统给出的容量为232.8GB,这是什么原因呢?
下面的计算公式就要可以说明这个问题,厂家给出的单位GB中的G为10的9次,而操作系统中数据量单位GB中的G为2的30次
有了比特的概念,我们就可以引出计算机网络中的一个重要的性能指标:速率。它具体是指连接在计算机网络上的主机,在数字信道上传送比特的速率,也称为比特率或数据率。
我们可以发现在速率中k代表的就是1000,也就是10的3次方
小练习
带宽
带宽在计算机网络中的意义是用来表示网络的通信线路所能传送数据的能力,因此网络带宽表示在单位时间内,从网络中的某一点到另一点所能通过的最高数据率。因此带宽计算机网络性能指标的单位与我们刚刚介绍的速率性能指标的单位是相同的。
速率和带宽的关系,就如额定速率和最大速率
大家可能有过这样的经历,有朋友问你家的出口网速有多大?你可能回答说200兆,这里我们往往省略说比特每秒。完整的描述应该是最高速率为200兆比特每秒,而这个最高速率其实就是你家网络的出口带宽,这当然是一个很重要的计算机网络性能指标,它直接关系到我们的网络应用体验
吞吐量
- 吞吐量表示在单位时间内,通过某个网络或信道接口的数据量。
- 吞吐量被经常用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。
- 吞吐量受网络带宽或额定速率的限制。
时延
我们先来看看分组从源主机传送给目的主机的过程中,都会在哪些地方产生时延?
他们共同构成了网络时延:
- 源主机将分组发往传输线路,这需要花费一定的时间,我们把这段时间称为
发送时延
- 代表分组的电信号,在链路上传输,这也需要花费一定的时间。我们把这段时间称为
传播时延
- 路由器收到分组后,对其进行存储转发,这也需要花费一定的时间,我们把这段时间称为
处理时延
一般来说,源主机和目的主机之间的路径会由多段电路和多个路由器构成,因此会有多个传播时延和处理时延。
发送时间的计算公式为分组长度/发送速率
这里需要对发送速率做一下说明:
如图所示,这是家庭局域网的一部分,网卡的发送速率,信道带宽,交换机的接口速率,他们共同决定着主机的发送速率。
从该例可以看出,在构建网络时应该做到各设备间以及传输介质的速率匹配,这样才能完全发挥出本应具有的传输性能
再来看传播时延的计算公式,由信道长度/电磁波传播速率
:
从上图中我们可以看到电磁波在不同的介质中传播的速度不一样。因此要计算传播时延,首先应该确定采用的是什么传输媒体,进而可以确定电磁波在该传输媒体中的传播速率。
处理时延没有简单的计算公式,因为它不方便计算,这并不难理解,因为网络中的数据流量是动态变化的,因此路由器的繁忙程度也是动态变化的,另外各种路由器的软硬件性能也可能有所不同,因此很难用一个公式计算出处理时延。
这里需要说明的是有的教材中还有一个排队时延,而本课程将排队时延与处理时延合并成为处理时延
那么请大家思考一下,在处理时延忽略不计的情况下,网络时延中,是传播时延占主导,还是发送时延占主导?
我们来看下图的两种情况;
通过以上两个例子可以看出,构成网络时延的发送时延,传播时延以及处理时延。在处理时延忽略不计的情况下,我们不能想当然的认为发送时延占主导,或传播时延占主导,而应该具体问题具体分析
时延带宽积
时延带宽积,从字面意思就可以看出,该性能指标是时延与带宽的乘积,但是时延由发送时延,传播时延和处理时延三部分构成。该性能指标中的时延具体是指哪一个?答案是传播时延。
也就是说时延带宽积是传播时延与带宽的乘积,我们可以把传输电路看成是一个管道,其长度为传播时延,横截面积为带宽,则时延带宽积就是该管道的体积,可以想象成管道中充满了比特,若发送端连续发送数据,则在所发送的第一个比特即将到达终点时,发送端就已经发送了时延带宽积个比特。链路的时延带宽积又称为以比特为单位的链路长度。
往返时间
在许多情况下,因特网上的信息不仅仅单方向传输,而是双向交互。我们有时很需要知道双向交互一次所需的时间,因此往返时间RTT也是一个重要的性能指标。
来看下面这个例子,以太网上的某台主机要与无线局域网中的某台主机进行信息交互,往返时间RTT是指从源主机发送分组开始,直到源主机收到来自目的主机的确认分组为止,所需要的时间。
利用率
丢包率
- 丢包率即分组的丢失率,是指在一定的时间范围内传输过程中丢失的分组数量与总分组数量的比率。
- 丢包率具体可分为接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等。
- 丢包率是网络运维人员非常关心的一个网络性能指标,但对于普通用户来说往往并不关心这个指标,因为他们通常意识不到网络丢包。
分组丢失主要有两种情况;
- 一种情况是分组在传输过程中出现误码,被结点交换机丢弃。主机发送的分组在传输过程中出现了误码,当分组进入传输路径中的节点交换机后,被节点交换机检测出了误码,进而被丢弃。
- 另一种情况是分组到达一台存储队列已满的分组交换机时被丢弃,在通信量较大时就可能造成网络拥塞。假设路由器r5当前的输入缓冲区已满,此时主机发送的分组到达该路由器,路由器没有存储空间暂存该分组只能将其丢弃。
需要说明的是实际上路由器会根据自身拥塞控制方法,在输入缓存还未满的时候就要主动丢弃分组。
因此丢包率反映了网络的拥塞情况:
- 无拥塞时路径丢包率为0,
- 轻度拥塞时路径丢包率为1%~4%,
- 严重拥塞时路径丢包率为5%~15%。
当网络的丢包率较高时,通常无法使网络应用正常工作
计算机体系结构
常见的计算机网络体系结构
为了使不同体系结构的计算机网络都能互联,国际标准化组织于1977年成立了专门机构研究该问题,不久他们就要提出了一个试图使各种计算机在世界范围内互联成网的标准框架,也就是著名的开放系统互联参考模型,简称为OSI,该模型是一个7层协议的体系结构,从下往上依次是物理层、数据链路层、网络层、运输层、会话层、表示层、应用层,它是法律上的国际标准。
到了20世纪90年代初期,虽然整套的OSI国际标准都已经制定出来了,但这时因特网已抢先在全世界覆盖了相当大的范围。因特网从1983年开始使用TCP/IP协议族,并逐步演变成TCP/IP参考模型,该模型是一个4层协议的体系结构,从下往上依次是网络接口层,网际层、运输层、应用层,它是事实上的国际标准。
对比这两个体系结构可以看出tcpip体系结构相当于将OSI体系结构的物理层和数据链路层合并为了网络接口层,并去掉了会话层和表示层。
另外由于tcpip在网络层使用的协议是IP协议,中文意思是网际协议,因此tcpip体系结构的网络层常称为网际层,
在过去制定标准的组织中,往往以专家学者为主,但现在许多公司都纷纷挤进各种各样的标准化组织,使得技术标准有着浓厚的商业气息。一个新标准的出现,有时不一定反映出其技术水平是最先进的,而是往往有着一定的市场背景。从这种意义上说,能够占领市场的就是标准。OSI标准失败的原因,可归纳为:
- OSI的专家们缺乏实际经验,他们在完成OSI标准时没有商业驱动力。
- OSI的协议实现起来过分复杂,而且运行效率很低。
- OSI标准的制定周期太长,因而使得按OSI标准生产的设备无法及时进入市场。
- OSI的层次划分也不太合理,有些功能在多个层次中重复出现。
大多数用户每天都有接入因特网的需求,这就要求用户的主机必须使用TCPIP协议。当然了,即使用户的网络不需要接入因特网,也可以使用tcpip协议,在用户主机的操作系统中,通常都带有符合tcpip体系结构标准的tcpip协议族,而用于网络互联的路由器中,也带有符合TCP体系结构标准的TCP协议族,只不过路由器一般只包含网络接口层和网际层
tcpip体系结构的网络接口层,并没有规定什么具体的内容,这样做的目的是可以互联全世界各种不同的网络接口,例如有线的以太网接口,无线局域网的WiFi接口,而不限定仅使用一种或几种网络接口。因此本质上tcpip体系结构只有上面的三层,IP协议是tcpip体系结构网际层的核心协议,TCP和udp是TCP体系结构运输层的两个重要协议。
Tcp体系结构的应用层包含了大量的应用层协议,例如HTTP smtp,dns,rtp等。
IP协议可以将不同的网络接口进行互联,并向其上的TCP协议和udp协议提供网络互联服务。而TCP协议在享受IP协议提供的网络互联服务的基础上,可向应用层的相应协议提供可靠传输的服务。
Udp协议在享受IP协议提供的网络互联服务的基础上,可向应用层的相应协议提供不可靠传输的服务。Ip协议作为tcp IP体系结构中的核心协议,一方面负责互联不同的网络接口,也就是IP over everything, 另一方面为各种网络应用提供服务,也就是everything over IP
在tcpip体系结构中包含有大量的协议,IP协议和TCP协议是其中非常重要的两个协议,因此用TCP和IP这两个协议来表示整个协议大家族常称为tcpip协议族。
顺便提一下,在嵌入式系统开发领域,tcpip协议族常称为tcpip协议栈,这是因为tcpip协议体系的分层结构与数据结构中的站在图形画法上是类似的。
由于tcpip体系结构,为了将不同的网络接口进行互联,因此它的网络接口层并没有规定什么具体的内容。然而这对于我们学习计算机网络的完整体系而言,就会缺少一部分内容,因此在学习计算机网络原理时,往往采取折中的办法,也就是综合OSI和tcpip的优点,采用一种5层协议的原理体系结构,5层协议的原理体系结构,从下到上依次为物理层、数据链路层、网络层、运输层、应用层。可以看出5层协议的原理体系结构,将tcpip体系结构的网络接口层又重新划分为了物理层和数据链路层,这样更有利于我们对计算机网络原理的学习。
分层的必要性
物理层
例如两台计算机通过一条网线连接起来,需要考虑:
- 采用怎样的传输媒体(介质),例如网线、WIFI,严格来说这不是物理层的范围
- 用怎么样的物理接口,
- 用怎么样的信号表示比特0和1,例如使用方波信号,高电平表示1,低电平表示0(这里只是举例)
解决这些问题后,两台计算机就可以传输比特0和1了。这就是物理层要解决的问题。
注意:
- 严格来说,传输媒体并不属于物理层,它并不包含在体系结构之中
- 计算机网络中传输的信号,并不是我们举例的方波信号,这里是方便理解
数据链路层
实用的计算机网络一般都由多台主机构成,例如主机ABCDE通过总线互联构成了一个总线型网络,假设我们已经解决了物理层的问题,也就是说主机间可以发送信号来传输比特0或1。我们来看看在这样一个总线型的网络上还面临什么需要解决的问题。
- 主机A要给主机C发送数据,但是表示数据的信号会通过总线传播到总线上的每一个主机。那么问题来了,主机C如何知道该数据是发给自己的,自己要接受,而主机BDE要如何知道该数据并不是发送给自己的,自己应该拒绝?这就很自然的引出了如何标识网络中各主机的问题,也就是主机编制问题。大家可能听说过网卡上的
MAC地址
,其实它就是主机在网络中的地址,主机在发送数据时应该给数据附加上目的地址,当其他主机收到后,根据目的地址和自身地址来决定是否接受数据 - 这就又引出了一个问题,目的主机如何从信号所表示的一连串比特流中区分出地址和数据,也就是需要解决分组的封装格式问题。
- 另外对于总线型的网络,还会出现下面这种典型的问题,例如某个时刻总线是空闲的,也就是没有主机使用总线来发送数据,片刻之后,主机B和D同时向总线发送数据,这必然会造成
信号碰撞
。因此如何协调各主机征用总线也是必须要解决的问题。 - 需要说明的是这种总线型的网络早已淘汰,现在常用的是使用以太网交换机,将多台主机互联形成的交换式以太网。那么以太网交换机又是如何实现的?我们将这些问题全部划归到数据链路层。到这里大家可能会发现,只要解决了物理层和数据链路层各自所面临的问题,我们就可以实现分组在
一个
网络上传输了。
网络层
我们每天都会使用的因特网是由非常多的网络和路由器互联起来的,仅解决物理层和数据链路层的问题只能解决一个网络中的通信问题,还是不能正常工作。
我们来看这个例子,这是一个由3个路由器,4个网络互联起来的小型互联网,我们可以把它看作是因特网中很小的一部分。
在之前的例子中仅有一个网络,我们不需要对网络进行标识。而在本地中有多个网络,很显然我们面临着如何标识各网络以及各网络中各主机的问题。换句话说,也就是网络和主机共同编制的问题。相信同学们一定听过IP地址,例如上图中标明了网络N1中各设备的IP地址,该类IP地址的前三个10进制数用来标识网络。第4个10进制数用来标识主机。在本例中网络N1的网络号为192.168.1,该网络上的笔记本电脑服务器以及路由器接口的IP地址的前三个数应该都是192.168.1,因为他们都在网络N1上,而第4个十进制数分别为1,2,254各不相同,用来标识他们自己。
我们再来看另一个问题,源主机与目的主机之间的传输路径往往不止一条,分组从源主机到目的主机可走不同的路径,这样就引出了路由器如何转发分组的问题,以及如何进行路由选择的问题。我们将这些问题全部划归到网络层,至此我们解决了物理层、数据链路层以及网络层各自的问题,则可以实现分组在网络间
传输的问题。
运输层
例如假设这台主机装运行着两个与网络通信相关的应用进程,一个是浏览器进程,另一个是QQ进程。这台服务器中运行着与网络通信相关的服务器进程,某个时刻主机收到了来自服务器的分组,那么这些分组应该交给浏览器进程处理,还是应该交给QQ进程处理,这就引出了我们如何标识与网络通信相关的应用进程,进而解决进程之间基于网络通信的问题。
另外如果某个分组在传输过程中出现了误码,或者由于路由器繁忙,导致路由器丢弃分组,换句话说,若出现传输错误,应该如何处理?这也是需要解决的问题。我们将这些问题全部划归到运输层,至此我们解决了物理层、数据链路层、网络层以及运输层各自的问题,则可以实现进程之间
基于网络的通信。
应用层
我们在前面的基础上,只需制定各种应用层协议,并按协议标准编写相应的应用程序,通过应用进程间的交互来完成特定的网络应用。比如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议等,我们将这些问题全部划归到应用层,
总结
至此,我们将实现计算机网络所需要解决的各种主要问题,分别划归到了物理层、数据链路层、网络层、运输层和应用层,进而构成了5层协议体系的原理体系结构。
分层思想举例
通过一个具体的网络通信实例来看看计算机网络体系结构分层处理方法。
假设网络拓扑如下,所示主机属于网络N1,web服务器属于网络N2。 N1和N2,通过路由器互联。我们使用主机中的浏览器来访问web服务器,当输入网址后,主机会向外部服务器发送请求,WEB服务器收到请求后,会发回相应的响应。主机的浏览器收到响应后,将其解析为具体的网页内容显示出来,需要说明的是我们给出的只是一个简化的示意过程,这是因为重点是计算机网络体系结构分层处理方法,而不是浏览器和web服务器的实际交互过程。
主机和web服务器之间基于网络的通信,实际上是主机中的浏览器应用进程与web服务器中的web服务器应用进程之间的基于网络的通信。
那么体系结构的各层在整个过程中起到怎样的作用?
从主机端按体系结构自顶向下的顺序来看:
-
应用层按HTTP协议的规定,构建一个HTTP请求报文,这是该报文的内容。
-
应用层将HTTP报文交付给运输层处理,运输层给HTTP请求报文添加一个TCP首部,使之成为
TCP报文段
,这是TCP报文段的首部格式,该首部的作用主要是为了区分应用进程以及实现可靠传输。
-
运输层将TCP报文段交付给网络层处理,网络层给TCP报文段添加一个IP首使之质成为
IP数据报
,这是IP数据报的首部格式。该首部的作用主要是为了使IP数据报可以在互联网上传输,也就是被路由器转发
-
网络层将IP数据报交付给数据链路层处理,数据链路层给IP数据报添加一个首部和一个尾部,使之成为
帧
。假设网络N1是以太网,这是以太网帧首部的格式,该首部的作用主要是为了让帧能够在一段链路上或一个网络上传输,能够被相应的目的主机接收。这是以太网帧尾部的格式,其作用是为了让目的主机检查所接收到的帧是否有误码。
-
数据链路层将帧交付给物理层,物理层将帧转化为比特流,由于网络N1是以太网,因此物理层还会给该比特流前面添加前导码,这是前导码的内容,其作用是为了让目的主机做好接收帧的准备,物理层将添加有前导码的比特流,变换成相应的信号发送到传输媒体,信号通过传输媒体到达路由器。
我们来看路由器的处理过程,
-
物理层将信号变换为比特流,然后去掉前导码后,将其交付给数据链路层,这实际上交付的是帧
-
数据链路层将帧的首部和尾部去掉后,将其交付给网络层,这实际上交付的是IP数据报
-
网络层解析IP数据报的首部,从中提取出目的网络地址,然后查找自身的路由表,确定转发端口,以便进行转发。
-
网络层将IP数据报交付给数据链路层,
-
数据链路层给IP数据报添加一个s首部和一个尾部,使之成为帧
-
数据链路层将针交付给物理层,物理层将帧看作是比特流。由于网络N二是以太网,因此物理层还会给该比特流前面添加前导码
-
物理层将添加有前导码的比特流,变换成相应的信号发送到传输媒体,信号通过传输媒体到达web服务器。
我们来看web服务器的处理过程:
- 物理层将信号变换为比特流,然后去掉前导码后,将其交付给数据链路层,这实际上交付的是帧
- 数据链路层将真的首部和尾部去掉后,将其交付给网络层,这实际上交付的是IP数据报,
- 网络层将IP数据报的首部去掉后,将其交付给运输层,这实际上交付的是TCP报文段,
- 运输层将TCP报文段的首部去掉后,将其交付给应用层。实际上交付的是HTTP请求报文,
- 应用层对HTTP请求报文进行解析,然后给主机发回HTTP响应报文
与之前的过程类似,HTTP响应报文需要在外部服务器层层封装,然后通过物理层变换成相应的信号,再通过传输媒体传输到路由器,路由器转发该响应报文给主机,主机通过物理层将收到的信号转换为比特流,之后通过逐层解封,最终取出HTTP响应报文
专用术语
需要说明的是这些专用术语来源于osi的7层协议体系结构,但也适用于tcpip的4层体系结构和5层协议原理体系结构。
我们将这些专用术语中最具代表性的三个作为分类名称,它们分别是:
- 实体
- 协议
- 服务
实体
我们首先来看实体,实体是指任何可发送或接收信息的硬件或软件进程。
例如这是通信双方的5层原理体系结构,我们在他们的各层中用标有字母的小方格来表示实体。
有了实体的概念,我们再来看对等实体,它是指通信双方相同层次中的实体,例如图中实体a与实体f为对等实体,实体b与实体g为对等实体,以此类推。
例如通信双方的网卡、通信双方中的正在进行通信的应用进程都是对等实体
协议
协议是控制两个对等实体进行逻辑通信的规则的集合
例如应用层对等实体,在应用层协议的控制下进行逻辑通信,运输层对等实体在运输层协议的控制下进行逻辑通信,以此类推。
需要注意的是之所以称为逻辑通信,是因为这种通信其实并不存在,它只是我们假设出来的一种通信,目的在于方便我们单独研究体系结构某一层,而不用考虑其他层。
例如当我们研究运输层时,我们可以假设运输层的对等实体在进行逻辑通信,而不用顾及其他层。
计算机网络协议有三个要素,他们是:
- 语法
- 语义
- 同步
语法定义通信双方所交换信息的格式,例如这是IP数据报的格式:
其中的小格子称为字段或域。数字表示字段的长度,单位是位,也就是比特。
语法就是定义了这些小格子的长度和先后顺序。换句话说,语法定义了所交换信息有哪些字段以及何种顺序构成。
语义定义通信双方所要完成的操作。例如主机要访问远程web服务器,它会构建一个HTTP的get请求报文,然后将其发送给外部服务器,web服务器收到该报文并进行解析,知道这是一个HTTP的get请求报文,于是就在自身内部查找所请求的内容,并将所找到的内容封装在一个HTTP响应报文装发回给主机,主机收到HTTP响应报文后,对其进行解析,取出所请求的内容,并由浏览器解析显示。这个例子就可以体现出通信双方收到分组后完成怎样的操作。这是HTTP协议的语义所规定的。
同步定义通信双方的时序关系。请注意并不是指时钟频率同步,例如这是TCP采用三报文握手建立连接的过程:
要想进行运输层TCP实体间的逻辑通信,首先必须建立连接,从连接建立的过程就可以看出TCP客户端和TCP服务器之间的时序关系以及各自的状态转换,只有双方建立连接后才能进行TCP数据传输。这个例子可以充分体现计算机网络协议三要素中的同步。
服务
在协议的控制下,两个对等实体间的逻辑通信,使得本层能够向上一层提供服务:
例如物理层对等实体,在物理层协议的控制下,向数据链路层提供服务。
例如数据链路层对等实体享受物理层提供的服务,并在数据链路层协议的控制下进行逻辑通信,给网络层提供服务。
网络层对等实体享受数据链路层提供的服务,并在网络层协议的控制下进行逻辑通信,给运输层提供服务········
很明显协议是水平的,而服务是垂直的。**特别注意的是实体看得见下层所提供的服务,但并不知道实现该服务的具体协议。换句话说,下层的协议对上层的实体是不可见的。**这就好比,我们肯定看得见手机为我们提供的各种服务,但我们只是享受这些服务,而没有必要弄懂手机的工作原理。
再来看服务访问点
的概念,它是指在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
例如数据链路层的服务访问点为帧的类型字段,网络层的服务访问点为IP数据报首部中的协议字段,运输层的服务访问点为端口号。
上层要使用下层所提供的服务,必须通过与下层交换一些命令,这些命令称为服务原语
。
在计算机网络体系结构中,对通信双方所交互的数据包有专门的术语。
我们把对等层次之间传送的数据包称为该层的协议数据单元,英文缩写词为pdu
。
- 例如物理层对等实体逻辑通信的数据包称为比特流
- 数据链路层对等实体逻辑通信的数据包称为帧
- 网络层对等实体逻辑通信的数据包称为分组。如果使用IP协议也称为IP数据报,
- 运输层对等实体逻辑通信的数据包一般根据协议而定。例如使用TCP协议则称为TCP报文段,使用udp协议则称为udp用户数据报
- 应用层对等实体逻辑通信的数据包,一般称为应用报文。
上述各层数据包可以统称为协议数据单元pdu
我们把同一系统内层与层之间交换的数据包成为服务数据单元,英文缩写词为sdu
。
多个服务数据单元可以合成为一个协议数据单元,一个服务数据单元也可以划分为几个协议数据单元,