注:内容根据《计算机网络第七版》以及相关PPT整理制作,图片主要源于{电子工程出版社},部分图片源于学校老师上课所画的图以及自己制作的思维导图

主要讲了计算机网络五大层结构,后面有时间会补上网络安全互联网上的音频/视频服务以及无线网络和移动网络,以下先讲讲计算机网络的概述,通过对计算机网络各个名词的学习和体系结构的初步认识,从而增加对后面学习的理解,之后会通过思维导图导入各层学习

计算机网络定义

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

互联网的组成

先放出一张图

image-20210418102236857

边缘部分

处在互联网边缘的部分就是连接在互联网上的所有的主机。这些主机又称为端系统 (end system)。

端系统在功能上可能有很大的差别:

  1. 小的端系统可以是一台普通个人电脑,具有上网功能的智能手机,甚至是一个很小的网络摄像头。
  2. 大的端系统则可以是一台非常昂贵的大型计算机。
  3. 端系统的拥有者可以是个人,也可以是单位(如学校、企业、政府机关等),当然也可以是某个 ISP。

image-20210418102356227

然后,端之间通信(比如主机A和主机B进行通信)实际上是指:“运行在主机 A 上的某个程序和运行在主机 B 上的另一个程序进行通信”。这个相关内容可以通过运输层和应用层了解

端系统之间的通信方式通常可划分为两大类:

客户-服务器方式(C/S方式)
即 Client/Server 方式,简称为 C/S 方式。

对等方式(P2P方式)
即 Peer-to-Peer 方式 ,简称为 P2P 方式。

客户-服务器方式

客户 (client) 和服务器 (server) 都是指通信中所涉及的两个应用进程。

客户-服务器方式所描述的是进程之间服务和被服务的关系。

客户是服务的请求方,服务器是服务的提供方

image-20210418102656794

客户软件:被用户调用后运行,在打算通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址

不需要特殊的硬件和很复杂的操作系统。

服务器软件:一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求

系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址。

一般需要强大的硬件和高级的操作系统支持。

客户与服务器的通信关系建立后,通信可以是双向的,客户和服务器都可发送和接收数据。

相关详细内容可以通过运输层和应用层阅读到,当然前三层涉及到的知识也很重要

对等连接方式

对等连接 (peer-to-peer,简写为 P2P ) 是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方

只要两个主机都运行了对等连接软件 ( P2P 软件) ,它们就可以进行平等的、对等连接通信

双方都可以下载对方已经存储在硬盘中的共享文档。

image-20210418103029567

对等连接方式从本质上看仍然是使用客户服务器方式,只是对等连接中的每一个主机既是客户又是服务器。例如主机 C 请求 D 的服务时,C 是客户,D 是服务器。但如果 C 又同时向 F提供服务,那么 C 又同时起着服务器的作用。对等连接工作方式可支持大量对等用户(如上百万个)同时工作。

互联网的核心部分

网络核心部分是互联网中最复杂的部分。网络中的核心部分要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一个主机都能够向其他主机通信(即传送或接收各种形式的数据)。

在网络核心部分起特殊作用的是路由器 (router)。路由器是实现分组交换 (packet switching) 的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。(所以网络层那一章的知识很重要)

image-20210418103325964

典型交换技术包括:

  1. 电路交换
  2. 分组交换
  3. 报文交换等

互联网的核心部分采用了分组交换技术。

下面简述各交换技术的特点

电路交换

首先,如果我们需要两个电话能进行通信,比较简单,在两者之间连接一条电话线即可实现。

image-20210418104110956

现在,问题复杂了,如果五个电话都想要可以互相通信(两两连接)呢

那么它们之间就需要十对电话线

image-20210418104252231

由此我们可以得出:N 部电话机两两直接相连,需 N(N –1)/2 对电线。这种直接连接方法所需要的电线对的数量与电话机数量的平方(N 2)成正比。这个数量随着电话的增加会出现疯狂的增长,所需要的电话线会非常多,这时,如果通过交换机我们就可以实现全网的交换任务了,同时减少了彼此之间的电话线,转由交换机统一管理

image-20210418104547321

每一部电话都直接连接到交换机上,而交换机使用交换的方法,让电话用户彼此之间可以很方便地通信。 所采用的交换方式就是电路交换 (circuit switching)。

