网络篇:和面试官扯皮OSI七层协议(收藏吃灰系列)

来源某站计算机网络微课堂教学视频所整理

目录

基本概念
- 因特网基本概述
- 三种交换方式
- 计算机网络的定义和分类
- 计算机网络的性能指标
- 计算机网络体系结构
物理层
- 物理层的基本概念
- 物理层下面的传输媒体
- 传输方式
- 编码与调制
- 信道的极限容量
数据链路层
- 数据链路层概述
- 封装成帧
- 差错检测
- 可靠传输
- 点对点协议PPP
- 媒体接入控制
- MAC地址、IP地址以及ARP协议
- 集线器和交换机的区别
- 以太网交换机自学习和转发帧的流程
- 以太网交换机的生成树协议STP
- 虚拟局域网VLAN
网络层
- 网络层概述
- 网络层提供的两种服务
- IPv4
- 路由选择协议
- IPv4数据报的首部格式
- 网际控制报文协议ICMP
运输层
- 运输层概述
- 运输层端口号、复用与分用的概念
- UDP和TCP的对比
- TCP的流量控制
- TCP的拥塞控制
- TCP超时重传时间的选择
- TCP可靠传输的实现
- TCP的运输连接管理
- TCP报文段的首部格式
应用层
- 应用层概述
- 客户—服务器方式和对等方式
- 域名系统DNS
- 文件传送协议FTP

基本概念

因特网基本概述

  • 网络:网络由若干结点和连接这些结点的链路组成。

  • 互连网(互联网):多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互连网)。因此,互联网是“网络中的网络”。

  • 因特网:因特网是世界上最大的互连网络(用户数以亿计,互连的网络数以百万计)。

internet与Internet的区别

  • internet(互联网或互连网)是一个通用名词,它泛指多个计算机网络互连而成的网络。在这些网络之间的通信协议可以是任意的。

  • Internet(因特网)则是一个专用名词,它指当前全球最大的、开放的、由众多网络互连而成的特定计算机网络,它采用TCP/IP协议族作为通信的规则,其前身是美国的ARPANET。

  • 因特网的组成

    • 边缘部分

      由所有连接在因特网上的主机组成(台式电脑,大型服务器,笔记本电脑,平板,智能手机等)。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。

    • 核心部分

      由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。

三种交换方式

电路交换

  • 电话交换机接通电话线的方式称为电路交换;

  • 从通信资源的分配角度来看,交换(Switching)就是按照某种方式动态地分配传输线路的资源;

  • 电路交换的三个步骤:

    1、建立连接(分配通信资源)

    2、通话(一直占用通信资源)

    3、释放连接(归还通信资源)

分组交换

  • 发送方

    • 构造分组

    • 发送分组

  • 路由器

    • 缓存分组

    • 转发分组

  • 接收方

    • 接收分组

    • 还原报文

报文交换

  • 报文交换中的交换结点也采用存储转发方式,但报文交换对报文的大小没有限制,这就要求交换结点需要较大的缓存空间。报文交换主要用于早期的电报通信网,现在较少使用,通常被较先进的分组交换方式所取代。

    三种交换方式的对比

电路交换:

  • 通信之前首先要建立连接;连接建立好之后,就可以使用已建立好的连接进行数据传送;数据传送后,需释放连接,以归还之前建立连接所占用的通信线路资源。

  • 一旦建立连接,中间的各结点交换机就是直通形式的,比特流可以直达终点;

报文交换:

  • 可以随时发送报文,而不需要事先建立连接;整个报文先传送到相邻结点交换机,全部存储下来后进行查表转发,转发到下一个结点交换机。

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

分组交换:

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

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

计算机网络的定义和分类

定义

  • 计算机网络的精确定义并未统一

  • 计算机网络的最简单的定义是:一些互相连接的、自治的计算机的集合。

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

    • 自治:是指独立的计算机,他有自己的硬件和软件,可以单独运行使用

    • 集合:是指至少需要两台计算机

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

    • 计算机网络所连接的硬件,并不限于一般的计算机,而是包括了智能手机等智能硬件。

    • 计算机网络并非专门用来传送数据,而是能够支持很多种的应用(包括今后可能出现的各种应用)。

分类

按交换技术分类

  • 电路交换网络

  • 报文交换网络

  • 分组交换网络

按使用者分类

  • 公用网

  • 专用网

按传输介质分类

  • 有线网络

  • 无线网络

按覆盖范围分类

  • 广域网WAN(Wide Area Network)

作用范围通常为几十到几千公里,因而有时也称为远程网。

  • 城域网MAN

作用范围一般是一个城市,可跨越几个街区甚至整个城市。

  • 局域网LAN

一般用微型计算机或工作站通过高速通信线路相连。

  • 个域网PAN

个人工作的地方把个人使用的电子设备用无线技术连接起来的网络。

按拓扑结构分类

  • 总线型网络

  • 星型网络

  • 环形网络

  • 网状型网络

计算机网络的性能指标

速率

  • 连接在计算机网络上的主机在数字信道上传送比特的速率,也称为比特率或数据率;

  • 基本单位:bit/s(b/s,bps),常用单位:kb/s,Mb/s,Gb/s,Tb/s

带宽

  • 用来表示网络的通信线路所能传送数据的能力,因此网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”;单位与速率单位相同。

吞吐量

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

  • 吞吐量被经常用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络;吞吐量受网络的带宽或额定速率的限制

时延

  • 发送时延

主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。

  • 传播时延

电磁波在信道中传播一定的距离需要花费的时间。

  • 处理时延

主机或路由器在收到分组时要花费一定时间进行处理。

时延带宽积

  • 传播时延和带宽的乘积;

  • 若发送端连续发送数据,则在所发送的第一个比特即将到达终点时,发送端就已经发送了时延带宽积个比特;

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

往返时间RTT

  • 在许多情况下,因特网上的信息不仅仅单方向传输,而是双向交互;

  • 我们有时很需要知道双向交互一次所需的时间。

利用率

