计算机网络体系结构

计算机网络的定义

一些相互连接的、自治的计算机的集合,互连是指计算机之间可以通过有线或者无线的方式进行数据通信,自治是指独立的计算机,它有自己的软硬件,集合是指至少两台计算机。计算机网络由若干节点和连接这些节点的链路组成,节点可以是计算机,集线器,路由器,交换机等。

计算机网络的功能

  1. 数据通信。数据通信是计算机网络最基本和最重要的功能,用来实现联网计算机之间的各种信息传输。
  2. 资源共享。资源共享可以是软件共享、数据共享、硬件共享,使计算机网络中的资源互通有无、分工协作,提高资源利用率。
  3. 分布式处理。当计算机网络中某个计算机负载过重时,可将其处理的某个复杂任务分配给网络中的其他计算机系统,利用空闲计算机资源提高整个系统的利用率。
  4. 提高可靠性。也是在分布式场景,计算机网络中的各台计算机可以互为代替机器。
  5. 负载均衡。将任务均匀的分配给计算机网络中的计算机。

计算机网络中的交换技术

电路交换

最典型的电路交换往就是传统的电话网,电路交换主要分为三步:建立连接、数据传输和释放连接。在进行数据传输之前两个节点之间需要先建立一条专用的物理路径,在传输过程中始终被用户独占,直到通信结束后才被释放。

电路交换的优点:

  1. 通信延迟小。因为通信线路为通信双方专用,数据直达。
  2. 有序传输。不存在失序问题。
  3. 没有冲突。不同的通信双方使用不同的信道。
  4. 适用范围广。既可以传输模拟信号,也可以传输数字信号。
  5. 实时性强。通信双方连接一旦建立,双方随时可以通信。

但是因为电路交换需要搭建物理电路连接,也有以下几点缺点:

  1. 建立连接时间长。
  2. 线路利用率低下。被独占后,其他用户不能使用。
  3. 灵活性差。电路中任何一个节点出现故障都需要重新拨号。
  4. 难以规格化。不同类型规格的终端很难相互通信。
  5. 难以实现差错控制。

报文交换

数据交换的单位时报文,用户数据加上源地址、目的地址等信息封装成报文。报文交换采用存储转发技术,整个报文先传送到相邻节点,全部存储后找转发表,再转发到下一个节点,知道达到目的地址。每个报文可以选择不同的路径。

报文交换的优点:

  1. 无需建立连接。没有建立连接的时延,用户可以随时发送报文。
  2. 动态分配线路。交换设备存储报文后,可以选择一条合适的线路进行转发。
  3. 线路可靠性高。某个节点发生故障之后,可以重新选择一条线路传输。
  4. 线路利用率高。只有再传输数据时,才占用通信资源。
  5. 提供多目标服务

但是报文交换还是有以下缺点:

  1. 转发时延高。交换节点需要接收完报文之后才能进行转发。
  2. 缓存开销打。原因同 1。
  3. 错误处理低效。报文较长时发生错误的概率也大,重传代价太大。

分组交换

分组交换也才采用存储转发技术,它在报文交换的基础上,针对报文交换的缺点进行了改进。在发送数据前,将较长的报文分成若干较小的报文段,再在每个报文段前面加上一些必要的控制信息组成首部,构成分组。

分组交换的优点和报文交换如出一辙,同时因为分组的原因,分组交换可以采用流水线技术,大大提高传输效率,相比于报文交换也减小了数据出错的概率。但是分组交换比起电路交换来说仍然存在转发时延,同时分组需要携带额外的信息量,当采用数据报方式传输时,可能会出现失序、丢失或者重复分组等一系列问题。如果采用虚电路方式,则又需要呼叫建立连接和释放虚电路。

三种交换方式比较

计算机网络分类

按覆盖范围分类

局域网 LAN:一般用微型计算机或者工作站通过高速线路相连。
城域网 MAN:如其名,覆盖一座城市。
广域网 WAN:长距离通信,覆盖国家地区,因特网的核心部分,任务是互连分布在不同区域的城域网和局域网。

按使用者分类

公用网:电信公司出资建造的网络,交钱能用。
专用网:某个部门为了特殊业务需要而建造的网络,如军用网

传输技术分类

广播式网络:所用联网的计算机共享一个公共通信信道。
点对点网络:每个物理线路连接一对计算机

按拓扑结构分类

总线型、星型、环形网络,网状网络

按传输介质分类

有线网络,无线网络

计算机网络的性能指标

速率: bit/s。

带宽: 通信线路的最大传输速率 bit/s。

吞吐量: 单位时间内某个网络的数据量。

时延: 数据从一段发送到另一端所需要的时间,发送时延,传播时延,处理时延,排队时延。

时延带宽积: 发送端第一个 bit 到达终点时,发送端已经发送的 bit 数。

往返时间: RTT,发送数据接收到确认所序时间。

利用率:信道利用率=有数据通过时间/总时间

丢包率: 表示网络拥堵状况。

OSI 模型 和 TCP/IP 模型

计算机网络各层及其协议的集合称为网络的体系结构。体系结构是抽象的,实现是具体的是真正运行的计算机软硬件。计算机网路体系结构一般都会进行分层,将庞大的系统分成若干简单的层次。分层一般遵循以下原则:

  1. 每层都是实现一种相对独立的功能,降低大系统的复杂度。
  2. 各层之间的接口自然清晰,易于理解,相互交流尽可能少。
  3. 各层功能的精确定义独立于具体的实现方法,可以采用最适合的技术实现。
  4. 保持上下各层的独立性,保持单向服务提供。

协议数据单元(PDU):对等层之间传送的数据单位。

服务控制单元(SDU):为完成用户所要求的功能而传送的数据。

协议控制信息(PCI):控制协议操作的信息。

各层在传输数据数据时,将从第 n+1 层收到的 PDU 作为第 n 层的 SDU,加上第 n 层的 PCI 就封装成了第 n 层的 PDU,再交给第 n-1 层发送。

接下来介绍三个概念:

协议

要在网络中有条不紊的交换数据,就需要通信双方遵循事先约定好的规则,这些规则规定了数据交换的格式以及同步相关的问题,这些规则被称为网络协议,是控制对等实体之间进行通信的规则的集合,不对等实体之间是没有协议的。协议由语法、语义、同步三部分组成。

  • 语法,即数据与控制信息的格式。
  • 语义,即需要发出什么样的控制信息,完成什么样的应答。
  • 同步,执行各种操作的时序关系。

接口
同一节点内相邻两层的实体交换信息的逻辑接口称为服务访问点(Server Access Point),每层只能为紧邻的层定义接口,不能跨层定义接口。

服务
服务是指下层为上层提供的功能调用,是垂直的。对等实体在协议控制下,使得本层能为上层提供服务,但是先本层的协议还需要使用下层提供的服务。当上层使用下层服务是需要与下层交换命令,这些命令称为服务原语。

下面介绍服务的分类:

  • 面向连接服务和无连接服务。
  • 可靠服务和不可靠服务:可靠指的是网络具有纠错检错应答机制,不可靠只是指网络尽量正确的传送数据。

OSI 模型

从上往下分别是

应用层

解决通过应用进程之间的交互实现特定网络应用的问题,是用户与网络的接口。协议: DNS、FTP、SMTP、HTTP/HTTPS、DHCP、RIP、BGP 等。

表示层

解决通信双方交换信息的表示问题,如: 数据格式变换、数据加密解密、数据压缩恢复

会话层

解决进程之间的会话问题,为表示层建立连接、有序传输数据、管理会话进程、实现数据同步

运输层

解决进程之间基于网络通信问题,如端到端传输、流量控制、差错控制
协议: TCP(使用报文段),UDP(用户数据报)

网络层

解决分组在多个网络之间传输的问题,如路由旋转、流量控制、拥塞控制、差错控制
协议: IP、ARP、NAT、ICMP、IGMP、OSPF

数据链路层

解决分组在一个网段上的传输问题,如: 组帧、差错控制、流量控制、访问控制
协议: CSMA/CA、CSMA/CD、MAC

物理层

解决信号的处理问题

TCP/IP 模型

于上面相比没有会话层和表示层,数据链路层和物理层合并成网络接口层

OSI 模型 和 TCP/IP 模型 的不同