什么是交换:从通信资源的分配角度来看,“交换”就是按照某种方式动态地分配传输线路的资源

电路交换必定是面向连接的。

电路交换分为三个阶段:

  1. 建立连接:建立一条专用的物理通路,以保证双方通话时所需的通信资源在通信时不会被其他用户占用;
  2. 通信:主叫和被叫双方就能互相通电话;
  3. 释放连接:释放刚才使用的这条专用的物理通路(释放刚才占用的所有通信资源)。

面向连接的电路交换会有什么样的问题:电路交换的用户始终占用端到端的通信资源

image-20210418104805420

分组交换

分组交换则采用存储转发技术。

在发送端,先把较长的报文划分成较短的、固定长度的数据段。

image-20210418104932663

首先在每一个数据段前面添加上首部构成分组 (packet)。

分组交换

分组交换网以“分组”作为数据传输单元。依次把各分组发送到接收端(假定接收端在左边)。

然后,接收端收到分组后剥去首部还原成报文。

最后,在接收端把收到的数据恢复成为原来的报文。

这一交换的过程需要有一个前提:这里我们假定分组在传输过程中没有出现差错,在转发时也没有被丢弃。

分组交换的传输单元

每一个分组的首部都含有地址(诸如目的地址和源地址)等控制信息。分组交换网中的结点交换机根据收到的分组首部中的地址信息,把分组转发到下一个结点交换机。每个分组在互联网中独立地选择传输路径。用这样的存储转发方式,最后分组就能到达最终目的地。

image-20210418134245270

数据传输过程中,负责转发分组的便是路由器

在路由器中的输入和输出端口之间没有直接连线。
路由器处理分组的过程是:

  1. 把收到的分组先放入缓存(暂时存储);
  2. 查找转发表,找出到某个目的地址应从哪个端口转发;
  3. 把分组送到适当的端口转发出去。

注意:主机和路由器并不相同,主机是为用户进行信息处理的,并向网络发送分组,从网络接收分组。路由器对分组进行存储转发,最后把分组交付目的主机。学到后面,你会发现它们之间更多的区别

那么,分组转发有什么优点呢

优点 所采用的手段
高效 在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用。
灵活 为每一个分组独立地选择最合适的转发路由。
迅速 以分组作为传送单位,可以不先建立连接就能向其他主机发送分组。
可靠 保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性。

当然他也存在一定缺点

分组在各结点存储转发时需要排队,这就会造成一定的时延。 分组必须携带的首部(里面有必不可少的控制信息)也造成了一定的开销。

最后,用一张图表示它们的区别

image-20210418134753955

三种交换的比较

  • 若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快。
  • 报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率
  • 由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。

不同类别的网络

按照网络的作用范围进行分类

  • 广域网 WAN (Wide Area Network):作用范围通常为几十到几千公里。
  • 城域网 MAN (Metropolitan Area Network):作用距离约为 5~50 公里。
  • 局域网 LAN (Local Area Network) :局限在较小的范围(如 1 公里左右)。
  • 个人区域网 PAN (Personal Area Network) :范围很小,大约在 10 米左右。

若中央处理机之间的距离非常近(如仅 1 米的数量级甚至更小些),则一般就称之为多处理机系统,而不称它为计算机网络。

按照网络的使用者进行分类

  • 公用网 (public network)
    按规定交纳费用的人都可以使用的网络。因此也可称为公众网。
  • 专用网 (private network)
    为特殊业务工作的需要而建造的网络。

公用网和专用网都可以提供多种服务。如传送的是计算机数据,则分别是公用计算机网络和专用计算机网络。

性能指标

计算机网络的性能一般是指它的几个重要的性能指标,主要包括:

  • 速率
  • 带宽
  • 吞吐率
  • 时延
  • 时延带宽积
  • 往返时间 RTT
  • 利用率

速率

在了解速率之前,首先了解数据的单位——比特

比特(bit)是计算机中数据量的单位,也是信息论中使用的信息量的单位。比特(bit)来源于 binary digit,意思是一个“二进制数字”,因此一个比特就是二进制数字中的一个 1 或 0。