信道利用率 网络利用率
用来表示某信道有百分之几的时间是被利用的(有数据通过) 全网络的信道利用率的加权平均
  • 根据排队论,当某信道的利用率增大时,该信道引起的时延也会迅速增加;

  • 因此,信道利用率并非越高越好;

  • 如果令Do表示网络空闲时的时延,D表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式来表示D、Do和利用率U之间的关系:


  • 当网络的利用率达到50%时,时延就要加倍;

  • 当网络的利用率超过50%时,时延急剧增大;

  • 当网络的利用率接近100%时,时延就趋于无穷大;

  • 因此,一些拥有较大主干网的ISP通常会控制它们的信道利用率不超过50%。如果超过了,就要准备扩容,增大线路的带宽。

  • 也不能使信道利用率太低,这会使宝贵的通信资源被白白浪费。应该使用一些机制,可以根据情况动态调整输入到网络中的通信量,使网络利用率保持在一个合理的范围内。

丢包率

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

  • 丢包率具体可分为接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等。

  • 丢包率是网络运维人员非常关心的一个网络性能指标,但对于普通用户来说往往并不关心这个指标,因为他们通常意识不到网络丢包。

  • 分组丢失主要要有两种情况:

    • 分组在传输过程中出现误码,被结点丢弃;

    • 分组到达一台队列已满的分组交换机时被丢弃;在通信量较大时就可能造成网络拥塞。

  • 因此,丢包率反映了网络的拥塞情况:

    • 无拥塞时路径丢包率为0

    • 轻度拥塞时路径丢包率为1%~4%

    • 严重拥塞时路径丢包率为5%~15%

计算机网络体系结构

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

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

OSI参考模型

类型 作用
应用层 解决通过应用进程之间的交互来实现特定网络应用的问题
表示层 解决通信双方交换信息的表示问题
会话层 解决进程之间进行会话问题
运输层 解决进程之间基于网络的通信问题
网络层 解决分组在多个网络之间传输(路由)的问题
数据链路层 解决分组在一个网络(或一段链路)上传输的问题
物理层 解决使用何种信号来传输比特0和1的问题

原理体系结构

类型 作用
应用层 解决通过应用进程的交互来实现特定网络应用的问题
运输层 解决进程之间基于网络的通信问题
网络层 解决分组在多个网络上传输(路由)的问题
数据链路层 解决分组在一个网络(或一段链路)上传输的问题
物理层 解决使用何种信号来传输比特的问题

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

  • 实体 任何可发送或接收信息的硬件或软件进程。

  • 对等实体 收发双方相同层次中的实体。

  • 协议 控制两个对等实体进行逻辑通信的规则的集合

    • 协议三要素:

      • 语法:定义所交换信息的格式

      • 语义:定义收发双方所要完成的操作

      • 同步:定义收发双发的时序关系

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

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

    • 协议是“水平的”,服务是“垂直的”。

    • 实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是透明的。

  • 服务访问点 在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。

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

  • 协议数据单元PDU 对等层次之间传送的数据包称为该层的协议数据单元。

  • 服务数据单元SDU 同一系统内,层与层之间交换的数据包称为服务数据单元。

物理层

物理层的基本概念

  • 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。

  • 物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么。

物理层协议的主要任务

  • 机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置。

  • 电气特性:指明在接口电缆的各条线上出现的电压的范围。

  • 功能特性:指明某条线上出现的某一电平的电压表示何种意义。

  • 过程特性:指明对于不同功能的各种可能事件的出现顺序。

物理层下面的传输媒体

  • 导引型传输媒体

    • 同轴电缆

    • 双绞线

    • 光纤

    • 电力线

  • 非导引型传输媒体

    • 无线电波

    • 微波

    • 红外线

    • 可见光

传输方式

串行传输、并行传输

同步传输、异步传输


单向通信(单工)、双向交替通信(半双工)和双向同时通信(全双工)

编码与调制

常用编码

  • 不归零编码

  • 归零编码

  1. 每个码元传输结束后信号都要“归零”,所以接收方只要在信号归零后进行采样即可,不需要单独的时钟信号。

  2. 实际上,归零编码相当于把时钟信号用“归零”方式编码在了数据之内,这称为“自同步”信号。

  3. 但是,归零编码中大部分的数据带宽,都用来传输“归零”而浪费掉了。

  • 曼彻斯特编码

  • 差分曼彻斯特编码

信道的极限容量

  • 失真因素

    • 码元传输速率

    • 信号传输距离

    • 噪声干扰

    • 传输媒体质量

奈氏准则

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

  • 理想低通信道的最高码元传输速率=2W Baud = 2W码元/秒

  • 理想带通信道的最高码元传输速率=W Baud = W码元/秒

W:信道带宽(单位为Hz)

Baud:波特,即码元/秒

  • 码元传输速率又称为波特率、调制速率、波形速率或符号速率。它与比特率有一定关系:

    • 当1个码元只携带1比特的信息量时,则波特率(码元/秒)与比特率(比特/秒)在数值上是相等的;

    • 当1个码元携带n比特的信息量时,则波特率转换成比特率时,数值要乘以n。

  • 要提高信息传输速率(比特率),就必须设法使每一个码元能携带更多个比特的信息量。这需要采用多元制。

  • 实际的信道所能传输的最高码元速率,要明显低于奈氏准则给出的这个上限数值。

香农公式

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

  • 信道带宽或信道中信噪比越大,信息的极限传输速率越高。

  • 在实际信道上能够达到的信息传输速率要比该公式的极限传输速率低不少。这是因为在实际信道中,信号还要受到其他一些损伤,如各种脉冲干扰、信号在传输中的衰减和失真等,这些因素在香农公式中并未考虑。

两者对比

  • 在信道带宽一定的情况下,根据奈氏准则和香农公式,要想提高信息的传输速率就必须采用多元制(更好的调制方法)和努力提高信道中的信噪比。

  • 自从香农公式发表后,各种新的信号处理和调制方法就不断出现,其目的都是为了尽可能地接近香农公式给出的传输速率极限。

数据链路层

数据链路层概述

  • 链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。

  • 数据链路(Data Link)是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。

  • 数据链路层以帧为单位传输和处理数据。

数据链路层的三个重要问题

封装成帧

  • 封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