网络层:OSI 是无连接+面向连接,TCP/IP 是无连接,不可靠
传输层:OSI 是面向连接的,TCP/IP 是无连接+面向连接

一些概念属于补充

图片源于湖科大 PPT
text
实体:可发送或接受消息的硬件或软件进程。
对等实体:收发双方相同层次中的实体。
协议:控制两个对等实体进行逻辑通信的规则的集合。
服务:在协议控制下,两个对等实体之间的逻辑通信使得本层可以像上层提供服务,要实现本层协议,还需要下层提供的服务,协议是“水平的”,服务是“垂直的”,实体看得见相邻下层所提供的服务,但不知道下层服务的具体协议(下层协议对上层实体透明)。
服务原语: 上层使用下层所提供的服务必须通过与下层交换一些命令

物理层

物理层的基本概念

物理层要解决的主要问题是考虑怎样才能在连接各种计算机的传输媒体上传输数据 bit 流
物理层协议的主要任务:机器特性、电气特性、功能特性、过程特性。

传输媒体

引导型

同轴电缆:价格高昂且布线不灵活,由双绞线代替。
双绞线:绞合的作用是可以抵御部分来自外界的电磁波干扰。
光纤:通信容量大,传输损耗小,远距离传输更加经济,抗电磁性能好,体积小重量轻。

非引导型

无线电波,微波,红外线等。

传输方式

串行和并行传输

串行:按 bit 时间顺序传输—远距离传输。
并行:多 bit 同时通过多条信道传输。

通信交互方式

单工通信:只能一个方向通信。
半双工通信:可以双向通信,但是同一时间只能有一个。
全双工通信:可以同时发送和接受,需要两条信道。

编码与调制

码元: 一个固定时长的信号波形(数字脉冲)表示一个 K 进制数字,代表不同离散数值的基本波形(16 进制码元->16 种形态->4bit 数据)

编码为数字信号

image-1.png

归零编码 RZ:高 1 低 0,每个始终周期中间变为 0,归零编码把时钟信号用归零的方式编码在了数据内,称为“自同步”信号,归零占用一部分带宽,传输速率有一定影响。

非归零编码 NRZ:需要时钟信号线,即外同步(以下四种都可以自同步)。

反向非归零编码 NRZI:0 反转信号,1 保持,既能传输时钟信号,又不损失系统带宽。

曼彻斯特编码:用两个相等的间隔表示一个码元,前一个间隔高则 1 低则 0,码元中间信号跳变,占用的频带宽度是原始基带宽度的两倍(以太网使用)。

差分曼彻斯特编码:前半个码元和上一码元的后半个码元相同为 1 不同为 0,码元中间信号跳变,主要使用在局域网传输。

调制为模拟信号

image-2.png

调幅:调幅(AM)或幅移键控(ASK)通过改变载波的幅度来表示数字信号 1 和 0,这种方式容易实现但是抗干扰能力差.
调频:调频(FM)或频移键控(FSK)通过改变载波的频率来表示数字信号 1 和 0,这种方式容易实现,抗干扰能力强,使用较为广泛。
调相:调相(PM)或相移键控(PSK)通过改变载波的相位来表示数字信号 1 和 0。分为绝对调相和相对调相。
正交 QAM
image-3.png

信道的极限容量

任何实际的信道都是不理想的,信号在信道上传输会不可避免地产生失真。但是,只要接收端能够从失真的信号波形中识别出每个码元,这种失真就对信号质量没有影响。

信道失真因素

码元传输速率,信号传输速率,噪声干扰,传输媒体质量

奈氏准则

在假定的理想条件下,为了避免码间串扰,码元传输速率是有上限的
理想低通信道的

$$
最高码元传输速率 = 2W Baud = 2W (码元/秒 )= 2Wlog2 V (比特/秒)
$$

W:信道带宽(Hz)
Baud:波特(码元/秒)
V:每个码元离散电平的数目
要提高信息传输速率(比特率),就必须设法使每一个码元能携带更多比特的信息量,需要采用多元制

香农公式

带宽受限且有高斯白噪声干扰的信道的极限信息传输速率

$$
c = W * log_2(1 + \frac {S}{N})
$$

C:信道的极限信息传输速率(bit/s)。
S:信道内所传信号的平均功率。
N:信道内的高斯噪声功率。

$$
信噪比(dB) = 10 × log10(S/N)
$$

信道带宽或信道中信噪比越大,信息的极限传输速率越高
信道带宽一定的情况下,根据奈氏准则和香农公式,想要提高信息的传输速率就必须采用多元制,和努力提高信道中的信噪比。

物理层的设备

中继器
中继器的主要功能是整形、放大并转发信号,以消除信号经过一段长电缆后产生的失真和衰落,使信号的波形和强度达到所需要求,进而扩大网络传输距离。中继器是用来扩大网络规模的最简单最廉价的设备。中继器的两端是网段而不是子网,使用中继器连接的几个网段仍然属于同一个子网。如果中继器发生故障,则相邻的两个网段的工作都会受到影响。中继器不能连接两个不同速率的局域网。

集线器就是一个多端口中继器。

数据链路层

数据链路层的主要任务是实现帧在一段链路上或一个网络中的传输。数据链路层的协议有很多,但三个基本问题是共同的:封装成帧、透明传输和差错检测。数据链路层使用的信号主要有两种:

  1. 点对点信道,使用一对一的通信方式,PPP 协议是目前使用最广泛的点对点协议。
  2. 广播信道,这种信道上连接的主机很多,使用一对多广播的通信方式,采用共享广播信道的有限局域网普遍使用 CSMA/CD 协议,无线局域网则使用 CSMA/CA 协议。

链路:指从一个节点到相邻节点的一段物理线路,中间没有其他交换节点。
数据链路:当一条链路在传输数据时,除了链路本身,还需要一些必要的通信协议来控制数据的传输,把这些协议的软硬件加在链路上,就构成了数据链路。
:数据链路层对等实体之间进行逻辑通信的协议数据单元。

数据链路层为网络层提供服务,一共分为三种:

  1. 无确认无连接服务。源主机发送帧是不需要建立连接,目的主机接收帧时不需要返回确认。数据的可靠性由高层负责。
  2. 有确认无连接服务。源主机发送帧是不需要建立连接,目的主机接收帧时必须返回确认。若源主机一段时间内没有收到确认则重传分组。
  3. 有确认面向连接服务。源主机发送帧是必须建立连接,目的主机接收帧时必须返回确认。

有连接就一定确认,不存在无确认面向连接的服务。

封装成帧和透明传输

封装成帧是指在一段数据前后分别添加首部和尾部,构成帧。帧首部和尾部包含一些重要的控制信息。首部和尾部的作用之一是帧定界。为了提高数据链路层的传输效率 v,应当使帧的数据载荷京可能地大于首部和尾部的长度,同时考虑到对缓存空间的需求以及差错控制等诸多因素,每一种链路层协议都规定了帧的数据载荷的长度上线,即最大传送单元(MTU),比如以太网的 MTU 为 1500 个字节。透明传输是指数据链路层对上层交付下来的协议数据单元 PDU 没有任何限制,就好像数据链路层不存在一样。

接下来介绍封装成帧的四种方法。

字符计数法

字符计数法是指在帧首部使用一个计数字段来记录该帧所包含的字节数(包括计数字段本身),当接收方读取帧首部的计数字段时就能知道帧的字节数,由于帧是连续发送的,继而也能确定下一个帧开始的位置。这种方法最大的问题就是如果计数字段出错,将失去帧边界划分的一句,接收方无法判断帧的长度和下一帧的起始位置,收发双方将会失去同步。

字节填充法

字节填充法通过使用一个特定字符来界定帧的边界,为了使信息位中的特殊字符不被误判成帧定界符,可在特殊字符之前添加一个转义字符来区分,接收方收到转义字符之后就知道后面跟随的是数据信息而不是控制信息。

零比特填充法

零比特填充法允许数据帧包含任意比特,它使用一个特定的比特串 0111110 来标志帧边界,当遇到连续的五个 1 时,自动在后面加入一个 0,接收方接收到连续的五个 1 时,则自动删除后面跟着的 0 恢复数据。

违规编码法