速率是计算机网络中最重要的一个性能指标,指的是数据的传送速率,它也称为数据率 (data rate) 或比特率 (bit rate)。

速率的单位是 bit/s,或 kbit/s、Mbit/s、 Gbit/s等。

例如4 * 10¹⁰ bit/s 的数据率就记为 40 Gbit/s。

速率往往是指额定速率或标称速率,非实际运行速率(受带宽影响)。

带宽

两种不同意义:

  • “带宽”(bandwidth) 本来是指信号具有的频带宽度,其单位是赫(或千赫、兆赫、吉赫等)。
  • 在计算机网络中,带宽用来表示网络中某通道传送数据的能力。表示在单位时间内网络中的某信道所能通过的“最高数据率”。单位是 bit/s,即 “比特每秒”。

自己的理解:类似于高速公路和普通公路吧,车道(高速公路至少为六车道)越多,也就是公路越宽,单位时间内通过的容量越大,而普通公路,一般为二车道,宽度容量相较于高速公路就会小些

在“带宽”的上述两种表述中,前者为频域称谓,而后者为时域称谓,其本质是相同的。也就是说,一条通信链路的“带宽”越宽,其所能传输的“最高数据率”也越高。

速率和带宽的区别便是:速率有关于物理媒介,也就是物理层,而带宽会收到五层协议栈的影响,比如你买的100M电信宽带,然后接入了10M的以太网网线,那么宽带就是指你的带宽,而以太网网线则是指速率。

吞吐量

吞吐量 (throughput) 表示在单位时间内通过某个网络(或信道、接口)的数据量。

吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。

吞吐量受网络的带宽或网络的额定速率的限制。

又来自己的理解了,拿前面的例子,六车道高速公路代表着,每单位时间最多只能同时通过六辆车,这相当于是带宽等于6,但不可能每时每刻都那么巧同时有六辆车通过的,可能是一辆、两辆、或者三辆等,那么,这个时候通过的车辆数就是吞吐量

简单来说,吞吐量便是实际速率,而带宽就是额定速率

时延

时延 (delay 或 latency) 是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间

有时也称为延迟或迟延。

网络中的时延由以下4个不同的部分组成:

  1. 发送时延

    发送时延也称为传输时延。发送数据时,数据帧从结点进入到传输媒体所需要的时间。也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。

    image-20210418142506439

  2. 传播时延

    电磁波在信道中需要传播一定的距离而花费的时间。 发送时延与传播时延有本质上的不同。信号发送速率和信号在信道上的传播速率是完全不同的概念。

    image-20210418142558278

  3. 处理时延

    主机或路由器在收到分组时,为处理分组(例如分析首部、提取数据、差错检验或查找路由)所花费的时间。

  4. 排队时延

    分组在路由器输入输出队列中排队等待处理所经历的时延。排队时延的长短往往取决于网络中当时的通信量。

最后,数据在网络中经历的总时延就是发送时延、传播时延、处理时延和排队时延之和。

image-20210418142718090

需要重点注意到饿是:对于高速网络链路,我们提高的仅仅是数据的发送速率而不是比特在链路上的传播速率。 提高链路带宽减小了数据的发送时延。

时延带宽积

链路的时延带宽积又称为以比特为单位的链路长度。

image-20210418142919756

只有在代表链路的管道都充满比特时,链路才得到了充分利用。

时延带宽积 = 传播时延 × 带宽

往返时间

互联网上的信息不仅仅单方向传输,而是双向交互的。因此,有时很需要知道双向交互一次所需的时间。

往返时间 RTT (round-trip time) 表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。(运输层会详细聊到这个)

在互联网中,往返时间还包括各中间结点的处理时延、排队时延以及转发数据时的发送时延。

当使用卫星通信时,往返时间 RTT 相对较长,是很重要的一个性能指标。

利用率

分为信道利用率和网络利用率。

  1. 信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。
  2. 网络利用率则是全网络的信道利用率的加权平均值。

信道利用率并非越高越好。当某信道的利用率增大时,该信道引起的时延也就迅速增加。

我们知道,时延和信道上数据传播速率有关,假设速率不变的情况下,时延又分为四种,当你利用率提高的同时,其中的一种——排队时延就会相应的变长,那么总的时延就会增加