差错控制

  • 在传输过程中可能会产生比特差错:1 可能会变成 0, 而 0 也可能变成 1。

可靠传输

  • 接收方主机收到有误码的帧后,是不会接受该帧的,会将它丢弃;

  • 如果数据链路层向其上层提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施;

  • 如果数据链路层向其上层提供的是可靠服务,那就还需要其他措施,来确保接收方主机还可以重新收到被丢弃的这个帧的正确副本

封装成帧

  • 封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

    • 帧头和帧尾中包含有重要的控制信息。

    • 帧头和帧尾的作用之一就是帧定界。

透明传输

  • 透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

解决透明传输问题

  • 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。

  • 面向比特的物理链路使用比特填充的方法实现透明传输。

帧的数据部分长度

  • 为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。

  • 考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU。

差错检测

  • 实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这称为比特差错。

  • 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER。

  • 使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。

奇偶校验

  • 在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数.为奇数(奇校验)或偶数(偶校验)。

  • 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;

  • 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检);

循环冗余校验CRC

  • 收发双方约定好一个生成多项式G(x);

  • 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;

  • 接收方通过生成多项式来计算收到的数据是否产生了误码;

总结

  • 检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。

  • 要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。

  • 循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层。

  • 在计算机网络中通常采用我们后续课程中将要讨论的检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务。

可靠传输

基本概念

  • 使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)。

  • 数据链路层向上层提供的服务类型

    • 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做;

    • 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。

  • 一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。

  • 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。

  • 比特差错只是传输差错中的一种。

  • 从整个计算机网络体系结构来看,传输差错还包括分组丢失分组失序以及分组重复

    • 分组丢失 数据并未按照发送顺序依次到达接收端;

    • 分组失序 数据并未按照发送顺序依次到达接收端;

    • 分组重复 由于某些原因,有些分组在网络中滞留了,没有及时到达接收端,这可能会造成发送端对该分组的重发,重发的分组到达接收端,但一段时间后,滞留在网络的分组也到达了接收端,这就造成分组重复的传输差错。

  • 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。

  • 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。

  • 可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。

停止-等待协议

可能出现的问题

  • 确认与否认

  • 超时重传

  • 确认丢失

  • 确认迟到

【注意事项】

  • 接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组

  • 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1

  • 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路是一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号

  • 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。

    • 在数据链路层点对点的往返时间比较确定,重传时间比较好设定。

    • 然而在运输层。由于端到端往返时间非常不确定,设置合适的重传时间有时并不容易。

信道利用率

TD:是发送方发送数据分组所耗费的发送时延

RTT:是收发双方之间的往返时间

TA:是接收方发送确认分组所耗费的发送时延

  • 当往返时延RTT远大于数据帧发送时延To时(例如使用卫星链路),信道利用率非常低。

  • 若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。

  • 为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即后退N帧协议GBN和选择重传协议SR。

回退N帧协议GBN

  • 在相同的时间内,使用停止-等待协议的发送方只能发送一个数据分组,而采用流水线传输的发送方,可以发送多个数据分组;

  • 回退N帧协议在流水线传输的基础上,利用发送窗口来限制发送方可连续发送数据分组的个数。

无差错情况

  • 发送方将序号落在发送窗口内的0~4号数据分组,依次连续发送出去

  • 接收方按序接收它们,每接收一个,接收窗口就向前滑动一个位置,并给发送方发送针对所接收分组的确认分组

  • 发送方每接收一个、发送窗口就向前滑动一个位置,这样就有新的序号落入发送窗口,发送方可以将收到确认的数据分组从缓存中删除了,而接收方可以择机将已接收的数据分组交付上层处理

有差错情况

  • 在传输数据分组时,5号数据分组出现误码,接收方通过数据分组中的检错码发现了错误

  • 于是丢弃该分组

  • 对之前按序接收的最后一个数据分组进行确认,发送ACK4,每丢弃一个数据分组,就发送一个ACK4,这里的ACK4是接收方收到的最后一个正确的数据分组。

  • 当收到重复的ACK4时,发送方就知道之前所发送的数据分组出现了差错,可以不等超时计时器超时就立刻开始重传,具体收到几个重复确认就立刻重传,根据具体实现决定

  • 如果收到这4个重复的确认并不会触发发送立刻重传,一段时间后。超时计时器超时,也会将发送窗口内以发送过的这些数据分组全部重传

小结

选择重传协议SR

  • 回退N帧协议的接收窗口尺寸WR只能等于1,因此接收方只能按序接收正确到达的数据分组。

  • 一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管它们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。

  • 为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸WR不应再等于1(而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议

注意: 选择重传协议为了使发送方仅重传出现差错的分组,接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认

小结

点对点协议PPP

  • 点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议

  • PPP协议是因特网工程任务组IEIF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]

  • PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:

    • 对各种协议数据报的封装方法(封装成帧)

    • 链路控制协议LCP 用于建立、配置以及测试数据链路的连接

    • 一套网络控制协议NCPs其中的每一个协议支持不同的网络层协议

