写在最前面:本篇文章的主要资料来源为《[公众号蓝蓝考研]计算机网络背诵版》,本次整理仅用于个人学习。

有一个图很好,放在下面,作为本系列文章的开始:

7
654
321

学习计网最重要的一点是要构建一个整体的框架,一个很契合的框架就是计算机网络的多层架构,包括:每一层的定义、功能、使用的协议与易考点等,我们后续的章节也会按照层次进行介绍。下面我们开始计算机网络概论的学习。


本章考点-计算机网络的分层结构

  • OSI和TCP/IP的各层功能
  • 上下层之间的联系

计算机网络概述

计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备和线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。简单来说,计算机网络是互联的、自治的计算机集合。

在计算机基础框架的软件层次中,核心内容是操作系统,它系统介绍了单个计算机的工作原理,从进程、存储系统、文件系统等方面对计算机的软件架构进行了介绍。而计算机网络则是介绍计算机之间的连接,所以叫做网络

对于这门课程,要抓定义,用众多术语作为骨架,而后用数据包的传递过程将各个术语连接起来,再通过考点明确重点。

以下是思维导图

计算机网络的功能

可以将计算机网络的功能大体归为以下几类:

  • 数据通信(连通性)
  • 资源共享
  • 分布式处理
  • 提高可靠性
  • 负载均衡

因为计算机网络的目的就是实现不同计算机之间的互通,所以前两点功能很容易理解,也是计算机网络的基础功能。第一点侧重于数据的传输第二点侧重于数据的处理第三点分布式管理为了提高信息传输的效率第四点是为了提高信息传输的安全性第五点是为了保证通信的公平和正常运行

以下为思维导图:

计算机网络的组成

一个完整的计算机网络由以下部分组成

  • 硬件:如主机、路由器、交换机等
  • 软件:如FTP程序、聊天程序等
  • 协议:如TCP协议、UDP协议等

注:这里重点说一下协议,也是计算机网络的最核心内容

协议:protocol,是一种允许电子设备相互交流的一系列标准的规则(rules)。例如:传输什么样的数据、传输与接收数据的时候会使用什么样的指令、数据的传输转移是如何保证的等等
简而言之,protocol 就是 rules ,而这些协议能够实现电子设备之间的交流
采用类比的理解,你可以将“协议”比作是一种“语言”,一个就会汉语的中国人和一个只会英语的美国人想要交流该怎么办呢?我们现实的生活中的解决办法是不是就是,学会英语(对中国人)、或者学会汉语(对美国人);或是学会一种通用的语言(这里可以理解为 :协议)。对于一些电子设备而言一样的,例如,一台apple iphone可以发送email 给android device 使用一套标准的email 协议;一台window的pc机可以从一台unix的服务器端加载一个网页使用一套标准的 web protocol。

没有规矩不成方圆,协议就是计算机网络的规矩。

再补充一下计算网络的功能组成

  • 通信子网:实现数据通信
  • 资源子网:实现资源共享、数据处理

这里可以类比快递的运输,不同快递点之间通过通信子网进行商品的运输,而快递单通过资源子网将商品送到具体的买家。

以下是思维导图

计算机网络的分类

这里简单介绍一下即可。

根据分布范围可以分为:

  • 广域网(WAN):采用交换技术
  • 局域网(LAN):采用广播技术,通过路由器接入广域网
  • 城域网(MAN)
  • 个人区域网(PAN)

按照交换技术分类:

电路交换

  • 电路交换是相对于分组交换的一个概念。电路交换要求必须首先在通信双方之间建立连接通道。在连接建立成功之后,双方的通信活动才能开始。通信双方需要传递的信息都是通过已经建立好的连接来进行传递的,并且这个连接也将一直被维持到双方的通信结束。在某次通信活动的整个过程中,该连接将始终占用着连接建立开始时通信系统分配给它的资源(通道、带宽、时隙、码字等等),这也体现了电路交换区别于分组交换的本质特征。
  • 电路交换的特点是:数据传输可靠、迅速、有序,但线路利用率低、浪费严重,不适合计算机网络。


报文交换:

  • 报文交换是数据交换的三种方式之一,报文整个地发送,一次一跳。报文交换是分组交换的前身,是由列奥纳德·克莱因饶克于1961年提出的。
  • 报文交换的主要特点是:存储接受到的报文,判断其目标地址以选择路由,最后,在下一跳路由空闲时,将数据转发给下一跳路由。报文交换系统现今都由分组交换或电路交换网络所承载。
  • 报文交换采用”存储-转发”方式进行传送,无需事先建立线路,事后更无需拆除。它的优点是:线路利用率高、故障的影响小、可以实现多目的报文;缺点是:延迟时间长且不定、对中间节点的要求高、通信不可靠、失序等,不适合计算机网络