在物理层进行比特编码时,常采用违规编码法。曼彻斯特编码将数据 1 编码成“高-低”电平对,将数据 0 编码成“低-高”电平对,而“高-高”和“低-低”在数据比特中是违规的,因此借用这些违规编码来表示帧边界。局域网 IEEE 802 标准就采用了这种方法。违规编码法不采用任何填充计数便能实现数据的透明传输,但只适用于采用冗余编码的特殊编码环境。

现在常用的组帧方法是零比特填充法和违规编码法。

差错控制

实际的通信链路都不是理想情况,比特在传输过程中可能会产生差错,1 可能会变成 0,0 也可能会变成 1,这种差错称为比特差错,这里只讨论比特差错。
差错控制的方法主要分为两类::一是自动请求重传(Automatic Repeat reQuest,ARQ),当接收方检测到差错时,就设法通知发送发重发知道接收到的数据正确为止;二是向前纠错(Forward Error Correction,FEC),接收方不但能发现差错,而且能确定错误的位置并且纠错,因此差错控制又可分为检错编码和纠错编码。

奇偶校验码

奇偶校验码是奇校验码偶校验码的统称,是最基本的检错码,由数据位加一位校验位组成。

  • 奇校验码:附加一个校验位之后,使得编码中 1 的个数位奇数。
  • 偶校验码:附加一个校验位之后,使得编码中 1 的个数位偶数。

不管是奇校验码还是偶校验码,都只能检测出奇数位错误的情况,且不能确定位置。

循环冗余校验码

数据链路层广泛使用循环冗余校验码(CRC)。循环冗余校验的基本步骤:

  1. 收发双方约定生成多项式 G(x),最高位和最低位必须为 1,比如多项式$x^3+x^2+1$可以表示为 1101.
  2. 发送方基于待发送的数据和 G(x),计算出冗余码,将冗余码加到数据后面一起发送给接收方。
  3. 接收方通过 G(x)计算收到的数据是否产生差错。

计算冗余码步骤如下:

  1. 加 0,G(x)阶数为 r 就加 r 个零。
  2. 模 2 除法。就是异或运算。最后的余数就是冗余码 R

下面是自顶向下中的一个例子:

IMG_20240724_142820.jpg

流量控制和可靠传输

流量控制

因为链路两端节点的工作速率和缓存存在差异,所有发送方的发送能力可能大于接收方的接收能力。若不适当限制发送方的发送速率,前面来不及接收的帧将会被后面不断发来的帧淹没,造成帧丢失。所谓流量控制就是限制发送方的发送速率不超过接收方的接收能力。
在 OSI 体系结构中,数据链路层具有流量控制的功能,而在 TCP/IP 体系结构中,流量控制被移到了传输层。对于数据链路层来说,控制的是相邻节点间的数据链路上的流量,而对传输层来说控制的是源端到目的端之间的流量。

可靠传输

可靠传输是指发送方发送的数据都能被接收方正确接收,通常采用确认超时重传两种机制来实现。确认是指接收方每收到发送方发来的数据帧,都要向发送方发回一个确认帧,表示正确地收到该数据帧。超时重传是指发送方在发送一个数据帧之后会启动一个计时器,若在规定时间内没有收到 所发送的数据帧的确认帧,则重发数据帧,直到成功。
在有线网络中,链路的误码率较低,为了降低开销,并不要求链路层提供可靠传输服务,即使出现了差错,可靠传输问题也可以交由上层处理。而无线网络的链路易受到干扰,误码率较高,因此要求数据链路层必须向上层提供可靠传输服务。

滑动窗口机制

在任意时刻,发送方都维持一组连续的允许发送帧的序号,称为发送窗口;接收方也维持一组允许接收帧的序号,称为接收窗口。发送窗口表示在还未收到对方确认信息的情况下,发送方最多可以发送多少个帧和哪些帧。接收窗口同理。

qq_pic_merged_1721896652086.jpg

发送方每按序收到一个确认帧,就将发送窗口向前滑动一个位置,直到窗口内没有可以发送的帧,发送方就停止发送。

滑动窗口具有以下这些特性:

  1. 只有接收窗口向前滑动时(接收方发送了确认),发送窗口才有可能向前滑动(发送方收到了确认)。
  2. 当接收窗口为 1 时,可保证帧的有序接收。
  3. 在数据链路层的滑动窗口协议中,窗口大小在传输过程中是固定的,这与传输层提到的 TCP 不同。

停止-等待协议(S-W)

发送方每次只能发送一个帧,当发送方收到接收方的确认之后,才可以发送下一个帧。从滑动窗口的角度看,在停止-等待协议中,发送窗口=接收窗口=1.因为每发送一个帧停止等待确认帧,帧的编号仅用 1 比特表示即可,发送的帧交替使用 0 和 1 来标识,确认帧用 ack0 和 ack1 表示。

在停止-等待协议中,除了数据帧丢失外,还可能出现以下差错:

  1. 到达接收方的数据帧在传输过程中出现了数据差错,接收方经过差错检测之后,简单地将该数据帧丢弃。这需要发送设置一个计时器,在发送一个帧之后,发送方等待确认,当计时器超时时,重新发送该数据帧,直到收到该数据帧的 ack 为止。超时时间的设置应当适当大于 RTT
  2. 接收方发出的 ack 被破坏,发送方不能正确接收 ack。这时发送方会因为超时进行重传,接收方收到重复的帧会将该帧丢弃,并重新发送该帧的 ack。

为了解决以上问题的需要,发送方和接收方都要设置一个帧缓冲区。当发送方发送完数据之后,必须在其发送缓存中保留该数据副本,只有收到 ack 之后才能清楚该副本。

停止-等待协议只能一个帧一个帧的进行发送,信道利用率极低,为了提高传输效率,就有了后退 N 帧协议(GBN)和选择重传协议(SR),在这两种协议下发送方可以连续发送多个帧,而不是每发完一个帧都要停止等待 ack。

后退 N 帧协议(GBN)

在后退 N 帧协议中,发送方可在未收到确认帧的情况下,将序号在发送窗口内的多个数据帧全部发送出去,但是接收窗口还是 1。后退 N 帧指的是,发送方在发送 N 个数据后,若发现这 N 个帧的前一个数据帧在计时器超时的时候仍未收到 ack,则判该帧丢失,此时发送方将重传出错帧和后续 N 个帧。

若采用 n 比特对帧进行编号,则其发送窗口 W 应该满足$1 < W \le 2^n-1$。如果$W>2^n-1$,则会造成接收方无法分辨新旧数据帧。

后退 N 帧协议通过连续发送帧提高了信道利用率,但是一个数据分组的差错会引起大量数据分组进行重传,在信道质量较差的情况下,后退 N 帧协议并不比停止等待协议的信道利用率高。

后退 N 帧协议采用累计确认的方式,接收方不必对收到的每一个数据分组发送一个确认分组,而是可以在收到几个序号连续的数据分组后,对按序到达的最后一个数据分组发送确认分组。接收方何时发送由具体实现决定,确认分组 ackn 表示序号为 n 以及之前的所有分组都以及被正确接收。

选择重传协议(SR)

后退 N 帧协议在一个帧出错时,需要重传 N 个数据帧,为了设法只重传出现差错和计时器超时的数据帧,提出了选择重传协议。选择重传协议的接收串口不再是 1,因为需要先收下失序但是正确到达数据帧,等到所有缺失的序号都到齐后再一并交由上层处理。为了使发送方仅重传错的帧,接收方不再采用累计确认,而要对每个正确接收的数据帧一一确认。在选择重传协议中接收方检测到某个数据帧出错,就向发送方发送一个否定帧 NAK,要求发送方立即重传 NAK 指定的数据帧。

选择重传协议的接收窗口和发送窗口都大于 1,一次可以发送和接收多个数据帧。若采用 n 比特对数据帧进行编号,需要满足以下条件:

  1. $W_R + W_T \le 2^n$(否则在接收方的接收窗口移动后,若有一个帧或者多个帧丢失,发送方回重传旧的数据帧,序号会与新序号重叠,接收方无法分辨新旧,类似后退 N 帧协议)
  2. $W_R \le W_T$(如果接收窗口大于发送窗口,则接收窗口永远不可能填满,造成空间浪费)

一般情况下$W_R=W_T$。

介质访问控制