帧格式

  • 标志(Flag)字段:PPP帧的定界符,取值为0x7E

  • 地址(Address)字段:取值为0xFF,预留(目前没有什么作用)

  • 控制(Control)字段:取值为0x03,预留((目前没有什么作用)

  • 协议(Protocol)字段:指明帧的数据部分送交哪个协议处理

  • 帧检验序列(Frame Check Sequence)字段:CRC计算出的校验位

透明传输

  • 面向字节的异步链路采用插入转义字符的字节填充法

  • 面向比特的同步链路:比特填充法(插入“比特0”)

差错检测

  • 接收方每收到一个PPP帧,就进行CRC检验。若CRC检验正确,就收下这个帧;反之,就丢弃这个帧。使用PPP的数据链路层向上不提供可靠传输服务。

工作状态

媒体接入控制

基本概念

  • 共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC

静态划分信道

信道复用

  • 复用是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。

  • 当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。

频分复用FDM

  • 频分复用的所有用户在同样的时间占用不同的带宽资源


时分复用TDM

  • 时分复用的所有用户在不同的时间占用同样的频带宽度。

波分复用

码分复用 CDM

  • 码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA。

  • 同理,频分复用FDM和时分复用TDM同样可用于多址接入,相应的名词是频分多址FDMA和时分多址TDMA。可简单理解如下:

    • 复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。

    • 多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)。

    • 某种程度上,FDMA、TDMA、CDMA可以分别看成是FDM、TDM、CDM的应用。

  • 与FDM和TDM不同,CDM的每一个用户可以在同样的时间使用同样的频带进行通信。由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。

  • CDM最初是用于军事通信的,因为这种系统所发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。

  • 随着技术的进步,CDMA设备的价格和体积都大幅度下降,因而现在已广泛用于民用的移动通信中。

  • 在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片。通常m的值是64或128。

  • 使用CDMA的每一个站被指派一个唯一的m bit码片序列

    • 一个站如果要发送比特1,则发送它自己的m bit码片序列;

    • 一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码;

  • 码片序列的挑选原则如下: 1.分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列。

    2.分配给每个站的码片序列必须相互正交(规格化内积为0)。 令向量S表示站S的码片序列,令向量T表示其他任何站的码片序列。

    两个不同站S和T的码片序列正交,就是向量S和T的规格化内积为0:

动态接入控制——随机接入(CSMA/CD协议)

基本概念

争用期(碰撞窗口)

最小帧长

  • 以太网规定最小帧长为64字节,即512比特(512比特时间即为争用期);

    • 如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。

  • 以太网的最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞;

    • 如果在争用期(共发送64字节)没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞;

    • 如果在争用期内检测到碰撞,就立即中止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的帧都是由于碰撞而异常中止的无效帧。

最大帧长

截断二进制指数退避算法

信道利用率


帧接收流程

动态接入控制——随机接入(CSMA/CA协议)

既然CSMA/CD协议已经成功地应用于使用广播信道的有线局域网,那么同样使用广播信道的无线局域网能不能也使用CSMA/CD协议呢?

  • 在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以免发生碰撞。

  • 在无线局域网中,不能使用碰撞检测CD,原因如下:

    • 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高。

    • 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站问题),进行碰撞检测的意义也不大。

  • 802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能。

  • 由于不可能避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收。

  • 802.11的MAC层标准定义了两种不同的媒体接入控制方式:

    • 分布式协调功能DCF 在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方式。

    • 点协调功能PCF PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用。

帧间间隔IFS

  • 802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS。

  • 帧间间隔的长短取决于该站点要发送的帧的类型:

    • 高优先级帧需要等待的时间较短,因此可优先获得发送权;

    • 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。

  • 常用的两种帧间间隔如下:

    • 短帧间间隔SIFS,是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型有ACK帧、CTS帧、由过长的MAC帧分片后的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。

    • DCF帧间间隔DIFS,它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧。

工作原理

目的站为什么正确接收数据帧后还要等待一段时间SIFS才能发送ACK帧?

答:SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧,在这段时间内,一个站点应当能够从发送方式切换到接收方式

信道由忙转为空闲且经过DIFS时间后,还要退避一段随机时间才能使用信道?

答:防止多个站点同时发送数据而产生碰撞

  • 当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。

  • 以下情况必须使用退避算法:

    • 在发送数据帧之前检测到信道处于忙状态时;

    • 在每一次重传一个数据帧时;

    • 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)。

CSMA/CA协议的退避算法

CSMA/CA协议的信道预约和虚拟载波监听

  • 为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约

    • 源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(Request To Send),它包括源地址、目的地址以及这次通信(包括相应的确认帧)所需的持续时间。

    • 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控帧,称为允许发送CTS(Clar To Send),它也包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)。

    • 源站收到CTS帧后,再等待一段时间SIFS后,就可发送其数据帧。

    • 若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。

  • 除源站和目的站以外的其他各站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰。

  • 如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧。

  • 由于RTS帧和CTS帧很短,发送碰撞的概率、碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。802.11标准规定了3种情况供用户选择:

    • 使用RTS帧和CTS帧

    • 不使用RTS帧和CTS帧

    • 只有当数据帧的长度超过某一数值时才使用RTS帧和CTS帧

  • 除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制。

  • 由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。

MAC地址、IP地址以及ARP协议

MAC地址

  • 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址;

  • 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC,因此这类地址被称为MAC地址;

  • 一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡))和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

IEEE 802局域网的MAC地址格式

IEEE 802局域网的MAC地址发送顺序

单播MAC地址

  • 主机B给主机C发送单播帧,主机B首先要构建该单播帧,在帧首部中的目的地址字段填入主机C的MAC地址,源地址字段填入自己的MAC地址,再加上帧首部的其他字段、数据载荷以及帧尾部,就构成了该单播帧。

  • 主机B将该单播帧发送出去,主机A和C都会收到该单播帧

  • 主机A的网卡发现该单播帧的目的MAC地址与自己的MAC地址不匹配,丢弃该帧

  • 主机C的网卡发现该单播帧的目的MAC地址与自己的MAC地址匹配,接受该帧

广播MAC地址

多播MAC地址

  • 主机A首先要构建该多播帧,在帧首部中的目的地址字段填入该多播地址,源地址点填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成了该多播帧

  • 主机A将该多播帧发送出去,主机B、C、D都会收到该多播帧

  • 主机B和C发现该多播帧的目的MAC地址在自己的多播组列表中,主机B和C都会接受该多播帧

  • 主机D发现该多播帧的目的MAC地址不在自己得多播组列表中,则丢弃该多播帧

IP地址

  • IP地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分信息:

    • 网络编号:标识因特网上数以百万计的网络

    • 主机编号:标识同一网络上不同主机(或路由器)

  • 很显然,之前介绍的MAC地址不具备区分不同网络的功能。

    • 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式).

    • 如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。

  • 数据包转发过程中IP地址与MAC地址的变化情况:

    • 源IP地址和目的IP地址保持不变;

    • 源MAC地址和目的MAC地址逐个链路(或逐个网络)改变。

ARP协议

