目录
完整版链接:
第一章 概述
第二章 物理层
第三章 数据链路层
第四章 网络层
第五章 运输层
第六章 应用层
1.1 信息时代的计算机网络
随着信息技术、计算机技术和通信技术的迅猛发展和密切结合,计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施,并发展成为 21 世纪这个信息时代的核心。
以因特网(Internet)为代表的计算机网络已悄然改变了人们的生活、学习、工作甚至思维方式,并对国民经济、国家安全、社会稳定等方面产生着巨大影响。计算机网络已经像水,电,煤气这些基础设施一样,成为我们生活中不可或缺的一部分。
1.1.1 计算机网络的各类应用
毫不夸张地说,计算机网络已经融入了我们生活的方方面面,它已成为我们生活中不可或缺的一部分。
我们生活中丰富多彩的网络应用大致可以分为信息浏览和发布、通信和交流、休闲和娱乐、资源共享、电子商务、远程协作、网上办公等几个类别。如图所示:
相信大家每天都会使用上述网络应用类别中的某些具体应用。如图所示:
-
信息浏览和发布
-
浏览各类万维网网站;
-
使用谷歌、百度等搜索引擎搜索感兴趣的信息;
-
通过个人网站、博客和微博等平台记录和发布信息;
-
-
通信和交流
-
通过电子邮箱发送和接收电子邮件;
-
通过 QQ、Skype 和微信等通信工具进行即时通信;
-
-
休闲和娱乐
-
在哗哩哗哩、YouTube 等视频网站上发布自己的 Vlog、观看感兴趣的视频;
-
-
资源共享
-
通过网络云盘进行资源共享;
-
-
电子商务
-
通过各类电子商务平台进行网上购物、网上转账和网上打车;
-
-
远程协作
-
通过各类慕课平台进行在线学习;
-
-
网上办公
-
通过校园网进行网上选课、评教评学和科研项目申报;
-
通过政府部门的电子政务系统进行在线咨询、网上申报、证件申领、投诉和举报等。
-
计算机网络的用途不胜枚举,并且随着技术的发展,计算机网络已从互联传统服务器、桌面计算机到互联笔记本电脑、手机等移动便携式计算设备。并逐步扩展到互连各种家用电器,环境传感器等非传统计算设备,甚至是所有可标识的物体。
如上图所示,以互联网为基础逐渐发展起来的物联网就是要实现物物相连的互联网,物联网的发展和成熟必将给我们的生活带来一次全新的变革。
1.1.2 计算机网络带来的负面问题
计算机网络在给我们带来极大便利的同时,也带来了一些负面问题。比如黑客通过网络大肆传播计算机病毒和木马,攻击正规网站,窃取国家机密或实施诈骗犯罪。
有些把盈利当成唯一目的的非法网站,网络上流传的形形色色的谣言,沉溺于网络游戏,流连于网吧的青少年。但是瑕不掩瑜,计算机网络给社会带来的积极作用毫无疑问远多于消极作用。
1.1.3 我国互联网发展情况
我们来看看来自中国互联网络信息中心 CNNIC 的第 49 次中国互联网络发展状况统计报告中的几组数据。如下图所示:
截至 2021 年 12 月,数据显示我国网民规模为 10.32 亿,较 2020 年 12 月新增网民 4296 万,互联网普及率达 73.0%,较 2020 年 12 月提升 2.6 个百分点。
数据显示我国手机网民规模为 10.29 亿,较 2020 年 12 月新增手机网民 4298 万,网民中使用手机上网的比例为 99.7%。
数据显示我国网民的人均每周上网时长为 28.5 个小时,较 2020 年 12 月提升 2.3 个小时。
截至 2021 年,我国各类个人互联网应用用户规模呈普遍增长态势,其中在线医疗、在线办公的用户规模增长最为明显,较 2020 年 12 月分别增长 8300 万、1.23 亿,增长率分别为 38.7%、35.7%。网上外卖、网约车的用户规模分别较 2020 年 12 月增长 1.25 亿、8733 万,增长率分别为 29.9%、23.9%,在线旅行预定、互联网理财、网络直播、网络音乐等应用的用户规模增长率也均在 10%以上。
因特网之父
温顿 · 瑟夫曾说过:" 既然你无法逃避接触因特网,那么为何不去了解它并且使用它呢?"没错,既然我们无法避免使用计算机网络,那么为何不去了解它并使用它呢?
1.2 因特网概述
对于普通的计算机网络用户而言,接触最多的计算机网络就是因特网,它是当今世界上最大的计算机网络。
1.2.1 网络、互联网与因特网的区别与关系
网络
网络(Network)是由若干节点(Node)和连接这些节点的链路(Link)组成的。如下图所示:
如上图所示,笔记本电脑是一个节点(node),台式电脑是一个节点,服务器是一个节点,网络打印机是一个节点,而将它们互联起来的交换机也是一个节点,节点之间的互联还需要使用链路(link),这样就构成了一个使用有线链路的简单网络。
另外,我们日常生活中比较常用的还有使用无线链路的网络。如下图所示
为了简单起见,我们可以用一朵云来表示一个网络,而网络内部的细节不用给出。请同学们思考一下,如果要将这两个网络互联起来,需要使用什么设备呢?
答案是网络之间需要通过路由器进行互联。如图所示:
互联网
互联网(intermet)是由若干网络和连接这些网络的路由器组成的。如果我们忽略互联的各种细节,则可将互联网看作是一个覆盖范围更大的网络,因此也可称其为 " 网络的网络(Network of Networks )"。
为了简单起见,互联网也可用一朵云来表示。如下图所示:
因特网
因特网(Internet)是我们几乎每天都会使用的网络,它是当今世界上最大的互联网,其用户数以亿计,互联的网络数以百万计。因特网也常常用一朵云来表示,其内部各种路由器和异构型网络的互联细节不用给出,一般也难以给出。
网络、互联网与因特网的概念及其区别与关系
-
若干节点和链路互连形成网络
-
若干网络通过路由器互连形成互连网(互联网)
-
因特网是当今世界上最大的互联网
请大家注意!!!
-
我们有时并没有严格区分互联网和因特网这两个名词,许多人口中的互联网实际上是指因特网。
-
以小写字母 i 开头的英文单词 internet 是一个通用名词,翻译为互联网,它泛指多个计算机网络互联而成的网络,在这些网络之间的通信协议可以是任意的。
-
以大写字母 I 开头的英文单词 Internet 则是一个专用名词,翻译为因特网,它专指当前全球最大的、开放的、由众多网络和路由器互联而成的特定计算机网络,在这些网络之间必须使用 TCP/IP 协议簇作为通信规则。
-
-
网络互连并不仅仅是简单的物理连接,还需要各通信设备中安装有相应的软件。因此当我们谈到网络互连时,就隐含地表示在这些通信设备中已经安装好了相应的软件,因而各通信设备可以通过网络交换信息。
1.2.2 因特网发展的三个阶段
因特网是冷战的产物之一。1962 年,美国国防部为了确保美国军事力量在遭受苏联第一波核打击后,仍具有一定的生存和反击能力,决定设计一种基于分组交换技术的通信指挥系统。1969 年,美国国防部创建了第一个分组交换网 ARPANET,该网络就是因特网的雏形。
因特网的基础结构大体上经历了三个阶段的演进,如图所示。
如图所示,因特网的基础结构大体上经历了以上三个阶段的演进。
-
第一阶段:从单个分组交换网向互联网发展
-
1969 年创立的 ARPANET 最初只是一个单独的网络。
-
到了 20 世纪 70 年代中期,人们意识到不可能只用一个单独的网络来解决所有的通信问题,于是开始研究网络互连问题。
-
1983 年 TCP/IP 协议族成为 ARPANET 上的标准协议,任何使用 TCP/IP 协议族的计算机都能通过网络互连而通信,因此 1983 年成为因特网的诞生时间。
-
-
第二阶段:逐步建成三级结构的因特网
-
从 1985 年开始,美国国家科学基金会围绕 6 个大型计算机中心建设国家科学基金网 NSFNET。它由主干网、地区网和校园网三级结构组成,覆盖美国主要的大学和研究所,成为因特网的主要组成部分。
-
1990 年 ARPANET 的实验任务完成,正式宣布关闭。
-
从 1991 年开始,全球许多公司纷纷接入因特网,美国政府决定将因特网的主干网转交给私人公司经营,对接入因特网的单位进行收费。
-
-
第三阶段:逐步形成多层次 ISP 结构的因特网
-
从 1993 年开始,NSFNET 逐步被多个商用的因特网主干网替代,政府机构也不再负责因特网的任何运营,转而由各种因特网服务提供者(Intermet Service Provider,ISP)来运营。
-
1994 年,最早由欧洲粒子物理实验室的蒂姆 · 伯纳斯李在 1989 年提出的万维网技术,也就是 3W 技术在因特网上被广泛应用,这使得众多普通的计算机用户可以便捷地使用网络,极大的推动了因特网迅猛发展。
-
1995 年,NSFNET 停止运作,因特网彻底商业化。
-
1.2.3 因特网服务提供者
因特网服务提供者(Internet Service Provider,简称 ISP),是指提供互联网接入服务的公司或组织。ISP 的主要职责是让用户可以通过其提供的服务连接到互联网,从而访问网络上的各种资源,如网站、电子邮件、社交媒体、在线视频等。
大家想想看,普通用户是如何接入到因特网的呢?实际上是通过 ISP 接入因特网的。如图所示:
-
ISP 可以从因特网管理机构申请到成块的 IP 地址,同时拥有通信线路以及路由器等联网设备。
-
任何单位或个人都可以通过 ISP 接入到因特网,只需要按 ISP 的规定缴纳费用即可。
-
我国的 ISP 主要有中国电信、中国移动、中国联通这三大电信运营商,它们向广大用户提供因特网接入服务、信息服务和增值服务。
-
来自中国互联网络信息中心 2019 年 2 月发布的第 43 次中国互联网络发展状况统计报告显示,这三大电信运营商的国际出口带宽分别是,中国电信 4.5T 比特每秒、中国联通 2.2T 比特每秒、中国移动 2T 比特每秒。
-
来自中国互联网络信息中心 2022 年 2 月发布的第 49 次中国互联网络发展状况统计报告显示:
-
截至 2021 年 12 月,这三大电信运营商的固定互联网宽带接入用户总数达 5.36 亿户,全年净增 5224 万户。
-
其中,100 Mbps 及以上接入速率的固定互联网宽带接入用户达 4.98 亿户,占总用户数的 93%,较上年末提升 3.1 个百分点。
-
1000 Mbps 及以上接入速率的固定互联网宽带接入用户达 3456 万户,比上年末净增 2816 万户。
-
光纤接入用户规模达 5.06 亿户,占固定互联网宽带接入用户总数的 94.33%。
-
大电信运营商发展中国物联网终端用户 13.99 亿户,全年净增 2.4 亿户,其中应用于智慧公共事业、智能制造、智能交通的终端用户占比分别达 22%、18.1%、15.6%。
-
1.2.4 基于 ISP 的多层次结构的互连网络
目前,因特网已发展成为基于 ISP 的多层次结构的互联网络,但没有人能够准确说出因特网究竟有多大,且其整个结构也很难进行细致的描述。如图所示,这是一种具有三层 ISP 结构的因特网概念示意图。
-
第一层 ISP 是国际级的,其覆盖面最大,并且拥有高速链路和交换设备。第一层 ISP 之间相互连接,构成因特网的主干网。
-
第二层 ISP 是区域级或国家级的,与少数第一层 ISP 相连接,作为第一层 ISP 的用户,一些大公司其实也是第一层 ISP 的用户。
-
第三层 ISP 是本地级的,与第二层 ISP 相连接,作为第二层 ISP 的用户。普通的校园网、企业网、住宅用户以及移动用户等都是第三层 ISP 的用户。
请大家注意!!!
-
已接入因特网的用户也可以成为一个 ISP,他只需要购买一些相关的设备,例如调制解调器、路由器等,让其他用户能够通过它来接入因特网。
-
因此因特网的结构实际上是基于 ISP 的多层次结构,各 ISP 可以在因特网拓扑上添加新的层次和分支。
1.2.5 因特网的标准化工作和管理机构
在因特网的发展过程中,标准化工作起到了非常重要的作用。如果没有国际标准,将会导致多种技术体制并存且互不兼容,这会给用户带来极大的不便。试想一下,如果手机的充电接口五花八门,这将是多么糟糕的事情。同理,网络互连设备(交换机或路由器等)的接口如果没有统一的标准,也就很难进行网络互连。
因特网的标准化工作是面向公众的,其任何一个建议标准在成为因特网标准之前,都以 RFC 技术文档的形式在因特网上发表。
RFC (Request For Comments) 的意思是 " 请求评论 "。任何人都可以从因特网上免费下载 RFC 文档(http://www.ietf.org/rfc.html),并随时对某个 RFC 文档发表意见和建议。
制定因特网的标准需要经过因特网草案(Internet Draft)、建议标准(Proposed Standard)、草案标准(Draft Standard)、因特网标准(Internet Standard)这四个阶段。如下图所示:
需要说明的是!!!
-
因特网草案并不是 RFC 文档!而是从建议标准才开始成为 RFC 文档。
-
由于 " 草案标准 " 容易与 " 因特网草案 " 混淆,所以从 2011 年 10 月起取消了 " 草案标准 " 这个阶段。
这样,现在制定因特网标准的过程简化为因特网草案、建议标准、因特尔标准这三个阶段。
因特网管理机构的组织架构如图所示:
-
因特网由国际组织因特网协会(Internet Society,ISOC)全面管理
-
ISOC 下设因特网体系结构委员会,负责管理因特网相关协议的开发。IAB 下设因特网工程部和因特网研究部,其中 IETF 负责研究中短期的工程问题、相关协议的开发和标准化:IRTF 负责研究理论方面的需要长期考虑的问题。
-
ISOC 下设有因特网体系结构委员会(Intermet Architecture Board,IAB),它负责管理因特网相关协议的开发。
-
IAB 下设有因特网工程部 (InternetEngineeringTask Force,IETF)和因特网研究部(Intermet ResearchTaskForce,IRTF)
-
-
-
IETF 负责研究中短期的工程问题、相关协议的开发和标准化
-
IRTF 负责研究理论方面需要长期考虑的问题
1.2.6 因特网的组成
因特网是当今全球覆盖范围最广的互联网,其网络拓扑非常复杂,但我们可以从功能上简单的将其划分为两部分,即核心部分、边缘部分。如图所示:
边缘部分
-
由连接在因特网上的台式电脑、服务器、笔记本电脑、平板电脑、智能手机、智能手表、网络摄像头以及网络打印机等用户设备构成。这些用户设备常称为主机,由用户直接使用,为用户直接提供各式各样的网络应用。
-
处在互联网边缘的部分就是连接在互联网上的所有的主机。这些主机又称为端系统 (End System)。端系统在功能上可能有很大的差别:
-
小的端系统可以是一台普通个人电脑,具有上网功能的智能手机,甚至是一个很小的网络摄像头。
-
大的端系统则可以是一台非常昂贵的大型计算机。
-
端系统的拥有者可以是个人,也可以是单位(如学校、企业、政府机关等),当然也可以是某个 ISP。
-
核心部分
-
由大量异构型网络和连接这些网络的路由器构成。因特网的核心部分为边缘部分提供连通性和数据交换等服务。
-
在网络的核心部分起特殊作用的是路由器,它是一种专用计算机,但我们不称它为主机。
-
路由器是实现分组交换的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
1.3 三种交换方式
1.3.1 电路交换(Circuit Switching)
如下图,传统两个电话进行通信的方式是通过两两相连。
当电话数量很多时,导致需要的电话线也很多,就很不方便。
所以要使得每一部电话能够很方便地和另一部电话进行通信,就应该使用一个中间设备将这些电话连接起来,这个中间设备就是电话交换机。
接着看电路交换,如图所示:
在早期专为电话通信服务的电信网络中,需要使用很多相互连接起来的电话交换机来完成全网的交换任务。电话交换机接通电话线的方式就是电路交换。
使用电路交换进行通信要经历建立连接、通话、释放连接三个步骤。如下图所示:
-
建立连接也就是分配通信资源。
-
例如,在使用电路交换打电话之前,主叫方必须先进行拨号,以请求建立连接。
-
当被叫方听到电话交换机送来的振铃音并摘机后,从主叫方到被叫方就建立了一条专用的物理通路,简称为连接。
-
这条连接为通话双方提供了通信资源,主叫方和被叫方现在可以基于已建立的连接进行通话了。
-
在整个通话期间,通话双方始终占用着连接通信资源,不会被其他用户占用。
-
通话完毕挂机后,从主叫方到被叫方的这条专用物理通路被交换机释放,将双方所占用的通信资源归还给电网。
-
大家思考一下,计算机之间的数据传送适合采用电路交换的方式吗?
这需要从计算机之间数据传送的特点来考虑。想想看,通常我们的计算机都运行着像 QQ、微信这样的即时通讯工具,尽管我们并不是一直连续通过该工具发送消息,但为了随时发送和接收消息,我们也一直会让其处于上线状态。
对于这种情况而言,如果采用电路交换的方式,则宝贵的通信线路资源大部分并未被利用,而是被白白浪费了。
也就是说,计算机之间的数据传送是突发式的。当使用电路交换来传送计算机数据时,其线路的传输效率一般都会很低。线路上真正用来传送数据的时间往往不到 10% 甚至 1%。
因此计算机之间的通信通常采用分组交换,而不是电路交换。
1.3.2 分组交换(Packet Switching)
如图所示,这是一个简化的采用分组交换技术的小型互联网。
为了简单起见,我们并未画出其中的各个物理网络,而是把它们等效为路由器之间的一段链路。该小型互联网可被看作是一个分组交换网,而路由器 R1 --> R5 就是分组交换网中的交换节点,主机 H1 --> H5 通过分组交换网进行通信。
假设主机 H1 的用户要给主机 H3 的用户发送一条消息,通常我们把表示消息的整块数据称为一个报文。较长的报文一般不适合直接传输,如果报文太长,则对交换节点的缓存容量有很大的需求,在错误处理方面也会比较低效。
因此需要将较长的报文划分成若干个较小的等长数据段,在每个数据段前面添加一些由必要的控制信息组成的首部,这样就构造出了一个个分组。如下图所示:
请大家思考一下,添加首部的作用是什么?这不是额外加大了待传输的数据量吗?
实际上首部起着非常关键的作用,因为首部中肯定包含了分组的目的地址,否则分组传输路径中的各交换节点就不知道如何转发分组了。
在分组交换网络中,各个主机之间的数据是如何传输的呢?
-
源主机将分组发送到分组交换网中
-
分组交换网中的交换节点(R1 --> R5)收到一个分组后先将其缓存下来,然后从其首部中提取出目的地址
-
再按照目的地址查找自己的转发表,找到相应的转发接口后将分组转发出去,把分组交给下一个交换节点
-
经过多个交换节点的存储转发后,分组最终被转发到目的主机。
在本例中:
-
主机 H1 将所构造出的各分组依次发送出去,各分组经过传输路径中的各交换节点的存储转发,最终到达主机 H3。
-
主机 H3 收到这些分组后,去掉它们各自的首部,将各数据段组合还原出原始报文。
需要说明的是,为了初学者容易理解,上面只演示出了分组传输过程中的最简单情况。那就是各分组从源站到达目的站可以经过不同的路径,而分组失序、丢失误码等问题没有演示。这些内容将在后面的章节中详细介绍。
下面我们进一步说明上述的分组交换过程:
-
主机 H1 将分组逐个发送给与其直接相连的路由器 R1,此时 H1 --> R1 的链路被占用,而分组交换网中的其他链路并未被当前通信的双方占用。如图所示:
-
路由器 R1 对收到的分组进行存储转发。假设 R1 根据分组首部中的目的地址查找自己的转发表的结果是下一跳为路由器 R2,则 R1 转发分组给 R2。当分组正在 R1 与 R2 之间的链路上传送时,仅占用 R1 与 R2 这条链路,而不会占用分组交换网中的其他资源。如图所示:
-
路由器 R2 对收到的分组进行存储转发,假设根据查表结果应转发给路由器 R3。此时路由器 R3 对收到的分组进行存储转发,最后将它们转发给主机 H3。如图所示:
如下图所示,在分组交换过程中:
-
发送方所要完成的任务是构造分组和发送分组交换。
-
节点所要完成的任务是缓存分组和转发分组,简称为存储转发。
-
接收方所要完成的任务是接收分组并还原成文。
需要说明的是:
-
在本节中只展示了 H1 和 H3 这一对主机之间基于分组交换网的通信过程。但是在实际的因特网中,往往有大量的主机在同时通信。
-
另外,在一台主机中,也可能有多个和网络通信相关的应用进程,它们同时与其他主机中的不同应用进程进行通信。
分组交换的优缺点:
1.3.3 报文交换(Message Switching)
再来看报文交换:
-
报文交换是分组交换的前身。
-
在报文交换中,报文被整个地发送,而不是拆分成若干个分组进行发送。
-
交换节点将报文整体接收完成后,才能查找转发表,将整个报文转发到下一个节点。
-
因此,报文交换比分组交换带来的转发时延要长很多。
-
由于报文交换对报文的大小没有限制,所以需要交换节点具有的缓存空间也大很多。
1.3.4 三种交换方式的对比
接下来我们对电路交换、报文交换、分组交换这三种交换方式进行对比。如下图所示,假设源主机和目的主机之间有两个交换节点,纵坐标为时间。
对于电路交换:
-
通信之前首先要建立连接
-
成功建立连接之后,就可以使用已建立的连接进行数据传送
-
数据传送结束后需要释放连接,将双方所占用的通信资源归还给电信网
-
如图所示,一旦建立连接,中间的各个交换节点就是直通形式的数据,比特流可以直达终点。
对于报文交换:
-
无需首先建立连接,可以随时发送报文
-
通信结束后也无需释放连接,数据传送单元为整个报文
-
传送路径中的交换节点只有在完整接收到整个报文后,才能对其进行查表转发,将整个报文发送到下一个节点
-
整个报文需要在各交换节点上进行存储转发。由于不限制报文的大小,因此需要各交换节点都具有较大的缓存空间。
对于分组交换:
-
可以随时发送分组,而不需要事先建立连接
-
构成原始报文的一个个分组,依次在各交换节点上存储转发
-
各交换节点在转发分组的同时,还缓存接收到的分组
-
构成原始报文的一个个分组,在各交换节点上的存储转发相比报文交换减少了转发时延,还可以避免过长的报文长时间占用链路,同时也利于进行差错控制。
1.4 计算机网络的定义和分类
1.4.1 计算机网络的定义
计算机网络并没有一个精确和统一的定义。在计算机网络发展的不同阶段,人们对计算机网络给出了不同的定义,这些定义反映了当时计算机网络技术发展的水平。
计算机网络早期的一个最简单的定义是:一些互连的、自治的计算机的集合。
现在来分别解释一下这三个关键词,如上图右边所示,这是一个小型互联网。
-
互连是指计算机之间可以通过有线链路或无线链路的方式进行数据通信。
-
自治是指独立运行的计算机,它们有自己的硬件和软件,可以独立运行。
-
计算机的集合是指至少需要两台以上的计算机。
然而,在当今这个计算机网络技术飞速发展的信息时代,上述有关计算机网络的最简单定义已经不能很好地反映出计算机网络技术的发展水平。
有关计算机网络的一个较好的定义是:计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。这个较好的定义包含以下两个含义:
-
计算机网络所连接的硬件,并不限于一般的计算机,而是包括了智能手机、具有网络功能的传感器以及智能家电等智能硬件。定义中的可编程的硬件表明这种硬件一定包含有中央处理单元 CPU。
-
计算机网络并非只用来传送数据,而是能够基于数据传送,进而实现各种各样的应用,包括今后可能出现的各种应用。
1.4.2 计算机网络的分类
计算机网络有很多种不同的类别,从不同的角度对计算机网络进行分类,大致可以分为五种:
-
交换方式
-
使用者
-
传输介质
-
覆盖范围
-
拓扑结构
如果按交换方式进行分类,可分为电路交换网络、报文交换网络和分组交换网络。如图所示:
如果按使用者进行分类可分为公用网和专用网,如下图所示:
-
公用网通常是由电信公司出资建造的大型网络,公众只要按照电信公司的规定缴纳费用就可以使用这种网络。
-
专用网通常是由某个部门为满足本单位特殊业务的需要而建造的网络,例如军队、铁路、电力、银行等部门专用网,这种网络不向本单位以外的人提供服务。
如果按传输介质进行分类可分为有线网络和无线网络,如图所示:
在上图这个小型互联网中,包含了有线网络和无线网络:
-
有线网络包括双绞线网络、光纤网络等
-
无线局域网所使用的 WiFi 技术目前应用比较普遍
如果按覆盖范围进行分类可分为广域网 、城域网、局域网和个域网这四个。如下图所示:
-
广域网的覆盖范围通常为几十到几千千米,可以覆盖一个国家、地区,甚至横跨几个洲。广域网是因特网的核心部分,它为因特网核心路由器提供远距离高速连接,互连分布在不同国家和地区的城域网和局域网。
-
城域网的覆盖范围一般为 5 到 50 千米,可以跨越几个街区甚至整个城市。城域网通常作为城市的骨干网,互连大量机构、企业以及校园局域网。
-
局域网的覆盖范围一般为 1 千米左右。例如一个学生宿舍、一栋楼或一个校园,局域网通常由微型计算机或工作站,通过速率为 10Mb/s 以上的高速电路相连。在过去,一个企业或学校往往只拥有一个局域网,而现在局域网已被广泛的应用,一个企业或学校可能就会有多个互连的局域网,这样的网络常称为校园网或企业网。
-
个域网是个人区域网的简称,其覆盖范围一般为 10 米。各域网主要用于在个人工作的地方,把属于个人使用的笔记本电脑、键盘、鼠标、耳机以及打印机等电子设备,用 WiFi 或蓝牙等无线技术连接起来的网络,因此也常称为无线个域网(WPAN)。
希望大家能记住这几个比较常见的英文缩写词,尤其是 WAN 和 LAN。大家也可以看看自己家中路由器背面的各个接口,很可能标记有多个 LAN 和一个 WAN,而不是标记为中文的局域网接口和广域网接口。
如果按拓扑结构进行分类可分为总线型、星形、环形、网状型等。
-
总线型
-
这是一个总线型网络,使用单根传输线把计算机连接起来,其优点是建网容易,增减节点方便,节省线路。缺点是重负载时通信效率不高,总线任意一处出现故障则全网瘫痪。
-
星型
-
这是一个星型网络,每个计算机都以单独的线路与中央设备相连。中央设备早期是计算机,后来是集线器,现在一般是交换机或路由器。这种网络拓扑的优点是便于网络的集中控制和管理,缺点是成本高,中央设备对故障敏感。
-
-
环型
-
这是一个环型网络,所有计算机的网络接口都连接成一个环。最典型的例子是令牌环局域网,环可以是单环,也可以是双环,环中信号是单向传输的。
-
-
网状型
-
这是一个网状型网络,一般情况下,每个节点至少有两条路径与其他节点相连,多用在广域网中。
-
其优点是可靠性高,缺点是控制复杂线路成本高。
-
需要说明的是:以上四种基本的网络拓扑还可以互连为更复杂的网络。
1.5 计算机网络的性能指标
1.5.1 速率
首先介绍速率,为了能够更好地理解速率,我们需要先了解比特。
了解完比特的概念后,就可以引出速率这个性能指标了,下面给出了速率的常用单位及换算关系。
下面来对比一下数据量单位和速率单位中的 K、M、G、T 的取值。如图所示:
注意:在实际应用中,要没有严格区分上述两种类型的单位。
-
数据量单位中的 K、M、G、T 的数值分别为 2 的 10 次方、2 的 20 次方、2 的 30 次方、2 的 40 次方;
-
速率单位中的 k、M、G、T 的数值分别为 10 的 3 次方、10 的 6 次方、10 的 9 次方、10 的 12 次方。
例如,某块固态硬盘的厂家标称容量为 250 GB,而操作系统给出的容量却为 232GB。产生容量差别的原因在于:
-
厂家在标称容量时,GB 中的 G 并没有严格采用数据量单位中的数值 2 的 30 次方,而是采用了数值 10 的 9 次方。
-
但操作系统在计算容量时,GB 中的 G 严格采用了数据量单位中的数值 2 的 30 次方。
-
在日常生活中,人们习惯于用更简洁但不严格的说法来描述计算机网络的速率,例如网速为 100M,而省略了单位中的 b/s。
下面来做一道练习巩固一下刚学的有关速率与比特的知识。如图所示:
相信大家都会做这道题,但是可能会在一些细节上出现问题,现在来一起分析一下。
-
用数据块的大小 100 MB 除以网卡的发送速率 100 Mbps 就是网卡发送完该块数据所花费的时间。
-
分子和分母上的 100 可以约掉,而分子和分母上的 M 是否可以约掉呢?严格来说是不能约掉的。
-
因为分子上的 M 是数据量单位,其值为 2 的 20 次方。而分母上的 M 是速率单位,其值为 10 的 6 次方。
-
还需要将分子上的字节 B 转换为 8 个比特,这样分子和分母上的比特 b 就可以约掉。
-
最后只剩下秒单位,得出最终结果。
需要说明的是,为了简单起见,大家平时可以进行估算,这时分子和分母上的 M 可以直接约掉,可以看出得到的结果与精确计算差别不是很大。
1.5.2 带宽
带宽(Bandwidth)有以下两种不同的含义:
-
带宽在模拟信号系统的意义:
-
是指某个信号所包含的各种不同频率成分所占据的频率范围,或称频带宽度。其基本单位是 Hz,常用单位有 kHz、MHz、GHz。例如,在传统的通信线路上传送的电话信号,其标准带宽为 3.1 kHz,范围从 300 Hz 到 3.4 kHz,这是话音的主要成分的频率范围。
-
-
带宽在计算机网络中的意义:
-
是指用来表示网络的通信线路所能传送数据的能力,即在单位时间内从网络中的某一点到另一点所能通过的最高数据率。其单位与我们刚刚介绍的速率单位是相同的,基本单位是 b/s,常用单位有 kb/s、Mb/s、Gb/s、Tb/s。
-
根据香农公式可知,带宽的上述两种表述有着密切的关系:即线路的 " 频率带宽 " 越宽,其所传输数据的 " 最高数据率 " 也越高。
请大家注意在实际的应用中的速率匹配问题!!!也就是说,数据传送速率应从主机接口速率、线路带宽以及交换机或路由器的接口速率这三者中取最小者。
下面来举例说明,如图所示,这是家庭局域网的一部分,主机的接口速率、线路带宽、交换机的接口速率,它们共同决定着主机的发送速率。
-
若主机的接口速率为 1Gb/s,线路带宽为 1Gb/s,交换机的接口速率为 1Gb/s,则主机的发送速率理论上最大可以达到 1Gb/s。
-
若主机的接口速率为 100 Mb/s,线路带宽为 1Gb/s,交换机的接口速率为 1Gb/s,则主机的发送速率理论上最大只能达到 100 Mb/s。
-
若主机的接口速率为 1Gb/s,线路带宽为 100 Mb/s,交换机的接口速率为 1Gb/s,则主机的发送速率理论上最大也只能达到 100 Mb/s。
-
若主机的接口速率为 1Gb/s,线路带宽为 1Gb/s,交换机的接口速率为 100 Mb/s,则主机的发送速率理论上最大也只能达到 100 Mb/s。
可能大家也想到了,这其实就是木桶效应。从本例中可以看出,在构建网络时应该做到各设备以及传输介质的速率匹配,这样才能完全发挥出本应具有的传输性能。如图所示:
1.5.3 吞吐量
吞吐量(Throughput)是指在单位时间内通过某个网络或接口的实际数据量。吞吐量常被用于对实际网络的测量,以便获知到底有多少数据量通过了网络,很显然吞吐量受到网络带宽的限制。
下面来举例说明吞吐量的概念,如图所示:
假设某用户接入以太网的带宽为 100 Mb/s,该用户同时进行观看网络视频、浏览网页以及给文件服务器上传文件这三个网络应用。播放网络视频的下载速率为 20 Mb/s,访问网页的下载速率为 600 kb/s,向文件服务器上传文件的上传速率为 1 Mb/s,则网络吞吐量就是下载速率和上传速率的总和。
对于带宽 1 Gb/s 的以太网,代表其额定速率是 1 Gb/s,这个数值也是该以太网的吞吐量的绝对上限值。因此,对于带宽 1 Gb/s 的以太网,可能实际吞吐量只有 700 Mb/s,甚至更低。
注意:吞吐量还可以用每秒传送的字节数或帧数表示。
1.5.4 时延
时延(Delay 或 Latency)是指数据(由一个或多个分组、甚至是一个比特构成)从网络的一端传送到另一端所耗费的时间,也称为延迟或迟延。如下图所示:
请大家思考一下,在该网络中主机 H1 给主机 H3 发送一个分组,那么该分组在整个传输过程中所耗费的时间由哪几部分构成呢?
下面来分析一下,为了简单起见,我们假设源主机和物理主机之间只有一个路由器和两段电路。我们来看看分组从源主机传送给目的主机的过程中都会在哪些地方产生时延,如图所示:
发送时延
发送时延(传输时延)是指将数据(分组)发往传输线路所需要的时间。
-
也是指主机或路由器,从网卡或路由器队列递交发送数据给网络链路,并完成发送数据帧所需要的时间。
-
发送时延(传输时延) = 数据帧长度(分组长度) / 发送的速率
注意:它是发生在机器内部的!!!它与下面要说的传播时延最大的不同就是它与传输媒介的距离毫无关系!!
传播时延
传播时延是指分组的电信号在链路上传播一定的距离所花费的时间。
-
传播时延 = 信道长度(传输媒介长度) / 信号传播速率
-
这也意味着分组的电信号传送的距离越远,它的时延就越大!!!
排队时延
排队时延是指分组在路由器的输入队列和输出队列中排队缓存所耗费的时间。
-
当分组进入路由器后,会先在路由器的输入队列中排队缓存并等待处理。
-
在路由器确定了分组的转发接口后,才会让分组在输出队列中排队缓存并等待转发。
注意:
-
一个特定分组的排队时延取决于先期到达的,以及正在排队等待向链路传输分组的数量。如果该队列是空的,并且当前没有其他分组在传输,则该分组的排队时延为 0。
-
另一方面,如果流量很大,并且其他的许多分组也在等待传输,则该排队时延将会很大。
总结:
-
实际的排队时延通常在毫秒到微秒级。
-
在分组从源主机传送到目的主机的过程中,往往要经过多个路由器的转发。分组在每个路由器上产生的排队时间的长短,往往取决于当时网络的通信量和路由器的自身性能。
-
由于网络的通信量随时间变化很大,各路由器的性能也可能并不完全相同,因此排队时延一般无法用一个简单的公式进行计算。
-
另外,当网络通信量很大时,可能会造成路由器的队列溢出,使得分组丢失,这相当于排队时延无穷大。
处理时延
处理时延是指主机或路由器在收到分组后要花费一定的时间进行处理。比如分析首部,提取数据,差错检验,路由选择等。
路由器从自己的输入队列中取出 " 排队缓存并等待处理的分组 " 后会进行一系列处理工作。例如:
-
检查分组的首部是否误码
-
提取分组首部中的目的地址
-
为分组查找相应的转发接口以及修改分组首部的部分内容,比如生存时间等。
注意:
-
处理时延与排队时延类似,一般无法用一个简单的公式进行计算。
-
高速路由器的处理时延通常是微秒或更低的数量级。
发送和传播的区别
对于本例而言,分组经过路由器的转发传送到达目的主机,这又会耗费一个路由器的发送时延,以及代表该分组的电信号在另一段链路上传播所耗费的传播时延。如下图所示:
大家可能会产生这样的疑问,既然源主机或者路由器有发送时延,难道目的主机或路由器就没有接收时延吗?
解答:
我们可以将数据包的传输比作把一列火车从起点站发到终点站的过程。
-
我们知道传输时延(发送时延)指的是数据包的第一个比特发送出来,到最后一个比特发送出来的时间。
-
假设这列火车有 10 节车厢,那么传输时延就是从第 1 节车厢开始离开站台,到第 10 节车厢完全离开站台所花的时间。(注意这里的 " 站台 " 两个字)
-
-
可以想像,在这段时间内数据包已经发出来的部分其实已经相当于在链路上传播了,而传播时延是指将最后一个比特送上链路后才开始算的。
-
这部分是指,在火车的车厢还在陆续离开站台的同时,已经离开站台的车厢实际上已经开始在轨道上行驶了。
-
也就是说,在火车的第 5 节车厢刚开始离开站台时,第 1 到第 4 节的车厢已经在轨道上行驶了一段距离。
-
传播时延的开始:相当于传播时延的计算是从最后一节车厢完全离开站台后才开始的。
-
-
因此如果算上整体链路的长度,传播时延结束的时候,应该是数据包的最后一个比特走完全程链路的时候。
-
可以将这部分比作火车的最后一节车厢离开起点站台后,到达火车终点站的时间。
-
传播时延:是从火车的最后一节车厢完全离开站台开始,到这节车厢到达终点站所需要的时间。
-
想象第 10 节车厢已经离开站台并开始在轨道上行驶,传播时延是指第 10 节车厢从离开站台后到达终点站的时间。
-
整体总结:
-
传输时延:火车从起点站发车,第一节车厢离开站台到最后一节车厢离开站台所需的时间。
-
传播时延:最后一节车厢离开站台后,行驶到终点站所需的时间。
-
整个过程:当最后一节车厢到达终点站时,整个火车就到达了终点站,传输时延和传播时延的总和就是整个火车从起点站到终点站的时间。
传输时延和传播时延的区别:
-
传输时延是指把数据(火车车厢)发出去的过程
-
传播时延是指数据在链路上传播的过程
-
两者合起来决定了整个数据包(火车)从起点到终点所需的总时间。
综上所述,时延是由发送时延、传播时延、排队时延和处理时延构成的。
-
在计算发送时延时,对于发送速率,应注意我们之前介绍过的速率匹配问题。
-
在计算传播时延时,首先应该确定采用什么传输媒体,进而确定电磁波在该传输媒体中的传播速率。
-
希望大家能够将电磁波在上述三种介质中的传播速率作为常识记住!!!
-
这里需要纠正一下很多同学可能会有的错误认知!!!
-
我们都知道使用光纤作为传输介质给我们带来的上网感受那就是快,但是这并不是因为光在光纤中传播的速率。
-
实际上,光在光纤中的传播速率还要略低于电磁波在铜线中的传播速率,因为它们都是亚光速的。而电磁波在自由空间的传播速率就是光速,即 3 X 10 的 8 次方米每秒。
-
光纤网络速度快的根本原因在于我们之前刚刚介绍过的性能指标带宽。光纤的带宽很大,也就是所能承载的最高数据传送速率很大,更简单的说,单位时间内可传送更多比特。
-
-
时延计算
接下来给同学们介绍一种在分析时延有关问题时经常用到的图解方法。
假设主机 A 与主机 B 通过一个路由器和两段链路互联,横坐标为时间。如下图所示:
-
主机 A 给主机 B 发送一个分组,这段时间是主机 A 发送该分组所耗费的发送时延。
-
这段时间是该分组最后一个比特的信号,从主机 A 传播到路由器所耗费的传播时延。
-
这段时间是该分组在路由器中所耗费的排队时延和处理时延。
-
路由器将该分组转发给主机 B 这段时间是路由器转发该分组所耗费的发送时延。
-
这段时间是该分组最后一个比特的信号从路由器传播到主机 B 所耗费的传播时延。
我们再来看主机 A 跟主机 B 连续发送两个分组的情况,请同学们注意观察,下图是所耗费的各种时延。为了简单起见,我们并未画出在路由器上所耗费的排队时延和处理时延。
不知同学们是否觉得这幅图似曾相识?我们之前在对比电路交换、报文交换和分组交换时曾使用过类似的图,只不过那幅图采用纵坐标为时间。很明显,路由器在发送某个分组的同时,还在接收下一个分组。
再来看复杂一点的情况,主机 A 和主机 B 通过两个路由器互联,共三段电路,主机 A 跟主机 B 连续发送四个分组,则从主机 A 发送第一个分组开始到主机 B 接收完第四个分组为止。如下图:
在不考虑排队时延和处理时延的情况下:
总时延 = 4 个分组的发送时延 + 3 段链路的传播时延 + 2 个路由器转发单个分组所耗费的发送时延
希望同学们可以通过本例自行推导出在不考虑排队时延和处理时延的情况下:
-
假设各分组等长,各链路等长,主机和路由器的发送速率相等。
-
原主机通过 N 个路由器的转发给目的主机发送 M 个分组的总时延计算公式。
揭晓答案:
总时延 = M 个分组的发送时延 + (N + 1) 段链路的传播时延 + N 个路由器转发单个分组所耗费的发送时延
时延练习
习题一
接下来请同学们挑战一道考研题,这是 2010 年计算机专业考研全国统考计算机网络部分的第二道选择题。本题是对第 3 次课介绍分组交换以及本节课介绍的时延这个计算机网络性能指标的综合考察。
分析题目:
-
主机 H1 要将一个文件构造成若干个分组,再通过分组交换网传输给主机 H2。
-
网络中各链路的数据传输速率相同,若不考虑分组拆装时间和信号的传播时延计算所需的最小时间,那么我们应该在 H1 到 H2 的路径中选择包含路由器数量最少的路径。
如上图所示,也就是分组从 H1 发出,经过两个路由器的转发后到达 H2。为了更清楚的看出分组从 H1 发送开始到 H2 接收完为止的各传输阶段所耗费的时间,我们可以画出如下所示的示意图。上图右边是给出本题之前刚刚展示过的那幅图,这里就不再赘述了,参照该图我们可以轻松解答本题。
最后请同学们思考这样一个问题,在不考虑排队时延和处理时延的情况下,总时延中是发送时延占主导还是传播时延占主导?
习题二
请同学们好自己的结论,先完成以下两个练习,根据这两个练习的计算结果,对比看看自己之前得出的结论是否正确。
这两个练习的解题过程如下所示,不知道同学们之前自己得出的结论是否正确呢?
实际上,在不考虑排队时延和处理时延的情况下,总时延中是发送时延占主导还是传播时延占主导。
应该具体问题具体分析,而不能想当然的认为发送时延占主导,传播时延占主导。
1.5.5 时延带宽积
时延带宽机是传播时延和带宽的乘积。时延带宽积的计算公式如下所示:
时延带宽积 = 传播时延(s) × 带宽(b/s)
-
可以将链路看作是一个圆柱形管道,管道的长度是链路的传播时延,即以时间作为单位来表示链路长度。
-
管道的横截面积是链路的带宽,因此时间带宽就相当于这个管道的容积,表示这样的链路可以容纳的比特数量。
下面我们举例说明时延带宽积的意义。
本例表明:
-
若发送端连续发送数据,则在发送的第一个比特即将到达终点时,发送端已经发送了时延带宽积个比特(对于本例是 5000b),而这些比特都正在链路上向前传播。
-
链路的时延带宽积也称为以比特为单位的链路长度,这对我们以后理解以太网的最短帧长是非常有帮助的。
1.5.6 往返时间
往返时间(Round-Trip Time,RTT)是指从发送端发送数据分组开始,到发送端收到接收端发来的相应确认分组为止,总共耗费的时间。
下面来举例说明,如图所示,主机 A 与主机 B 通过多个异构型的网络和多个路由器进行互联。
-
以太网中的主机 A 给无线局域网中的主机 B 发送数据分组。
-
主机 B 收到数据分组后,主机 A 发送相应的确认分组。
-
从主机 A 发送数据分组开始,到主机 A 收到主机 B 发来的相应确认分组为止,就是这一次交互的往返时间。
请同学们根据上节介绍的有关时延的知识来分析一下,分组是在以太网上耗时较多还是在无线局域网上耗时较多?又或者是在卫星链路上耗时较多呢?
答案是卫星链路耗时较多。一般情况下,卫星链路的距离比较远,所带来的传播时延比较大。
例如,地球同步卫星距离地球 36000 千米,那么可以计算出通过同步卫星转发分组所带来的传播时延大约为 240 毫秒。
因为在我们日常的大多数网络应用中,信息都是双向交互的(而非单向传输的),所以我们经常需要知道通信双方交互一次所耗费的时间。我们也可以在计算机中使用相关的软件工具,测量计算机与某个目的主机的连通性和往返时间 RTT 。
例如,这是在老师的计算机的 Windows 系统命令行中使用 ping 命令测量该计算机与他家庭网关的连通性和往返时间。图中显示所测得的往返时间 RTT 不到 1 毫秒。
这是老师测量的他自己的计算机与哔哩哔哩网站的连通性和往返时间的结果。如下图,往返时间 RTT 大约为 24 毫秒。
这是老师测量的他自己的计算机与某个国外网站的连通性和往返时间的结果。如下图所示,往返时间 RTT 将近 200 毫秒。
1.5.7 利用率
利用率有链路利用率和网络利用率两种。
-
链路利用率是指某条链路有百分之几的时间是被利用的,即有数据通过完全空闲的链路利用率为零。
-
网络利用率是指网络中所有链路的链路利用率的加权平均。
根据排队论可知,当某链路的利用率增大时,该电路引起的时延就会迅速增加。
-
例如,当公路上的车流量增大时,公路上的某些地方会出现拥堵,所需行车时间就会变长。
-
网络也是如此,当网络的通信量较少时,产生的时延并不大。但网络通信量不断增大时,分组在交换节点,也就是路由器中的排队时延随之增大,因此网络引起的时延就会增大。
我们可以按该公式画出时延 D 随利用率 U 的变化曲线,横坐标为网络利用率 U,纵坐标为网络时延 D 。
可以看到:
-
网络利用率 U 的极限值为 1,即百分之百利用
-
网络空闲时的时延 D0 也就是网络利用率 U 为 0 时的时延,时延 D 随网络利用率 U 的增大而增大。
-
当网络利用率达到 50% 时,时延就会加倍。
-
当网络利用率超过 50% 时,时延急剧增大。
-
当网络利用率接近 100% 时,时延就趋于无穷大。
显然,网络利用率并不是越大越好,过高的网络利用率会产生非常大的时延。
一些大型 ISP 往往会控制信道利用率不超过 50%,如果超过了就要进行扩容,增大线路的带宽。当然了也不能让信道利用率太低,不然这会使宝贵的通信资源白白浪费。应该使用一些机制,可以根据情况动态调整输入到网络中的通信量,使网络利用率保持在一个合理的范围内。
1.5.8 丢包率
丢包率是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率。丢包率可分为接口丢包率、节点丢包率、链路丢包率、路径丢包率、网络丢包率等。
在过去,丢包率只是网络运维人比较关心的一个网络性能指标,而普通用户往往并不关这个指标,因为它们通常意识不到网络丢包。随着网络游戏的迅速发展,现在很多游戏玩家也非常关心丢包率这个网络性能指标。
下面来举例说明造成丢包的两种情况。如图所示:
情况一:
-
主机 H1 给 H3 发送分组,该分组在传输过程中出现了误码。
-
当误码了的分组进入传输路径中的交换节点后,会被交换节点检测出误码,进而被交换节点丢弃。
-
至于交换节点是如何检测出分组有误码的,后面会讲到。
情况二:
-
主机 H1 给 H3 发送分组,该分组正确到达传输路径中的某个交换节点。但该交换节点的输入缓存的队列长度达到了某个阈值,根据丢弃策略,必须丢弃该分组,尽管该分组并没有误码。
综上所述:
当网络的丢包率较高时,通常无法使网络应用正常工作。
1.6 计算机网络的体系结构
1.6.1 常见的三种计算机网络体系结构
开放系统互连参考模型
为了使不同体系结构的计算机网络都能互连起来,国际标准化组织(International Organization for standardization,ISO)于 1977 年成立了专门机构来研究该问题。
不久,他们就提出了一个使全世界各种计算机可以互连成网的标准框架,这就是著名的开放系统互连参考模型(Open Systems Interconnection Reference Model,OSI / RM),简称 OSI。在 1983 年形成了开放系统互连参考模型的正式文件(ISO 7498 国际标准)。
OSI 参考模型是一个七层协议的体系结构,自下而上依次是物理层、数据链路层、网络层、运输层、会话层、表示层以及应用层。如图所示:
OSI 体系结构是法律上的国际标准,它试图达到一种理想境界,即全世界的计算机网络都遵循这个统一的国际标准,进而使全世界的计算机能够很方便地进行互连和交换数据。
然而到了 20 世纪 90 年代初期,尽管整套的 OSI 国际标准都已经制订出来了,但这时因特网已抢先在全世界覆盖了相当大的范围。因特网从 1983 年开始使用 TCP/IP 协议族,并逐步演变成 TCP/IP 参考模型。
虽然 OSI 只获得了一些理论研究的成果,但在市场化方面却输给了 TCP/IP 标准。OSI 失败的原因有以下几点:
-
OSI 的专家们缺乏实际经验,他们在完成 OSI 标准时没有商业驱动力。
-
OSI 的协议实现起来过分复杂,而且运行效率很低。
-
OSI 标准的制定周期太长,因而使得按 OSI 标准生产的设备无法及时进入市场。
-
OSI 的层次划分也不太合理,有些功能在多个层次中重复出现。
在过去,制定标准的组织中往往以专家、学者为主。但现在许多公司都纷纷挤进各种各样的标准化组织,使得技术标准有着浓厚的商业气息。例如我国的华为公司,近些年一直在参与国际行业的标准制定,加入了包括 ISO、ITU 及 IEEE 在内的 400 多个标准组织、产业联盟以及开源社区。仅仅在 2018 年就提交了 5000 多篇标准提案,曾累积提交 60000 多篇标准提案,是我国参与国际标准制定的重要力量。
一个新标准的出现,有时不一定反映出其技术水平是最先进的,而是往往有着一定的市场背景。从这种意义上说,能够占领市场的就是标准。因特网使用 TCP/IP 参考模型,就是最好的例证。
TCP/IP 参考模型
因特网是全球覆盖范围最广、用户数量最多的互联网,它采用 TCP/IP 参考模型。
TCP/IP 参考模型是一个四层协议的体系结构,自下而上依次是网络接口层、网际层、运输层以及应用层,如图所示。
TCP/IP 体系结构相当于将 OSI 体系结构的物理层和数据链路层合并为了网络接口层,将会话层和表示层合并到了应用层,如图所示。
需要注意的是:由于 TCP/IP 在网络层使用的核心协议是 IP 协议,IP 协议的中文意思是网际协议(InternetProtocol,IP),因此 TCP/IP 体系结构的网络层也常称为网际层。
大多数网络用户每天都有使用因特网的需求,这就要求用户的主机必须使用 TCP/IP 体系结构。在用户主机的操作系统中,通常都带有完整的 TCP/IP 协议簇。
而因特网中用于网络互连的路由器,就其所需完成的网络互连这一基本任务而言,只包含 TCP/IP 的网络接口层和网际层即可,因此我们一般认为路由器的网络体系结构的最高层为网际层(网络层),如图所示。
TCP/IP 体系结构的网络接口层并没有规定什么具体的内容,这样做的目的是可以互连全世界各种不同的网络接口,例如有线的以太网接口、无线局域网的 WiFi 接口,而不限定仅使用一种或几种网络接口。如图:
因此,TCP/IP 体系结构在本质上只有上面的三层(应用层、运输层和网际层)。
网际层的核心协议是网际协议 IP。如图:
运输层的两个重要协议是传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)。如图:
应用层中包含了大量的应用层协议。例如:
-
超文本传送协议(HyperText Transfer Protocol,HTTP)
-
简单邮件传送协议(Simple Mail TransferProtocol,SMTP)
-
域名系统(DomainNameSystem,DNS)
-
实时运输协议(Realtime Transport Protocol,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 的设计初期就提出了分层的设计理念。" 分层 " 可将庞大而复杂的问题转化为若干较小的局部问题,而这些较小的局部问题就比较容易研究和处理。
下面按照由简单到复杂的顺序,来看看实现计算机网络要面临哪些主要问题,以及如何将这些问题划分到五层原理体系结构的相应层次,以便层层处理。
物理层
首先来看最简单的情况,两台计算机通过一条链路连接起来。如图所示:
对于这种最简单的情况,我们需要考虑以下问题:
-
第一个问题,采用什么传输媒体?
-
可以采用多种传输媒体作为传输链路,例如同轴电缆、双绞线、电缆、光纤和光缆、自由空间等。
-
-
第二个问题,用户主机、交换机以及路由器等网络设备需要采用什么物理接口来连接传输媒体?
-
如图所示,这是计算机主板上常见的 RJ45 以太网接口。
-
-
第三个问题,在确定了传输媒体和物理接口后,还要考虑采用什么信号来表示比特 0 和 1,进而在传输媒体上进行传送。
-
例如使用这样的数字基带信号,高电平表示比特 1,低电平表示比特 0。
-
解决了上述这些问题,两台计算机之间就可以通过信号来传输比特 0 和 1 了。
我们可以将上述这些问题划归到物理层。如图所示:
请大家注意!!!
-
传输媒体(介质)并不属于物理层范畴,它并不包含在计算机网络体系结构之中!!!
-
计算机网络中传输的信号并不是上面举例的简单的数字基带信号(方波信号)!!!
-
当大家学习本身就不容易理解的、概念抽象的计算机网络体系结构,不让其他技术细节再给大家造成学习障碍。
-
这样举例,只是让初学者容易理解。
数据链路层
实用的计算机网络往往由多台计算机互联而成,例如主机 A、B、C 通过总线互连了一个总线型网络。
假设我们已经解决了物理层的问题,即主机间可以通过信号来传送比特 0 和 1 了。我们来看看在这样一个总线型的网络上还面临什么需要解决的问题。
-
如何标识网络中的各主机?(主机编址、例如 MAC 地址)
-
假设主机 A 要给主机 B 发送数据,表示数据的信号会通过总线传播到总线上的每一个主机。那么问题来了,主机 B 如何知道这是主机 A 发送给它的数据,进而接受该数据?而主机 C 又如何知道该数据并不是发送给他的,应该丢弃该数据呢?
-
这就很自然地引出了如何标识网络中各主机的问题,也就是主机编址问题。大家可能听说过网卡上固化的 MAC 地址,其实 MAC 地址就是主机在网络中的地址。
-
如何从比特流中区分出地址和数据?(数据封装格式)
-
主机在发送数据时,应该给数据附加上源地址和目的地址。当其他主机收到后,根据目的地址和自身地址是否匹配,来决定是否接受该数据,还可以通过源地址知道这是哪个主机发来的数据。
-
要将源地址和目的地址附加到数据上,这就需要收发双方约定好数据的封装格式。
(为了简单起见,在上图所示的数据包首部中仅包含了源地址和目的地址,并且仅用一个字母表示地址)
-
发送方将待发送的数据按照事先约定好的格式进行封装(即在数据前面添加包含源地址、目的地址和其他一些控制信息的首部),然后将封装好的数据包发送出去。
-
接收方收到数据包后,按照事先约定好的格式对其进行解封。
-
-
-
如何协调各主机争用总线?(媒体接入控制)
-
对于总线型的网络,还会出现多个主机争用总线时产生碰撞的问题。
-
例如,某个时刻总线是空闲的,也就是没有主机使用总线来发送数据。
-
片刻之后,主机 A 和主机 C 同时使用总线来发送数据,这必然会造成信号碰撞。
-
因此,如何协调各主机争用总线也是必须要解决的问题。
-
-
以太网交换机是怎么解决碰撞的?(自学习和转发帧)
-
请大家注意,上述这种总线型网络早已淘汰!现在常用的是使用以太网交换机将多台主机互连而成的交换式以太网。如下图:
-
在交换式以太网中,多对主机之间可以同时进行通信而不会产生碰撞。如图所示:
-
那么以太网交换机又是如何实现的呢?具体来说就是以太网交换机自学习和转发帧的原理。
-
-
如何检测数据是否误码?(差错检测)
-
对于交换式以太网这种有线网络,很少出现数据误码的情况。而对于无线网络,比较容易出现数据误码。
-
这就引出了如何检测数据在传输过程中是否出现了误码的问题?也就是差错检测。
-
-
出现传输差错如何处理?(可靠传输和不可靠传输)
-
当检测到数据包有误码,是直接丢弃,然后什么也不做,还是说想办法让发送方重传有误码的数据包呢?
-
这就引出了出现传输差错如何处理的问题?根据应用需求可分为可靠传输服务和不可靠传输服务。
-
-
接收方如何控制发送发注入网络的数据量?(流量控制)
-
再来看这种情况,主机 A 给主机 B 连续发送数据。然而主机 B 正在处理很多其他任务,来不及取走输入缓存中的数据。
-
于是主机 B 给主机 A 发送通知,通知主机 A 停止发送。
-
这就引出了接收方如何控制发送方注入网络的数据量的问题,即流量控制。
-
我们可以将上述这些问题划归到数据链路层。如图所示: 4
网络层
解决了物理层和数据链路层各自所面临的问题,就可以实现数据包在一个网络上传输了。
然而,我们的网络应用往往不仅限于在一个单独的网络上。例如,我们几乎每天都会使用的因特网,是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层的问题还是不能正常工作。
我们可以把如下图的这样一个小型互联网看作是因特网中很小的一部分。我们来看看在该小型互联网中在需要考虑的主要问题有哪些。如图所示:
-
如何标识互联网中的各网络以及网络中的各主机?(网络和主机共同编址,例如 IP 地址)
-
由于互联网是由多个网络通过多个路由器互连起来的,因此我们还需要对互联网中的各网络进行标识。这就引出了网络和主机共同编址的问题。
-
相信大家一定听说过 IP 地址,例如这是分配给网络 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 进程。
-
这台 H2 的 Web 服务器中运行着与网络通信相关的 Web 服务器进程 Nginx。
-
当主机 H3 收到外部服务器中 Nginx 进程发来的数据包后,应将数据包交付给浏览器进程还是 QQ 进程呢?
-
很显然,如果数据包中含有与进程相关的标志信息,主机 H1 就可以根据标志信息将数据包交付给相应的应用进程。
-
这就引出了如何标识与网络通信相关的应用进程、进而解决进程之间基于网络通信的问题。例如,使用端口号来区分不同的应用进程。
-
-
如何处理传输差错?(可靠传输和不可靠传输)
-
在之前内容中,曾介绍过数据包由于误码被路由器或用户主机丢弃,又或是由路由器繁忙而主动丢弃正常数据包,这些都属于传输差错。
-
那么,当出现传输差错时应该如何处理?这也是需要解决的问题。
-
我们可以将上述这些问题划归到运输层。如图所示:
应用层
解决了物理层、数据链路层、网络层以及运输层各自的问题后,就可以实现进程之间基于网络的通信了。
在进程之间基于网络通信的基础上,可以制定各种应用协议,并按协议标准编写相应的应用程序,通过应用进程之间的交互来实现特定的网络应用。
-
例如支持万维网的 HTTP 协议、支持电子邮件的 SMTP 协议以及支持文件传送的 FTP 协议等。
-
另外,在制定应用协议时,还需要考虑应用进程基于网络通信时的会话管理问题和数据表示问题(采用何种编码、是否加密和压缩数据)。
我们可以将上述这些问题划归到应用层。如图所示:
至此,我们将实现计算机网络所需要解决的各种主要问题,分别划归到了物理层、数据链路层、网络层、运输层以及应用层。这就构成了五层原理体系结构,如图所示。
五层原理体系结构各层的主要功能分别是:
-
物理层解决使用何种信号来表示比特 0 和 1 的问题。
-
数据链路层解决数据包在一个网络或一段链路上传输的问题。
-
网络层解决数据包在多个网络之间传输和路由的问题。
-
运输层解决进程之间基于网络的通信问题。
-
应用层解决通过应用进程的交互来实现特定网络应用的问题。
请大家思考一下,如果你是一名程序员,要编程解决实现计算机网络所面临的各种软件问题。那么,你是愿意将这些问题全部放在一个模块中编程实现呢,还是愿意将它们划分到不同的模块中,逐个模块编程实现呢?
相信大家一定会选择后者。这就是软件工程中高内聚低耦合的概念。
最后,请大家练习一下这下面的三道习题。
第一题
-
假设你在使用一款软件,它需要从服务器接收图像数据,而这些图像数据在传输过程中使用了一种特定的编码格式(如 JPEG)。在这种情况下:
-
表示层负责将 JPEG 格式的图像数据转换为应用程序能够理解的图像格式(如位图)。
-
如果数据在传输过程中进行了加密(例如使用 SSL / TLS 协议),表示层负责解密数据。
-
如果数据进行了压缩,表示层负责解压缩数据。
-
-
总结:在 OSI 参考模型中,表示层(第六层)是负责数据格式转换的层级。它确保在不同系统之间传输的数据能够被正确解释和处理,从而实现不同系统之间的互操作性。
-
综上,第一题答案选 B。
第二题
-
OSI 参考模型的第五层是会话层。会话层的主要功能有:
-
建立、维护和终止会话:
-
会话层负责在通信双方之间建立、管理和终止会话(session)。会话是两个设备之间的一种长期或短期的通信连接,可以在数据传输之前、期间和之后进行控制。
-
-
会话管理:
-
会话层提供了会话的管理机制,包括会话的建立、数据交换期间的会话保持以及会话的正常关闭。
-
-
会话检查点:
-
会话层能够在数据传输过程中设置检查点(checkpoint),以便在发生通信中断时可以从最后一个检查点重新开始数据传输,而不是从头开始。
-
-
同步和恢复:
-
会话层提供数据同步和恢复功能。在传输长时间的数据时,会话层可以插入同步点,以便在网络故障后,能够从这些同步点重新开始传输,而不必重新传输所有数据。
-
-
对话控制:
-
会话层可以管理和协调双向或多向对话,使得通信双方可以有效地交换信息。它可以管理单工、半双工和全双工通信模式。
-
-
-
综上,第二题答案选 C。
第三题
-
在 TCP/IP 参考模型中,传输层的下一层是网络接口层。网络接口层实现的主要功能包括:
-
路由选择:
-
网络层负责确定数据包从源主机到目的主机的路径。它基于 IP 地址进行路由选择,确保数据包能够跨网络边界正确地传输。
-
-
逻辑寻址:
-
网络层使用 IP 地址对网络中的设备进行标识和定位。它提供了端到端的逻辑寻址,使得网络中的设备可以通过这些逻辑地址互相通信,而不必关心底层物理网络的具体细节。
-
-
分片和重组:
-
当数据包太大以至于不能在一个网络链路上完整传输时,网络层会将数据包分片,以便于在网络中传输。在目的地,网络层负责将这些分片重新组装成原始数据包。
-
-
封装和解封装:
-
网络层将传输层提供的数据封装成 IP 数据包,并添加必要的头部信息,以便于路由选择和错误检测。在接收端,网络层解封装 IP 数据包,提取出原始数据并将其传递给上层。
-
-
错误检测:
-
网络层包含一定的错误检测机制,例如使用校验和来检查数据包在传输过程中是否受损。然而,网络层通常不提供数据包的重传服务,这是由传输层如 TCP 来保证的。
-
-
网络互联:
-
网络层负责将不同类型的物理网络(如以太网、无线局域网、广域网等)连接在一起,形成一个统一的互联网。
-
-
-
综上,第三题的答案选 B。
1.6.3 计算机网络体系结构分层思想举例
为了帮助大家更好地领会计算机网络体系结构的分层思想,下面将通过一个常见的网络应用实例来介绍计算机网络体系结构的分层处理方法。
如图所示,主机属于网络 N1,Web 服务器属于网络 N2,N1 和 N2 通过路由器互联,用户在主机中使用浏览器访问 Web 服务器的过程如下:
-
用户在浏览器地址栏中输入 Web 服务器的域名
-
主机会向 Web 服务器发送一个请求报文
-
Web 服务器收到请求报文后,执行相应的操作,然后给主机发送响应报文。
-
主机收到响应报文后,由浏览器负责解析和渲染显示。
请大家注意!!!
上述网络应用实例仅给出了一个简化的示意过程,因为本节的重点是计算机网络体系结构的分层处理方法,而不是浏览器和 Web 服务器的详细交互过程。
主机和 Web 服务器之间基于网络的通信,实际上是主机中的浏览器应用进程(Google 浏览器)与 Web 服务器中的 Web 服务器应用进程(Nginx 服务器)之间基于网络的通信。如图所示:
下面从五层原理体系结构的角度来看看其具体过程。如图所示:
主机对数据包的处理过程
-
应用层
-
根据 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 服务器对数据包的处理过程
Web 服务器收到数据包后,按网络体系结构自下而上的顺序对其进行逐层解封,解封出 HTTP 请求报文。如图所示:
Web 服务器给主机发送 HTTP 响应报文的过程
Web 服务器的应用层收到 HTTP 请求报文后执行相应的操作,然后给主机发送包含有浏览器请求内容的 HTTP 响应报文,与浏览器发送 HTTP 请求报文的过程类似。如图所示:
-
HTTP 响应报文需要在 Web 服务器层层封装后才能发送。
-
数据包经过路由器的转发到达主机。
-
主机对收到的数据包按网络体系结构自下而上的顺序逐层解封,解封出 HTTP 响应报文。
请大家理解并记住这个例子,因为后面的课程就是要围绕五层原理体系结构自下而上逐层展开。
最后同学们趁热打铁完成这道练习题。该题是计算机专业考研全国统考计算机网络部分 2017 年的题 33。
下面来一起分析一下这道题:
-
这是题目给定的应用层欲发送的 400B 数据,我们称其为应用层协议数据单元。协议数据单元的英文缩写词就是题目所给的 PDU。
-
表示层给应用层 PDU 添加一个 20B 的首部,使之封装成为表示层 PDU 并将其交付给会话层。
-
会话层给表示层 PDU 添加一个 20B 的首部,使之封装成为会话层 PDU 并将其交付给运输层。
-
运输层给会话层 PDU 添加一个 20B 的首部,使之封装成为运输层 PDU 并将其交付给网络层。
-
网络层给运输层 PDU 添加一个 20B 的首部,使之封装成为网络层 PDU 并将其交付给数据链路层。
-
数据链路层给网络层 PDU 添加一个 20B 的首部,使之封装成为数据链路层 PDU 并将其交付给物理层。
-
需要说明的是,数据链路层一般都是给上层交付下来的的 PDU 添加一个首部和一个尾部。这里为了简单起见,将题目给定的 20B 的额外开销全部看作是首部。
-
根据题意,物理层不用再进行额外的开销,所以物理层拿到的数据为:
-
综上所述,应用层本来想发送的是 400B 的数据,但是经过其下面五层的逐层封装,每层引入 20B 的额外开销,实际需要发送的数据量为 400 字节 + 加上额外的 5 个 20B。因此应用层数据传输效率计算如下。
-
本题的答案是选项 A 。大家都做对了吗?
1.6.4 计算机网络体系结构中的专用术语
本节介绍计算机网络体系结构的一些专用术语,以便大家对计算机网络体系结构有更深入的理解。我们将这些专用术语中最具代表性的三个作为分类名称,它们分别是实体、协议以及服务。
需要说明的是,这些专用术语来源于 OSI 的七层体系结构,但也适用于 TCP/IP 的四层层体系结构和五层原理体系结构。
实体和对等实体
实体是指任何可发送或接收信息的硬件或软件进程。下图是通信双方的五层原理体系结构图:
在它们的各层中用标有字母的小方格来表示实体。
有了实体的概念后,就可以引出对等实体概念了。对等实体是指通信双方相同层次中的实体。
例如上图中的:
-
实体 A 与实体 F 互为对等实体
-
实体 B 与实体 G 互为对等实体
-
实体 C 与实体 H 互为对等实体
-
实体 D 与实体 I 互为对等实体
-
实体 E 与实体 J 互为对等实体
请大家思考一下,根据实体和对等实体的概念,属于通信双方物理层和数据链路层的网卡是否互为对等实体呢?属于通信双方应用层的浏览器进程和 Web 服务器进程是否互为对等实体呢?
回答是肯定的。网卡是可以发送或接收信息的硬件,它包括物理层和数据链路层,因此通信双方的网卡互为对等实体。位于收发双方应用层的浏览器进程和 Web 服务器进程是可以发送或接收信息的软件进程,它们互为对等实体。
协议
协议是控制两个对等实体在 " 水平方向 " 进行 " 逻辑通信 " 的规则的集合。如图所示:
-
物理层对等实体使用物理层协议进行逻辑通信,例如传统以太网使用曼彻斯特编码。
-
数据链路层对等实体使用数据链路层协议进行逻辑通信,例如传统以太网使用 CSMA/CD 协议。
-
网络层对等实体使用网络层协议进行逻辑通信,例如 IP 协议。
-
运输层对等实体使用运输层协议进行逻辑通信,例如 TCP 协议或 UDP 协议。
-
应用层对等实体使用应用层协议进行逻辑通信,例如 DHCP 协议、DNS 协议、HTTP 协议、SMTP 协议等。
请大家注意!!!将两个对等实体间的通信称为 " 逻辑通信 ",是因为这种通信其实并不存在,它只是我们假设出来的一种通信。
这样做的目的是方便我们单独研究网络体系结构某一层时,不用考虑其他层。例如当我们研究运输层时,我们可以假设只有运输层对等实体在进行逻辑通信,而不用顾及其他各层。如图所示:
计算机网络协议有三个要素。它们分别是语法、语义、同步。
-
语法:用来定义通信双方交换信息的格式。
-
如下图 是 IPV4 数据报的首部格式。
-
其中的小格子称为字段或域。数字表示字段的长度,单位是位(也就是比特)。语法就是定义了这些小格子的长度和先后顺序。
-
请大家注意!!!我们没有必要记住每种数据报的格式,只要我们能看懂数据报的格式说明就可以了。
-
当然了,如果大家将来会从事计算机网络相关的开发教学以及研究等工作,像 IP 数据报、TCP 报文段以及 HTTP 报文等这些常见的数据报格式,相信大家在学习和研究过程中自然而然就会记住。
-
-
语义:用来定义通信双方所要完成的操作。
-
下面来举例说明,如图所示:
-
主机给 Web 服务器发送一个 HTTP 的 GET 请求报文
-
Web 服务器收到 GET 请求报文后对其进行解析,就知道了这是一个 HTTP 的 GET 请求报文
-
Web 服务器就在自身内部查找主机所请求的内容,并将所找到的内容封装在 HTTP 的响应报文中发送给主机。
-
主机收到 HTTP 响应报文后,对其进行解析和渲染显示。
-
这个例子就可以体现出通信双方收到数据包后应完成怎样的操作。
-
-
同步:用来定义通信双方的时序关系。
-
在上面的例子中,必须由主机首先发送 HTTP 的 GET 请求报文给 Web 服务器。
-
Web 服务器收到主机发来的 GET 请求报文后,才可能给主机发送相应的 HTTP 响应报文。
-
这是 HTTP 协议的同步所定义的。
-
服务
在协议的控制下,两个对等实体在水平方向的逻辑通信使得本层能够向上一层提供服务。但要实现本层协议,还需要使用下面一层所提供的服务。如图所示:
-
物理层对等实体在物理层协议的控制下进行逻辑通信,进而向数据链路层提供服务。
-
数据链路层对等实体 " 享受 " 物理层提供的服务,并在数据链路层协议的控制下进行逻辑通信,进而向网络层提供服务。
-
网络层对等实体 " 享受 " 数据链路层提供的服务,并在网络层协议的控制下进行逻辑通信,进而向运输层提供服务。
-
运输层对等实体 " 享受 " 网络层提供的服务,并在运输层协议的控制下进行逻辑通信,进而向应用层提供服务
-
应用层对等实体 " 享受 " 运输层提供的服务,并在应用层协议的控制下进行逻辑通信,给其上层,也就是用户提供服务。
请大家注意!!!
-
协议是 " 水平 " 的,而服务是 " 垂直 " 的。
-
服务通常是由较低层次(下层)向上一层提供的,用于支持上层的功能和操作。
实体看得见下层提供的服务,但并不知道实现该服务的具体协议。换句话说,下层的协议对上层的实体是透明的。这就好比我们肯定看得见手机为我们提供的各种服务,但是我们只是享受这些服务,而没有必要每个人都弄懂手机的工作原理。
在同一系统中,相邻两层的实体交换信息的 " 逻辑接口 " 称为服务访问点(SAP)。服务访问点用于区分不同的服务类型。例如,数据链路层的服务访问点为 " 帧 " 的类型字段,网络层的服务访问点为 IP 数据报的 " 协议 " 字段,运输层的服务访问点为 " 端口号 " 字段。 下图中的每个小白圆点就是服务访问点。
上层要使用下层所提供的服务,必须通过与下层交换一些命令,这些命令称为服务原语。
在计算机网络体系结构中,通信双方交互的数据包也有专门的术语。对等层次之间传送的数据包称为该层的协议数据单元(Protocol Data Unit,PDU)。例如:
-
物理层对等实体间逻辑通信的数据包称为比特流(bit stream)。
-
数据链路层对等实体间逻辑通信的数据包称为帧(frame)。
-
网络层对等实体间逻辑通信的数据包称为分组(packet);如果使用 IP 协议也称为 IP 数据报。
-
运输层对等实体间逻辑通信的数据包一般根据协议而定,若使用 TCP 协议,则称为 TCP 报文段(segment),若使用 UDP 协议,则称为 UDP 用户数据报(datagram)。
上述各层数据包可以统称为协议数据单元。如图所示:
在上图中可以看到,同一系统内层与层之间交换的数据包称为服务数据单元(Service Data Unit,SDU)。多个 SDU 可以合成为一个 PDU,而一个 SDU 也可划分为几个 PDU:
请大家注意,本节的内容比较抽象。如果大家一时无法完全理解,请不要钻牛角尖,暂时放过去。随着读者对后续章节的学习,就会感觉到计算机网络体系结构不再抽象难懂,它的分层思想是多么优美的设计哲学,其中的这些术语又是多么贴切。
接下来请大家练习以下两道题,它们分别是计算机专业考研全国统考计算机网络部分 2010 年和 2020 年的题 33。
标签:科大,主机,网络,计算机网络,分组,时延,因特网,概述,路由器 From: https://blog.csdn.net/Caoyu5211/article/details/142957278