介质访问控制所要完成的任务主要是为使用介质的每个节点隔离来自同一信道上其他节点所传送的信号,以协调各个节点的信息传输。比如有一个广播信道,ABCD 四个节点共享这个广播信道,假设 A 要与 C 通信,B 要与 D 通信,如果不进行控制,两对节点的通信可能会因为相互干扰而失败。用来决定广播信道分配的协议属于数据链路层的子层,称为介质访问控制(Medium Access Control,MAC)子层。

信道划分介质访问控制

信道划分介质访问控制通过把时域和频域资源合理的分配给信道上的各个设备,以达到将多个设备的通信隔离的目的。信道划分介质访问控制是通过复用技术实现的,所谓复用,就是在发送端把多个发送方的信号组合在一条物理信道上,在接收端把这些信号分离,并发送给对应的接收方。信道划分介质访问控制分为以下 4 种。

时分复用(TDM) 就是将信道的传输时间划分为一段段等长的时间片,称为 TDM 帧,每个用户在每个 TDM 帧中占用固定序号的时隙,每个用户所占用的时隙周期性出现。所用用户在不同时间占用同样的信道资源。而当用户在某个时间段没有数据时,其他用户也无法利用这个空闲资源,所有时分复用的信道利用率不高。所以对时分复用提出了一种改进,统计时分复用(STDM) 也称为 异步时分复用。它并不固定分配时隙,而是按需分配,当用户有数据需要传送时,才会分配到时隙。

频分复用(FDM) 就是将信道的总频带划分为多个子频带,每个子频带作为一个子信道进行通信。所有用户在同样时间占用不同的频带资源,每个子信道的频带可以不同但是总和不能超过总频带,同时在实际应用中,各个信道间应该插入隔离频带,防止信道间的相互干扰。

波分复用(WDM) 就是光的频分复用,光纤中传输多种不同波长的光信号,因为波长不同,各路光信号互不干扰,最后用光分器将各路波长分解出来。

码分复用(CDM) 又称为码分多址(CDMA),是采用不同编码来区分各路原始信号的一种复用方式。举一个例子来说明,令向量 S 表示 A 的码片向量,向量 T 表示 B 的码片向量。假设 A 的码片向量被指派为 00011011,则 A 发送 00011011 表示比特 1,发送 11100100 表示比特 0。为了方便计算将码片中的 0 记作-1,将码片中的 1 记作+1,则 A 的码片序列为(-1,-1,-1,+1,+1,-1,+1,+1)。
不同用户的码片序列需要相互正交,即向量 S 和向量 T 的规格化内积为 0:

$$
S*T=\frac{1}{m} \sum_{i=1}^{m} S_iT_i=0
$$

任何用户的码片向量和该码片向量自身的规格化内积都为 1:

$$
S*S=\frac{1}{m} \sum_{i=1}^{m} S_iS_i=1
$$

任何用户的码片向量和该码片向量自身的反码的规格化内积都为-1:

$$
S*\bar S=\frac{1}{m} \sum_{i=1}^{m} S_iS_i=1
$$

取 T 为(-1,-1,+1,-1,+1,+1,+1,-1),$S*T=0$。
当 A 向 C 发送数据 1,B 向 C 发送 0,两个信号相加,在公共信道上传输的就是

$$
S+\bar T=(0,0,-2,2,0,-2,0,2)
$$

到达 C 之后,C 利用 A 的码片序列对接收到的向量进行规格化内积,可以得到数据 1:

$$
S*(S+\bar T)=1+0=1
$$

同理利用 B 的码片序列可以得到数据 0:

$$
T*(S+\bar T)=1+0=-1
$$

码分复用技术具有频谱利用率高、抗干扰能力强、保密性强等优点,还可以减少投资及运行成本,主要用于无线通信系统,尤其是移动信息系统。

随机访问介质访问控制

ALOHA 协议

ALOHA 协议分为两种:纯 ALOHA 协议和时隙 ALOHA 协议。

  1. 纯 ALOHA 协议。它的基本思想是,当总线形网络中的任何站点需要发送数据时,可以不进行检测就发送数据。若在一段时间内未收到确认,则认为发生了冲突,等待一段时间后重新发送,直到发送成功。显然纯 ALOHA 协议的冲突率很高,网络吞吐量极低。
  2. 为了解决纯 ALOHA 协议的缺点,提出了时隙 ALOHA 协议。时隙 ALOHA 协议同步各个站点的时间,将时间划分未一段段等长的时隙,规定站点在每段时隙开始时才能发送帧,发送帧的时间必须小于或等于时隙的长度,降低了发生冲突的可能。

即使采用时隙 ALOHA 协议,发生网络冲突的概率还是很大。

CSMA 协议

CSMA 全名是 Carrier Sense Multiple Access,意思是载波监听多路访问。每个站点在发送数据前都先监听公共信道,发现信道空闲才会发送数据,大大降低了发生冲突的可能。根据监听方式和监听信道忙后的处理方式不同,CSMA 协议可以分为三种:

  1. 1-坚持 CSMA:当站点要发送数据时,先监听信道。若信道空闲,则立即发送数据;若信道忙,则继续监听信道直至信道空闲。坚持表示检测到信道忙坚持监听,1 表示一但检测到信道空闲立即发送数据。
  2. 非坚持 CSMA:当站点要发送数据时,先监听信道。若信道空闲,则立即发送数据;若信道忙,则放弃监听,随机等待一段时间后,再重新监听。非坚持 CSMA 在监听到信道忙后立即放弃监听,降低了多个站点等待信道空闲后同时发送数据导致冲突的概率,但也增加了数据在网络中的平均时延。
  3. p-坚持 CSMA:当站点要发送数据时,先监听信道。若信道空闲,则立即发送数据;若信道忙,则继续监听信道直至信道空闲,当监听到信道空闲时,以概率 p 发送数据,概率 1-p 推迟到下一个时隙发送数据,直到数据发送成功。

CSMA/CD 协议

CD 的全文是 Collision Detection,意思是碰撞检测。是 CSMA 协议的改进方案,在 CSMA 的基础上增加了碰撞检测,适用于总线型网络或者半双工网络环境。全双工网络采用两条信道分别用来发送和接收,不会产生冲突所有不需要 CSMA/CD 协议。碰撞检测就是边发送数据边监听,若监听到冲突则立即停止数据发送,随机等待一段时间后重新发送。CSMA/CD 的工作流程可以概括为“先听后发,边听边发,冲突停发,随机重发”。

争用期:以太网的端到端往返时间称为争用期,只有经过争用期这段时间还未检测到冲突时,才能确定这次发送不会发生冲突。为了确保共享总线以太网上的每一个站点在发送完一个完整的帧之前能检测到是否产生了碰撞,帧发送时延就不能小于共享总线以太网端到端的传输时延,即一个争用期。

最小帧长:由上文可知,发送时延必须不小于一个争用期,可以看出对于以太网由一个最小帧长。如果检测到冲突,数据帧就会停止发送,这是发出去的数据帧一定小于最小帧长,可以判断这是无效帧。最短帧长的计算:$最短帧长=总线传播时延数据传输速率2$。

二进制退避算法:CSMA/CD 采用截断二进制退避算法来确定冲突后重传的时机。算法细节如下。

  1. 确定基本退避时间,一般取争用期。
  2. 从离散的整数集合{0,1,…,2^k-1}中随机取出一个数 r,重传时间就是就是 r 倍的争用期。k=min(重传次数,10)。
  3. 当重传 16 次仍然不成功,说明网络太拥挤,认为该帧无法发出,抛弃该帧并向高层报错。

QQ_1721958357809.png

CSMA/CA 协议

在无线局域网中,不能简单搬用 CSMA/CD 协议。原因如下:

  • 接收信号的强度往往远远小于发送信号的强度,且在无线介质上信号强度的动态变化范围很大,如果要实现碰撞检测,硬件开销会很大。
  • 在无线通信中,并非所有站点都能听见对方,即存在“隐蔽站”。

IEEE 802.11 中定义了广泛应用于无线局域网的 CSMA/CA 协议。CA 全文为 Collision Avoidance,意思时碰撞避免。碰撞避免并不是指协议可以完全避免冲突,而是协议的设计要尽量降低冲突发生的概率。因为无线局域网不采用碰撞检测,一旦站点开始发送,就会发送全部数据帧,如果发生冲突会严重影响网络的效率。