ARP高速缓存表

  • 当主机B要给主机C发送数据包时,会首先在自己的ARP高速缓存表中查找主机C的IP地址所对应的MAC地址,但未找到,因此,主机B需要发送ARP请求报文,来获取主机C的MAC地址

  • 主机B发送封装有ARP请求报文的广播帧,总线上的其他主机都能收到该广播帧

  • 主机A发现所询问的IP地址不是自己的IP地址,因此丢弃该帧;主机C的发现所询问的IP地址是自己的IP地址,需要进行处理;主机B将主机C的IP地址与MAC地址记录到自己的ARP高速缓存表中。

小结

  • 源主机在自己的ARP高速缓存表中查找目的主机的IP地址所对应的MAC地址,若找到了,则可以封装MAC帧进行发送;若找不到,则发送ARP请求(封装在广播MAC帧中);

  • 目的主机收到ARP请求后,将源主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后给源主机发送ARP响应(封装在单播MAC帧中),ARP响应中包含有目的主机的IP地址和MAC地址;

  • 源主机收到ARP响应后,将目的主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后就可以封装之前想发送的MAC帧并发送给目的主机;

  • ARP的作用范围:逐段链路或逐个网络使用;

  • 除ARP请求和响应外,ARP还有其他类型的报文(例如用于检查IP地址冲突的“无故ARP、免费ARP(Gratuitous ARP)” ) ;

  • ARP没有安全验证机制,存在ARP欺骗(攻击)问题。

集线器与交换机的区别

集线器

  • 早期以太网的互连设备

  • 工作在OSI体系结构的物理层对接收到的信号进行放大、转发

  • 使用集线器作为互连设备的以太网仍然属于共享总线式以太网。集线器互连起来的所有主机共享总线带宽,属于同一个碰撞域和广播域。

交换机

  • 目前以太网中使用最广泛的互连设备

  • 工作在OSI体系结构的数据链路层(也包括物理层)

  • 根据MAC地址对帧进行转发

  • 使用交换机作为互连设备的以太网,称为交换式以太网。交换机可以根据MAC地址过滤帧,即隔离碰撞域。

  • 交换机的每个接口是一个独立的碰撞域

  • 交换机隔离碰撞域但不隔离广播域(VLAN除外)

以太网交换机自学习和转发帧的流程

了解一下基本概念

  • 以太网交换机工作在数据链路层(也包括物理层)

  • 以太网交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表。

  • 以太网交换机自学习和转发帧的流程:

    • 收到帧后进行登记。登记的内容为帧的源MAC地址及进入交换机的接口号;

    • 根据帧的目的MAC地址和交换机的帧交换表对帧进行转发,有以下三种情况:

      • 明确转发:交换机知道应当从哪个(或哪些)接口转发该帧(单播,多播,广播)

      • 盲目转发:交换机不知道应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发(也称为泛洪)。

      • 明确丢弃:交换机知道不应该转发该帧,将其丢弃。

  • 帧交换表中的每条记录都有自己的有效时间,到期删除。原因如下:

  • 交换机的接口改接了另一台主机;

  • 主机更换了网卡。

以太网交换机的生成树协议STP

提高以太网的可靠性

  • 添加冗余链路可以提高以太网的可靠性

  • 但是,冗余链路也会带来负面效应——形成网络环路网络环路会带来以下问题:

    • 广播风暴:大量消耗网络资源,使得网络无法正常转发其他数据帧;

    • 主机收到重复的广播帧:大量消耗主机资源

  • 交换机的帧交换表震荡(漂移)

生成树协议STP

以太网交换机使用生成树协议STP,可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题。

  • 不论交换机之间采用怎样的物理连接。交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路);

  • 最终生成的树型逻辑拓扑要确保连通整个网络;

  • 当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树的重新计算。

虚拟局域网VLAN

  • 虚拟局域网VLAN是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。

虚拟局域网VLAN的实现机制

  • IEEE 802.1Q帧(也称Dot One Q帧)对以太网的MAC帧格式进行了扩展,插入了4字节的VLAN标记。

  • VLAN标记的最后12比特称为VLAN标识符VID,它唯一地标志了以太网帧属于哪一个VLAN

    • VID的取值范围是0~4095

    • 0和4095都不用来表示VLAN,因此用于表示VLAN的VID的有效取值范围是1~4094。

  • 802.1Q帧是由交换机来处理的,而不是用户主机来处理的。

    • 当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转变为802.1Q帧,简称“打标签”。

    • 当交换机转发802.1Q帧时,可能会删除其4字节VLAN标记转变为普通以太网帧,简称“去标签”。

  • 交换机的端口类型:Access、Trunk、Hybrid

网络层

