计算机网络技术(一)

news2024/11/18 23:21:06

深入浅出计算机网络 微课视频_哔哩哔哩_bilibili

第一章概述

1.1 信息时代的计算机网络

1. 计算机网络各类应用

2. 计算机网络带来的负面问题

3. 我国互联网发展情况


1.2 因特网概述

1. 网络、互连网(互联网)与因特网的区别与关系

        如图所示,笔记本电脑是一个节点(node)、台式电脑是一个节点、服务器是一个节点、网络打印机是一个节点,而将它们互连起来的交换机也是一个节点,节点之间的互连还需要使用链路,这样就构成了一个使用有线链路的简单网络

        另外,我们日常生活中比较常用的还有使用无线链路的网络,为了简单起见我们可以用一朵云来表示一个网络,而网络内部的细节不用给出。

        请思考一下,如果要将这两个网络互连起来需要使用什么设备呢?答案是网络之间需要通过路由器进行互连。

        若干个网络通过多个路由器互连起来,就构成了互连网(互联网)。如果我们忽略互连细节则可将互连网看作是一个覆盖范围更大的网络,因此也可称其为网络的网络,为了简单起见,互连网(互联网)也可用一朵云来表示。

        因特网是我们几乎每天都会使用的网络,它是当今世界上最大的互连网(互联网),其用户数以亿计,互连的网络数以百万计,因特网也常常用一朵云来表示,其内部各种路由器和异构型网络的互连细节不用给出,一般也难以给出。

        连接在因特网上的各种通信设备,例如,智能手机、平板电脑、笔记本电脑、台式电脑、服务器、网络打印机和可连网家用电器等成为主机(Host),而路由器是用于网络互连的专用设备一般不称其为主机。

2. 网络、互连网(互联网)与因特网的区别与关系总结

        综上所述,我们可以将网络互连网(互联网)因特网的区别与关系总结如下:

  1. 若干节点和链路互连形成网络
  2. 若干网络通过路由器互连形成互连网(互联网)
  3. 因特网是当今世界上最大的互联网

        需要说明的是,我们有时并没有严格区分互连网和因特网这两个名词,许多人口中的互联网实际上是指因特网。

        这里我们需要区分一下这两个英文单词的含义:

        以小写字母 i 开头的英文单词 internet 是一个通用名词,翻译为互连网(互联网),它泛指由多个计算机网络互连而成的网络,在这些网络之间的通信协议可以是任意的。

        以大写字母 I 开头的英文单词 Internet 则是一个专用名词,翻译为因特网,它专指当前全球最大的、开放的、由众多网络和路由器互连而成的特定计算机网络,在这些网络之间必须使用 TCP/IP 协议族作为通信规则。

3. 因特网简介

1. 因特网发展的三个阶段

        如图所示,因特网的基础结构大体上经历了以下三个阶段的演进:

        第一阶段从单个网络 ARPANET 向互连网发展。1969 年美国国防部创建了第一个分组交换网 ARPANET。到了 20 世纪 70 年代中期,人们意识到不可能只用一个单独的网络来满足所有的通信问题,于是开始研究网络互连问题。1983 年 TCP/IP 协议族成为 ARPANET 上的标准协议,任何使用 TCP/IP 协议组的计算机都能通过网络互连而通信。因此,1983 年成为了因特网的诞生时间。

        第二阶段逐步建成三级结构的因特网。从 1985 年起,美国国家科学基金会 NSF 就围绕六个大型计算机中心建设计算机网络,也就是国家科学基金网 NSFNET。它是一个三级结构的网络,分为主干网、地区网和校园网。该网络覆盖了全美国主要的大学和研究所,并且成为因特网中的主要组成部分。1990 年美国国防部创建的 ARPANET 任务完成正式关闭。1991 年美国国家科学基金会 NSF 和美国的其他政府机构开始认识到因特网必将扩大其使用范围,不应仅限于大学和研究机构。于是美国政府决定将因特网的主干网转交给私人公司来经营,并开始对接入因特网的单位收费。

        第三阶段逐步形成多层次ISP结构的因特网。从 1993 年开始由美国政府资助的NSFNET 逐步被若干个商用的因特网主干网替代,政府机构也不再负责因特网的任何运营,转而由各种因特网服务提供者ISP来运营。1994 年最早由欧洲离子物理实验室的蒂姆·伯纳斯——李在 1989 年提出的万维网技术也就是 WWW 技术在因特网上被广泛应用,这使得众多普通的计算机用户可以便捷地使用网络,极大地推动了因特网的迅猛发展。1995 年 NSFNET 停止运作,因特网彻底商业化

2. 因特网服务提供者(Internet Service Provider,ISP)

请想想看普通用户是如何接入到因特网的呢?

        实际上是通过 ISP 接入因特网的。ISP 可以从因特网管理机构申请到成块的 IP 地址同时拥有通信线路以及路由器等连网设备,任何单位或个人都可以通过 ISP 接入到因特网只需要按 ISP 的规定交纳费用即可。我国的 ISP 主要有中国电信、中国移动、中国联通这三大电信运营商,他们向广大用户提供因特网接入服务、信息服务和增值服务。

3. 因特网已发展成为基于ISP的多层次结构的互连网络

        目前,因特网已发展成为基于 ISP 的多层次结构的互连网络,没有人能够准确说出因特网究竟有多大,其整个结构也很难进行细致的描述。

        如图所示,这是一种具有三层 ISP 结构的因特网概念示意图:

        第一层 ISP 是国际级的,其覆盖面积最大并且拥有高速链路和交换设备。第一层 ISP 之间相互连接构成因特网主干网。

        第二层 ISP 是区域级国家级的,与少数第一层 ISP 相连接作为第一层 ISP 的用户,一些大公司也是第一层 ISP 的用户。

        第三层 ISP 是本地级的,与第二层 ISP 相连接作为第二层 ISP 的用户,普通的校园网、企业网、住宅用户以及移动用户等都是第三层 ISP 的用户。

        请注意已接入因特网的用户也可以成为一个 ISP,他只需要购买一些相关的设备例如调制解调器、路由器等让其他用户能够通过他来接入因特网。因此,因特网的结构实际上是基于 ISP 的多层次结构,各 ISP 可以在因特网拓扑上添加新的层次和分支。