为了避免冲突,802.11 规定,所有站点完成发送后,必须等待一段很短的时间才能继续发送下一个帧。这段时间称为帧间间隔(IFS)。帧间间隔的长短取决于该站的要发送帧的类型。802.11 使用了三种帧间间隔:

  1. SIFS(短 IFS):最短的 IFS,用来分隔属于一次对话的帧,使用 SIFS 的帧类型有 ACK 帧、CTS 帧、分片后的数据帧以及所有回答 AP 探询的帧。
  2. PIFS(点协调 IFS):中等长度的 IFS,在 PCF 操作中使用。
  3. DIFS(分布式协调 IFS):最长的 IFS,用于异步帧竞争访问的时延。

IEEE 802.11 还采用了虚拟载波监听机制,让源站将它要占用信道的持续时间及时的通知所有站点,使其他站在这段时间内停止发送。虚拟载波监听并没有真正的监听信道,而是收到了源站的通知才不发送数据,达到了类似载波监听的效果。CSMA/CA 具体流程大致如下:

  1. 若站点最初有数据要发送(而非发送不成功重传),且检测到信道空闲,那么在等待时间 DIFS 后,就发送整个数据帧。
  2. 否则,站点执行 CSMA/CA 退避算法,选取一个随机退避值。一旦检测到信道忙,退避计时器保持不变。只要信道空闲就开始计时。
  3. 当退避计时器减少至 0 是,站点就发送整个帧并等待确认。
  4. 发送站若收到确认,则开始发送下一个帧,此时回到步骤 2,如此往复。

隐蔽站的处理——RTS 和 CTS

为了处理隐蔽站问题,802.11 标准允许发送站对信道进行预约。源站要发送数据帧之前,若信道空闲,则等待时间 DIFS 后,广播一个 RTS 控制帧,它也包括这次通信的源地址、目的地址和持续通信时间。若 AP 正确收到 RTS 帧,且信道空闲,在等待时间 SIFS 后,向源站发送一个 CTS 控制帧。源站在收到 CTS 后再等待时间 SIFS 时间就可以开始发送数据帧。若 AP 正确接收了数据帧,则等待时间 SIFS 发送 ACK。AP 覆盖范围内的其他站点收到 CTS 帧后,将在 CTS 帧所规定时间内抑制发送。

轮询访问/令牌传递协议

在令牌传递协议中,一个令牌(Token)沿着环形总线在各站之间一次传递。令牌是一个控制帧,它本身不包含信息,仅控制信道的使用,确保同一时刻只有一个站点使用信道。当站点要发送帧时必须要等待令牌,站点发送完一帧之后,释放令牌以便其他站点使用。

局域网

在物理层介绍过,局域网就是一个较小范围内,将各种计算机、外部设备和数据库系统通过传输介质连接起来,组成资源和信息共享的计算机互联网络。局域网的特性主要由三个要素决定:拓扑结构、传输介质、介质访问控制方式,其中最重要的就是介质访问控制方式,它决定着局域网的技术特性。IEEE 802 标准定义的局域网参考模型只对应 OSI 模型的数据链路层和物理层,并将数据链路层分为逻辑链路控制子层(LLC)和介质访问控制(MAC)子层。LLC 已经不怎么使用了,现在大部分网卡只装有 MAC 协议。

IEEE802.3 有线局域网

以太网是现在最流行的有限局域网技术。以太网逻辑上采用总线型的拓扑结构,所有计算机共享一条总线,信息以广播方式发送,以太网使用 CSMA/CD 协议对总线进行访问控制。严格来说,以太网是指符合 DIX Ethernet V2 标准的局域网,但该标准于 IEEE 802.3 差别很小,故通常也将 802.3 称为以太网。
以太网采用无连接的工作方式,即不对发送的数据帧编号,又不要求接收方发送确认,即以太网尽最大努力交付数据,提供的是不可靠服务,对差错的纠正由高层完成。以太网发送的数据都是使用曼彻斯特编码,每个码元中间出现一次跳变,接收方利用这种跳变很方便地可以将同步信号提取出来。

标准名称 10BASEE5 10BASE2 10BASE-T 10BASE-F
传输介质 同轴电缆(粗缆) 同轴电缆(细缆) 非屏蔽双绞线 光纤对(850nm)
编码 曼彻斯特编码 曼彻斯特编码 曼彻斯特编码 曼彻斯特编码
拓扑结构 总线型 总线型 星型 点对点
最大段长 500m 185m 100m 2000m
最多节点数目 100 30 2 2

以太网 MAC 地址

IEEE 802 标准为局域网规定了一种 48 位的全球地址,是指局域网上每台计算中固化在适配器的 ROM 中的地址,称为物理地址或者 MAC 地址,一台计算机如果不更换适配器,MAC 无论如何都不会发生变化。
MAC 地址长 6 字节,高 24 位为厂商代码,低 24 位为厂商自行分配的适配器序列号。当路由器通过适配器连接到局域网是,适配器上的 MAC 地址就用来标志路由器的某个接口。
适配器从网络上每收到一个 MAC 帧都要用硬件检查 MAC 帧中的目的地址。若是发往本站的帧则接收,否则丢弃。一般有三种接收的情况:

  1. 单播帧:收到的帧的目的地址与本站的 MAC 地址相同。
  2. 广播帧:发送给本局域网中所有站点的帧。
  3. 多播帧: 发送给本局域网中部分站点的帧。

以太网 MAC 帧格式

以太网MAC帧格式

  • 目的地址:目的适配器的 MAC 地址。
  • 源地址:源适配器的 MAC 地址。
  • 类型:指出数据段交由上层什么协议进行处理。
  • 数据:以太网最大传输单元是 1500 字节,若 IP 数据报超过 1500 字节需要对 IP 数据报进行分片。因为 CSMA/CD 协议,以太网的最小帧长为 64 字节所有数据最小为 46 字节,当数据小于 46 字节时,需要添加整数字节的填充字段,保证帧长不小于 64 字节。
  • 校验码:检测范围从目的地址到数据字段,采用 32 位 CRC 校验。

高速以太网

速率超过 100Mb/s 的以太网称为高速以太网。

标准名称 10BASE-T 以太网 吉比特以太网 10 吉比特以太网
传输速率 100Mb/s 1Gb/s 10Gb/s
传输介质 双绞线 双绞线或光纤 双绞线或光纤
通信方式 半双工和全双工 半双工和全双工 全双工

IEEE802.11 无线局域网

802.11 局域网的 MAC 帧

802.11 帧有三种类型:数据帧、控制帧和管理帧。数据帧格式如下:

无线局域网MAC帧格式

  • MAC 首部:共 30 字节。
  • 帧主体:帧的数据部分,不超过 2312 字节。
  • 帧检验序列:FCS 是 MAC 帧的尾部。

地址字段常用情况

去往 AP 来自 AP 地址 1 地址 2 地址 3
0 1 接收地址=目的地址 发送地址=AP 地址 源地址
1 0 接收地址=AP 地址 发送地址=源地址 目的地址

VLAN

以太网是一个广播域,当一个以太网中计算机太多时,很容易引发广播风暴,对信息保密和安全也不利。通过虚拟局域网(Virtual LAN,VLAN),可以将一个较大的局域网分割成一些较小的与地理位置无关的逻辑上的 VLAN,而每一个 VLAN 是一个较小的广播域。
划分 VLAN 有三种方式:

  1. 基于接口。将交换机的若干接口化为一个逻辑组,这种方法最简单也最有效,若主机离开接口,则可能进入了别的网络。
  2. 基于 MAC 地址。按 MAC 地址划分逻辑子网。
  3. 基于 IP 地址。根据网络层地址或协议划分 VLAN,这样 VLAN 可以跨越路由器,将多个局域网的主机连接。

PPP 协议

PPP 协议是现在最流行的点对点链路控制协议。主要有两种应用,一是用户通常都要连接到某个 ISP 才能接入互联网,PPP 协议就是用户计算机与 ISP 通信时所用的数据链路层协议;二是广泛用于广域网路由器之间的专用链路。
PPP 协议有三个组成部分:

  1. 链路控制协议 LCP:用来建立、配置、测试数据链路连接,以及协商一些选项。
  2. 网络控制协议 NCP:PPP 协议允许采用多种网络层协议,每个不同的网络层协议要用一个相应的 NCP 来配置,为网络层协议建立和配置逻辑连接。
  3. 一种将 IP 数据报封装到串行链路的方法。IP 数据报在 PPP 帧中就是其信息部分。