网络层概述

  • 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。

  • 要实现网络层任务,需要解决以下主要问题:

    • 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)

    • 网络层寻址问题

    • 路由选择问题

  • 因特网(lnternet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈

  • 由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层

  • 综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。

网络层提供的两种服务

虚电路服务与数据报服务的对比

对比的方面 虚电路服务 数据报服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按发送顺序到达终点 到达终点时不一定按发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

IPv4

IPv4地址概述

  • IPv4地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符

  • IP地址由因特网名字和数字分配机构ICANN进行分配。

    • 我国用户可向亚太网络信息中心APNIC申请IP地址,需要缴费。

    • 2011年2月3日,互联网号码分配管理局IANA(由ICANN行使职能)宣布,IPv4地址已经分配完毕。

    • 我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址。同时全面开展商用部署IPv6。

  • 32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。

分类编制的IPv4地址

A类地址

B类地址

C类地址

【注意事项】

只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口 主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口 主机号为“全1"的地址是广播地址,不能分配给主机或路由器的各接口

划分子网的IPv4地址

  • 为新增网络申请新的网络号会带来以下弊端:

    • 需要等待时间和花费更多的费用

    • 会增加其他路由器中路由表记录的数量

    • 浪费原有网络号中剩余的大量IP地址

  • 可以从主机号部分借用一部分比特作为子网号

  • 32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号

    • 子网掩码使用连续的比特1来对应网络号和子网号

    • 子网掩码使用连续的比特0来对应主机号

    • 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址

  • 给定一个分类的IP地址和其相应的子网掩码,就可知道子网划分的细节:

    • 划分出的子网数量

    • 每个子网可分配的IP地址数量

    • 每个子网的网络地址和广播地址

    • 每个子网可分配的最小和最大地址

  • 默认的子网掩码是指在未划分子网的情况下使用的子网掩码

  • A类:255.0.0.0

  • B类: 255.255.0.0

  • C类: 255.255.255.0

无分类编址的IPv4地址

  • 划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。

  • 为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。

  • 1993年,IETF发布了无分类域间路由选择CIDR的RFC文档:RFC 1517~1519和1520.

    • CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念;

    • CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。

无分类编址的使用

  • CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量。

  • CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。

  • 我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节:

    • 地址块的最小地址

    • 地址块的最大地址

    • 地址块中的地址数量

    • 地址块聚合某类网络(A类、B类或C类)的数量

    • 地址掩码(也可继续称为子网掩码)

路由聚合

  • 网络前缀越长,地址块越小,路由越具体;

  • 若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。

IPv4地址的应用规划

定长的子网掩码FLSM

  • 使用同一个子网掩码来划分子网

  • 子网划分方式不灵活:只能划分出2"个子网(n是从主机号部分借用的用来作为子网号的比特数量)

  • 每个子网所分配的IP地址数量相同,容易造成IP地址浪费。

变长的子网掩码VLSM

  • 使用不同的子网掩码来划分子网

  • 子网划分方式灵活:可以按需分配

  • 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费

路由选择协议

概述

因特网所采用的路由选择协议的主要特点

  • 自适应 动态路由选择,能较好地适应网络状态的变化

  • 分布式 路由器之间交换路由信息

  • 分层次 将整个因特网划分为许多较小的自治系统AS

因特网采用分层次的路由选择协议

常见的路由选择协议

路由器的基本结构

路由信息协议RIP

  • 路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058。

  • RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量”。

  • RIP使用跳数作为度量来衡量到达目的网络的距离。

    • 路由器到直连网络的距离定义为1。

    • 路由器到非直连网络的距离定义为所经过的路由器数加1。

    • 允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达。因此,RIP只适用于小型互联网。

  • RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。

  • 当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。

  • RIP包含以下三个要点:

    • 和谁交换信息仅和相邻路由器交换信息

    • 交换什么信息 自己的路由表

    • 何时交换信息 周期性交换(例如每30秒)

RIP的基本工作过程

  • 路由器刚开始工作时,只知道自己到直连网络的距离为1。

  • 每个路由器仅和相邻路由器周期性地交换并更新路由信息。

  • 若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。

RIP的路由条目的更新规则

  • 发现了新的网络,添加

  • 到达目的网络,相同下一跳,最新消息,更新

  • 到达目的网络,不同下一跳,新路由优势,更新

  • 到达目的网络,不同下一跳,新路由劣势,不更新

  • 到达目的网络,不同下一跳,等价负载均衡

RIP存在“坏消息传播得慢”的问题

  • “坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。

解决方案

  • 限制最大路径距离为15(16表示不可达)

  • 当路由表发生变化时就立即发送更新报文(即“触发更新”),而不仅是周期性发送

  • 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)

开放最短路径优先OSPF

  • 开放最短路径优先OSPF,是为克服RIP的缺点在1989年开发出来的。

    • “开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。

    • “最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。

  • OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。

  • OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。

  • OSPF不限制网络规模,更新效率高,收敛速度快。

  • 链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”。

    • “代价”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定。

  • 使用OSPF的每个路由器都会产生链路状态通告LSA。LSA中包含以下内容:

    • 直连网络的链路状态信息

    • 邻居路由器的链路状态信息

  • LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。

  • 使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。

  • 通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。

  • 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。

  • OSPF有以下五种分组类型

    • 问候(Hello)分组

    • 数据库描述(Database Description)分组

    • 链路状态请求(Link State Request)分组

    • 链路状态更新(Link State Update)分组

    • 链路状态确认(Link State Acknowledgment)分组

  • OSPF在多点接入网络中路由器邻居关系的建立

    • 选举指定路由器DR(designated router)和备用的指定路由BDR(backup designated router)

    • 所有的非DR/BDR只与DR/BDR建立邻居关系

    • 非DR/BDR之间通过DR/BDR交换信息

  • 为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域(Area)。

    • 划分区域的好处就是把利用洪泛法交换链路状体信息的范围局限于每一个区域而不是整个自治系统,这就减少了整个网络上的通信量。

  • 区域内路由器IR: R1, R2, R8, R9
  • 主干路由器BBR: R3, R4, R5, R6, R7
  • 区域边界路由器ABR: R3, R4, R7
  • 自治系统边界路由器ASBR: R6

边界网关协议BGP

  • 外部网关协议EGP (例如边界网关协议BGP)

    • 在不同自治系统内,度量路由的“代价” (距离, 带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用"代价”作为度量来寻找最佳路由是不行的。

    • 自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)

    • BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子) ,而并非要寻找一条最佳路由

  • 在配置BGP时,每个自治系统的管理员要选择至少-一个路由器作为该自治系统的"BGP发言人”

  • 不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179

    • 在此TCP连接.上交换BGP报文以建立BGP会话

    • 利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)

    • 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站或对等站

  • BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP。

  • BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)

  • 当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图。

  • BGP适用于多级结构的因特网

  • BGP-4有以下四种报文

    • OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。

    • UPDATE(更新)报文:用来通告某-路由的信息,以及列出要撤销的多条路由。

    • KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。

    • NOTIFICATION(通知)报文:用来发送检测到的差错。

IPv4数据报的首部格式

网际控制报文协议ICMP

  • 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP

  • 主机或路由器使用ICMP来发送差错报告报文和询问报文。

  • ICMP报文被封装在IP数据报中发送。

  • ICMP差错报告报文共有以下五种:

终点不可达

  • 当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。

源点抑制

  • 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。

时间超过

  • 当路由器收到-一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文。

参数问题

  • 当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。

改变路由(重定向)

  • 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)


以下情况不应发送ICMP差错报告报文

  • 对ICMP差错报告报文不再发送ICMP差错报告报文

  • 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文

  • 对具有多播地址的数据报都不发送ICMP差错报告报文

  • 对具有特殊地址(如127.0.0.0或0.0.0.0) 的数据报不发送ICMP差错报告报文