4. 因特网的标准化工作

        因特网的标准化工作是面向公众的,其任何一个建议标准在成为因特网标准之前都以RFC 技术文档的形式在因特网上发表。

        RFC(Request For Comments)的意思是“请求评论”。任何人都可以从因特网上免费下载 RFC 文档(https://www.ietf.org/rfc/),并随时对某个 RFC 文档发表意见和建议。

        制定因特网标准需要经过因特网草案建议标准草案标准因特网标准这四个阶段,因特网草案并不是 RFC 文档,从建议标准开始成为 RFC 文档。需要说明的是,由于草案标准容易与因特网草案混淆,从 2011 年 10 月起取消了草案标准这个阶段,这样现在制定因特网标准的过程简化为因特网草案建议标准因特网标准这三个阶段。

5. 因特网的管理机构

        因特网管理机构的组织架构如图所示:

        因特网由国际组织因特网协会(ISOC)全面管理,ISOC 下设因特网体系结构委员会(IAB),负责管理因特网相关协议的开发,IAB 下设因特网工程部(IETF)和因特网研究部(IRTF)。IETF 负责研究中短期的工程问题如相关协议的开发和标准化,IRTF 负责研究理论方面需要长期考虑的问题

6. 因特网的组成

        因特网是当今全球覆盖范围最广的互连网,其网络拓扑非常复杂,但我们可以从功能上简单地将其划分为两部分,即核心部分边缘部分

        边缘部分:由连接在因特网上的台式电脑、服务器、笔记本电脑、平板电脑、智能手机、智能手表、网络摄像头以及网络打印机等用户设备构成,这些用户设备常称为主机,由用户直接使用,为用户直接提供各式各样的网络应用。

        核心部分:由大量异构型网络和连接这些网络的路由器构成。

        因特网的核心部分为其边缘部分提供连通性和数据交换等服务,在网络核心部分起特殊作用的是路由器,它是一种专用计算机,但我们不称它为主机。路由器是实现分组交换的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。

4. 总结


1.3 电路交换、分组交换和报文交换

1. 电路交换

        如图所示,在早期专为电话通信服务的电信网络中需要使用很多相互连接起来的电话交换机来完成全网的交换任务。电话交换机接通电话线的方式就是电路交换

        使用电路交换进行通信需要经历:建立连接、通话、释放连接三个步骤。

        建立连接也就是分配通信资源,例如在使用电路交换打电话之前,主叫方必须首先进行拨号以请求建立连接,当被叫方听到电话交换机送来的振铃音并摘机后,从主叫方到被叫方就建立了一条专用的物理通路,简称为连接。这条连接为通话双方提供了通信资源,主叫方和被叫方现在可以基于已建立的连接进行通话了。在整个通话期间通话双方始终占用着连接,通信资源不会被其他用户占用。通话完毕挂机后从主叫方到被叫方的这条专用物理通路被交换机释放,将双方所占用的通信资源归还给电信网。

计算机之间的数据传送适合采用电路交换方式吗?

        这需要从计算机之间数据传送的特点来考虑。想想看通常我们的计算机都运行着即时通信工具例如QQ,尽管我们并不是一直连续通过该工具发送消息,但为了随时发送和接收消息我们也一直会让其处于上线状态,对于这种情况如果采用电路交换方式则宝贵的通信线路资源大部分并未被利用而是被白白浪费了,也就是说计算机之间的数据传送是突发式的,当使用电路交换来传送计算机数据时,其线路的传输效率一般都会很低,线路上真正用来传送数据的时间往往不到10%甚至1%。因此计算机网络通常采用分组交换,而不是电路交换。

2. 分组交换

        如图所示,这是一个简化的采用分组交换技术的小型互联网,为了简单起见我们并未画出其中的各个物理网络,而是把它们等效为路由器之间的一段链路,该小型互联网可被看作是一个分组交换网,而路由器 R1 到 R5 就是分组交换网中的交换节点,主机 H1 到 H5 通过分组交换网进行通信。

        假设主机 H1 的用户要给主机 H3 的用户发送一条消息。通常,我们把表示消息的整块数据称为一个报文,较长的报文一般不适宜直接传输,如果报文太长则对交换节点的缓存容量有很大的需求,在错误处理方面也会比较低效。因此,需要将较长的报文划分成若干个较小的等长数据段,在每个数据段前面添加一些由必要的控制信息组成的首部,这样就构造出了一个个分组。

添加首部的作用是什么?这不是额外加大了待传输的数据量吗?

        实际上首部起着非常关键的作用,相信同学们至少能想到首部中肯定包含了分组的目的地址,否则分组传输路径中的各交换节点就不知道如何转发分组了。

        原主机将分组发送到分组交换网中,分组交换网中的交换节点收到一个分组后先将其缓存下来,然后从其首部中提取出目的地址,按照目的地址查找自己的转发表,找到相应的转发接口后将分组转发出去,把分组交给下一个交换节点,经过多个交换节点的存储转发后分组最终被转发到目的主机 。

        在本例中,主机 H1 将所构造出的各分组依次发送出去,各分组经过传输路径中的各交换节点的存储转发,最终到达主机 H3。主机 H3 收到这些分组后去掉他们各自的首部,将各数据段组合还原出原始报文。

        需要说明的是,为了初学者容易理解,这里只演示出了分组传输过程中的最简单情况,那就是各分组从源站到达目的站可以经过不同的路径,而分组失序、丢失、误码等问题并没有演示,这些内容将在今后的课程中详细介绍。

下面我们进一步说明上述分组交换过程:

        主机 H1 将分组逐个发送给与其直接相连的路由器 R1,此时H1到R1的链路被占用,而分组交换网中的其他链路并未被当前通信的双方占用,路由器 R1 对收到的分组进行存储转发。        

        假设 R1 根据分组首部中的目的地址查找自己的转发表的结果是下一跳为路由器 R2,则R1 转发分组给 R2,当分组正在 R1 与 R2 之间的链路上传送时仅占用 R1 与 R2 这段链路,而不会占用分组交换网中的其他资源,路由器 R2 对收到的分组进行存储转发。

        假设 R2 根据查表结果应转发给路由器 R3,路由器 R3 对收到的分组进行存储转发,将它们转发给主机 H3。

在上述分组交换过程中:

        发送方所要完成的任务是:    构造分组和发送分组
        交换节点所要完成的任务是:缓存分组和转发分组,简称为存储转发
        接收方所要完成的任务是:    接收分组并还原成报文

        需要说明的是,我们只展示了主机 H1 和 H3 这一对主机之间基于分组交换网的通信过程,但是在实际的因特网中往往有大量的主机在同时通信,另外在一台主机中也可能有多个和网络通信相关的应用进程,他们同时与其他主机中的不同应用进程进行通信。

1. 分组交换优缺点

从本例可以看出:
        分组交换与电路交换有着很大的不同,分组交换没有建立连接和释放连接的过程分组传输过程中逐段占用通信链路,相比于采用电路交换传送突发式的计算机数据,分组交换有较高的通信线路利用率,另外交换节点可以为每一个分组独立选择转发路由,使得网络有很好的生存性

        然而分组交换也带来了一些问题,例如分组首部带来了额外的传输开销交换节点存储转发分组时会造成一定的时延无法确保通信时端到端的通信资源全部可用在通信量较大时可能造成网络拥塞分组可能出现失序和丢失等问题

3. 报文交换

  1. 报文交换是分组交换的前身。
  2. 在报文交换中,报文被整个的发送,而不是拆分成若干个分组进行发送。
  3. 交换节点将报文整体接收完成后才能查找转发表,将整个报文转发到下一个节点。
  4. 因此,报文交换比分组交换带来的转发时延要长很多,需要交换节点具有的缓存空间也大很多

4. 三种交换方式的对比

如图所示,假设源主机和目的主机之间有两个交换节点,纵坐标为时间。

1. 对于电路交换

        通信之前首先要建立连接,成功建立连接之后,就可以使用已建立的连接进行数据传送。数据传送结束后,需要释放连接,将双方所占用的通信资源归还给电信网。

2. 对于报文交换

        无需首先建立连接,可以随时发送报文,通信结束后也无需释放连接,数据传送单元为整个报文,传送路径中的交换节点,只有在完整接收到整个报文后,才能对其进行查表转发,将整个报文发送到下一个节点。

3. 对于分组交换

        可以随时发送分组,而不需要事先建立连接。构成原始报文的一个个分组依次在各交换节点上存储转发,各交换节点在转发分组的同时还缓存接收到的分组。

当使用电路交换时:

        一旦建立连接,中间的各交换节点就是直通形式的,数据可以直达终点。

当使用报文交换时:

        整个报文需要在各交换节点上存储转发,由于不限制报文的大小,因此需要各交换节点都具有较大的缓存空间。

当使用分组交换时:

        构成原始报文的一个个分组在各交换节点上存储转发,相比报文交换减少了转发时延,还可以避免过长的报文长时间占用链路,同时也有利于进行差错控制。

4. 综上所述

        若要连续传送大量的数据,并且数据传送时间远大于建立连接的时间,则使用电路交换可以有较高的传输效率。然而计算机的数据传送往往是突发式的,采用电路交换时通信线路的利用率会很低

        报文交换和分组交换都不需要建立连接(即预先分配通信资源),在传送计算机的突发数据时可以提高通信线路的利用率

        将报文构造成若干个更小的分组进行分组交换,比将整个报文进行报文交换的时延要小,并且还可以避免太长的报文长时间占用链路有利于差错控制,同时具有更好的灵活性。


1.4 计算机网络的定义和分类

1. 计算机网络的定义

        计算机网络并没有一个精确和统一的定义,在计算机网络发展的不同阶段人们对计算机网络给出了不同的定义,这些定义反映了当时计算机网络技术发展的水平

1. 计算机网络的最简单的定义

即计算机网络是一些互连的、自治的、计算机的集合

如图所示,这是一个小型互联网,

互连是指计算机之间可以通过有线或无线的方式进行数据通信,

自治是指独立的计算机它们有自己的硬件和软件可以独立运行,

计算机的集合是指至少需要两台以上的计算机。

2. 现阶段计算机网络的一个较好的定义

        计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。

        可编程的硬件: 不限于计算机,而是包括了智能手机、具有网络功能的传感器以及智能家电等智能硬件,这些硬件一定包含有中央处理单元(CPU)。
        各类应用:计算机网络并非只用来传送数据,而是能够基于数据传送进而实现各种各样的应用,包括今后可能出现的各种应用。

2. 计算机网络的分类

        计算机网络的分类可以从不同的角度对计算机网络进行分类,例如:按交换方式分类、按使用者分类、按传输介质分类、按覆盖范围分类、按拓扑结构分类等。

1. 按交换方式分类

        可分为电路交换报文交换分组交换

2. 按使用者分类

        可分为公用网专用网

        公用网通常是由电信公司出资建造的大型网络,公众只要按照电信公司的规定交纳费用就可以使用这种网络。

        专用网通常是由某个部门为满足本单位特殊业务的需要而建造的网络,例如,军队、铁路、电力、银行等部门的专用网,这种网络不向本单位以外的人提供服务。

3. 按传输介质分类

        如图所示,在这个小型互联网中包含有线网络无线网络,有线网络包括双绞线网络光纤网络等,而无线局域网所使用的 Wi-Fi 技术目前应用比较普遍。

4. 按覆盖范围分类

        可以分为广域网(WAN)城域网(MAN)局域网(LAN)个域网(PAN)

        最好能记住这几个比较常见的英文缩写词,尤其是 WAN LAN

        自己家中路由器背面的各接口很可能标记有多个 LAN 和一个 WAN,而不是标记为中文的局域网接口和广域网接口。

        广域网的覆盖范围通常为几十到几千千米,可以覆盖一个国家、地区,甚至横跨几个州。广域网是因特网的核心部分,它为因特网核心路由器提供远距离高速连接,互连分布在不同国家和地区的城域网和局域网。

        城域网的覆盖范围一般为 5 到 50 千米,可以跨越几个街区,甚至整个城市。城域网通常作为城市骨干网,互连大量机构、企业以及校园局域网。

        局域网的覆盖范围一般为 1 千米左右。例如,一个学生宿舍、一栋楼或一个校园。局域网通常由微型计算机或工作站通过速率为 10MB/s(兆比特每秒)以上的高速链路相连。在过去一个企业或学校往往只拥有一个局域网,而现在局域网已被广泛的应用,一个企业或学校可能就会有多个互连的局域网,这样的网络常称为校园网或企业网。

        个域网是个人区域网的简称,其覆盖范围一般为 10 米。个域网主要用于在个人工作的地方把属于个人使用的笔记本电脑、键盘、鼠标、耳机以及打印机等电子设备用 Wi-Fi 或蓝牙等无线技术连接起来的网络,因此也常称为无线个域网 WPAN。

5. 按拓扑结构分类

可分为:总线型星型环型网状型

这是一个总线型网络:使用单根传输线把计算机连接起来。
优点是建网容易、增减节点方便、节省线路
缺点是重负载时通信效率不高、总线任意一处出现故障则全网瘫痪

这是一个星型网络:每个计算机都以单独的线路与中央设备相连,中央设备早期是计算机,后来是集线器,现在一般是交换机或路由器。
这种网络拓扑的

优点是便于网络的集中控制和管理
缺点是成本高、中央设备对故障敏感

这是一个环型网络:所有计算机的网络接口都连接成一个环,最典型的例子是令牌环局域网,环可以是单环也可以是双环,环中信号是单向传输的。

这是一个网状型网络:一般情况下,每个节点至少有两条路径与其他节点相连,多用在广域网中。
优点是可靠性高
缺点是控制复杂、线路成本高

需要说明的是,以上四种基本的网络拓扑还可以互连为更复杂的网络,即混合型拓扑结构

补充:

        树型拓扑结构是从总线型星型拓扑结构演变而来,其特点是综合了总线型与星型的优缺点。

3. 总结


1.5 计算机网络的性能指标

        计算机网络的性能指标被用来从不同方面度量计算机网络的性能
        常用的八个计算机网络性能指标:速率带宽吞吐量时延时延带宽积往返时间利用率丢包率

1. 速率

        比特(bit,记为小写b)是计算机中数据量的基本单位,一个比特就是二进制数字中的一个 1 或 0
        数据量的常用单位有字节(byte,记为大写 B)、干字节(KB)、兆字节(MB)、吉字节(GB)以及太字节(TB)。

        下图给出了数据量的常用单位及换算关系

        这里的 K 是 2 的 10 次方

 

        速率是指数据的传送速率(即每秒传送多少个比特),也称为数据率(Data Rate)或比特率(Bit Rate)。
        速率的基本单位是比特/秒(bit/s,可简记为 b/s,有时也记为 bps,即 bit per second)。速率的常用单位有干比特/秒(kb/s 或 kbps)、兆比特/秒(Mb/s 或 Mbps)、吉比特/秒(Gb/s 或 Gbps)以及太比特/秒(Tb/s 或 Tbps)。

        下图给出了速率的常用单位及换算关系

        这里的 K 是 10 的 3 次方

练习

【练习1】有一个待发送的数据块,大小为 100MB,网卡的发送速率为 100Mbps,则网卡发送完该数据块需要多长时间?

解析

        用数据块的大小 100MB(兆字节)除以网卡的发送速率 100Mb/s(兆比特每秒)就是网卡发送完该块数据所花费的时间

        分子和分母上的 100 可以约掉,而分子和分母上的 M (兆)是否可以约掉呢?严格来说是不能约掉的,因为分子上的 M(兆)是数据量单位中的,其值为 2 的 20 次方,而分母上的 M(兆)是速率单位中的,其值为 10 的 6 次方。

        我们还需要将分子上的字节转换为 8 个比特,这样分子和分母上的比特就可以约掉只剩下秒单位得出最终结果。

        需要说明的是为了简单起见,我们平时可以进行估算,这时分子和分母上的兆可以直接约掉,可以看出得到的结果与精确计算的差别不是很大。

2. 带宽

        带宽在模拟信号系统中的意义是指某个信号所包含的各种不同频率成分所占据的频率范围或称频率宽度

        其基本单位是 Hz,常用单位有 KHz、MHz、GHz。

        例如,在传统的通信线路上传送的电话信号其标准带宽为3.1kHz,范围从 300Hz 到3.4kHz,这是话音的主要成分的频率范围。

        带宽在计算机网络中的意义是用来表示网络的通信线路所能传送数据的能力,即在单位时间内从网络中的某一点到另一点所能通过的最高数据率

        其单位与我们刚刚介绍的速率单位是相同的,基本单位是 b/s,常用单位有 kb/s、Mb/s、Gb/s、Tb/s。

        带宽的上述两种表述有着密切的关系,即线路的频率带宽越宽其所传输数据的最高速率也越高,现在需要注意速率匹配的问题。

        也就是说数据传输速率应从主机接口速率线路带宽以及交换机或路由器的接口速率这三者中取者。我们来举例说明:

        如图所示,这是家庭局域网的一部分,主机的接口速率、线路带宽、交换机的接口速率,它们共同决定着主机的发送速率。

        从本例可以看出,在构建网络时应该做到各设备以及传输介质的速率匹配,这样才能完全发挥出本应具有的传输性能。

3. 吞吐量

        吞吐量是指在单位时间内通过某个网络或接口的实际数据量。吞吐量常被用于对实际网络的测量,以便获知到底有多少数据量通过了网络,很显然吞吐量受网络带宽的限制

        如图所示,假设某用户接入因特网的带宽为 100Mb/s(兆比特每秒),该用户同时进行观看网络视频、浏览网页以及给文件服务器上传文件这三个网络应用,播放网络视频的下载速率为 20Mb/s(兆比特每秒)、访问网页的下载速率为 600kb/s(K比特每秒)、向文件服务器上传文件的上传速率为 1Mb/s(兆比特每秒),则网络吞吐量就是下载速率和上传速率的总和

4. 时延

        时延是指数据从网络的一端传送到另一端所耗费的时间,也称为延迟或迟延。数据可由一个或多个分组,甚至是一个比特构成。

在上图的网络中,主机 H1 给 H3 发送一个分组,那么该分组在整个传输过程中所耗费的时间由哪几部分构成呢?

        我们来一起分析一下为了简单起见,我们假设源主机和目的主机之间只有一个路由器和两段链路。

1. 发送时延

        源主机将分组发往传输线路这需要花费一定的时间,我们把这段时间称为发送时延, 发送时延的计算公式为 分组长度除以发送速率

2. 传播时延

        代表分组的电信号在链路上传播,这也需要花费一定的时间,我们把这段时间称为传播时延,传播时延的计算公式为 信道长度除以信号传播速率

3. 排队时延

        当分组进入路由器后会在路由器的输入队列中排队缓存并等待处理,在路由器确定了分组的转发接口号,分组会在输出队列中排队缓存并等待转发,分组在路由器的输入队列和输出队列中排队缓存所耗费的时间就是排队时延

        在分组从源主机传送到目的主机的过程中分组往往要经过多个路由器的转发,分组在每个路由器上产生的排队时延的长短往往取决于网络当时的通信量和路由器的自身性能,由于网络的通信量随时间变化很大、各路由器的性能也可能并不完全相同,因此排队时延一般无法用一个简单的公式进行计算,另外当网络通信量很大时可能会造成路由器的队列溢出使分组丢失,这相当于排队时延无穷大。

4. 处理时延

        路由器从自己的输入队列中取出排队缓存并等待处理的分组后会进行一系列处理工作,例如,检查分组的首部是否误码、提取分组首部中的目的地址、为分组查找相应的转发接口以及修改分组首部中的部分内容,例如,生存时间等,路由器对分组进行这一系列处理工作所耗费的时间就是处理时延,与排队时延类似,处理时延一般也无法用一个简单的公式进行计算

        对于本例,分组经过路由器的转发传输到物理主机这又会耗费一个路由器的发送时延,以及代表该分组的电信号在另一段链路上传播所耗费的传播时延

源主机或路由器有发送时延难道目的主机或路由器就没有接收时延吗?

        仔细想想看实际上目的主机接收分组信号与分组信号在链路上传播是同时进行的,如果在总时延中包含接收时延,我们就把这一部分时间重复计算了。综上所述,时延由发送时延传播时延排队时延和处理时延构成

        在计算发送时延时,发送速率应注意我们之前介绍过的速率匹配问题,在计算传播时延时,首先应该确定采用的是什么传输媒体,进而可以确定电磁波在该传输媒体中的传播速率,希望大家能够将图片上电磁波的三种传播速率作为常识而记住。

        这里需要纠正一下可能某些同学会有的错误认知,我们都知道使用光纤作为传输介质给我们带来的上网感受那就是快,但是这并不是因为光在光纤中传播的速率快,实际上光在光纤中的传播速率还要略低于电磁波在铜线中的传播速率,它们都是亚光速的,而电磁波在自由空间的传播速率就是光速即 3*10 的 8 次方米每秒,光纤网络速度快的根本原因在于我们之前刚刚介绍过的性能指标带宽,光纤的带宽很大,也就是所能承载的最高数据传送速率很大,更简单的说,单位时间内可传送更多的比特。

        接下来介绍一种在分析时延有关问题时经常用到的图解方法:

        如图所示,设主机 A 与主机 B 通过一个路由器和两段链路互连,横坐标为时间。主机 A给主机 B 发送一个分组

        按图中从左至右

  1. 这段时间是主机 A 发送该分组所耗费的发送时延
  2. 这段时间是该分组最后一个比特的信号从主机 A 传播到路由器所耗费的传播时延
  3. 这段时间是该分组在路由器中所耗费的排队时延处理时延

        路由器将该分组转发给主机 B

  1. 这段时间是路由器转发该分组所耗费的发送时延
  2. 这段时间是该分组最后一个比特的信号从路由器传播到主机 B 所耗费的传播时延

我们再来看主机 A 给主机 B 连续发送三个分组的情况

        注意观察,这是所耗费的各种时延为,了简单起见我们并未画出在路由器上所耗费的排队时延和处理时延,不知同学们是否觉得这幅图似曾相识呢,我们之前在对比电路交换、报文交换和分组交换时曾使用过类似的图,只不过那幅图采用纵坐标为时间,很明显路由器在发送某个分组的同时还在接收下一个分组

        再来看复杂一点的情况,主机 A 和主机 B 通过两个路由器互连共三段链路,主机 A 给主机 B 连续发送 4 个分组。则从主机 A 发送第一个分组开始到主机 B 接收完第四个分组为止,在不考虑排队时延和处理时延的情况下,总时延由四个分组的发送时延三段链路的传播时延以及两个路由器转发单个分组所耗费的发送时延构成。

        希望同学们可以通过本例自行推导出在不考虑排队时延和处理时延的情况下源主机通过 n 个路由器的转发,给目的主机发送 m 个分组的总时延计算公式,当然了需要假设各分组等长、各链路等长、主机和路由器的发送速率相等。

(m+n)*发送时延+(n+1)*传播时延

1. 考研题 2010年 题34

这个解释个人感觉也不错:[计算机网络试题]在下图所示的采用“存储-转发”方式分组的交换网络中,所有链路的数据传输速度为100Mbps_采用存储转发方式的分组交换网络中从原点到终点经过三个链路所有链路数据传输_杨景文Blog的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/muyi_amen/article/details/120942082

在不考虑排队时延和处理时延的情况下,总时延中是发送时延占主导呢还是传播时延占主导?

        先完成以下两个练习,根据这两个练习的计算结果对比看看自己得出的结论是否正确。

2. 练习

        实际上在不考虑排队时延和处理时延的情况下,总时延中是发送时延占主导还是传播时延占主导,应该具体问题具体分析而不能想当然的认为发送时延占主导或传播时延占主导。

 5. 总结(1)

6. 时延带宽积

        时延带宽积是传播时延带宽的乘积。

        我们可以将链路看作是一个圆柱形管道,管道的长度是链路的传播时延,即以时间作为单位来表示链路长度,管道的横截面积是链路的带宽,因此,时延带宽积就相当于这个管道的容积,表示这样的链路可以容纳的比特数量。

        下面我们举例说明时延带宽积的意义

        【举例】主机 A 和 B 之间采用光纤链路,链路长 1km,链路带宽为 1Gb/s,请计算该链路的时延带宽积。

        该链路的时延带宽积算如下:

        传播时延的计算:光在光纤中的传播速率为 2*10 的 8 次方米每秒这是我们应该熟记的。

        我们画出本例的示意图主机 A 与 B 之间的光纤链路长 1 千米,则信号传播时间为 5 微秒,希望记住这个结论。

        链路带宽 1Gb/s,若主机 A 连续发送数据,则在发送的第一个比特即将到达主机 B 时,发送端已经发送了时延带宽积个比特,对于本例是 5000 个比特,而这些比特都正在链路上向前传播。因此,链路的时延带宽积也称为以比特为单位的链路长度,这对我们以后理解以太网的最短帧长是非常有帮助的。

7. 往返时间

        往返时间(Round-Trip Time,RTT)是指从发送端发送数据分组开始,到发送端收到接收端发来的相应确认分组为止,总共耗费的时间。

        我们来举例说明
        如图所示,主机 A 与主机 B 通过多个异构型的网络和多个路由器进行互连,以太网中的主机 A 给无线局域网中的主机 B 发送数据分组,主机 B 收到数据分组后给主机 A 发送相应的确认分组,从主机 A 发送数据分组开始到主机 A 收到主机 B 发来的相应确认分组为止,就是这一次交互的往返时间 RTT

请根据上节课介绍的有关时延的知识来分析一下分组是在这个以太网上耗时较多,还是在这个无线局网上耗时较多,又或者是在卫星链路上耗时较多呢?

        答案是卫星链路耗时较多

        一般情况下卫星链路的距离比较远,所带来的传播迟延比较大。例如,地球同步卫星距离地球 36000 千米,那么可以计算出通过同步卫星转发分组所带来的传播延时大约为 240 毫秒。

        我们可以在计算机中使用相关的软件工具测量计算机与某个目的主机的连通性和往返时间 RTT。

        例如,这是在 Windows 系统命令行中使用 ping 命令测量该计算机与哔哩哔哩网站的连通性和往返时间RTT,大约为 24毫秒。

8. 利用率

        利用率有链路利用率网络利用率两种

        链路利用率:链路利用率是指某条链路有百分之几的时间是被利用的(即有数据通过)。完全空闲的链路的利用率为零。
        网络利用率:网络利用率是指网络中所有链路的链路利用率的加权平均。

        根据排队论可知,当某链路的利用率增大时该链路引起的时延就会迅速增加

        这并不难理解,例如,当公路上的车流量增大时,公路上的某些地方会出现拥堵,所需行车时间就会变长,网络也是如此。
        当网络的通信量较少时,产生的时延并不大,但在网络通信量不断增大时,分组在交换节点(路由器或交换机)中的排队时延会随之增大,因此网络引起的时延就会增大。
        令 D0 表示网络空闲时的时延,D 表示网络当前的时延,那么在理想的假定条件下,可用下式来表示 D、D0 和网络利用率 U 之间的关系。 

 ​​​​​​​

        我们可以按上式画出时延 D 利用率 U 的变化曲线,横坐标为网络利用率 U,纵坐标为网络时延 D,网络利用率U的极限值为 1 即 100% 利用。

        网络空闲时的时延 D0 也就是网络利用率 U 为 0 时的时延,时延 D 随网络利用率 U 的增大而增大,当网络利用率达到 50% 时,时延就会加倍,当网络利用率接近 100% 时,时延就趋于无穷大。

        因此,网络利用率并不是越大越好,过高的网络利用率会产生非常大的时延。一些大型ISP 往往会控制信道利用率不超过 50%。如果超过了就要进行扩容,增大线路的带宽。当然了,也不能使信道利用率太低,这会使宝贵的通信资源白白浪费,应该使用一些机制可以根据情况动态调整输入到网络中的通信量,使网络利用率保持在一个合理的范围内。

9. 丢包率

        丢包率是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率

        丢包率可分为:接口丢包率节点丢包率链路丢包率路径丢包率网络丢包率

        在过去丢包率只是网络运维人员比较关心的一个网络性能指标,而普通用户往往并不关心这个指标,因为他们通常意识不到网络丢包。随着网络游戏的迅速发展,现在很多游戏玩家也非常关心丢包率这个网络性能指标。

        我们来举例说明造成丢包的两种情况:
        如图所示,主机 H1 给 H3 发送分组,该分组在传输过程中出现了误码,当误码了的该分组进入传输路径中的交换节点后,被交换节点检测出了误码,进而被交换节点丢弃,至于交换节点是如何检测出分组有误码的,会在后续课程中介绍。

  

        再来看另一种情况:主机 H1 给 H3 发送分组,该分组正确到达传输路径中的某个交换节点,但该交换节点的输入缓存的队列长度达到了某个阈值,根据丢弃策略,必须丢弃该分组,尽管该分组并没有误码。

综上所述,分组丢失主要有以下两种情况:

  1. 分组在传输过程中出现误码,被传输路径中的节点交换机(例如路由器)或目的主机检测出误码而丢弃
  2. 节点交换机根据丢弃策略主动丢弃分组。

丢包率可以反映网络的拥塞情况:

  1. 无拥塞时路径丢包率为 0。
  2. 轻度拥塞时路径丢包率为 1% ~ 4%。
  3. 严重拥塞时路径丢包率为 5% ~ 15%。 

当网络的丢包率较高时,通常无法使网络应用正常工作。

10. 总结(2)


1.6.1 常见的三种计算机网络体系结构

        为了使不同体系结构的计算机网络都能互连起来,国际标准化组织于1977年成立了专门机构研究该问题,不久他们就提出了一个使全世界各种计算机可以互连成网的标准框架,这就是著名的开放系统互连基本参考模型简称为 OSIOSI 参考模型是一个七层协议的体系结构。自下而上依次是物理层、数据链路层、网络层、运输层、会话层、表示层以及应用层。        

        OSI 体系结构是法律上的国际标准,到了 20 世纪 90 年代初期尽管整套的 OSI 国际标准都已经制定出来了,但这时因特网已抢先在全世界覆盖了相当大的范围,因特网从1983 年开始使用 TCP/IP 协议族并逐渐演变成 TCP/IP 参考模型,TCP/IP 参考模型是一个四层协议的体系结构,自下而上依次是网络接口层、网际层、运输层以及应用层

        TCP/IP 参考模型事实上的国际标准,在过去制定标准的组织中往往以专家、学者为主,但现在许多公司都纷纷挤进各种各样的标准化组织,使得技术标准有着浓厚的商业气息。

        例如,我国的华为公司近些年一直参与国际行业的标准制定,加入了包括 ISO、ITU 以及 IEEE 在内的 400 多个标准组织、产业联盟以及开源社区,仅仅在 2018 年就提交了 5000多篇标准提案,曾累计提交 6 万多篇标准提案,是我国参与国际标准制定的重要力量。

        一个新标准的出现有时不一定反映出其技术水平是最先进的,而是往往有着一定的市场背景,从这种意义上说能够占领市场的就是标准,因特网使用 TCP/IP 参考模型就是最好的例证。

1. OSI失败的原因

  1. OSI 的专家们缺乏实际经验他们在完成 OSI 标准时没有商业驱动力
  2. OSI 的协议实现起来过分复杂而且运行效率很低
  3. OSI 标准的制定周期太长因而使得按 OSI 标准生产的设备无法及时进入市场
  4. OSI 的层次划分也不太合理有些功能在多个层次中重复出现

        对比这两个体系结构可以看出,TCP/IP 体系结构相当于将 OSI 体系结构的物理层和数据链路层合并为了网络接口层,将会话层和表示层合并到了应用层。需要说明的是由于TCP/IP 在网络层使用的协议是 IP 协议,IP协议的中文意思是网际协议,因此 TCP/IP 体系结构的网络层常称为网际层

        大多数网络用户每天都有使用因特网的需求,这就要求用户的主机必须使用 TCP/IP 体系结构,在用户主机的操作系统中通常都带有完整的 TCP/IP 协议族,而因特网中用于网络互连的路由器就其所需完成的网络互连这一基本任务而言,只包含 TCP/IP 的网络接口层和网际层即可,因此我们一般认为路由器的网络体系结构的最高层为网际层

        TCP/IP 体系结构的网络接口层并没有规定什么具体的内容,这样做的目的是可以互连全世界各种不同的网络接口。例如,有线的以太网接口、无线局域网的 Wi-F i接口,而不限定仅使用一种或几种网络接口。因此,TCP/IP 体系结构在本质上只有上面的三层网际协议 IP 是 TCP/IP 体系结构网际层的核心协议传输控制协议 TCP 用户数据报协议 UDP 是 TCP/IP 体系结构运输层的两个重要协议

        TCP/IP 体系结构的应用层包含了大量的应用层协议,例如,超文本传送协议 HTTP简单邮件传送协议 SMTP域名系统 DNS 以及实时运输协议 RTP 等。

        即便同学们是计算机网络的初学者对 HTTP 这个英文缩写词可能也不会陌生,因为每当我们打开浏览器在地址栏输入网址时就会看到它,IP 协议可以将不同的网络接口进行互连并向其上的 TCP 协议和 UDP 协议提供网络互连服务。TCP 协议在享受 IP 协议提供的网络互连服务的基础上可向应用层的某些协议提供可靠传输的服务UDP 协议在享受 IP 协议提供的网络互连服务的基础上可向应用层的某些协议提供不可靠传输的服务

        IP 协议作为 TCP/IP 体系结构中的核心协议,一方面负责互连不同的网络接口,也就是IP over everything,另一方面为各种网络应用提供服务也就是 Everything over IP。由于TCP/IP 体系结构中包含有大量的协议,而 IP 协议和 TCP 协议是其中非常重要的两个协议,因此用 TCP 和 IP 这两个协议来表示整个协议大家族,常称为 TCP/IP 协议族。

        顺便提一下在嵌入式系统开发领域 TCP/IP 协议族也常称为 TCP/IP 协议栈,这是因为TCP/IP 协议体系的分层结构与数据结构中的栈在图形画法上是类似的。

        TCP/IP 体系结构为了将不同的网络接口进行互连其网络接口层并没有规定什么具体内容,然而,这对于我们学习计算机网络的完整体系而言就会缺少一部分内容。因此,在学习计算机网络原理时往往采取折中的办法,也就是综合 OSI 参考模型和 TCP/IP 参考模型的优点,采用一种原理参考模型

        原理参考模型是一个五层协议的体系结构,自下而上依次是物理层数据链路层网络层运输层以及应用层,很显然五层协议的原理体系结构将 TCP/IP 体系结构的网络接口层又重新划分为了物理层和数据链路层,这样更有利于我们对计算机网络原理的学习。


1.6.2 计算机网络体系结构分层的必要性

        计算机网络是个非常复杂的系统,早在 ARPANET 的设计初期就提出了分层的设计理念。分层可将庞大而复杂的问题转化为若干较小的局部问题,而这些较小的局部问题就比较容易研究和处理。

        下面我们按照由简单到复杂的顺序来看看实现计算机网络要面临哪些主要问题以及如何将这些问题划分到 5 层原理体系结构的相应层次,以便层层处理。

        首先来看最简单的情况,两台计算机通过一条链路连接起来,对于这种最简单的情况我们需要考虑以下问题:

        第一个问题:采用什么传输媒体?

        可以采用多种传输媒体作为传输链路,例如,同轴电缆双绞线电缆光纤光缆自由空间等。

        第二个问题:用户主机交换机以及路由器等网络设备需要采用什么物理接口来连接传输媒体?

        如图所示,这是计算机主板上常见的 RJ45 以太网接口

        在确定了传输媒体和物理接口后还要考虑使用怎样的信号来表示比特 0 和 1,进而在传输媒体上进行传送,例如,使用下面的数字基带信号,高电平表示比特 1,低电平表示比特 0。

        解决了上述这些问题,两台计算机之间就可以通过信号来传输比特 0 和 1 了。

        我们可以将上述这些问题划归到物理层

        请注意,严格来说传输媒体并不属于物理层范畴,它并不包含在计算机网络体系结构之中,另外计算机网络中传输的信号并不是我们举例的简单的数字基带信号,我们之所以举例成数字基带信号是为了让同学们更容易理解。

         实用的计算机网络往往由多台计算机互连而成,例如,主机 A、B 和 C 通过总线互连成了一个总线型网络。

        假设我们已经解决了物理层的问题,即主机间可以通过信号来传送比特 0 和 1 了,我们来看看在这样一个总线型的网络上还面临什么需要解决的问题?

        假设主机 A 要给主机 B 发送数据,表示数据的信号会通过总线传播到总线上的每一个主机,那么问题来了主机 B 如何知道这是主机 A 发送给他的数据进而接受该数据,而主机 C 又如何知道该数据并不是发送给它的,应该丢弃该数据呢?

        这就很自然地引出了如何标识网络中各主机的问题,也就是主机编址问题。同学们可能听说过网卡上固化的 MAC 地址,其实它就是主机在网络中的地址。主机在发送数据时,应该给数据附加上源地址和目的地址,当其他主机收到后,根据目的地址和自身地址是否匹配来决定是否接受该数据,还可以通过源地址知道这是哪个主机发来的数据。

        这就又引出了一个问题,目的主机如何从信号所表示的一连串比特流中区分出地址和数据,也就是需要解决数据包的封装格式问题。

        另外对于总线型的网络还会出现多个主机争用总线时产生碰撞的问题。例如,某个时刻总线是空闲的,也就是没有主机使用总线来发送数据,片刻之后主机 A 和主机 C 同时使用总线来发送数据,这必然会造成信号碰撞。

        因此,如何协调各主机争用总线也是必须要解决的问题。需要说明的是上述这种总线型网络早已淘汰,现在常用的是使用以太网交换机将多台主机互连而成的交换式以太网,在交换式以太网中多对主机之间可以同时进行通信而不会产生碰撞,那么以太网交换机又是如何实现的呢?具体来说就是以太网交换机自学习转发帧的原理。

        对于交换式以太网这种有线网络很少出现数据误码的情况,而对于无线网络比较容易出现数据误码,这就引出了如何检测数据在传输过程中是否出现了误码的问题,也就是差错检测,当检测到数据包有误码时是直接丢弃然后什么也不做又或是想办法让发送方重传有误码的数据包,这就引出了出现传输差错如何处理的问题,根据应用需求可分为可靠传输服务不可靠传输服务

        再来看这种情况,主机 A 给主机 B 连续发送数据,然而主机B正在处理很多其他任务,来不及取走输入缓存中的数据,于是主机 B 给主机 A 发送通知,通知主机 A 停止发送,这就引出了接收方控制发送方注入网络的数据量的问题,即流量控制

        我们可以将上述这些问题划归到数据链路层,到这里同学们可能会发现只要解决了物理层和数据链路层各自所面临的问题就可以实现数据包在一个网络上传输了。

        没错的确是这样。然而,我们的网络应用往往不仅限于在一个单独的网络上。

        例如,我们几乎每天都会使用的因特网是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层的问题还是不能正常工作。

        我们可以把这样一个小型互连网看作是因特网中很小的一部分,我们来看看在该小型互连网中需要考虑的主要问题有哪些。

        如图所示,由于互连网是由多个网络通过多个路由器互连起来的,因此,我们还需要对互连网中的各网络进行标识,这就引出了网络和主机共同编址的问题,相信同学们一定听说过 IP 地址。

        如下图所示,(192.168.0.1、192.168.0.2、192.168.0.254)这是分配给网络 N1 中各设备接口的 IP 地址,由于网络 N1 中的主机 H1、主机 H2 以及路由器 R1 连接网络 N1 的接口,它们都处于同一个网络,因此,他们的 IP 地址的网络号相同。

        在本例中是 192.168.0,而他们的主机号分别为 1、2 以及 254 各不相同,用于在网络N1 中唯一标识他们自己。同理我们给网络 N2 中的主机 H3、主机 H4 以及路由器 R2 连接网络 N2 的接口也分配了相应的 IP 地址,请同学们注意给网络 N2 分配的网络号为 192.168.1 这与给网络 N1 分配的网络号 192.168.0 是不同的,因为他们是不同的网络。

        我们再来看另一个问题,在互连网中源主机与目的主机之间的传输路径往往不止一条,数据包从源主机到目的主机可走不同的路径,这就引出了路由器如何转发数据包以及进行路由选择的问题。

        我们可以将上述这些问题划归到网络层,至此,如果我们解决了物理层、数据链路层以及网络层各自的问题就可以实现数据包在多个网络之间的传送了。

        然而对于计算机网络应用而言仍有一些重要问题需要考虑。

        例如,假设主机 H3 中运行着两个与网络通信相关的应用进程,一个是浏览器进程、另一个是 QQ 进程,这台 Web 服务器中运行着与网络通信相关的 Web 服务器进程,例如  Nginx。

        当主机 H3 收到 Web 服务器中 Nginx 进程发来的数据包后应将数据包交付给浏览器进程还是 QQ 进程呢?很显然,如果数据包中含有与进程相关的标志信息,主机 H3 就可以根据标志信息将数据包交付给相应的应用进程,这就引出了如何标识与网络通信相关的应用进程,进而解决进程之间基于网络通信的问题,例如,使用端口号来区分不同的应用进程。

        在之前的课程中我们曾介绍过数据包由于误码被路由器或用户主机丢弃又或是由于路由器繁忙而主动丢弃正常数据包,这些都属于传输差错,那么当出现传输差错时应该如何处理这也是需要解决的问题,我们可以将上述这些问题划归到运输层

        至此,我们解决了物理层、数据链路层、网络层以及运输层各自的问题,则可以实现进程之间基于网络的通信

        在此基础上可以制定各种应用协议并按协议标准编写相应的应用程序,通过应用进程之间的交互来实现特定的网络应用

        例如,支持万维网的 HTTP 协议、支持电子邮件的 SMTP 协议以及支持文件传送的 FTP 协议等。

        另外,在制定应用协议时还需要考虑应用进程基于网络通信时的会话管理问题和数据表示问题。我们可以将上述这些问题划归到应用层

        至此,我们将实现计算机网络所需要解决的各种主要问题分别划归到了 物理层、数据链路层、网络层、运输层以及应用层,这就构成了五层原理体系结构。

        请思考一下,如果你是一名程序员要编程解决实现计算机网络所面临的各种软件问题,那么你是愿意将这些问题全部放在一个模块中编程实现呢,还是愿意将它们划分到不同的模块中逐个模块编程实现呢,相信大家一定会选择后者,这就是软件工程中高内聚低耦合的概念。

总结

课后练习

【2013年 题33】
【答案】B
【解析】在OSI参考模型中与应用层相邻的是表示层。表示层的主要功能是格式变化、压缩恢复、加密解密。所以答案选择「数据格式转换」。其他选项中:对话管理是会话层的功能;路由选择是网络层的功能;可靠数据传输是传输层的功能。

【2019年 题33】
【答案】C
【解析】在OSI参考模型中第5层是会话层。会话层的主要功能是会话管理。所以答案选择「会话管理」。

【2021年 题33】
【答案】B
【解析】在TCP/IP模型中传输层相邻的下一层是网际层。网际层的主要功能是路由选择分组转发。所以答案选择「路由选择」。


1.6.3 计算机网络体系结构分层思想举例

        如图所示,主机属于网络 N1,Web 服务器属于网络 N2,N1 和 N2 通过路由器互连。

        用户在主机中使用浏览器访问 Web 服务器,当用户在浏览器地址栏中输入 Web 服务器的域名后主机会向 Web 服务器发送一个请求报文,Web 服务器收到请求报文后执行相应的操作,然后给主机发送响应报文,主机收到响应报文后由浏览器负责解析和渲染显示。

        需要说明的是,上述网络应用实例仅给出了一个简化的示意过程,因为本节的重点是计算机网络体系结构的分层处理方法,而不是浏览器和Web服务器的详细交互过程。

        主机和 Web 服务器之间基于网络的通信,实际上是主机中的浏览器应用进程与 Web 服务器中的 Web 服务器应用进程之间基于网络的通信。我们从五层原理体系结构的角度来看看其具体过程。

        主机中的应用层根据 HTTP 协议的规定构建一个 HTTP 请求报文用来请求 Web 服务器执行相应操作,应用层将构建好的 HTTP 请求报文向下交付给运输层。

        运输层给 HTTP 请求报文添加一个 TCP 首部,将其封装成为 TCP 报文段,TCP 首部的主要作用是区分应用进程实现可靠传输。运输层将封装好的 TCP 报文段向下交付给网络层。

        网络层给 TCP 报文段添加一个 IP 首部,将其封装成为 IP 数据报。IP 首部的主要作用是 IP 寻址路由。网络层将封装好的 IP 数据报向下交付给数据链路层。

        数据链路层给 IP 数据报添加一个首部和一个尾部,将其封装成为。帧首部和尾部的作用是 MAC 寻址帧校验。数据链路层将封装好的帧向下交付给物理层。

        物理层并不认识帧的结构,仅仅将其看作是比特流,以便将比特流转换成相应的电信号进行发送。对于以太网,物理层还会在比特流前添加前导码,目的是使接收方的时钟同步并做好接收准备

        主机将电信号发送出去,路由器收到后其物理层将电信号转换成比特流,物理层将前导码去掉后将帧向上交付给数据链路层,数据链路层将帧首部和尾部去掉后,将 IP 数据报向上交付给网络层,网络层从 IP 数据报的首部中提取出目的 IP 地址,根据目的 IP 地址查找自己的转发表,以便决定从哪个接口转发该 IP 数据报。与此同时还要对首部中的某些字段值,例如生存时间 TTL 字段的值进行相应的修改,然后将该 IP 数据报向下交付给数据链路层。

        数据链路层为 IP 数据报添加一个首部和一个尾部将其封装成为帧,然后将帧向下交付给物理层,物理层将帧看作是比特流,给其添加前导码后转变成相应的电信号发送出去。

        Web 服务器收到数据包后按网络体系结构自下而上的顺序对其进行逐层解封,解封出 HTTP 请求报文,Web 服务器的应用层收到 HTTP 请求报文后执行相应的操作,然后给主机发送包含有浏览器请求内容的 HTTP 响应报文,与浏览器发送 HTTP 请求报文的过程类似,HTTP 响应报文需要在 Web 服务器层层封装后才能发送,数据包经过路由器的转发到达主机。

        主机对收到的数据包按网络体系结构自下而上的顺序逐层解封,解封出 HTTP 响应报文。请理解并记住这个例子,因为我们今后的课程就是要围绕五层原理体系结构自下而上逐层展开。

练习题

        计算机专业考研 全国统考 计算机网络部分 2017年的题33

       题目给定的应用层欲发送的 400B(字节)数据我们称其为应用层协议数据单元,协议数据单元的英文缩写词就是题目所给的 PDU

        应用层将应用层 PDU 交付给表示层,根据题意,表示层给应用层 PDU 添加一个 20B(字节)的首部,使之封装成为表示层 PDU,并将其交付给会话层,会话层给表示层 PDU添加一个 20B(字节)的首部,使之封装成为会话层 PDU,并将其交付给运输层,运输层给会话层 PDU 添加一个 20B(字节)的首部,使之封装成为运输层 PDU,并将其交付给网络层,网络层给运输层 PDU 添加一个 20B(字节)的首部,使之封装成为网络层 PDU,并将其交付给数据链路层,数据链路层给网络层 PDU 添加一个 20B(字节)的首部,使之封装成为数据链路层 PDU,并将其交付给物理层。

        需要说明的是,数据链路层一般都是给上层交付的 PDU 添加一个首部和一个尾部,这里为了简单起见将题目给定的 20B(字节)额外开销全部看作是首部

        综上所述,应用层本来想发送的是 400 字节的数据,但是经过其下面 5 层的逐层封装,每层引入 20B(字节)的额外开销,实际需要发送的数据量为 400B(字节)​​​​​​​加上额外的 5 个20B(字节)​​​​​​​,因此应用层数据传输效率计算如下,本题的答案是选项 A

总结


1.6.4 计算机网络体系结构中的专用术语

        我们将这些专用术语中最具代表性的三个作为分类名称,它们分别是实体协议服务

        需要说明的是,这些专用术语来源于 OSI 的七层体系结构,但也适用于 TCP/IP 的四层体系结构和五层原理体系结构。

1. 实体

        首先来看实体实体是指任何可发送或接收信息的硬件或软件进程

        如图所示,这是通信双方的五层原理体系结构,我们在他们的各层中用标有字母的小方格来表示实体,有了实体的概念后就可以引出对等实体的概念了,对等实体是指通信双方相同层次中的实体

        例如,图中的实体 E 与实体 J 互为对等实体、实体 D 与实体I互为对等实体······

        请思考一下,根据实体和对等实体的概念,属于通信双方物理层和数据链路层的网卡是否互为对等实体呢?属于通信双方应用层的浏览器进程和Web服务器进程是否互为对等实体呢?

        回答是肯定的。网卡是可以发送或接收信息的硬件,它包括物理层和数据链路层,因此通信双方的网卡互为对等实体。位于收发双方应用层的浏览器进程和 Web 服务器进程是可以发送或接收信息的软件进程,它们互为对等实体。

2. 协议

        协议是控制两个对等实体在水平方向进行逻辑通信的规则的集合

        如图所示:

        物理层对等实体使用物理层协议进行逻辑通信。例如,传统以太网使用曼彻斯特编码;

        数据链路层对等实体使用数据链路层协议进行逻辑通信。例如,传统以太网使用CSMA/CD 协议;

        网络层对等实体使用网络层协议进行逻辑通信。例如,IP 协议;

        运输层对等实体使用运输层协议进行逻辑通信。例如,TCP 协议或 UDP 协议;

        应用层对等实体使用应用层协议进行逻辑通信。例如,DHCP 协议、DNS 协议、HTTP协议、SMTP 协议等。

        请注意将两个对等实体间的通信称为逻辑通信是因为这种通信其实并不存在,它只是我们假设出来的一种通信。这样做的目的是方便我们单独研究网络体系结构某一层时不用考虑其他层。例如,当我们研究运输层时,我们可以假设只有运输层对等实体在进行逻辑通信而不用顾及其他各层。

计算机网络协议有三个要素它们分别是语法语义同步

1. 语法

        语法 用来定义通信双方所交换信息的格式

        例如,下图是 IPV4 数据报的首部格式,其中的小格子称为字段或域,数字表示字段的长度,单位是位也就是比特。语法就是定义了这些小格子的长度先后顺序

        需要说明的是,我们没有必要记住每种数据包的格式,只要我们能看懂数据包的格式说明就可以了。

        当然了,如果将来会从事计算机网络相关的开发、教学以及研究等工作,像 IP 数据报、TCP 报文段以及 HTTP 报文等这些常见的数据包格式,在学习和研究过程中自然而然就会记住了。

2. 语义

        语义 用来定义通信双方所要完成的操作。 

        我们来举例说明,主机给 Web 服务器发送一个 HTTP 的 GET 请求报文,Web 部服务器收到 GET 请求报文后对其进行解析,就知道了这是一个 HTTP 的 GET 请求报文,Web 服务器就在自身内部查找主机所请求的内容,并将所找到的内容封装在 HTTP 的响应报文中发送给主机,主机收到 HTTP 响应报文后对其进行解析和渲染显示。

        这个例子就可以体现出通信双方收到数据包后应完成怎样的操作,对于本例这是 HTTP协议的语义所定义的。

3. 同步

        同步 用来定义通信双方的时序关系

        在本例中,必须由主机首先发送 HTTP 的 GET 请求报文给 Web 服务器,Web 服务器收到主机发来的 GET 请求报文后,才可能给主机发送相应的 HTTP 响应报文,这是 HTTP协议的同步所定义的。

3. 服务 

        在协议的控制下,两个对等实体在水平方向的逻辑通信使得本层能够向上一层提供服务

        如图所示:

        物理层对等实体在物理层协议的控制下进行逻辑通信进而向数据链路层提供服务;

        要实现本层协议,还需要使用下面一层所提供的服务

        数据链路层对等实体享受物理层提供的服务并在数据链路层协议的控制下进行逻辑通信进而向网络层提供服务;

        网络层对等实体享受数据链路层提供的服务并在网络层协议的控制下进行逻辑通信进而向运输层提供服务;

        运输层对等实体享受网络层提供的服务并在运输层协议的控制下进行逻辑通信进而向应用层提供服务;

        应用层对等实体享受运输层提供的服务并在应用层协议的控制下进行逻辑通信给其上层也就是用户提供服务。

        很显然,协议是“水平”的,而服务是“垂直”的。

        实体看得见下层提供的服务,但并不知道实现该服务的具体协议。换句话说,下层的协议对上层的实体是“透明”的。

        这就好比我们肯定看得见手机为我们提供的各种服务,但是我们只是享受这些服务而没有必要每个人都弄懂手机的工作原理。

        在同一系统中相邻两层的实体交换信息的逻辑接口称为服务访问点SAP),如图所示(白色圆点),服务访问点用于区分不同的服务类型。

        例如,帧的类型字段、IP 数据报的协议字段、TCP 报文段或 UDP 用户数据报的“端口号”都是服务访问点(SAP)。

        上层要使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语

        如图所示:

        在计算机网络体系结构中通信双方交互的数据包也有专门的术语。

        对等层次之间传送的数据包称为该层的协议数据单元Protocol Data Unit,PDU)。

        例如:

                物理层对等实体间逻辑通信的数据包称为比特流(bit stream)、

                数据链路层对等实体间逻辑通信的数据包称为帧(frame)、

                网络层对等实体间逻辑通信的数据包称为分组(packet),如果使用 IP 协议也称为 IP 数据报、

                运输层对等实体间逻辑通信的数据包一般根据协议而定,若使用 TCP 协议则称为TCP 报文段(segment),若使用 UDP 协议则称为 UDP 用户数据报(datagram)、

                应用层对等实体间逻辑通信的数据包一般称为应用报文(message),

        上述各层数据包可以统称为协议数据单元 PDU。我们把同一系统内,层与层之间交换的数据包称为服务数据单元Service Data Unit,SDU),如图所示。