PPP 协议的特点:

  1. PPP 不适用序号和确认机制,只保证无差错接收,是不可靠服务。
  2. PPP 只支持全双工的点对点链路。
  3. PPP 两端可以允许不同的网络层协议,但仍使用同一个 PPP 通信。
  4. PPP 是面向字节的,所有 PPP 帧的长度都是整数个字节。

以太网交换机

以太网交换机也称二层交换机,二层指的是数据链路层,以太网交换机实质上是一个多接口网桥,他能将网络分成小的冲突域,为每个用户提供更大的带宽。

以太网交换机的特点:

  1. 当交换机的接口直接与主机或其他交换机相连时,可工作在全双工方式,并能同时连通多对接口,使每对相互通信的主机都能像独占信道一样,无冲突地传送数据,不需要使用 CSMA/CD 协议。
  2. 当交换机接口连接集线器时,只能使用 CSMA/CD 协议并在半双工通信方式下工作。
  3. 交换机时一种即插即用的设备,其内部的帧转发表时通过自学习算法,基于网络中各个主机的通信建立的。
  4. 交换机因为使用专用交换结构芯片,交换速率较高。
  5. 交换即独占传输介质带宽。

以太网交换机的两种模式:

  • 直通交换:只检查帧的目的 MAC 地址,以决定帧的转发接口。这种交换方式时延非常小,缺点是不检查差错直接转发。直通交换不适用于需要速率匹配、协议转换或差错检测的线路。
  • 存储转发交换:先将接收的帧缓存到高速缓存器中,并检查数据是否正确,确认无误后通过查找表转换为输出接口将该帧发送出去。优点是可靠性高,可以支持不同速率接口间的转换缺点式时延大。

交换机的自学习功能

交换机根据帧的目的 MAC 地址和转发表对帧进行转发:

  • 明确转发:知道从哪个接口转发。
  • 盲目转发:不知道从哪个接口转发,只能将其通过除进入接口以外的其他所有接口转发。
  • 丢弃:知道不应该转发,将其丢弃。

转发表中的每条记录有有效时间,到期自动删除,这是因为各个站点的 MAC 地址和交换机接口的对于关系不是永久的。

共享式以太网和交换式以太网对比

  1. 发送普通帧。对于共享式以太网,集线器将帧转发到其他所有接口,其他各主机根据目的 MAC 地址决定接收或丢弃该帧。对于交换式以太网,交换机收到帧后,根据目的 MAC 地址和转发表明确的转发给目的主机。
  2. 发送广播帧。共享式以太网和交换式以太网效果一致,但共享式以太网是各主机检测到是广播帧决定接收,交换式以太网是交换机识别是广播帧,在转发。
  3. 多对主机通信。共享式以太网必然产生冲突,交换式以太网可以多对接口并行。

网络层

网络层提供主机到主机的通信服务,主要任务是分组转发和路由选择。OSI 参考模型主张在网络层使用面向连接的虚电路服务,认为应由网络层来保证通信的可靠性。而 TCP/IP 体系结构的网络层提供的是无连接的数据报服务,它认为应由用户主机保证通信的可靠性。也就是说,其传送的分组可能出错、丢失、重复、失序或超时,这就使得网路中的路由器可以做得比较简单,大大降低网络造价。同时这种运行方式灵活,能够适应多种应用。

异构网络互连

互联网是由全球范围内数以百万计的异构网络互连而成。网络层的任务之一就是使这些异构网络实现互连。网络互连是指将两个以上的计算机网络,通过一定的方法,用一些中继系统相互连接起来,已构成更大的网络系统。根据所在的层次,中级启动分为四种:

  1. 物理层:转发器、集线器。
  2. 数据链路层:网桥、交换机。
  3. 网络层:路由器。
  4. 网络层以上:网关。

当使用物理层和数据链路层的中继系统时,只是把一个网络扩大了,从网络层的角度看仍然时一个网络。因此,网络互连一般是指路由器进行网络连接。TCP/IP 在网络互连上采用的是在网络层标准化协议,但是互连的两个网络可以是异构的。

路由和转发

路由器主要完成两个功能:路由选择和分组转发。

路由选择:根据路由协议构造路由表,同时经常或定期地与响铃路由器交换信息,获取网络最新拓扑,动态维护更新路由表,以决定分组到达目的地的最短路径。
分组转发:路由器根据路由表将分组从合适的端口转发出去。

数据报和虚电路

在第一章曾简单提到过虚电路和数据包两种服务,接下将详细介绍他们。

虚电路

在虚电路方式中,当两台计算机进行通信时,应当先建立网络层连接,也就是一条逻辑上的虚电路,连接一旦建立,就固定了虚电路的物理路径。与电路交换类似,通信构成也分为虚电路建立、数据传输和虚电路释放三个步骤。每次建立虚电路时,将一个未使用过的虚电路号分配给该虚电路,以区别本系统中的其他虚电路,然后双方就沿着已建立的虚电路传送分组。分组的首部只需要在建立的时候使用完整的目的地址,之后每个分组首部都是携带虚电路号即可。

虚电路方式的工作流程如下:

  1. 数据传输前,主机 A 与主机 B 先建立连接,主机 A 发出呼叫请求分组,分组通过中间节点到达主机 B,若主机 B 同意,则发出呼叫应答分组予以确认。
  2. 虚电路建立之后,数据开始传送。
  3. 传送结束,主机 A 发送释放请求分组拆除虚电路。

由此可以看出虚电路有以下特点:

  1. 虚电路通信链路的建立和拆除都需要时间开销,对交互式应用和短分组线代很浪费,但是对长时间频繁交换数据的场景很友好。
  2. 虚电路的路由选择体现在建立阶段。
  3. 虚电路提供了可靠的通信功能,能保证每个分组正确且有序到达。
  4. 虚电路链路上某个节点瘫痪,整条链路将会不能工作。
  5. 分组首部不包含地址而是虚电路号,开销稍微减小。

数据报

网络在发送分组前不需要建立连接。源主机的高层协议将报文拆成若干较小的数据段,并加上地址信息组成分组。中间节点短时间存储分组,找到最佳路由之后立即转发。网络不提供端到端的可靠传输服务,这使得路由器较为简单,造价低廉。

数据报服务有以下特点:

  1. 分组发送不需要建立连接,发送方可随时发送分组,网络中的节点可随时接收分组。
  2. 网络尽最大努力交付,不保证可靠传输;网络为每个分组独立地选择路由,转发的路径可能不同,因此分组不一定按序到达目的节点。
  3. 发送的分组包含完整的源地址和目的地址。
  4. 在中间节点转发时需要排队处理,会带来一定的时延,当网络拥堵时,这种时延会增大,交换节点可能还会丢弃分组。
  5. 网络具有冗余路径,当某个节点出现故障时,可以相应的更新路由表。
  6. 不独占某条链路,资源利用率高。

数据报和虚电路的比较

\ 数据报服务 虚电路服务
连接的建立 不需要 必须有
目的地址 每个分组都要有完整地址 仅在建立连接阶段使用,后续使用虚电路号
路由选择 每个分组独立选择 同一条虚电路进行转发
分组顺序 不保证有序到达 保证分组有序
可靠性 不可靠 可靠
对网络故障适应性 出故障的节点丢失分组,其他分组路径发生变化可以正常传输 所有经过故障节点的虚电路都不能工作
差错处理和流量控制 由用户主机保证 可由网络负责,也可由用户主机负责

SDN

网络层可以抽象的分为数据平面控制平面,转发是数据平面实现的功能,路由选择是控制平面实现的功能。软件定义网络(Soft Defined Network,SDN) 是一种创新型网络架构,采用集中式的控制平面和分布式控制平面,两个平面相互分离,控制平面利用控制-数据接口对数据平面上的路由器进行集中式控制,使路由器不在需要路由选择软件,不在交换路由信息。控制平面中的远程控制器掌握各主机和整个网路中的状态,通过 Openflow 协议将转发表下发给路由器,路由器只负责查转发表转发。
SDN 的可编程性通过为开发者提供强大的编程接口,使网络居于哦了很好的编程性。对上层应用的开发者,SDN 提供的接口为 北向接口,北向接口提供了一系列丰富的 API,使开发者不必关系底层实现。SDN 控制器和转发设备建立双向会话的接口称为 南向接口。通过不同的南向接口协议,SDN 控制器就可兼容不同的硬件设备。SDN 控制器集群内部控制器之间通信的接口称为东西向接口,用于增强整个控制平面的可靠性和可扩展性。