分组交换:

  • 分组交换是一种数位通信网络。它将资料组合成适当大小的区块,称为封包,再通过网络来传输。这个传送封包的网络是共享的,每个单位都可以独立把封包再传送出去,而且配置自己需要的资源。
  • 封包交换的基本原则是最佳化的使用连线负载能力,最小化回应时间,以及增进通讯的健全性。
  • 分组交换适用于计算机网络,在实际应用中有两种类型:虚电路方式和数据报方式。虚电路方式类似”线路交换”,只不过对信道的使用是非独占方式;数据报方式类似”报文交换”

计算机网络的性能指标(涉及到计算)

先来介绍几个术语定义。

带宽:表示网络的通信线路所能传送数据的能力,即 最高数据传输速率,单位为 b/s.

区分计算机网络与电子通信领域的带宽:前者是从时域上定义、后者是从频域上定义。
区分宽带和带宽:宽带指到达一定数据传输速率的带宽。不过宽带是一个动态发展的概念,也就是说不同的时代,由于技术的发展,宽带的定义是会变化的。美国FCC在2015年1月7日年度宽带进程报告中将宽带定义如下:数据传输速率达到上行3Mbps/下行25Mbps带宽的互联网连接称为宽带。 

时延:有很多类型,下面一一介绍。

发送时延:从第一个比特发送到最后一个比特发送完毕所需的时间(发送时延=分组长度/信道宽度
传播时延:一个比特从链路一段传播到另一端所需时间(传播时延=信道长度/电磁波传输速率
处理时延:交换节点时存储转发的时间
排队时延:分组现在路由器输入队列等待,确定转发后在输出队列等候花费的时间
总时延=发送时延+传播时延+处理时延+排队时延

时延带宽积:发送端发送的第一个比特即将到达终点时,发送端已经发出的比特数,又称以比特为单位的链路长度。

时延带宽积=传播时延x信道带宽

往返时延:从发送端发出一个短分组,到发送端收到来自接收端的确认,总共经历的时延。

RTT 与传播时延、处理时延、排队时延、接收端处理时间有关

吞吐量:单位时间内通过网络的数据量。

要区别吞吐量与带宽,前者是为了实际的数据传输速率,而后者是理论峰值

速率:即数据传播速率、比特率、数据率,单位是b/s
注意单位的换算

以下是思维导图:

计算机网络体系结构与参考模型

网络各层数据单元的联系(很多术语和定义)

  1. 实体:表示任何可以发送或接收信息的硬件或软件进程,同一层的实体称为对等实体

  2. 协议:是为了进行网络中的数据交换而建立的规则、标准或约定

    • 语法:规定传输数据的格式
    • 语义:规定所要完成的功能
    • 同步:规定各种操作的顺序
  3. 服务

    • 下层为相邻上层提供的功能调用
    • 服务是“垂直的”,即服务是由下层向上层通过层间接口提供的
  4. 数组组成

    • SDU服务数据单元:为完成用户所要求的功能而应传送到的数据
    • PCI协议控制信息:控制协议操作的信息
    • PDU协议数据单元:对等层次之间传送的数据单位
    • 每一层的PDU会作为下一层的SDU,然后和PCI组成该层的PDU,再作为下下层的SDU,直到物理层。

为什么要分层呢,各个分层之间有什么规则?

  • 独立性:各层之间相互独立,每层只实现一种相对独立的功能
  • 清晰性:每层之间界面自然清晰,易于理解,相互交流尽可能少
  • 适用性:结构上可分割开。每层都采用最合适的技术来实现
  • 递进性:保持下层对上层的独立性,上层单向使用下层提供的服务
  • 标准性:能促进标准化工作

注:为了便于记忆,可以简记为(独清适递标=独青市地表)

记录一次通信过程

  • 主机A先将其数据交给本机的第7层(应用层)。第7层加上必要的控制信息H7就变成了下一层的数据单元
  • 第6层(表示层)收到数据单元后,加上本层的控制信息H6就变成了下一层的控制信息,依次类推
  • 到了第2层(数据链路层)后,控制信息被分为两个部分,分别加到本层数据单元的首部(H2)和尾部(T2)
  • 到了第一层(物理层)由于是比特流的传送,所以不再加上控制信息。传送比特流时应从首部开始传送
  • 当这一串比特流离开主机A经网络的物理媒体传送到路由器时,就从路由器的第1层依次上升到第3层
  • 每一层都根据控制信息进行必要的操作,然后将控制信息剥去,将该层剩下的数据单元上交给更高的一层
  • 当分组上升到了第3层时,就根据首部中的目的地址查找路由器中的转发表,找到转发分组接口
  • 然后往下传送到第2层,加上新的首部和尾部后,再到最下面的第1层,然后在物理媒体上把每一个比特发送出去

:这里要与前面介绍的数组组成结合,控制信息=PCI,数据单元=PDU。

OSI每一层的功能

OSI模型是一个结构很清晰的模型,将每一层的功能定义的很清楚,但是太复杂了,不适用于实际的网络环境。

一个更加生动的图:

TCP/IP结构

TCP/IP模型在OSI模型的基础上进行了一些简化,将数据链路层和物理层归到网络接口层;应用层、表示层和会话层归到应用层,所以是四层结构模型。

对一些协议进行简单介绍,后面会具体解释:




两类模型的对比分析

共同点
(1)OSI参考模型和TCP/IP参考模型都采用了层次结构的概念。
(2)都能够提供面向连接和无连接两种通信服务机制。
不同点
(1)OSI采用的七层模型,而TCP/IP是四层结构
(2)TCP/IP参考模型的网络接口层实际上并没有真正的定义,只是一些概念性的描述。而OSI参考模型不仅分了两层,而且每一层的功能都很详尽,甚至在数据链路层又分出一个介质访问子层,专门解决局域网的共享介质问题。
(3)OSI模型是在协议开发前设计的,具有通用性。TCP/IP是先有协议集然后建立模型,不适用于非TCP/IP网络。
(4)OSI参考模型与TCP/IP参考模型的传输层功能基本相似,都是负责为用户提供真正的端对端的通信服务,也对高层屏蔽了底层网络的实现细节。所不同的是TCP/IP参考模型的传输层是建立在网络互联层基础之上的,而网络互联层只提供无连接的网络服务,所以面向连接的功能完全在TCP协议中实现,当然TCP/IP的传输层还提供无连接的服务,如UDP;相反OSI参考模型的传输层是建立在网络层基础之上的,网络层既提供面向连接的服务,又提供无连接的服务,但传输层只提供面向连接的服务。
(5)OSI参考模型的抽象能力高,适合与描述各种网络;而TCP/IP是先有了协议,才制定TCP/IP模型的。
(6)OSI参考模型的概念划分清晰,但过于复杂;而TCP/IP参考模型在服务、接口和协议的区别上不清楚功能描述和实现细节混在一起
(7)TCP/IP参考模型的网络接口层并不是真正的一层;OSI参考模型的缺点是层次过多,划分意义不大但增加了复杂性。
(8)OSI参考模型虽然被看好,由于没把握好时机,技术不成熟,实现困难;相反,TCP/IP参考模型虽然有许多不尽人意的地方,但还是比较成功的。

以下为思维导图:


最后附上网上看到的一个小故事,可以帮助更好理解计算机网络的各层。

物理层:
很久很久以前,那时候还没有现在的外星人超级电脑,或者华为的P30。比较调皮的小明想要把自己机器上写好的一些个人游戏心得(如何玩好王者农药)发给小红(校花),希望博得芳心。小明个人比较勤,游戏总结心得总结的比较详细(大概有100M)。但是到底怎么才能从自己的机器上传给小红的机器呢,进过一番打听,他发现远在太平洋另一端的科学家已经发明了一种技术 物理层,专门用来解决小明这种单身狗问题。该层主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
他很兴奋,通过一个月的努力终于搭建起了这个物理层。

数据链路层:
然而上天却好像和小明开了一个玩笑,楼下的小润发超市的网线、光纤最近卖光了,但是这个物理层传输数据只能通过网线传输。到底怎么办!!。
此时,他体内的雄性激素促使着他的大脑以光速运转。终于他饿了,无奈得走去学校饭堂三楼吃麻辣烫。此时听到隔壁坐着的那位王叔叔(老王)说,科学家已经发明了一种技术可以通过无线电来传输。What?这不是完美解决了自己的困扰吗。小明连忙对隔壁老王说谢谢,老王留下了幸福的泪水!!
右通过一番努力查资料,小明发现:这种技术可以通过电线我能发数据流,也可以通过其它介质来传输。然后还要保证了传输过去的比特流是正确的,有纠错功能。定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
小明把层技术称为:数据链路层

网络层:
由于小明家离小红家比较远,无线电信号无法传输到哪里,但是这完全难不到小明。他通过在离小红家的路上搭建了多个节点(路由器,交换机),用于信号的传输。但是由于他有时候被雄性激素冲昏了头脑,搭建的信号节点有点乱,而且很多。那他又想用最短的路径来传输怎么办呢?在小明沮丧走回家的时候已深夜,他看见今天看到的那位王叔叔匆匆的从自己家走出来,他连忙拉住王叔叔,向他诉说自己的烦恼,希望王叔叔能给自己一些帮助。当小明说完后,王叔叔从紧张变为和蔼,和小明说:其实已经有人发明了网络层。即路由器,交换机那些具有寻址功能的设备所实现的功能。这一层定义的是IP地址,通过IP地址寻址。所以产生了IP协议。该层能选择最佳路径,这就是路由要做的事。

传输层
为了趁热打铁,小明通宵查资料来学习相关信息,并且简单搭建好网络层,开始传输数据,趁着传输过程好好睡一觉。当他起来的时候,噩梦才刚刚开始,因为他传输的数据太大(100M)只传输了一部分,而且断断续续的,有一部分数据根本传不出去。那怎么办?
“加一层传输层!!!”:王叔叔在楼下大声喊着,“资料在你妈妈的床头柜”,王叔叔继续说。小明连忙找到资料,上面写着:“
发正确的发比特流数据到另一台计算机了,但是当我发大量数据时候,可能需要好长时间,例如一个视频格式的,网络会中断好多次(事实上,即使有了物理层和数据链路层,网络还是经常中断,只是中断的时间是毫秒级别的)。
那么,我还须要保证传输大量文件时的准确性。于是,我要对发出去的数据进行封装。就像发快递一样,一个个地发。
例如TCP,是用于发大量数据的,我发了1万个包出去,另一台电脑就要告诉我是否接受到了1万个包,如果缺了3个包,就告诉我是第1001,234,8888个包丢了,那我再发一次。这样,就能保证对方把这个视频完整接收了。
例如UDP,是用于发送少量数据的。我发20个包出去,一般不会丢包,所以,我不管你收到多少个。在多人互动游戏,也经常用UDP协议,因为一般都是简单的信息,而且有广播的需求。如果用TCP,效率就很低,因为它会不停地告诉主机我收到了20个包,或者我收到了18个包,再发我两个!如果同时有1万台计算机都这样做,那么用TCP反而会降低效率,还不如用UDP,主机发出去就算了,丢几个包你就卡一下,算了,下次再发包你再更新。
TCP协议是会绑定IP和端口的协议,下面会介绍IP协议。

通过如此这般的操作,他!小明同学终于把自己100M的游戏心得发送给了小红

会话层(解除与建立与别的接口的联系)
然而,小红根本不玩游戏。得知这个消息后,小明楞逼了。但是他没有放弃,而是把自己猜到小红喜欢的信息都发给他,但是小明每发一次,难道我每次都要调用TCP去打包,然后调用IP协议去找路由,这一来一回就是一天,那怎么办呢?
他又翻了翻王叔叔的笔记本资料,写着:会话层可以帮助我们建立和管理应用程序之间的通信,封装了调用TCP去打包,然后调用IP协议去找路由等操作
如此一来,他只需要十几二十分钟就能够成功搭建好传输数据的机器。

表示层(数据格式化,代码转换,数据加密)
有一次,小明传了一份数据,是关于如何选购化妆品的文章,小红对此非常感兴趣,但是当小红想用自己的window开该文件时发现根本无法打开,后来小红在下课的时候和小明说自己无法打开这个文件,小明想自己用Linux系统明明完整地发送给了小红啊,那就奇怪了,但是出于耍帅,小明只是轻轻地说“我放学后再发你一份!”。
这时虽然小明不知道是出了什么问题,但是他坚信老王叔叔的资料笔记会有答案的。果然!上清清楚楚的写着:“现在我能保证应用程序自动收发包和寻址了。但是我要用Linux给window发包,两个系统语法不一致,就像安装包一样,exe是不能在linux下用的,shell在window下也是不能直接运行的。于是需要表示层(presentation),帮我们解决不同系统之间的通信语法问题。”
小明立即用了一个通宵手动搭好了表示层,传输了一份完美的文件给小红
————————————————
原文链接:https://blog.csdn.net/LiangJGo/article/details/90080011


写在最后:本篇文章是系列文章的第一篇,主要是对计算机网络的整体框架做一个简单的介绍。
本节的核心内容是计算机网络的体系结构,要记忆各种术语定义,为之后的深入学习打好基础。