4. 课后练习

【2010年 题33】
【答案】C
【解析】简单地说,网络体系结构 = 层次模型 + 各层协议。体系结构是抽象的,而实现是具体的,所以体系结构中并未规定实现的细节。

【2020年 题33】
【答案】C
【解析】协议由语法语义和时序(又称同步)三部分组成。语法规定了通信双方彼此“如何讲”,即规定了传输数据的格式。语义规定了通信双方彼此“讲什么”,即规定了所要完成的功能,如通信双方要发出什么控制信息、执行的动作和返回的应答。时序规定了信息交流的次序。由图可知发送方与接收方依次交换信息,体现了协议三要素中的时序要素。

5. 总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1200073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机组成原理之处理器(流水线)

引言 为什么不采用单周期实现,硬件比较简单? 主要是因为效率太低,处理器中最长的路径(一般是ld指令)决定了时钟周期 流水线概述 流水线是一种能使多条指令重叠执行的技术。 流水线更快的原因是所有的工作都在并行执行,所以单位…

Adversarial Training Methods for Deep Learning: A Systematic Review

Adversarial Training Methods for Deep Learning: A Systematic Review----《面向深度学习的对抗训练方法:系统回顾》 摘要 通过快速梯度符号法(FGSM)、投影梯度下降法(PGD)和其他攻击算法,深度神经网络暴露在对抗攻击的风险下。对抗性训练是用来防御对抗性攻击威…