SDN 的优点:

  1. 全局集中式控制和分布式高速转发,既有利于控制平面全局化,有利于网络的高性能。
  2. 灵活可编程与性能的平衡,控制和转发功能分离,使得网络可以由专有的自动化工具以编程式配置。
  3. 降低成本,在使用开放的接口协议后,实现了网络设备的制造与功能软件开发的分离。

SDN 的缺点:

  1. 安全风险,集中管理容易遭受攻击,如果崩溃,整个网络都会收到影响。
  2. 随着网络规模的增大,控制器会成为网络性能的瓶颈。

IPV4

一个 IP 数据报由首部和数据部分组成。首部前一部分长度固定位 20 字节,是所有 IP 分组都具有的。首部固定部分之后是一些可选字段,用来提供检测及安全机制。

IPV4 首部

IPV4首部

  • 版本:占 4 位,指 IP 的版本,IPV4 数据报中该字段的值位 4。
  • 首部长度:占 4 位,以 4B 位单位,最大可表示的首部长度为 60B,最常用首部长度为 20B,字段值为 5,此时不适用任何可选字段。
  • 总长度:占 16 位,指首部长度和数据长度之和,单位位字节,因此数据报最大长度为 65535B。以太网 MTU 为 1500B,IP 淑君包封装成帧是数据报总长度不能超过链路层的 MTU。
  • 标识:占 16 位,是一个计数器,每产生一个数据报就+1,并赋予标识字段。
  • 标志:占 3 位,最低位位 MF,MF=1 表示后面还有分片,MF=0 表示最后一个分片,中间位是 DF,表示允许分片,只有 DF=0 时才允许分片。
  • 片偏移:占 13 位,以 8B 位单位。
  • 生存时间:占 8 位。数据报在网络中可通过路由器的最大数目。
  • 协议:占 8 位指出数据使用何种协议。
  • 首部检验和:占 16 位,只校验首部。
  • 源地址:占 4B,发送方 IP 地址。
  • 目的地址:占 4B,接收方 IP 地址。

IPV4 地址

IPV4 地址是因特网上的每个主机或路由器的每一个接口分配的一个在全世界范围内唯一的 32 比特的标识符。每个 IP 地址都有网络号和主机号两个部分组成。

分类编址

分类编址是互联网早期使用的编址方式。

分类编址

ABC 类地址都是单播地址,只有单播地址才可以分配给网络中的主机或路由器的各接口。主机号全‘0’的地址是网络地址,不能分配给主机,主机号全‘1’的地址是广播地址,也不能分配给主机。

以 A 类地址为例,A 类地址最小网络号为 0,表示本网络不能指派,最小可指派网络号为 1,网络地址为 1.0.0.0,最大网络号为 127,作为本地环回测试地址,不能指派。

分类编址方法最大的缺点就是会造成对 IP 地址的浪费。这种编址方法已经成为历史。

划分子网

分类编址方法不够灵活且容易造成大量地址的浪费,划分子网编址方法就是对其的改进。

子网掩码 可以表明分类 IPV4 地址的主机号部分被借用了几个比特作为子网号,用连续的比特 1 对应地址中的网络号和子网号,用连续的比特 0 表示地址中对应主机号。只要给定了 IP 地址和子网掩码,就能得出子网划分的全部细节。

划分子网

默认子网掩码 在未划分子网时使用的子网掩码。

QQ_1722133016992.png

无分类编址 CIDR

CIDR 是在变长子网掩码的基础上,取消了分类的概念,使用网络前缀代替了网络的概念,网络前缀的位数不是固定的,可以任意选取。CIDR 将网络前缀相同的连续 IP 地址组成一个 CIDR 块。CIDR 地址块中的地址数一定是 2 的整数次幂,实际可指派地址数为 2^N-2,N 表示主机号位数。

路由聚合:因为一个 CIDR 地址块中有很多地址,所以在路由表中就可以利用 CIDR 地址块来查找目的网络,这种地址的聚合称为路由聚合,也称为超网,它使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的信息交换,进而提高网络性能。

最长前缀匹配:使用 CIDR 时,路由表项由网络前缀和下一跳地址组成,在查找路由表时可能会得到不止一个匹配结果,此时应当从匹配结果中选择具有最长网络前缀的路由。为了更有效的查找,通常将无分类编址的路由表存放在一种层次式数据结构中,然后自上而下寻找。

网络分组的转发

分组转发都是基于目的主机所在网络的,这是因为互联网上的网络数远小于主机数,这样可以极大压缩路由表大小。分组到达路由器后通过网络前缀查找转发表,转发表中的信息由目的网络地址和下一条地址组成。

特定主机路由:对于特定目的主机的 IP 地址专门指明一个路由,以便网络管理员控制和测试网络。若特定主机的 IP 地址是 a.b.c.d,则转发表中对象项的目的网络为 a.b.c.d/32。

默认路由:用特殊前缀 0.0.0.0 表示默认路由,全 0 掩码和任何目的地址进行按位与运算必然为 0。只要目的网络不在转发表中,就一律选择默认路由,默认路由通常用于路由器到互联网的路由。

ARP

如何通过 IP 地址获得转发需要的目的 MAC 地址,地址解析协议就是来解决这一问题的。

每台主机都设有一个 ARP 高速缓存表,用来存放本局域网上各主机和路由器 IP 地址到 MAC 地址的映射表,称为 ARP 表。ARP 表的内容会周期删除,因为 IP 地址和 MAC 地址的关系不是永久不变的。

假设主机 A 要向主机 B 发送 IP 数据报,先在 ARP 高速缓存表中查找有无主机 B 的 IP 地址,如果没有,则发送 ARP 请求报文,ARP 请求报文是 MAC 地址为全 1 的广播帧,使得一个局域网的全部主机都接收到 ARP 请求,主机对比 IP 地址决定是否发送请求相应报文。主机 B 在收到 ARP 请求报文后,向主机 A 发送响应报文,主机 A 收到响应,将映射关系写入 ARP 缓存,而后开始发送 IP 数据报。

ARP请求

ARP相应

IP 地址到 MAC 地址的解析是自动进行的,主机不需要知道这种地址的解析过程,只要知道目的 IP,ARP 协议就自动地将 IP 地址解析成硬件地址。

路由算法/协议

路由选择协议的核心是路由算法。路由算法的目的就是从链路中找到一条从源路由器到目的路由器的最佳路径,最佳指的是具有最低费用的路径。
路由器的路由表就是通过路由算法得到的,有静态路由和动态路由之分。
静态路由是指网络运维人员使用路由器的相关命令给路由器人工配置路由表。这种方式简单、开销小,但不能及时适应完了过状态的变化,一般只在小规模网络中采用。
动态路由是指路由器通过路由器自动获取路由信息,它比较复杂,开销大,但是能较好的适应网络状态的变化,适用于大规模网络。

因特网是全球最大的互联网,它的路由选择协议具有三个主要特点:

  1. 自适应:因特网采用动态路由选择,能较好的适应网络状态的变化。
  2. 分布式:因特网中的各路由器通过相互间的信息交互,共同完成路由信息的获取和更新。
  3. 分层次:将整个因特网划分为许多较小的自治系统(Autonomous System, AS)在自治系统内部和外部采用不同类别的路由选择协议,分别进行路由选择。

内部网关协议(Interior Gateway Protocol,IGP)
在一个自治系统内部使用的路由选择协议,它在与互联网中其他自治系统选用什么路由器无关,比如 RIP、OSPF。

外部网关协议(External Gateway Protocol,EGP)
若源站和目的站不在同一个自治系统中,在数据传递到一个自治系统的边界时,就需要使用一种协议将路由信息传递到另一个自治系统中,目前使用最多的是 BGP-4.

RIP