常用的ICMP询问报文有以下两种

  • 回送请求和回答

  • 时间戳请求和回答

ICMP应用

  • 分组网间探测PING

  • 跟踪路由traceroute

运输层

概述

  • 之前所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信

  • 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程

  • 如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议。

  • 运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。

  • 根据应用需求的不同,因特网的运输层为应用层提供了两种不同的运输协议,即面向连接的TCP无连接的UDP,这两种协议就是本章要讨论的主要内容。

运输层端口号、复用与分用的概念

端口号

  • 运行在计算机.上的进程使用进程标识符PID来标志。

  • 因特网上的计算机并不是使用统一的操作系统,不同的操作系统(windows, Linux, Mac OS)又使用不同格式的进程标识符

  • 为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标识

  • TCP/IP体系的运输层使用端口号来区分应用层的不同应用进程。

    • 端口号使用16比特表示,取值范围0~65535;

      • 熟知端口号: 0~1023, IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议, 例如: FTP 使用21/20,HTTP使用80,DNS使用53。

      • 登记端口号: 1024~49151,为没有熟知端口号的应用程序使用。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。例如: Microsoft RDP微软远程桌面使用的端口是3389。

      • 短暂端口号: 49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

  • 端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同端口号是没有联系的。

发送方的复用和接收方的分用

TCP/IP体系的应用层常用协议所使用的运输层熟知端口号

协议 端口号
RIP 520
DNS 53
TFTP 69
SNMP 161
DHCP 67/68
SMTP 25
FTP 21/20
BGP 179
HTTP 80
HTTPS 443

UDP和TCP的对比

UDP TCP
无连接 面向连接
支持一对一、一对多、多对一和多对多交互通信 每一条TCP连接只能有两个端点EP,只能是一对一通信
对应用层交付的报文直接打包 面向字节流
尽最大努力交付,也就是不可靠;不使用流量控制和拥塞控制 可靠传输,使用流量控制和拥塞控制
首部开销小,仅8字节 首部最小20字节,最大60字节

TCP的流量控制

概念

  • 一般来说,我们总是希望数据传输得更快一些。

    • 但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。

  • 所谓流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。

  • 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。

  • TCP接收方利用自己的接收窗口的大小来限制发送方发送窗口的大小。

  • TCP发送方收到接收方的零窗口通知后,应启动持续计时器。持续计时器超时后,向接收方发送零窗口探测报文。

TCP的拥塞控制

  • 在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫做拥塞(congestion)。

    • 在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。

  • 若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而降。

慢开始和拥塞避免

  • 发送方维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化。

  • 拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大一些;但只要网络出现拥塞, 拥塞窗口就减少一些。

  • 判断出现网络拥塞的依据:没有按时收到应当到达的确认报文(即发生超时重传)。

  • 发送方将拥塞窗口作为发送窗口swnd,即swnd = cwnd.

  • 维护一个慢开始门限ssthresh状态变量:

    • 当cwnd < ssthresh时,使用慢开始算法;

    • 当cwnd > ssthresh时,停止使用慢开始算法而改用拥塞避免算法;

    • 当cwnd = ssthresh时,既可使用慢开始算法,也可使用拥塞避免算法。

  • 如果在发送过程中部分报文段丢失,导致重传计时器超时,这时发送端认为网络可能出现拥塞

  • 这个时候又回到了慢开始,并重新设置慢开始门限值

  • 整个流程结果

快重传和快恢复

快重传

快恢复

整个流程结果

TCP超时重传时间的选择

  • RFC6298建议使用下式计算超时重传时间RTO:

TCP可靠传输的实现

  • TCP基于以字节为单位的滑动窗口来实现可靠传输。

    • 发送方在未收到接收方的确认时,可将发送窗口内还未发送的数据全部发送出去;

    • 接收方只接收序号落入发送窗口内的数据;

  • 虽然发送方的发送窗口是根据接收方的接收窗口设置的,但在同一时刻,发送方的发送窗口并不总是和接收方的接收窗口一样大。

    • 网络传送窗口值需要经历一-定的时间滞后,并且这个时间还是不确定的。

    • 发送方还可能根据网络当时的拥塞情况适当减小自己的发送窗口尺寸。

  • 对于不按序到达的数据应如何处理,TCP并无明确规定。

    • 如果接收方把不按序到达的数据一律丟弃,那么接收窗口的管理将会比较简单,但这样做对网络资源的利用不利,因为发送方会重复传送较 多的数据。

    • TCP通常对不按序到达的数据是先临时存放在接收窗口中, 等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。

  • TCP要求接收方必须有累积确认和捎带确认机制,这样可以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上。

    • 接收方不应过分推迟发送确认,否则会导致发送方不必要的超时重传,这反而浪费了网络的资源。 TCP标准规定,确认推迟的时间不应超过0.5秒。若收到- -连串具有最大长度的报文段,则必须每隔-个报文段就发送一一个确认[RFC 1122]。

    • 捎带确认实际上并不经常发生,因为大多数应用程序很少同时在两个方向.上发送数据。

  • TCP的通信是全双工通信。通信中的每一方都在发送和接收报文段。因此,每一方都有自己的发送窗口和接收窗口。在谈到这些窗口时,一定要弄清楚是哪一方的窗口。

TCP的运输连接管理

TCP的连接建立

  • TCP是面向连接的协议,它基于运输连接来传送TCP报文段。

  • TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。

  • TCP运输连接有以下三个阶段: ①建立TCP连接 ②数据传送 ③释放TCP连接

  • TCP的运输连接管理就是使运输连接的建立和释放都能正常地进行。

  • TCP的连接建立要解决以下三个问题: ①使TCP双方能够确知对方的存在; ②使TCP双方能够协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等) ; ③使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

TCP使用“三报文握手”建立连接

TCP的连接释放