【86 backtrader实现crypto交易策略】backtrader和ccxt对接实现中低频自动化交易-01

最近有点空闲,尝试把backtrader和一些实盘交易的接口对接一下,方便大家进行中低频交易,主要目标包括:股票(qmt),期货(ctpbee), crypto(ccxt),外盘交易(ib,已实现,但是版本比较旧,后期会继续更新). 这个周末尝试实现了backtrader和ccxt的对接,主要是参考了下面的开源代…

使用74HC165扩展uno的输入管脚

74HC165管脚定义: 使用3个管脚扩展接入个独立开关 const int dataPin 2; /* Q7 */ const int clockPin 3; /* CP */ const int latchPin 4; /* PL */ const int numBits 8; /* Set to 8 * number of shift registers */ void setup() { Serial.begin…

暴力递归转动态规划(十五)

题目 给定一个正数n,求n的裂开方法数, 规定:后面的数不能比前面的数小 比如4的裂开方法有: 1111、112、13、22、04 。 5种,所以返回5 暴力递归 用暴力递归方法进行尝试,整体思路是这样: 暴力递…

Java --- 直接内存

一、直接内存 1、不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 2、直接内存是在Java堆外的,直接向系统申请的内存区间。 3、来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。 4、访问直接内存的…

Ubuntu 创建并发布 Django 项目

Ubuntu 创建并发布 Django 项目 升级操作系统和软件 sudo apt updatesudo apt -y dist-upgrade 安装 python3-pip sudo apt -y install python3-pip安装 django pip install -i https://pypi.tuna.tsinghua.edu.cn/simple djangosudo apt -y install python3-django创建 dj…

MongoDB基础知识~

引入MongoDB: 在面对高并发,高效率存储和访问,高扩展性和高可用性等的需求下,我们之前所学习过的关系型数据库(MySql,sql server…)显得有点力不从心,而这些需求在我们的生活中也是随处可见的,例如在社交中…

使用visualStudio发布可执行文件

编译成功后会在程序项目的路径下创建一个debug文件夹和一个release文件夹 文件夹中的具体文件入下所示 生成32位的可执行文件 32位的可执行文件可以在64位的计算机中执行,而64位的操作系统程序只能在64位的计算机中执行安装运行库的安装包根据电脑的版本选择合适的…

手机开机入网流程 KPI接通率和掉线率

今天我们来学习手机开机入网流程是怎么样的。以及RRC连接和重建流程(和博主之前讲TCP三次握手,四次挥手原理很相似)是什么样的,还有天线的KPI指标都包括什么,是不是很期待啊~ 目录 手机开机入网流程 ATTACH/RRC连接建立过程 KPI接通率和掉…

【YOLOv5】【模型压缩与加速】【量化】FP32、FP16、INT8

量化是将模型参数的存储类型从高精度存储降到低精度存储,从而达到减小模型体积大小、加快模型推理速度的效果。 目录 FP32量化 FP16量化 INT8量化 FP32量化 这个直接使用yolov5的export导出32位存储的 engine格式模型即可 python export.py --weights runs/train/…

前端---认识HTML

文章目录 什么是HTML?HTML的读取、运行HTML的标签注释标签标题标签段落标签换行标签格式化标签图片标签a标签表格标签列表标签表单标签form标签input标签文本框单选框复选框普通按钮提交按钮文件选择框 select标签textarea标签特殊标签div标签span标签 什么是HTML&a…

No188.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

C语言基础篇4:变量与存储

1 局部变量和全局变量 在介绍局部变量和全局变量前,先,了解一些关于作用域方面的内容。作用域的作用就是决定程序中的哪些语句是可用的,换句话说,就是程序中的可见性。作用域有局部作用域和全局作用域,那么局部变量就具…

深入研究SVN代码检查的关键工具:svnchecker vs. SonarQube,选择最适合你的代码检查工具

目录 一、SVN代码检查(整合svnchecker)1、创建SVN代码库2、下载安装包3、修改SVN配置4、新建代码检查配置文件(名称自定义)5、hooks目录添加配置文件6、设置只对Java文件进行检查7、测试 二、SonarQube代码检测1、什么是SonarQube2、MySQL数据库的安装3、SonarQube服务端软件安…

Python之函数进阶-函数执行原理

Python之函数进阶-函数执行原理 函数执行流程 C语言中,函数的活动和栈有关。栈是后进先出的数据结构。栈是由底端向顶端生长,栈顶加入数据成为压栈、入栈、栈顶弹出数据称为出栈。 def add(x, y):r x yprint(r)return rdef main():a 1r add(a, 2)r…

Pytorch损失函数、反向传播和优化器、Sequential使用

Pytorch_Sequential使用、损失函数、反向传播和优化器 文章目录 nn.Sequential搭建小实战损失函数与反向传播优化器 nn.Sequential nn.Sequential是一个有序的容器,用于搭建神经网络的模块被按照被传入构造器的顺序添加到nn.Sequential()容器中。 import torch.nn …

【操作系统】1.1 操作系统的基础概念、功能和目标以及特性

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

Mac电脑配置Flutter开发环境

1.进入官网下载页: Flutter SDK releases | Flutter 可以看到有 Windows、macOS、Linux三种系统的下载包 选择macOS,然后点击下载 Stable channel(稳定版)中的最新版本,下载完成后可以移动到资源库Library中。 2.下载…

使用easyui前端框架构建一个crud应用(看完这篇就够了)

easyui是博主最喜欢的前端框架,因为它提供了多种主题样式和各种好看的ui组件。 这篇文章将会详细地介绍easyui前端框架的使用,通过创建一个crud应用来帮助大家快速掌握easyui的使用。 一、快速开始 这个章节主要介绍easyui前端框架的下载,ea…