路由信息协议(Routing Information Protocol,RIP)是内部网关协议中最先得到广泛使用的协议之一。RIP 要求自治系统 AS 内的每一个路由器都要维护从它自己到 AS 内其他每一个网络的距离记录,这是一组距离,称为距离向量(Distance-Vector,DV)。
RIP 使用跳数(Hop Count)来衡量到达目的完了过的距离,RIP 将路由器到直连网络的距离定义为 1,将路由器到非直连网络的距离定义为经过的路由器数目+1。RIP 允许一条路径最多只能包含 15 个路由器,距离等于 16 时认为不可达,因此 RIP 只适用于小型互联网。

RIP距离向量

RIP 认为好的路由就是距离短的路由,也就是路由器数量最少的路由。当有多条 RIP 距离相等时,可以进行等价负载均衡,也就是将通信均衡地分布到多条等价路径上。

RIP 有三个重要特点:

  1. 仅和相邻路由器交换信息。
  2. 交换的是自己的路由表,即本路由器到所在自治系统 AS 中网络最短 RIP 距离,以及下一跳的路由器。
  3. 周期性交换路由信息,为了加快 RIP 的收敛速度,路由器要及时告知相邻路由器拓扑变化后的信息,这称为触发更新。

RIP 是应用层协议,使用 UDP 传送数据(端口 520)。RIP 选择的路径不一定是传输最快的,但是是路由器跳数最少的。

RIP 的优点

  • 实现简单,开销小,收敛较快。
  • 若发现了一个更短的路由,在较短时间内便可传至所有路由器,俗称“好消息传得快”。

RIP 的缺点

  • RIP 限制网络的规模,最大能使用的距离为 15。
  • 当网络故障是,路由器需要反复交换多次信息才能收敛,要经过较长时间故障信息才能到达所有路由器,俗称“坏消息传得慢”。

OSPF

开放最短路径优先协议(Open Shortest Path First,OSPF)是为了克服路由信息协议 RIP 的缺点开发出来的。开放指定是协议不受某一厂商控制,最短路径优先是指采用了 Dijkstra 提出的最短路算法。OSPF 与 RIP 不同,它是基于链路状态的,OSPF 基于链路状态并采用最短路算法计算路由,保证了不会产生路由环路,并且它不限制网络规模,更新效率高,收敛速度快。OSPF 是网络层协议它不用 TCP 或者 UDP,而是直接使用 IP 数据报传送(IP 首部协议字段为 89).

OSPF 相邻路由器之间通过交互问候(Hello)分组来建立和维护邻居关系,发送走起为 10s,若 40s 未收到来自邻居的问候分组,则认为路由器不可达。

使用 OSPF 的路由器都会产生链路状态通告(LSA),包括直连网络的状态信息和邻居网络的状态信息,LSA 被封装在链路状态更新分组中,采用可靠的洪泛法进行发送。

OSPF 的五种分组:

  1. 问候分组:用来发现和维持相邻站的可达性。
  2. 数据库描述分组:向相邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
  3. 链路状态请求分组:向对方请求发送某些链路状态项目的详细信息。
  4. 链路状态更新分组:用洪泛法对全网更新链路状态,它是 OSPF 最核心的部分。
  5. 链路状态确认分组:对链路更新分组的确认。

OSPF工作流

为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干更小的范围,称为区域。划分区域将利用洪泛法交换链路状态信息的范围局限再每个区域而非整个自治系统,减少了整个网络的通信量。

BGP

边界网关协议(Border Gateway Protocol,BGP)是不同自治系统 AS 的路由器之间交换路由信息的协议,是一种外部网关协议。

BGP 工作原理如下:

  1. 配置 BGP 时,每个 AS 的管理员要选择至少一个路由器作为该 AS 的“发言人”,往往就是边界路由器。
  2. 一个 BGP 发言人与其他发言人交换信息,首先建立 TCP 连接,然后在此连接上交换 BGP 报文建立 BGP 会话,再利用 BGP 会话交换路由信息。建立连接的两个 BGP 发言人称为对方的对等站。
  3. BGP 所交换的网络可达性信息,就是要到达某个网络所要经过的一系列自治系统。

现在常用的 BGP 协议为 BGP-4,共使用四种报文:

  1. 打开报文:用来建立连接,使通信初始化。
  2. 更新报文:用来通知某一路由的信息,以及列出要撤销的多条路由。
  3. 保活报文:用来周期性地证实邻站连通性。
  4. 通知报文:用来发送检测到的差错。

三种路由协议的比较

协议 RIP OSPF BGP
类型 内部 内部 外部
路由算法 距离-向量 链路状态 路径向量
传递协议 UDP IP TCP
路径选择 跳数最少 代价最低 较好非最佳
交换节点 相邻路由器 所有路由器 相邻路由器
交换内容 自己的路由表 相邻路由器的链路状态 首次是整个路由表。其余是有变化的部分

网际控制报文协议 ICMP

为了更有效地转发 IP 数据报以及提高 IP 数据报交付成功的机会,TCPIP 体系结构的网际层使用了网际控制报文协议(Internet Control Message Protocol, ICMP)[RFC 792]。主机或路由器使用 ICMP 来发送差错报告报文和询问报文。ICMP 报文被封装在 IP 数据报中发送.

ICMP 报文类型:

  • 差错报告报文:用来向主机或路由器报告差错情况。
  • 询问报文:用来向主机或路由器询问情况。

差错报告报文一般有五种:

  1. 终点不可达:就向源点发送终点可达报文。具体可再根据 ICMP 的代码字段细分当路由器或主机不能交付 IP 数据报时,为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等 13 种。
  2. 源点抑制:当路由器或主机由于拥塞而丢弃 IP 数据报时,就向发送该 IP 数据报的源点发送源点抑制报文,使源点知道应当把 IP 数据报的发送速率放慢。
  3. 超时:当路由器收到一个目的 IP 地址不是自己的 IP 数据报时,会将其首部中生存时间 TTL 字段的值减 1。若结果不为 0,则路由器将该数据报转发出去;若结果为 0,路由器不但要丢弃该数据报,还要向发送该 IP 数据报的源点发送时间超过(超时)报文。另外,当终点在预先规定的时间内未能收到一个数据报的全部数据报分片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过(超时)报文。
  4. 参数问题:当路由器或目的主机收到 IP 数据报后,根据其首部中的检验和字段的值发现首部在传送过程中出现了误码,就丢弃该数据报,并向发送该数据报的源点发送参数问题报文。
  5. 重定向:路由器把改变路由报文发送给主机,让主机知道下次应将 IP 数据报发送给另外的路由器,这样可以通过更好的路由到达目的主机。

询问报文有两种:

  • 回送请求和回答:由主机或路由器向一个特定的目的主机或路由器发出,收到此报文的主机或路由器必须给发送该报文的源主机或路由器发送 ICMP 回送回答报文。这种询间报文用来测试目的站是否可达以及了解其有关状态。
  • 时间戳请求和回答:用来请求某个主机或路由器回答当前的日期和时间。在 ICMP 时间截回答报文中有一个 32 比特的字段,其中写入的整数代表从 1900 年 1 月 1 日起到当前时刻一共有多少秒。这种询问报文用来进行时钟同步和测量时间

ICMP 的典型应用

分组网间探测-PING

分组网间探测 PING 用来测试主机或路由器之间的连通性。PING 是 TCP/IP 体系结构的应用层直接使用网际层 ICMP 的一个例子,它并不使用运输层的 TCP 或 UDP。PING 应用所使用的 ICMP 报文类型为回送请求和回答。

QQ_1722319699949.png

跟踪路由

跟踪路由应用 traceroute,用于探测 IP 数据报从源主机到达目的主机要经过哪些路由器。在不同操作系统中,traceroute 应用的命令和实现机制有所不同:

  • 在 UNIX 版本中,具体命令为“traceroute”,其在运输层使用 UDP 协议,在网络层使用 ICMP 报文类型只有差错报告报文。
  • 在 Windows 版本中,具体命令为“tracert”,其应用层直接使用网际层的 ICMP 协议,所使用的 ICMP 报文类型有回送请求和回答报文以及差错报告报文。

QQ_1722319749201.png

VPN 虚拟专用网

NAT 网络地址转换

移动 IP

网络层设备

传输层

应用层