若令 D0 表示网络空闲时的时延,D 表示网络当前的时延,则在适当的假定条件下,可以用下面的简单公式表示 D 和 D0 之间的关系:

image-20210418143620011

其中:U 是网络的利用率,数值在 0 到 1 之间。

image-20210418143637381

非性能特征

当然,一些非性能特征也很重要。它们与前面介绍的性能指标有很大的关系。主要包括:

  • 费用
  • 质量
  • 标准化
  • 可靠性
  • 可扩展性和可升级性
  • 易于管理和维护

协议与划分层次

协议

计算机网络中的数据交换必须遵守事先约定好的规则

这些规则明确规定了所交换的数据的格式以及有关的同步问题(同步含有时序的意思)。

网络协议 (network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。

网络协议的三个组成要素*

语法:数据与控制信息的结构或格式 。

语义:需要发出何种控制信息,完成何种动作以及做出何种响应。

同步:事件实现顺序的详细说明。

协议具有两种形式

一种是使用便于人来阅读和理解的文字描述。

另一种是使用让计算机能够理解的程序代码。

这两种不同形式的协议都必须能够对网络上信息交换过程做出精确的解释。

划分层次

划分层次的优点,以及它的缺点

优点

  • 各层之间是独立的。
  • 灵活性好。
  • 结构上可分割开。
  • 易于实现和维护。
  • 能促进标准化工作。

缺点

  • 降低效率。
  • 有些功能会在不同的层次中重复出现,因而产生了额外开销。

而层数也要适合,如果层数太少,就会使每一层的协议太复杂。层数太多,又会在描述和综合各层功能的系统工程任务时遇到较多的困难。

计算机网络的体系结构

计算机网络的体系结构 (architecture) 是计算机网络的各层及其协议的集合。

体系结构就是这个计算机网络及其部件所应完成的功能的精确定义。
实现 (implementation) 是遵循这种体系结构的前提下用何种硬件或软件完成这些功能的问题。

体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。

OSI 的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用。

TCP/IP 是四层体系结构:应用层、运输层、网际层和网络接口层。
但最下面的网络接口层并没有具体内容。

因此往往采取折中的办法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构 。

image-20210418145642533

在五层协议下,数据是这样传递的

数据传递

图里省略了到达通信接收方数据的处理方法,具体做法便是在每一层将数据对等层的首部和尾部剥去后再传递给上一层

OSI 参考模型把对等层次之间传送的数据单位称为该层的协议数据单元 PDU (Protocol Data Unit)。这个名词现已被许多非 OSI 标准采用。

任何两个同样的层次把数据(即数据单元加上控制信息)通过水平虚线直接传递给对方。这就是所谓的“对等层”(peer layers)之间的通信。

各层协议实际上就是在各个对等层之间传递数据时的各项规定。

实体、协议、服务和服务访问点

实体 (entity) 表示任何可发送或接收信息的硬件或软件进程。

协议是控制两个对等实体进行通信的规则的集合。

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

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

协议的实现保证了能够向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议。即下面的协议对上面的服务用户是透明的。 协议是“水平的”,即协议是控制对等实体之间通信的规则。服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。上层使用服务原语获得下层所提供的服务。

同一系统相邻两层的实体进行交互的地方,称为服务访问点 SAP (Service Access Point)。 服务访问点SAP是一个抽象的概念,它实际上就是一个逻辑接口。OSI把层与层之间交换的数据的单位称为服务数据单元 SDU (Service Data Unit)。SDU 可以与 PDU 不一样,例如,可以是多个 SDU 合成为一个 PDU,也可以是一个 SDU 划分为几个 PDU。

image-20210418150946900

协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的。 看一个计算机网络协议是否正确,不能光看在正常情况下是否正确,还必须非常仔细地检查这个协议能否应付各种异常情况。

TCP/IP 的体系结构

image-20210418151028155

实际上,现在的互联网使用的 TCP/IP 体系结构有时已经发生了演变,即某些应用程序可以直接使用 IP 层,或甚至直接使用最下面的网络接口层。

image-20210418151050239

image-20210418151123598

image-20210418151137382

客户进程和服务器进程使用 TCP/IP 协议栈进行通信

image-20210418151152180

功能较强的计算机可同时运行多个服务器进程

image-20210418151236957