TCP保活计时器

  • TCP服务器进程每收到一次TCP客户进程的数据,就重新设置并启动保活计时器(2小时定时)。
  • 若保活计时器定时周期内未收到TCP客户进程发来的数据,则当保活计时器到时后,TCP服务器进程就向TCP客户进程发送一个探测报文段,以后则每隔75秒钟发送一次。若一连发送10个探测报文段后仍无TCP客户进程的响应,TCP服务器进程就认为TCP客户进程所在主机出了故障,接着就关闭这个连接。

TCP报文段的首部格式

  • 源端口:占16比特,写入源端口号,用来标识发送该TCP报文段的应用进程。

  • 目的端口:占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程。

  • 序号:占32比特,序号增加到最后一个后,下一个序号就又回到0。

  • 确认号:占32比特,确认号增加到最后一个后,下一个确认号就又回到0。

  • 确认标志位ACK:取值为1时确认号字段才有效;取值为0时确认号字段无效。

  • 数据偏移:占4比特,并以4字节为单位。

  • 保留:占6比特,保留为今后使用,但目前应置为0。

  • 窗口:占16比特,以字节为单位。指出发送本报文段的一方的接收窗口。

  • 校验和:占16比特,检查范围包括TCP报文段的首部和数据载荷两部分。在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。

  • 同步标志位SYN:在TCP连接建立时用来同步序号。

  • 终止标志位FIN:用来释放TCP连接。

  • 复位标志位RST:用来复位TCP连接。

    • 当RST=1时,表明TCP连接出现了异常,必须释放连接,然后再重新建立连接。

    • RST置1还用来拒绝一个非法的报文段或拒绝打开一个TCP连接。

  • 推送标志位PSH:接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。

  • 紧急标志位URG:取值为1时紧急指针字段有效;取值为0时紧急指针字段无效。

  • 紧急指针:占16比特,以字节为单位,用来指明紧急数据的长度。

  • 填充:由于选项的长度可变,因此使用填充来确保报文段首部能被4整除(因为数据偏移字段,也就是首部长度字段,是以4字节为单位的)。

应用层

概述

  • 应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。

  • 早期基于文本的应用(电子邮件、远程登录、文件传输、新闻组)

  • 20世纪90年代将因特网带入干家万户的万维网Www

  • 当今流行的即时通信、P2P文件共享及各种音视频应用

  • 计算设备的小型化和“无处不在”,宽带住宅接入和无线接入的日益普及和迅速发展,为未来更多的新型应用提供了广阔的舞台。

客户—服务器方式和对等方式

域名系统DNS

概述

  • 因特网采用层次树状结构的域名结构

  • 域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。

  • 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。

  • 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。

  • 完整的域名不超过255个字符。

  • 域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。

  • 各级域名由其上一级的域名管理机构管理, 而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。

  • 顶级域名TLD 分为以下三类:

    • 国家顶级域名nTLD采用ISO 3166的规定。如cn表示中国, us表示美国,uk表示英国、等等。

    • 通用顶级域名gTLD 最常见的通用顶级域名有七个,即: com (公司企业)、net (网络服务机构)、org (非营利性组织)、int (国际组织)、edu (国教育结构)、gov (美国政府部门)、mil (美国军事部门)。

    • 反向域arpa 用于反向域名解析,即IP地址反向解析为域名。

  • 在国家顶级域名下注册的二级域名均由该国家自行确定。

  • 我国将二级域名划分为以下两类:

    • 类别域名 共七个: ac (科研机构)、com (工、商、金融等企业)、edu (教育机构) 、gov (政府部门)、net (提供网络服务的机构)、mil (军事机构)和org (非营利 性组织)。

    • 行政区域名 共34个,适用于我国的各省、自治区、直辖市。例如: bj为北京市、sh为上海市、js为江苏省,等等。

  • 域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。

  • 域名服务器可以划分为以下四种不同的类型:
  • 根域名服务器 根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器。尽管我们将这13个根域名服务器中的每一个都视为单个的服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器群集。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
  • 顶级域名服务器 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。
  • 权限域名服务器 这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的址。
  • 本地域名服务器 本地域名服务器不属于,上述的域名服务器的等级结构。当-一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者ISP, 一个大学,甚至一个大学里的学院,都可以拥有一一个本地域名服务器,它有时也称为默认域名服务器。本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。

域名解析过程

  • 为了提高DNS的询效率,并减轻根域名服务器的负荷和减少因特网上的DNS询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
  • 由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确。域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天) 。
  • 不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,井且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。

文件传送协议FTP

概念

  • 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。

  • 文件传送协议FTP (File Transfer Protocol)是因特网上使用得最广泛的文件传送协议。

    • FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码) ,并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。

    • FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。

  • 在因特网发展的早期阶段,用FTP传送文件约占整个因特网的通信量的三分之一, 而由电子邮件和域名系统所产生的通信量还要小于FTP所产生的通信量。只是到了1995年,万维网WWW的通信量才首次超过了FTP。

建立TCP连接

  • FTP客户和服务器之间要建立以下两个并行的TCP连接:

    • 控制连接,在整个会话期间一直保持打开,用于传送FTP相关控制命令。

    • 数据连接,用于文件传输,在每次文件传输时才建立,传输结束就关闭。

    • 默认情况下,FTP使用TCP 21端口进行控制连接,TCP 20端口进行数据连接。但是, 是否使用TCP 20端口建立数据连接与传输模式有关,主动方式使用TCP 20端口,被动方式由服务器和客户端自行协商决定。

推荐文章

#高频知识点汇总##面经##秋招##学习路径##笔记##技术栈##读书笔记#
全部评论
🎉恭喜牛友成功参与 【创作激励计划】高频知识点汇总专场,并通过审核! ------------------- 创作激励计划5大主题专场等你来写,最高可领取500元京东卡和500元实物奖品! 👉快来参加吧:https://www.nowcoder.com/discuss/804743
点赞 回复
分享
发布于 2021-12-04 10:31
大佬抱大腿!
点赞 回复
分享
发布于 2021-12-04 10:31
联易融
校招火热招聘中
官网直投
看到了我网络工程学的东西。。。你莫非也是这个专业的?
点赞 回复
分享
发布于 2021-12-06 23:22

相关推荐

17 105 评论
分享
牛客网
牛客企业服务