当前位置:   article > 正文

湖科大 2022 计算机网络期末复习资料_湖科大计网题目汇总

湖科大计网题目汇总

前言

  1. 重点来源:人工智能和信息安全,感谢yq和zxq
  2. 内容主要来源:课本、PPT(htq21年版)、网上大佬笔记、甚至还有上学期学的数据通信原理的笔记(lqx的和我的)、lqx笔记、ffj笔记
  3. 虽然是下学期开学考(烦!),但是先总结,避免下学期忘了
  4. ★超级重点,✦易错,※补充内容
  5. 建议看的时候结合大纲,特意注意了知识点之间的层次结构
  6. 习题没怎么加

题型

  1. 选择题(包括单选和多选,共30分。单选每小题1分,计20分。多选每小题2分,计10分)
  2. 简答题(每小题5分,共20分)
  3. 分析计算题(共40分,共4小题)
  4. 论述题(本题10分,共1小题)

第一章 概述

三网融合

三大类网络

  • 电信网络:提供电话、电报及传真等服务;
  • 有线电视网络:向用户传送各种电视节目;
  • 计算机网络:使用户能在计算机之间传送数据文件;

定义

把上述三种网络融合成一种网络就能够提供所有的上述服务

计算机网络

  • 别名:Internet/网络/因特网/互联网

  • 互联网是一种远程分组交换网络,所以采用的是分组交换技术

定义★

  1. 由自治的计算机互联起来的集合体。

  2. 计算机网络由若干结点(node)和连接这些结点的链路(link)组成。

    网络中的结点可以是计算机、集线器、交换机或路由器等。

  3. 由一些通用的、可编程的硬件互连而成的

互联网基础结构发展三个阶段★

  1. 从单个网络 ARPANET 向互联网发展的过程。

  2. 逐步建成三级结构的互联网。

    主干网、地区网和校园网或企业网

  3. 逐渐形成了多层次 ISP 结构的互联网。

    基于 ISP 的多层结构的互联网的概念示意图

    image-20230206212527266

计算机网络发展阶段

  1. 面向终端的计算机通信网络:一台主机连多个终端;
  2. 共享资源目标的计算机网络:采用分组交换技术,ARPANET是代表;
  3. 开放式标准化网络:形成计算机网络体系结构,OSI标准;
  4. 高速计算机网络:Internet就是这一代网络的典型代表。

特点

  1. 连通性 (connectivity)

    使上网用户之间都可以交换信息(数据,以及各种音频视频),好像这些用户的计算机都可以彼此直接连通一样。

    互联网具有虚拟的特点,无法准确知道对方是谁,也无法知道对方的位置。

  2. 共享 (Sharing)

    • 资源共享
    • 资源共享的含义是多方面的。可以是信息共享、软件共享,也可以是硬件共享。
    • 由于网络的存在,这些资源好像就在用户身边一样,方便使用。
功能

数据通信、资源共享、分布式处理

组成★

边缘部分(资源子网)
定义

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

通信方式
C/S模式(客户-服务器方式)
  • 客户 (client) 和服务器 (server) 都是指通信中所涉及的两个应用进程
  • 客户 - 服务器方式所描述的是进程之间服务和被服务的关系。
  • 客户是服务的请求方,服务器是服务的提供方。它们都要使用网络核心部分所提供的服务。
P2P模式(对等连接方式)
  • 对等连接 (peer-to-peer,简写为 P2P ) 是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。
  • 只要两个主机都运行了对等连接软件 ( P2P 软件) ,它们就可以进行平等的、对等连接通信
  • 对等连接方式从本质上看仍然是使用客户-服务器方式,只是对等连接中的每一台主机既是客户又同时是服务器
核心部分(通信子网)
定义

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

工作方式※

在网络核心部分起特殊作用的是路由器。路由器是实现分组交换的关键构件,如果没有路由器,再多的网络也无法构建成互联网。由此可以看出,互联网的核心部分的工作方式其实也就是路由器的工作方式。

路由器的任务是转发收到的分组。当路由器转发分组时,必须查找路由表。因此,互联网中的各路由器必须根据路由选择协议的规定相互交换路由信息,以便使路由表能够及时反映出网络拓扑的变化。

  1. 路由器转发分组。

    路由器分组转发算法

  2. 路由器之间不断地交换路由信息。

    路由选择协议

internet与Internet的区别

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

任意把几个计算机网络互连起来(不管采用什么协议),并能够相互通信,这样构成的是一个互连网(internet) ,而不是互联网(Internet)。

交换技术★

可以参考数据通信原理

电路交换

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

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

步骤
  1. 建立连接(分配通信资源)
  2. 通话(始终占用通信资源)
  3. 释放连接(归还通信资源)
特点

整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。

优点
  1. 通信时延小。通信双方通过专用线路进行通信,数据可以直达。当数据传输量较大时,优点将十分显著。
  2. 线路独占,没有冲突。
  3. 实时性强。一旦通信线路建立,双方可以实时通信。
缺点
  1. 线路独占,利用率太低。
  2. 连接建立时间过长。

报文交换

特点

整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。(存储转发)

优点
  1. 无需建立连接。
  2. 动态分配线路。
  3. 线路利用率高。
缺点
  1. 报文交换对报文的大小没有限制,需要网络节点有足够的缓存空间
  2. 报文交换在节点处要经历存储、转发等操作,从而引起一定时延

分组交换

分组(包)

将较长的报文划分成一个个更小的等长数据段,并加上首部(包头),在终端重新按序组装成报文

存储转发

将报文分成若干个分组,每个分组独立的传送到相邻节点,分组到达一个路由器后,先暂时存储在缓冲区中,查找转发表,然后从一条合适的链路转发到下一个节点。

特点

存储转发、分段重组和独立选路

  1. 节点暂时存储的是一个个分组,而不是整个报文;
  2. 分组暂时保存在节点的内存中,保证了较高的交换速率;
  3. 采用存储转发技术;
  4. 动态分配线路,极大的提高了通信线路的利用率。
优点
优点所采用的手段
高效在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用
灵活为每一个分组独立地选择最合适的转发路由
迅速以分组作为传送单位,可以不先建立连接就能向其他主机发送分组
可靠保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性
缺点
  1. 分组在节点转发时因排队而造成一定的延时
  2. 由于分组交换不像电路交换那样通过建立连接来保证通信时所需的各种资源,因而无法确保通信时端到端所需的带宽
  3. 分组必须携带一些控制信息(首部)而产生额外开销,整个分组交换网需要专门的管理和控制机制(管理控制比较困难
  4. 当分组采用数据报服务时,分组可能出现失序、丢失或重复。

三种交换技术的比较

image-20221209232016007

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

例题※

:要传送的报文共 x ( bit )。从源点到终点共经过 k 段链路,每段链路的传播时延为 d ( s ),数据率为 b ( bit / s )。在电路交换时电路的建立时间为 s ( s )。在分组交换时,分组长度为 p ( bit ),每个分组所必须添加的首部都很短,对分组的发送时延的影响在题中可以不考虑。此外,各节点的排队等待时间也可忽略不计。问在怎样的条件下,分组交换的时延比电路交换的要小?(提示:画一下草图观察 k 段链路共有几个节点。)

解:

  1. 电路交换时总时延T1 =建立时延+起点的发送时延+在链路中的传播时延。

    T1 =s + x/b + k*d

  2. 分组交换总时延T2 =起点的发送时延+(k-1)个节点的发送时延(最后一个节点无需计算)+在链路中的传播时延

    1. 由于采用“存储转发”技术,一个结点发送一个分组的发送时延是 p/b 。
    2. 因为分组交换要求将n个分组全部发送给终点,当第n个分组到达终点时,则传输结束。所以可以仅考虑第 n 个分组的传输过程。
    3. 当第 n 个分组从源点完全进入到第 1 段链路时,已经过 n·p/b的时延。从源点到终点共经过 k 段链路,应经过 k-1个中间结点,所以第 n 个分组还要花费(k-1)*p/b个发送时延才能到达终点。

    T2 = (x/p) × (p/b) + (k-1) × (p/b) + k*d

  3. 若使分组交换的时延比电路交换的少,则有:

    s + x/b + k*d > (x/p) × (p/b) + (k-1) × (p/b) + k*d 即 s > (k-1) × (p/b)

计算机网络的分类★

按作用范围

广域网WAN(Wide Area Network)

作用范围通常为几十到几千公里,因而有时也称为远程网(long haul network)。广域网是互联网的核心部分,其任务是通过长距离(例如,跨越不同的国家)运送主机所发送的数据。

城域网MAN(Metropolitan Area Network)

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

局域网LAN(Local Area Network)

一般用微型计算机或工作站通过高速通信线路相连(速率通常在 10 Mbit/s 以上),但地理上范围较小(1 km 左右)

个人局域网PAN(Personal Area Network)

在个人工作的地方把个人使用的电子设备用无线技术连接起来的网络。也被称为无线个人局域网WPAN(Wireless PAN)

按使用者

公用网(public network)

这是指电信公司(国有或私有)出资建造的大型网络。“公用”的意思就是所有愿意按电信公司的规定交纳费用的人都可以使用这种网络。因此公用网也可称为公众网

专用网(private network)

这是某个部门为满足本单位的特殊业务工作的需要而建造的网络。这种网络不向本单位以外的人提供服务。

计算机网络的性能指标★

速率

比特(bit)

计算机中数据量的单位,也是信息论中使用的信息量的单位。

定义

数据的传送速率,它也称为数据率 (data rate)或比特率 (bit rate)。

速率往往是指额定速率或标称速率,非实际运行速率。

单位

bit/s(b/s或bps),或 kbit/s、Mbit/s、 Gbit/s 等

单位转换关系

8 Gbit/s= 8e3 Mbit/s= 8e6 kbit/s= 1e9Byte/s = 8e9 bit/s,每一级 103

数据量:1 GB= 1×210 MB= 1×220 KB= 1×230 Byte = 8×230 Bit,每一级 210

带宽

定义
  1. 在模拟信号系统中,指信号具有的频带宽度, 其单位是Hz(或kHz、MHz、GHz等)
  2. 在计算机网络中,带宽用来表示网络中某通道传送数据的能力。表示在单位时间内网络中的某信道所能通过的“最高数据率”。其单位是bit/s(b/s或bps),或 kbit/s、Mbit/s、 Gbit/s 等(与速率一致)

吞吐量

定义

在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量受网络的带宽或网络的额定速率的限制。

举例

带宽1 Gb/s的以太网,代表其额定速率是 1 Gb/s,这个数值也是该以太网的吞吐量的绝对上限值。因此,对于带宽1 Gb/s的以太网,可能实际吞吐量只有 700 Mb/s,甚至更低。

时延★

image-20221210123339871

定义

时延(延迟/迟延)是指数据从网络(或链路)的一端传送到另一端所需的时间。

公式

总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延

组成
发送时延
定义

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

计算公式

发送时延 = 数据帧长度(bit)/ 发送速率(bit/s)

传播时延
定义

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

常见时延

电磁波在自由空间的传播速率是光速 3.0 × 1 0 5 k m / s 3.0\times10^5km/s 3.0×105km/s,在铜线电缆中是 2.3 × 1 0 5 k m / s 2.3\times10^5km/s 2.3×105km/s,在光纤是 2.0 × 1 0 5 k m / s 2.0\times10^5km/s 2.0×105km/s

计算公式

传播时延 = 信道长度(米)/ 信号在信道上的传播速率(米/秒)

处理时延

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

排队时延

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

时延带宽积

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

image-20221210123522888

往返时间RTT★

定义

往返时间表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。

组成

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

注意

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

利用率★

组成
信道利用率

指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。

网络利用率

全网络的信道利用率的加权平均值。

计算公式

若令 D0 表示网络空闲时的时延,D 表示网络当前的时延,则在适当的假定条件下,可以用下面的简单公式表示 D 和 D0之间的关系。其中:U 是网络的利用率,数值在 0 到 1 之间。

D = D 0 1 − U D= \dfrac{D_{0}}{1-U} D=1UD0

注意

image-20230207211919029

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

计算机网络的非性能指标

费用

网络的价格(包括设计和实现的费用)总是必须考虑的,因为网络的性能与其价格密切相关。一般说来,网络的速率越高,其价格也越高。

质量

网络的质量取决于网络中所有构件的质量,以及这些构件是怎样组成网络的。网络的质量影响到很多方面,如网络的可靠性、网络管理的简易性,以及网络的一些性能。但网络的性能与网络的质量并不是一回事。例如,有些性能一般的网络,运行一段时间后就出现了故障,变得无法再继续工作,说明其质量不好。高质量的网络往往价格也较高。

标准化

网络的硬件和软件的设计既可以按照通用的国际标准,也可以遵循特定的专用网络标准。最好采用国际标准的设计,这样可以得到更好的互操作性,更易于升级换代和维修,也更容易得到技术上的支持。

可靠性

可靠性与网络的质量和性能都有密切关系。高速网络的可靠性不一定很差。但高速网络要可靠地运行,则往往更加困难,同时所需的费用也会较高。

可扩展性和可升级性

在构造网络时就应当考虑到今后可能会需要扩展(即规模扩大)和升级(即性能和版本的提高)。网络的性能越高,其扩展费用往往也越高,难度也会相应增加。

易于管理和维护

网络如果没有良好的管理和维护,就很难达到和保持所设计的性能。

计算机网络体系结构

可以参考数据通信原理

image-20221210125210317

OSI

在OSI参考模型中,保证端到端的可靠性是在运输层上完成的。

定义

开放系统互连基本参考模型 OSI/RM (Open Systems Interconnection Reference Model),法律上的国际标准

协议数据单元 PDU (Protocol Data Unit)

OSI 参考模型把对等层次之间传送的数据单位称为该层的PDU

服务数据单元 SDU (Service Data Unit)
定义

OSI 中层与层之间交换的数据的单位

注意

SDU 可以与 PDU 不一样,例如,可以是多个 SDU 合成为一个 PDU,也可以是一个 SDU 划分为几个 PDU。

服务访问点 SAP (Service Access Point)

同一系统相邻两层的**实体进行交互**的地方,它是一个抽象的概念,实际上就是一个逻辑接口

例题
  1. (单选题, 2分)在OSI/RM层次体系结构中,实际通信是在(物理层)实体间进行的。

TCP/IP

事实上的国际标准,组成Internet的一整套协议

实体(entity)

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

接口

相邻层间进行信息交换时必须遵守的规则

协议★

定义

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

三要素
语法

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

语义

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

同步

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

服务★

指一个系统中的下层向上层提供的功能。相邻层间进行信息交换时使用的一组操作原语

协议与服务的区别和联系★

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

分层的好处与缺点

好处
  • 各层之间是独立的。

    每一层只实现一种相对独立的功能,可将一个难以处理的复杂问题分解为若干个较容易处理的更小一些的问题。降低问题的复杂度

  • 灵活性好。

    当任何一层发生变化时(例如由于技术的变化),只要层间接口关系保持不变,则在这层以上或以下各层均不受影响。此外,对某一层提供的服务还可进行修改。当某层提供的服务不再需要时,甚至可以将这层取消;

  • 结构上可分割开。

  • 易于实现和维护。

  • 能促进标准化工作。

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

第二章 物理层

常用术语

消息(message)

信号要传递的内容,是本质。如文字、图像、语音、数据等表现形式。

信息(information)

传达给人的消息,能消除受信者的某些不确定性。

信号 (signal)

定义

数据的电气或电磁的表现。消息传递的物理形式,是载体,比如是电信号、光信号等。

模拟信号

连续信号/模拟信号 (analogous signal)代表消息的参数的取值是连续的。

频带传输

数字信号

离散信号/数字信号(digital signal)代表消息的参数的取值是离散的。

基带传输、数字数据传输

消息、信息、信号区别

  1. 消息:具体的、非物理的
  2. 信息:非具体的、非物理的
  3. 信号:具体的、物理的
  4. 同一信息,可以采用不同形式的物理量来载荷(信号),也可以采用不同的表现形式(消息)。同样,同一类型信号消息也可以代表不同内容的信息

数据 (data)

运送消息的实体

码元

当时间域内的波形表示数字信号时,表示不同数值的波形。

功能★

  1. 在连接各种计算机的传输媒体上传输数据比特流
  2. 屏蔽不同传输媒体和通信手段的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么
  3. 为数据链路层提供物理连接

数据单位★

比特bit

特性★

机械特性

指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等。

电气特性

指明在接口电缆的各条线上出现的电压的范围

功能特性

指明某条线上出现的某一电平的电压的意义

过程特性

指明对于不同功能的各种可能事件的出现顺序。(完成串行并行之间的转换

  • 数据在计算机内部多采用并行传输方式。但数据在通信线路(传输媒体)上的传输方式一般都是串行传输(这是出于经济上的考虑),即逐个比特按照时间顺序传输。因此物理层还要完成传输方式的转换。

通信双方信息交互的主要方式★

单向通信(单工通信)

只能有一个方向的通信而没有反方向的交互。

双向交替通信(半双工通信)

通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)。

双向同时通信(全双工通信)

通信的双方可以同时发送和接收信息。

调制

基带调制

定义

仅对基带信号的码形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。 把这种过程称为编码 (coding)。

编码方式

image-20230202210707510

曼彻斯特编码

位周期中心的向上跳变代表 0, 位周期中心的向下跳变代表 1。但也可反过来定义。

差分曼彻斯特编码

在每一位的中心处始终都有跳变。位开始边界有跳变代表 0(0差分),而位开始边界没有跳变代表 1。

带通调制

定义

使用载波 (carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号, 这样就能够更好地在模拟信道中传输(即仅在一段频率范围内能够通过信道)

二元制调制方法

image-20221211211740508

调幅(AM)

载波的振幅随基带数字信号而变化。

调频(FM)

载波的频率随基带数字信号而变化。

调相(PM)

载波的初始相位随基带数字信号而变化。

数据信号传输方式

频带传输

把数字信号调制成音频信号(是模拟信号,在模拟信道上传输)后再发送和传输,到达时再音频信号解调成原来的数字信号,如利用电话交换网与调制解调器进行数据传输。

宽带传输

  1. 将信道分成多个子信道,分别传送音频、视频和数字信号,使不同的信道进行并行传输。
  2. 一个宽带信道可被分为多个逻辑基带信道,进行多路复用。
  3. 实质上是相对一般频带传输而言的宽频带传输,宽带传输采用频带传输技术。

基带传输

利用数字通信信道原封不动地传输由计算机或终端产生的0或1数字脉冲信号的方法称为基带传输。适用于近距离传输。

考点:基带传输、频带传输、宽带传输、数据报传输的对比★

数据报传输

存储转发方式的一种,可以使各个节点处于并行状态,大大缩短报文的传输时间。一般指IP数据报、ICMP数据报、TCP数据报、UDP数据报等传输。

信噪比

定义

信号的平均功率和噪声的平均功率之比

公式

信噪比(dB) = $10log_{10}(S/N) $ (dB)

奈奎斯特准则

在带宽为W(Hz)的低通信道中,若不考虑噪声影响,则码元传输的最高速率是2W(码元/秒)

香农公式

定义

香农 (Shannon) 用信息论的理论推导出了带宽受限且有高斯白噪声干扰的信道的极限、无差错的信息传输速率

公式★

信道的极限信息传输速率 C 可表达为: $C = W log_{2} (1+S/N) $ (bit/s)

其中: W 为信道的带宽(以 Hz 为单位); S 为信道内所传信号的平均功率; N 为信道内部的高斯噪声功率。

结论

  1. 信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。
  2. 只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种办法来实现无差错的传输。
  3. 若信道带宽 W 或信噪比 S/N 没有上限(当然实际信道不可能是这样的),则信道的极限信息传输速率 C 也就没有上限。
  4. 实际信道上能够达到的信息传输速率要比香农的极限传输速率低不少。

举例

假定要用3KHz带宽的电话信道传送 64 kbit/s的数据(无差错传输),试问这个信道应该具有多高的信噪比?

$C = W log2 (1+S/N) \Rightarrow 64 kbit/s = 3000 log2 (1+S/N) $

影响信道最大传输速率的因素

  1. 信道能够通过的频率范围
  2. 信噪比

比特速率和码元速率的关系★

N b = N b a u d l o g 2 M N_{b}=N_{baud}log_{2}M Nb=Nbaudlog2M
其中 N b N_{b} Nb = 比特速率, N b a u d N_{baud} Nbaud = 码元速率(波特率,单位时间内传送的码元符号的个数),M = 进制数(有效离散值)

物理层下的传输媒体

物理层下的传输媒体不属于物理层,可视为第0层

导引型传输媒体

  • 在导引型传输媒体中,电磁波被导引沿着固体媒体传播。
  • 媒介:同轴电缆、双绞线、光纤/光缆

非导引型传输媒体

  • 非导引型传输媒体就是指自由空间。在非导引型传输媒体中,电磁波的传输常称为无线传输。

  • 媒介:无线电波:微波(包括地面微波接力通信和卫星通信)、红外线、激光

  • ISM频段

    • 要使用某一段无线电频谱进行通信,通常必须得到本国政府有关无线电频谱管理机构的许可证。但是,也有一些无线电频段是可以自由使用的。例如:ISM。

    • ISM是Industrial,Scientific,and Medical (工业、科学与医药)的缩写,即所谓的“工、科、医频段”。各国的ISM标准有可能略有差别。

      image-20230201210714180

信道复用技术★

通过共享信道,最大限度提高信道利用率。

频分复用 FDM (Frequency Division Multiplexing)

image-20221210222104791

原理
  • 将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。

  • 频分复用的所有用户在同样的时间占用不同的带宽资源(这里的“带宽”是频率带宽而不是数据的发送速率)。

优点

信道复用率高,分路方便;

缺点

各路信号之间存在相互干扰(串扰)。

(同步)时分复用 TDM (Time Division Multiplexing)

image-20221210222255417

原理
  • 时分复用则是将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙。

  • 每一个用户所占用的时隙是周期性地出现(其周期就是TDM帧的长度)的。

    TDM 信号也称为等时 (isochronous) 信号。

优点

简单,易于大规模集成,信号间不串话。

缺点

image-20230203215115418

所有用户在不同的时间占用同样的频带宽度,可能会造成线路资源的浪费。

使用时分复用系统传送计算机数据时,由于计算机数据的突发性质,用户对分配到的子信道的利用率一般是不高的。

统计时分复用 STDM (Statistic TDM)

又叫异步时分复用,STDM 帧不是固定分配时隙,而是按需动态地分配时隙。因此可以提高线路的利用率。

image-20221210222428947

波分复用 WDM(Wavelength Division Multiplexing)

原理
  • 波分复用就是光的频分复用。使用一根光纤来同时传输多个光载波信号。
  • 整个波长频带被划分为若干个波长范围,每个用户占用一个波长范围来进行传输。

image-20221210222544070

优点

结构小,简单可靠;充分利用光纤带宽资源;透明的传输通道;更灵活地进行光纤通信组网。

缺点

存在插入损耗和串光问题。

码分复用 CDM (Code Division Multiplexing) ★

又称码分多址 CDMA (Code Division Multiple Access)。

特点
  • 各用户使用经过特殊挑选的不同码型,因此彼此不会造成干扰
  • 这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
  • 每个用户可在同一时间内使用同样的频带进行通信,但使用的是基于码型的分割信道的方法。
举例
  1. 共有4个站进行码分多址通信。4个站的码片序列为
    A:(-1-1-1+1+1-1+1+1)
    B:(-1-1+1-1+1+1+1-1)
    C:(-1+1-1+1+1+1-1-1)
    D:(-1+1-1-1-1-1+1-1)
    现收到这样的码片序列S:(-1+1-3+1-1-3+1+1)。
    问哪个站发送数据了?发送数据的站发送的是0还是1?

    S•A=(+1-1+3+1-1+3+1+1)/8=1, A发送1
    S•B=(+1-1-3-1-1-3+1-1)/8=-1, B发送0
    S•C=(+1+1+3+1-1-3-1-1)/8=0, C无发送
    S•D=(+1+1+3-1+1+3+1-1)/8=1, D发送1

  2. 站点1、2、3通过CDMA共享链路。站点1、2、3的码片序列分别是
    A:(1,1,1,1)、B:(1,-1,1,-1)和C:(1,1,-1,-1),
    若站3从链路上收到的序列S是(2,0,2,0, 0,-2,0,-2, 0,2,0,2),则站点3收到站点1发送的数据是多少?

    S•A=(2+0+2+0)/ 4=1,(0-2+0-2)/ 4=-1,(0+2+0+2)/ 4=1,A发送1 0 1

    S•B=(2+0+2+0)/ 4=1,(0+2+0+2)/ 4=1,(0-2+0-2)/ 4=-1,B发送1 1 0

    S•C=(2+0-2+0)/ 4=0,(0-2+0+2)/ 4=0,(0+2+0-2)/ 4=0,C无发送

数字传输系统

早期数字传输系统缺点

最主要的是以下两个方面

  1. 速率标准不统一
  2. 不是同步传输

SONET

为解决早期数字传输系统缺点,美国推出同步光纤网 SONET (Synchronous Optical Network) ,其各级时钟都来自一个非常精确的主时钟。

SDH

ITU-T以美国标准SONET为基础,制定出国际标准同步数字系列SDH(Synchronous Digital Hierarchy)

SONET / SDH 标准的意义

  1. 使不同的数字传输体制在 STM-1 等级上获得了统一
  2. 第一次真正实现了数字传输体制上的世界性标准
  3. 已成为公认的新一代理想的传输网体制。
  4. SDH 标准也适合于微波和卫星传输的技术体制。

宽带接入技术

ADSL

image-20221211215236298

非对称数字用户线 ADSL (Asymmetric Digital Subscriber Line) :用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带业务。

HFC

image-20221211215346914

光纤同轴混合网HFC (Hybrid Fiber Coax) 网:在目前覆盖面很广的有线电视网 CATV 的基础上开发的一种居民宽带接入网

FTTx

是一种实现宽带居民接入网的方案,代表多种宽带光纤接入方式。FTTx 表示 Fiber To The…(光纤到…),例如:

  1. 光纤到户 FTTH (Fiber To The Home):光纤一直铺设到用户家庭,可能是居民接入网最后的解决方法。
  2. 光纤到大楼 FTTB (Fiber To The Building):光纤进入大楼后就转换为电信号,然后用电缆或双绞线分配到各用户。
  3. 光纤到路边 FTTC (Fiber To The Curb):光纤铺到路边,从路边到各用户可使用星形结构双绞线作为传输媒体

第三章 数据链路层

链路

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

在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。

数据链路

把实现控制数据传输的必要通信协议的硬件和软件(如网络适配器)加到链路上,就构成了数据链路。

功能★

将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。

帧同步、透明传输、差错控制、传递信息、控制流量、控制链路(建立、维护、释放)、MAC寻址、区分数据和控制信息。

数据单位

信道

  • 点对点信道:PPP协议
  • 广播信道:CSMA/CD协议

三个基本问题★

封装成帧 (framing)

原因/作用
  1. 识别帧的开始与结束
  2. 便于计算机识别和处理比特流
  3. 向上层提供比特丢失、比特错误等服务
  4. 方便传输
最大传送单元MTU(Maximum Transfer Unit)

数据链路层数据部分长度上限。

image-20230203221431099

解决方法

image-20221218163827820

在一段数据的前后分别添加首部和尾部(用于帧定界),然后就构成了一个帧。

透明传输

透明的定义

某一个实际存在的事物看起来却好像不存在一样

原因
  1. 避免消息符号与帧定界符号相混淆
  2. 如果数据中的某个字节的二进制代码恰好和帧定界符一样就会出现帧定界错误

image-20221218172002147

解决方法
  1. 面向字节的物理链路使用字节填充 (byte stuffing) 或字符填充 (character stuffing)

    1. 发送端的数据链路层在数据中出现控制字符“SOH”(Start Of Header)或 “EOT”(End Of Transmission)或转义字符"ESC"的前面插入一个转义字符“ESC” (其十六进制编码是 1B)。
    2. 接收端的数据链路层在将数据送往网络层之前删除控制字符前插入的转义字符和两个转义字符中前面的那一个。

    image-20221218172328346

  2. 面向比特的物理链路使用比特填充

差错检测

原因
  1. 防止差错的无效数据帧,浪费网络资源
  2. 在传输过程中可能会产生比特差错(是传输差错中的一种):1 可能会变成 0 而 0 也可能变成 1。
误码率 BER (Bit Error Rate)

在一段时间内,传输错误的比特占所传输比特总数的比率,与信噪比有很大的关系(正相关)。

解决方法
循环冗余检验CRC(Cyclic Redundancy Check)★
循环冗余编码※

CRC(Cyclic Redundancy Check)编码,也称为多项式(polynomial code)编码。它是在数据通信中常用的一种差错校验码。由信息字段校验字段组成。其中信息字段和校验字段长度可以任意选定。

步骤
  1. 收发双方约定好一个生成多项式G(x);
  2. 发送方基于待发送的数据和生成多项式计算出差错检测码/循环冗余校验码(冗余码),将其添加到待传输数据的后面一起传输;
  3. 接收方通过生成多项式来计算收到的数据是否产生了误码;
    • 若得出的余数 R = 0,则判定这个帧没有差错,就接受 (accept)。
    • 若余数 R ≠ 0,则判定这个帧有差错,就丢弃。
计算★
  1. 用二进制的模 2 运算进行 2 n 2^n 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
  2. 得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R, 余数 R 比除数 P 少 1 位,即 R 是 n 位。
  3. 将余数 R 作为冗余码拼接在数据 M 后面发送出去。
举例

image-20221218174847835

前面讲了理论,这里介绍具体协议的实现。

PPP协议 (Point-to-Point Protocol)

在通信线路质量较差的年代,在数据链路层使用可靠传输协议曾经是一种好办法。因此,能实现可靠传输的高级数据链路控制HDLC(High-level Data Link Control)就成为当时比较流行的数据链路层协议。但现在HDLC已很少使用了。对于点对点的链路,简单得多的点对点协议PPP(Point-to-Point Protocol)则是目前使用得最广泛的数据链路层协议。

注意

  1. 使用点对点信道
  2. PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。
  3. 基于IP通信,不需要MAC地址

组成

  1. 一个将 IP 数据报封装到串行链路的方法。
  2. 链路控制协议 LCP (Link Control Protocol),用来建立、配置和测试数据链路连接。
  3. 网络控制协议 NCP (Network Control Protocol),其中的每一个协议支持不同的网络层协议。

同步传输

一连串的比特连续传送(帧)。必须建立准确的时钟信号,各信号码元之间的相对位置都是固定的。

异步传输

逐个字符地传送。需要在每一个字符的开始和结束的地方加上标志,即加上起始码和停止码。

同步传输和异步传输的区别★

指标同步传输异步传输
传输单位比特字节
透明传输方法0比特填充法字符填充法
传输效率
时钟精确度要求
各信号码元之间的相对位置固定不固定

三个基本问题

帧格式(封装成帧)

image-20221218180316314

  1. 首部的第一个字段和尾部的第二个字段都是标志字段F(Flag,十六进制的7E的二进制表示是01111110)。标志字段表示一个帧的开始或结束。因此标志字段就是PPP帧的定界符。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。
  2. 首部中的地址字段A规定为0xFF(即11111111),控制字段C规定为0x03(即00000011)。这两个字段实际上并没有携带PPP帧的信息。
  3. PPP首部的第四个字段是2字节的协议字段
    1. 若为0x0021,则信息字段就是IP数据报
    2. 若为0xC021,则信息字段是PPP链路控制协议LCP的数据;
    3. 若为0x8021,则信息字段是网络层的控制数据;
    4. 若为0xC023,则信息字段是鉴别数据。
  4. 信息字段的长度是可变的,不超过1500字节([MTU](#最大传送单元MTU(Maximum Transfer Unit)))。
  5. 尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS(Frame Check Sequence)。
透明传输

下面两者方法本质上都是为了避免帧定界错误(帧定界符为0x7E/0111 1110 B)。

  1. 当 PPP 用在异步传输时(传输单位为字节),就使用一种特殊的字符填充法。

    1. 将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列 (0x7D, 0x5E)。
    2. 若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列 (0x7D, 0x5D)。
    3. 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加上0x20。

    image-20221218181323969

  2. 当 PPP 用在同步传输链路时(传输单位为比特),协议规定采用硬件来完成比特填充

    1. 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
    2. 接收端对帧中的比特流进行扫描。每当发现 5 个连续 1 时,就把这 5 个连续 1 后的一个 0 删除。

    image-20221218182101754

差错检测

image-20221218182227073

以太网

定义

符合 DIX Ethernet V2 标准的局域网

DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。

服务/功能

以太网提供的服务是无连接不可靠的交付,即尽最大努力的交付。当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。

差错的纠正由高层来决定。如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。对发送的帧不进行编号,也不要求接收方发回确认帧。这样做的理由是局域网的信道质量非常好,产生的错误的概率非常小。

局域网的数据链路层的两个子层

  1. 逻辑链路控制 LLC (Logical Link Control)子层,LLC 子层与传输媒体无关;

    由于现在广泛使用的局域网只有以太网,因此 LLC 帧已经失去了原来的意义

  2. 媒体接入控制 MAC (Medium Access Control)子层,与接入到传输媒体有关的内容都放在 MAC 子层。

image-20221218205714862

适配器

定义

网络接口板又称为通信适配器 (adapter) 或网络接口卡(Network Interface Card,NIC),或“网卡”。

image-20221218205958790

功能
  1. 进行串行/并行转换。计算机内部是并行通信,局域网是串行通信。
  2. 对数据进行缓存。
  3. 在计算机的操作系统安装设备驱动程序。
  4. 实现以太网协议。

拓扑结构

物理上为星型,逻辑上为总线型

三个基本问题

帧格式(封装成帧)

以Ethernet V2标准的MAC帧格式为例,假设网络层使用的是IP协议

image-20221228110528980

MAC地址

分为目的地址和源地址字段

本地网络上的主机通过硬件地址查找其它的网络设备

别名

MAC 层的硬件地址/硬件地址/物理地址/MAC 地址。

格式

IEEE 802 标准规定 MAC 地址字段可采用 6 字节 (48 位) 或 2 字节 (16 位) 这两种中的一种。

  • IEEE 的注册管理机构 RA 负责向厂家分配地址字段 6 个字节中的前三个字节 (即高位 24 位),称为组织唯一标识符。
  • 地址字段 6 个字节中的后三个字节 (即低位 24 位) 由厂家自行指派,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址。

所有 48 位都为 1 时,为广播地址。只能作为目的地址使用。

image-20221228112833971

类型字段

用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议。例如,当类型字段的值是0x0800时,就表示上层使用的是IP数据报。若类型字段的值为0x8137,则表示该帧是由NovellIPX发过来的。

数据字段

数据部分长度在46到1500字节之间(46字节是这样得出的:最小长度64字节减去18字节的首部和尾部就得出数据字段的最小长度)。

1500字节是[MTU](#最大传送单元MTU(Maximum Transfer Unit))默认长度

透明传输
  • MAC帧的开始有7个字节的前同步码帧开始定界符(10101011)

  • MAC帧的结束不需要帧结束定界符

    在以太网上传送数据时是以帧为单位传送的。以太网在传送帧时,各帧之间还必须有一定的间隙,并且物理层采用的是曼彻斯特编码,它的一个重要特点就是在曼彻斯特编码的每一个码元(不管码元是1或0)的正中间一定有一次电压的转换(从高到低或从低到高)。当发送方把一个以太网帧发送完毕后,就不再发送其他码元了(既不发送1,也不发送0)。因此,发送方网络适配器的接口上的电压也就不再变化了。这样,接收方就可以很容易地找到以太网帧的结束位置。在这个位置往前数4字节(FCS字段长度是4字节),就能确定数据字段的结束位置。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都视作属于同一个 MAC 帧,同时也可以计算出帧长度。可见以太网不需要使用帧结束定界符,也不需要使用字节插入等来保证透明传输。

差错检测

MAC帧中FCS字段采用CRC检验,检验的内容不包括前同步码和帧开始定界符。

扩展的以太网

在物理层用扩展以太网★
中继器/转发器※

中继器(Repeater)又称转发器,主要功能是将信号整形并放大再转发出去,以消除信号经过一长段电缆后,因噪声或其他原因而造成的失真和衰减,使信号的波形和强度达到要求,进而延长网络传输的距离

集线器
功能

集线器(Hub)对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。当集线器一个端口收到数据后,将其从除了输入端口外的所有端口广播出去,即信息分发

冲突域/碰撞域

在任意时刻,在每个碰撞域中只能有一个站在发送数据

image-20221228120741745

优点
  • 使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信
  • 扩大了以太网覆盖的地理范围
缺点
  • 碰撞域增大了,但总的吞吐量并未提高
  • 共享带宽,单个用户的带宽减少:对于普通 10 Mbit/s 的共享式以太网,若共有 N 个用户,则每个用户占有的平均带宽只有总带宽 (10 Mbit/s) 的 N 分之一。
  • 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
在数据链路层扩展以太网★
网桥
定义

网桥/桥接器(Bridge)/把多个“局域网”连接起来,组成更大的局域网;根据 MAC 帧的目的地址对收到的帧进行转发和过滤。

  • 当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址
  • 再确定将该帧转发到哪一个接口,或把它丢弃。
转发表自学习算法

参照交换机自学习功能

例题※
  1. 如图3-33所示,有五个站点分别连接在3个局域网上,并且用网桥B1和B2连接起来,每一个网桥都有两个接口(1和2),初始时,两个网桥中的转发表都是空的,以后有以下各站向其他的站发送了数据帧:A发送给E,C发送给B,D发送给C,B发送给A,请把有关信息填写在表3-4中。

    image-20230206174029998

    image-20220501205033503

  2. 图1表示有7个站(H1~h7,相应的MAC地址为MAC1~MAC7)分别连接在四个局域网上,并且用网桥B1、B2、以及B3连接起来。每个网桥都有两个端口(1和2)。在一开始,三个网桥的转发表都是空的。以后有以下各站向其他站发送了数据帧:…(如表所示)。

    img

    img

交换机
定义

交换式集线器 (switching hub)/以太网交换机 (switch)/第二层交换机 (L2 switch)

功能

物理编址、网络拓扑结构、错误校验、帧序列以及流控

注意

总线以太网使用 CSMA/CD 协议,以半双工方式工作。但以太网交换机不使用共享总线,没有碰撞问题,因此不使用CSMA/CD协议,而是以全双工方式工作。但由于它的帧结构未改变,仍然采用以太网的帧结构,所以仍称为以太网。

交换方式
  • 存储转发模式:把整个数据帧先缓存后再进行处理。
  • 直通模式:接收数据帧的同时就立即按数据帧的目的MAC地址决定该帧的转发接口,因而提高了帧的转发速度。缺点是它不检查差错就直接将帧转发出去,因此有可能也将一些无效帧转发给其他的站。
特点

特点和优点你中有我我中有你,考试时最好都写上。

  • 以太网交换机实质上就是一个多接口的网桥。 每个接口都直接与一个单台主机或另一个以太网交换机相连。
  • 以太网交换机具有并行性,一般都工作在全双工方式。 能同时连通多对接口,使多对主机能同时通信。
  • 相互通信的主机都是独占传输媒体,无碰撞地传输数据。(隔离了冲突域
  • 以太网交换机的接口有存储器,能在输出端口繁忙时把到来的帧进行缓存
  • 以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。
  • 以太网交换机使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥很多。
优点
  • 用户独享带宽,增加了总带宽容量。

    使用以太网交换机时,虽然在每个接口到主机的带宽还是 10 Mbit/s,但由于一个用户在通信时是独占,因此对于拥有 N 个接口的交换机的总带宽为 N×10 Mbit/s。

  • 从共享总线以太网转到交换式以太网时,所有接入设备的软件和硬件、适配器等都不需要做任何改动

  • 以太网交换机一般都具有多种速率的接口,方便了各种不同情况的用户。

自学习功能

image-20230205103346340

  • 举例
    • 假定在以太网交换机有4个接口,各连接一台计算机,其MAC地址分别是A,B,C和D。在一开始,以太网交换机里面的交换表是空的。
    • A先向B发送一帧,从接口1进入到交换机。交换机收到帧后,先查找交换表,没有查到应从哪个接口转发这个帧(在MAC地址这一列中,找不到目的地址为B的项目)。接着交换机把这个帧的源地址A和接口1写入交换表中,并向除接口1以外的所有接口广播这个帧(这个帧就是从接口1进来的,当然不应当把它再从接口1转发出去)。
    • C和D将丢弃这个帧,因为目的地址不对。只有B才收下这个目的地址正确的帧。这也称为过滤。 从新写入交换表的项目(A,1)可以看出,以后不管从哪一个接口收到帧,只要其目的地址是A,就应当把收到的帧从接口1转发 出去。这样做的依据是:既然A发出的帧是从接口1进入到交换机的,那么从交换机的接口1转发出的帧也应当可以到达A。
    • 假定接下来B通过接口3向A发送一帧。交换机查找交换表,发现交换表中的MAC地址有A。表明要发送给A的帧(即目的地址为 A 的帧)应从接口1转发。于是把这个帧传送到接口1转发给A。显然现在已经没有必要再广播收到的帧。交换表这时新增加的项目(B,3)表明今后如有发送给B的帧,就应当从接口3转发出去。
    • 经过一段时间后,只要主机C和D也向其他主机发送帧,以太网交换机中的交换表就会把转发到C或D应当经过的接口号(2或4)写入到交换表中。这样交换表中的项目就齐全了。要转发给任何一台主机的帧,都能够很快地在交换表中找到相应的转发接口
    • 考虑到有时可能要在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间。过期的项目就自动被删除。用这样的方法保证交换表中的数据都符合当前网络的实际状况。
  • 规则★
    • 交换机收到一帧后先进行自学习。查找交换表中与收到帧的源地址有无相匹配的项目。
      • 如没有,就在交换表中增加一个项目(源地址、进入的接口和有效时间);
      • 如有,则把原有的项目进行更新(进入的接口或有效时间)。
    • 转发帧。查找交换表中与收到帧的目的地址有无相匹配的项目。
      • 如没有,则向所有其他接口(进入的接口除外)转发;
      • 如有,则按交换表中给出的接口进行转发;
      • 若交换表中给出的接口就是该帧进入交换机的接口,则应丢弃这个帧。
虚拟局域网
定义

虚拟局域网VLAN (Virtual LAN)是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。 每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN。

image-20221228123643488

当 B1 向 VLAN2 工作组内成员发送数据时, 工作站 B2 和 B3 将会收到广播的信息;B1 发送数据时,工作站 A1,A2 和 C1 都不会收到 B1 发出的广播信息。

注意

虚拟局域网其实只是局域网给用户提供的一种服务, 而并不是一种新型局域网。

优点
  • 虚拟局域网是用户和网络资源的逻辑组合,因此可按照需要将有关设备和资源非常方便地重新组合, 使用户从不同的服务器或数据库中存取所需的资源。
  • 虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息(即“广播风暴”)而引起性能恶化。
帧格式

虚拟局域网协议允许在以太网的帧格式中插入一个4字节的标识符,称为VLAN标记(tag),用来指明发送该帧的计算机属于哪一个虚拟局域网。插入VLAN标记得出的帧称为802.1Q帧。显然,如果还使用原来的以太网帧格式,那么就无法区分是否划分了虚拟局域网。

image-20221228123241962

高速以太网
定义

速率达到或超过 100 Mbit/s 的以太网称为高速以太网,又称为快速以太网 (Fast Ethernet)。

  • 100 Mbit/s 的以太网

    • 一个网段的最大铜缆长度:100 m
    • 最短有效帧长: 64 字节
    • 争用期: 5.12 μ s 5.12\mu s 5.12μs
    • 帧间最小间隔: 0.96 μ s 0.96 \mu s 0.96μs
  • 吉比特以太网

    • 一个网段的最大铜缆长度: 100 m

    • 最短有效帧长: 64 字节

    • 争用期: 5.12 μ s 5.12\mu s 5.12μs

      采用了“载波延伸”(carrier extension)的办法,使最短帧长仍为64字节(这样可以保持兼容性),同时将争用期增大为512字节。凡发送的 MAC 帧长不足512字节时,就用一些特殊字符填充在帧的后面,使MAC帧的发送长度增大到512字节,这对有效载荷并无影响。接收端在收到以太网的 MAC 帧后,要把所填充的特殊字符删除后才向高层交付。

    • 帧间最小间隔: 0.96 μ s 0.96 \mu s 0.96μs

特点
  • 可在全双工方式下工作而无冲突发生。在全双工方式下工作时,不使用 CSMA/CD 协议。
  • MAC 帧格式仍然是 802.3 标准规定的。
  • 保持最短帧长不变,但将一个网段的最大电缆长度减小到 100 m。
  • 帧间时间间隔从原来的 9.6 μ \mu μ s 改为现在的 0.96 μ \mu μ s。
使用以太网进行宽带接入
特点
  1. 可以提供双向的宽带通信。
  2. 可以根据用户对带宽的需求灵活地进行带宽升级。
  3. 可以实现端到端的以太网传输,中间不需要再进行帧格式的转换。这就提高了数据的传输效率且降低了传输的成本。
  4. 不支持用户身份鉴别。
PPPoE

PPPoE (PPP over Ethernet) 的意思是“在以太网上运行 PPP”,它把 PPP 协议与以太网协议结合起来 —— 将 PPP 帧再封装到以太网中来传输。该协议在以太网进行宽带接入互联网时使用。

CSMA/CD协议

注意

  1. 使用广播信道,可以进行一对多通信
  2. 是局域网(以太网)采用的协议

含义

CSMA/CD:载波监听多点接入 / 碰撞检测 (Carrier Sense Multiple Access with Collision Detection) 。

  • “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。

  • “多点接入”表示许多计算机以多点接入的方式连接在一根总线上。

  • “碰撞检测”(“冲突检测”)就是计算机边发送数据边检测信道上的信号电压大小。

    • 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
    • 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。

在使用CSMA/CD协议时,一个站不可能同时进行发送和接收(但必须边发送边监听信道)。因此使用CSMA/CD 协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)

image-20221218202531896

流程★

16字总结:发前先听、边发边听、冲突停止、延后重传

  1. 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道。 (①发前先听)
  2. 检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
  3. 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听(②边发边听)。这里只有两种可能性:
    1. 发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到(1);
    2. 发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号(③冲突停止)。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),继续检测信道。但若重传达16次仍不能成功,则停止重传而向上报错。
  4. 以太网每发送完一帧,一定要把已发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个暂时保留的帧重传一次。(④延后重传)

争用期(碰撞窗口)

产生原因

最先发送数据帧的站,在发送数据帧后至多经过时间 2 τ 2 \tau 2τ (端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。

定义

以太网的端到端往返时延 2 τ 2 \tau 2τ 称为争用期(碰撞窗口)。

计算公式

设最远两个站点之间的距离为d(m),电缆中信号传播速度为v(m/s)。

τ = d v \tau=\frac{d}{v} τ=vd

争用期 = 2 τ 2 \tau 2τ

意义/作用

经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

协议规定长度
  • 10 Mbit/s 以太网取 51.2 μ s \mu s μs 为争用期的长度。

  • 这意味着:

    1. 对于 10 Mbit/s 以太网,在争用期内可发送 512 bit,即 64 字节。

    2. 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。如果发生冲突,就一定是在发送的前 64 字节之内。

    3. 如果一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节。

      因此以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。

最短有效帧

定义

设最远两个站点之间的距离为d(m),最小帧长为l(bit);最小帧长=争用期 2 τ 2 \tau 2τ x 数据传输速率(bps)。

  • 对于 10 Mbit/s 以太网,争用期= 51.2 μ s \mu s μs ,最小帧长= 51.2 x 10-6 x 10 x 106 = 512bit=64Byte
  • 对于 100 Mbit/s 以太网,争用期= 5.12 μ s \mu s μs ,最小帧长= 5.12 x 10-6 x 100 x 106 = 512bit=64Byte
例题

image-20230203124448202

  1. 假定2km长的CSMA/CD网络的数据率为100Mb/s,假设信号在网络上的传输速率为200000km/s,求能够使用此协议的最短帧长

    最短帧长=2×2/200000×100×1000000=2000bit=250Byte

二进制指数类型退避算法 (truncated binary exponential type)

意义

让发生碰撞的站在停止发送数据后推迟一段随机的时间才能再发送数据,减少重传时发生冲突的概率。

内容

image-20221228101327545

第四章 网络层

网络层=网际层=IP层

功能★

实现网络互连,完成分组在计算机网络核心部分的传输,即实现分组在多个网络的传输。为主机之间提供逻辑通信。

提供的两种服务★

虚电路

  1. 面向连接,虚电路是逻辑连接,整个数据传输过程中独占虚电路
  2. 在通信之前先建立虚电路 (Virtual Circuit),以保证双方通信所需的一切网络资源
  3. 可实现可靠传输,数据能够无差错、不重复、 不丢失、按照正确顺序地进行传输。
  4. 当通信的链路过多时,需要很大的物理资源投入,且每条链路的资源利用率不高

image-20221228155617728

数据报

  1. 网络在发送分组时不需要先建立连接。每一个分组 (即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
  2. 网络层不提供服务质量的承诺,只尽最大努力交付。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。使网络中的(与电信网的交换机相比较)路由器可以做得比较简单,而且价格低廉
  3. 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付 (包括差错处理、流量控制等)。
  4. 导致网络的造价大大降低, 运行方式灵活,能够适应多种应用。

image-20221228155641623

对比

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

网际协议 IP

数据单位

IP 数据报/数据包(packet)/分组

配套协议★

image-20221228165921449

地址解析协议 ARP (Address Resolution Protocol)
功能

从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。

实现原理

在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。每一台主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。

步骤

当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。

  • 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。减少了 ARP 广播的数量。
  • 如没有,就将自己的 IP 地址到硬件地址的映射以及主机B的IP地址写入 ARP 请求分组,ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。
注意
  1. ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
  2. 如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
使用 ARP 的四种典型情况

image-20221228181137208

  1. 发送方是主机(H1),要把 IP 数据报发送到本网络上的另一个主机(H2)。这时用 ARP 找到目的主机的硬件地址。
  2. 发送方是主机(H1),要把 IP 数据报发送到另一个网络上的一个主机(H3)。这时用 ARP 找到本网络上的一个路由器(R1)的硬件地址。剩下的工作由这个路由器来完成。
  3. 发送方是路由器(R1),要把 IP 数据报转发到本网络上的一个主机(H3)。这时用 ARP 找到目的主机的硬件地址。
  4. 发送方是路由器(R1),要把 IP 数据报转发到另一个网络上的一个主机(H4)。这时用 ARP 找到本网络上另一 个路由器(R2)的硬件地址。剩下的工作由这个路由器来完成。
例题
  1. 主机A发送IP数据报给主机B,途中经过了5个路由器。在IP数据报的发送过程中总共使用了6次ARP。

    解析:主机发送IP数据报时用一次ARP,每一个路由器在转发IP数据报时各使用一次。

网际控制报文协议 ICMP (Internet Control Message Protocol)

ICMP不是IP的高层协议(看起来好像是高层协议,因为ICMP报文是装在IP数据报中,作为其中的数据部分),而是IP层的协议。

功能
  • 更有效地转发 IP 数据报和提高交付成功的机会
  • 允许主机或路由器报告差错情况和提供有关异常情况的报告
报文格式

image-20221228211223234

种类
ICMP 差错报告报文

只报告错误,不能纠错

  • 分类

    • 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。

    • 时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定 的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。

    • 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

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

      类型的值ICMP报文的类型例子
      3终点不可达路由器或主机不能交付数据报
      4源点抑制路由器或主机由于堵塞而丢弃数据报
      11时间超过报文经过路由器时TTL减去1,当TTL为0时
      12参数问题路由器或目的主机收到IP数据报,首部的检验和字段出现误码
      5改变路由路由器把改变路由报文发送给主机,让主机调整发送给另外的路由器
  • 数据字段格式

    image-20221228212034411

    把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。再加上相应的ICMP差错报告报文的前8个字节。提取收到的数据报的数据字段前8个字节是为了得到运输层的端口号(对于TCP和 UDP)以及运输层报文的发送序号(对于TCP)。这些信息对源点通知高层协议是有用的。

ICMP询问报文
  • 回送请求和回答报文:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。

  • 时间戳请求和回答报文:ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个 32 位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求与回答可用于时钟同步和时间测量。

    类型的值ICMP报文的类型例子
    8或0回送请求或回送回答测试目的站是否可达(PING程序)
    13或14时间戳请求或时间戳回答进行时钟同步和测量时间(traceroute程序)
应用
PING (Packet InterNet Groper)
  • PING 用来测试两个主机之间的连通性。
  • PING 使用了 ICMP 回送请求与回送回答报文。
  • PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
追踪路由Traceroute
  • 定义
    • 它用来跟踪一个分组从源点到终点的路径。在 Windows 操作系统中这个命令是tracert。
  • 原理
    • Traceroute 从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。第一个数据报P1的生存时间TTL 设置为1。当P到达路径上的第一个路由器R1时,路由器R1先收下它,接着把TTL 的值减1。由于TTL等于零了,R1就把P1丢弃了,并向源主机发送一个ICMP时间超过差错报告报文。源主机接着发送第二个数据报P2,并把TTL设置为2。P2先到达路由器R1,R1收下后把TTL减1再转发给路由器R2。R2收到P2时TTL为1,但减1后TTL变为零了。R2就丢弃P2,并向源主机发送一个ICMP时间超过差错报告报文。这样一直继续下去。当最后一个数据报刚刚到达目的主机时,数据报的TTL是1。主机不转发数据报,也不把TTL值减1。但因IP数据报中封装的是无法交付的运输层的UDP用户数据报,因此目的主机要向源主机发送ICMP终点不可达差错报告报文。
  • 功能
    • 源主机可以获得这些路由器和最后目的主机发来的ICMP报文给出的路由信息:到达目的主机所经过的路由器的IP地址,以及到达其中的每一个路由器的往返时间。
网际组管理协议 IGMP (Internet Group Management Protocol)

IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。

多播路由选择协议
本质

找出以源主机为根节点的多播转发树。

  • 在多播转发树上,每一个多播路由器向树的叶节点方向转发收到的多播数据报,但在多播转发树上的路由器不会收到重复的多播数据报(即多播数据报不应在互联网中兜圈子)。
  • 对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树。
转发数据报方法
  1. 泛洪与剪除
  2. 隧道技术
  3. 基于核心的发现技术

虚拟互联网络★

定义

虚拟互连网络/逻辑互连网络,虽然互连起来的各种物理网络的异构性客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP协议的虚拟互连网络可简称为IP网

使用IP网的好处是:当IP网上的主机进行通信时,就好像在一个单个网络上通信一样,它们看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议,等等)。如果在这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的互联网(Internet)。

中间设备
  1. 物理层使用的中间设备叫做**中继器/转发器(repeater)**。

  2. 数据链路层使用的中间设备叫做**网桥交换机**。

  3. 网络层使用的中间设备叫做路由器(router)。(可以隔离广播域)

    路由器是读取每一个数据包中的地址然后决定如何转发分组的专用智能网络设备,用于连接多个逻辑上分开的,使用相同网络层协议网络

    当中继系统是转发器或网桥时,一般并不称之为网络互连,因为仍然是一个网络。一般讨论的互连网都是指用路由器进行互连的互连网络。

    路由器会修改经过它的分组的MAC源地址和目的地址

  4. 在网络层以上使用的中间设备叫做网关(gateway)

    ※ 网关(Gateway)/网间连接器/协议转换器。网关在网络层以上实现两个高层协议不同的网络互连,网关连接两个不兼容的系统需要在高层进行协议的转换。

直接交付★

当源结点与目的结点位于同一个物理网络时,IP数据报从源结点到达目的结点不需要经过路由器交换结点进行转发,数据报从一台主机直接传输到另一台主机,这种交付就称为直接交付。

间接交付★

当源结点与目的结点不在同一个物理网络时,IP数据报需要经过路由器转发才到达到目的结点,这种交付就称为间接交付。

IP地址与MAC地址

image-20230205105752099

区别※
指标MAC地址IP地址
长度48位32位
使用层次数据链路层和物理层网络层及以上
是否可变否(硬件地址)是(逻辑地址)
位置MAC 帧的首部IP 数据报的首部
经过路由器后地址是否改变

当IP数据报插入到数据链路层的MAC帧以后,整个的IP数据报就成为MAC帧的数据,因而在数据链路层看不见数据报的IP地址

转发过程

如图,画的是三个局域网用两个路由器R1和R2互连起来。现在主机H1要和主机H2通信。这两台主机的IP地址分别是IP1和 IP2,而它们的硬件地址分别为HA1和 HA2(HA表示 Hardware Address)。通信的路径是:H1→经过R转发→再经过R2转发→H2。路由器R1因同时连接到两个局域网上,因此它有两个硬件地址,即HA3和HA4。同理,路由器R2也有两个硬件地址HA5和 HA6 。

image-20230205112149698

注意
  • 在IP层抽象的互联网上只能看到IP数据报。

  • 虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址进行转发

  • 在局域网的链路层,只能看见MAC帧。

    在不同网络上传送时,其MAC帧首部中的源地址和目的地址要发生变化。

  • IP层抽象的互联网屏蔽了下层这些很复杂的细节。只要在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。

在ip网络有了 IP 地址,为什么还要用 MAC 地址※

自己总结的

  1. 以太网协议先于IP协议出现,上层协议需要向下兼容。(历史因素)
  2. 如果不使用IP地址,由于MAC硬件地址无法改变,无法根据网络前缀匹配,会导致路由表过大,因此以太网被认为是“不可路由协议”,无法满足全球的互联网使用,只能在同一局域网内通信。(IP地址必要性)
  3. IP地址是逻辑地址,方便寻址,对于位于同一个子网上的设备,分配的 IP 地址前缀都是一样的,便于划分子网,使路由匹配只需匹配网络号,减少路由表大小。(IP地址必要性)
  4. 使用 IP 地址能屏蔽各种物理网络的异构型,解决复杂的硬件地址转换工作。(IP地址功能)
  5. 使用IP地址(网络号/前缀)找到目标机器所属的局域网,再通过ARP协议找到其MAC地址,通过MAC地址将分组交付。(IP与MAC关系)
  6. 在尚未给设备分配IP地址前,需要通过 MAC 地址来区分不同的设备。(MAC地址必要性)

ipv4地址定义

把整个因特网看成为一个单一的、抽象的网络。 IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。是一种逻辑地址。

IPv4地址的编址方法★

分类的IP地址
规则

image-20221228170713097

  • 将IP地址划分为若干个固定类。
  • 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。
  • 主机号在它前面的网络号所指明的网络范围内必须是唯一的。 一个 IP 地址在整个互联网范围内是唯一的。
特点
  1. IP 地址是一种分等级的地址结构。分两个等级的好处是:
    1. IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配,方便了 IP 地址的管理。
    2. 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
  2. 实际上 IP 地址是标志一个主机(或路由器) 和一条链路的接口。
    1. 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机 (multihomed host)。
    2. 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络), 因此,一个路由器至少应当有两个不同的 IP 地址
  3. 用转发器或网桥(数据链路层及以下的中间设备)连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
  4. 所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的
点分十进制记法

image-20221228173146497

分类

image-20221228173130618

D类为组播地址,只能作为目标IP地址使用,不能作为源IP使用

A类地址详细信息

image-20221228174940435

B类地址详细信息

image-20221228175100658

C类地址详细信息

image-20221228175130946

IP地址的指派范围

image-20221228173519557

一般不使用的特殊IP地址

image-20221228173716505

主机号字段全0表示该IP地址是“本主机”所连接到的单个网络地址

子网的划分

在三级结构的IP地址中,划分子网是使网络前缀变长。

产生原因

两级IP地址的不合理之处

  1. IP 地址空间的利用率有时很低。
  2. 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
  3. 两级的 IP 地址不够灵活。
定义

划分子网 (subnetting):在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。

规则
  • 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。

    image-20230205114541470

    IP 地址 ::= { <网络号>, <子网号>, <主机号> }

  • 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。

  • 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id

    • 先找到连接在本单位网络上的路由器。
    • 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
    • 最后就将 IP 数据报直接交付目的主机。
优点
  • 减少了 IP 地址的浪费
  • 使网络的组织更加灵活
  • 更便于维护和管理
缺点

减少了能够连接在网络上的主机总数。

子网掩码

使用子网掩码(subnet mask) 可以找出IP地址中的子网部分。

优点

不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位的“与”运算(AND),就立即得出网络地址来。这样在路由器处理到来的分组时就可采用同样的算法。

规则

image-20230205115152344

(IP 地址) AND (子网掩码) = 网络地址

  • 子网掩码长度=32位
  • 某位=1:IP地址中的对应位为网络号和子网号
  • 某位=0:IP地址中的对应位为主机号
默认子网掩码

所有的网络都必须有子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码。

image-20230205115311272

例题
  1. B类地址的子网划分选择(使用固定长度子网)

    image-20230205115624875

    当子网号位数为0时: 相当于没有划分子网。

    当子网号位数为16时:相当于主机所占位数全部用于划分子网,只有子网号,却没有主机号了。(即每个子网中的有效主机数为0)

    当子网号位数为15时:相当于主机号剩余一位,即有两种取值(0,1)。当取值为0时,实际为该子网的网络地址,取值为1时实际为该子网的广播地址。这两个取值都不能作为有效的主机号标识,所以也没有意义。

    当子网号位数为1时:相当于子网号位一位,即有两种取值(0,1)。这两个取值也就是含子网号全0全1与父网络网络地址和广播地址重名冲突的两种情况(对路由器来说具有二义性,会发生错误)。

  2. 【例4-2】已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址。

    image-20221228204033603

  3. 【例4-3】上例中,若子网掩码改为 255.255.224.0,试求网络地址,讨论所得结果。

    image-20221228204049570

不同的子网掩码得出相同的网络地址。 但不同的掩码的效果是不同的。

构成超网(CIDR)

使网络前缀缩短。

产生原因
  1. B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕!
  2. 互联网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。
  3. 整个 IPv4 的地址空间最终将全部耗尽。
定义

无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。是无分类编址方法

地址掩码/子网掩码

地址掩码(掩码)由一连串1和接着的一连串0组成,而1的个数就是网络前缀的长度。在CIDR记法中,斜线后面的数字就是地址掩码中 1 的个数。
例如,/20 地址块的地址掩码是:11111111 11111111 11110000 00000000(20个连续的1和接着的12个连续的0)。

表示形式
  1. 地址块10.0.0.0/10可简写为10/10,也就是把点分十进制中低位连续的0省略
  2. 在网络前缀的后面加一个星号*,如:
    00001010 00*
    意思是:在星号*之前是网络前缀,而星号*表示IP地址中的主机号,可以是任意值
地址块
定义

CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块” 。可以用地址块中的最小地址和网络前缀的位数指明这个地址块。

全 0 和全 1 的主机号地址一般不使用。

举例

128.14.35.7/20= 10000000 00001110 00100011 00000111

最小地址128.14.32.010000000 00001110 00100000 00000000
最大地址128.14.47.25510000000 00001110 00101111 11111111

这个地址块共有212个地址。上面的地址块可记为128.14.32.0/20或10000000 00001110 0010*。在不需要指出地址块的起始地址时,也可把这样的地址块简称为“/20地址块” 。

常用的CIDR地址块

image-20230205144638831

特殊地址块
  1. 前缀n=32,即32位IP地址都是前缀,没有主机号。这其实就是一个IP地址,用于主机路由。
  2. 前缀n=31,这个地址块中只有两个IP地址,其主机号分别为0和1,用于点对点链路。
  3. 前缀n=0,同时IP地址也是全0,即0.0.0.0/0,用于默认路由。
路由聚合

一个CIDR地址块可以表示很多地址,这种地址的聚合常称为路由聚合/构造超网,它使得路由表中的一个项目可以表示很多个原来传统分类地址的路由。

路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。

特点
  1. CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
  2. CIDR使用各种长度的“网络前缀”(network prefix)来代替分类地址中的网络号和子网号。
  3. IP 地址从三级编址(使用子网掩码)又回到了两级编址。
  4. CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。我们只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
  5. CIDR 地址块中的地址数一定是 2 的整数次幂。
优点

可以更加有效地分配 IPv4 的地址空间,可根据客户的需要分配适当大小的 CIDR 地址块。

CIDR 地址块划分举例

image-20221228210615561

这个 ISP 共有 2^6=64 个 C 类网络。如果不采用 CIDR 技术, 则在与该 ISP 的路由器交换路由信息的每一个路由器的路由表中,就需要有 64 个项目。但采用地址聚合后,只需用路由聚合后的 1 个项目 206.0.64.0/18 就能找到该 ISP。

最长前缀匹配
背景

使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。

定义
  • 最长前缀匹配 (longest-prefix matching)/最长匹配/最佳匹配:从匹配结果中选择具有最长网络前缀的路由。
  • 网络前缀越长,其地址块就越小,因而路由就越具体 (more specific) 。
例题

image-20230210164011505

例题

4-24※ 已知路由器R1的转发表如下表所示。试画出各网络和必要的路由器的连接拓扑,标注出必要的IP地址和接口,对不能确定的情况应当指明。

image-20230206180227081

img

4-25 一个自治系统有5个局域网,其连接图如图所示。LAN2至LAN5上的主机数分别为:91、150、3和15。该自治系统分配到的IP地址块为30.138.118/23。试给出每一个局域网的地址块(包括前缀)(答案不唯一)。

image-20221230200236330

30.138.118/23=00011110.10001010.01110110.00000000。
LAN3有 150 台主机,1个路由器,全0网络地址和全1广播地址,至少分配256个地址。
LAN2有 91 台主机,1个路由器,全0网络地址和全1广播地址,至少分配128个。
LAN5 有 15 台主机,1个路由器,全0网络地址和全1广播地址,至少分配32个。
LAN4 有 3 台主机,1个路由器,全0网络地址和全1广播地址,至少分配8个。
LAN1 连接 3 台路由器,有 3 个IP地址,全0网络地址和全1广播地址,至少分配8个。

image-20221230201010298

局域网地址块
LAN130.138.01110111.11000000=30.138.119.192/29
LAN230.138.01110111.00000000=30.138.119.0/25
LAN330.138.01110110.00000000=30.138.118.0/24
LAN430.138.01110111.11001000=30.138.119.200/29
LAN530.138.01110111.10000000=30.138.119.128/26

4-26 一个大公司有一个总部和三个下属部门。公司分配到的网络前缀是192.77.33/24。公司的网络布局如图所示。总部共有五个局域网,其中的LAN1~LAN4都连接到路由器R1上,R1再通过LAN5与路由器R2相连。R2和远地的三个部门的局域网LAN6~LAN8通过广域网相连。每一个局域网旁边标明的数字是局域网上的主机数。试给每一个局域网分配一个合适的网络前缀。

image-20221230201426328

解答:
50个主机的LAN1需要前缀/26(主机号6位,62个主机号),
30个主机的LAN3需要前缀/27(主机号5位,30个主机号),
两个10个主机的LAN2和LAN4各需要一个前缀/28(主机号4位,14个主机号)。
LAN6~LAN8(加上路由器)各需要一个前缀/27(主机号5位,30个主机号),
3个WAN各有两个端点,各需要一个前缀/30(主机号2位,2个主机号)。
LAN5需要前缀/30(主机号2位,2个主机号),但考虑到以太网上可能还要再接几个主机,故留有余地,可分配一个29(主机号3位,6个主机号)。
本题的解答有很多种,下面给出其中的一种答案(先选择需要较大的网络前缀):
LAN1:192.77.33.0/26
LAN3:192.77.33.64/27 192.77.33.0100 0000
LAN6:192.77.33.96/27 192.77.33.0110 0000
LAN7:192.77.33.128/27 192.77.33.1000 0000
LAN8:192.77.33.160/27 192.77.33.1010 0000
LAN2:192.77.33.192/28 192.77.33.1100 0000
LAN4:192.77.33.208/28 192.77.33.1101 0000
LAN5:192.77.33.224/29 192.77.33.1110 0000(考虑到以太网上可能还要再接几个主机,故留有余地。)
WAN1:192.77.33.232/30 192.77.33.1110 1000
WAN2:192.77.33.236/30 192.77.33.1110 1100
WAN3:192.77.33.240/30 192.77.33.1111 0000

image-20221230212006074

4-33 某单位分配到一个地址块136.23.12.64/26。现在需要进一步划分为4个一样大的子网。试问:
(1)每一个子网的网络前缀有多长?28位
(2)每一个子网中有多少个地址?2^4=16个地址
(3)每一个子网的地址是什么?

136.23.12.64=10001000 00010111 00001100 0100000

136.23.12.64/28
136.23.12.80/28
136.23.12.96/28
136.23.12.112/28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(4)每一个子网可分配给主机使用的最小地址和最大地址是什么?

除去主机号为全0的网络地址和全1的广播地址

136.23.12.65/28 136.23.12.78/28
136.23.12.81/28 136.23.12.94/28
136.23.12.97/28 136.23.12.110/28
136.23.12.113/28 136.23.12.126/28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

IP数据报的格式★

image-20221228182214639

首部

首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。

版本

占 4 位,指 IP 协议的版本。 目前的 IP 协议版本号为 4 (即 IPv4)。

首部长度

占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节), 因此 IP 的首部长度的最大值是 60 字节。

区分服务

占 8 位,用来获得更好的服务。 在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段。

总长度

占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。若IP数据报总长度超过数据链路层数据部分的最大传送单元 MTU(Maximum Transfer Unit)则需要分片。

标识(identification)

占16 位。IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

标志(flag)

占 3 位,目前只有前两位有意义。 标志字段的最低位是 MF (More Fragment)。 MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。 标志字段中间的一位是 DF (Don’t Fragment) 。 只有当 DF = 0 时才允许分片。

片偏移★

占 13 位,指出较长的分组在分片后某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。因此每个分片的长度必须是8字节(64位)的整数倍。

例题

一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。

  • 因IP固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。

  • 于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。

  • 原始数据报首部被复制为各数据报片的首部, 但必须修改有关字段的值。

  • 分片示意图

    分片示意图

  • IP 数据报首部中与分片有关的字段中的数值

    总长度标识MFDF片偏移
    原始数据报382012345000
    数据报片1142012345100
    数据报片214201234510175
    数据报片310201234500350
生存时间
定义

占 8 位,记为 TTL (Time To Live), 指示数据报在网络中可通过的路由器数的最大值。功能为“跳数限制”。路由器在每次转发数据报之前就把TTL值减1。若 TTL值减小到零,就丢弃这个数据报,不再转发。

功能

可以防止数据报在网络中兜圈子

协议

占8位,指出此数据报携带的数据使用何种协议, 以便目的主机的 IP 层将数据部分上交给对应的协议进行处理

协议名ICMPIGMPIPTCPEGPIGPUDPIPv6ESPOSPF
协议字段值12468917415089
首部检验和

占16位,只检验数据报的首部, 不检验数据部分。这里不采用 CRC 检验码而采用简单的16 位二进制反码求和算法。

计算规则

image-20221228184948853

二进制反码求和规则: 0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列。若最高位相加后产生进位,则最后得到的结果要加上溢出的进位 1 (可能有多个1)。

image-20221228184845877

数据

上层协议格式

IP层转发分组

流程
  • 按主机所在的网络地址来制作路由表。(使用路由选择协议)
  • 根据目的网络地址利用路由器分组转发算法就能确定下一跳路由器,这样做的结果是:
    • IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
    • 只有到达最后一个路由器时,才向目的主机进行直接交付

image-20221228190004065

路由器分组转发算法
  1. 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为N。

  2. 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)。

  3. 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。

    特定主机路由:对特定的目的主机指明一个路由。

  4. 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。

  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。

  6. 报告转发分组出错。

IP多播

定义

IP多播(multicast)(也称多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的TCP/IP网络技术。多播作为一点对多点的通信,是节省网络带宽的有效方法之一。

多播数据报可以由没有加入多组播的主机发出,也可以通过没有组成员接入的网络。

单播与多播比较

image-20221230122540918

多播 IP 地址
  • IP 多播所传送的分组需要使用多播 IP 地址。
  • 在多播数据报的目的地址写入的是多播组的标识符。
  • 多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。
  • 每一个 D 类地址标志一个多播组。
  • 多播地址只能用于目的地址,不能用于源地址。
硬件多播
地址范围

IANA提供的以太网多播地址的范围是:01-00-5E-00-00-0001-00-5E-7F-FF-FF
只有 23位 能用作 多播地址

互联网号码指派管理局IANA拥有的以太网地址块的高24位为00-00-5E,以太网硬件地址字段中的第1字节的最低位为1时即为多播地址,但只分配了一半(23位)给多播,因此高24位为01-00-5E,并且25位为0。

映射规则

由于多播IP地址与以太网硬件地址的映射关系不是唯一的(228:223=32:1),因此收到多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。

23bit完全相同的几率已经很小了,这种设计方法只是只是一个折中而已

image-20221230160742769

举例

ip多播地址 224.128.64.32 (E0-80-40-20) 和 另一个 ip多播地址 224.0.64.32 (E0-00-40-20)
转换成以太网的硬件多播地址都是 01-00-5E-00-40-20
仍需要目的主机在3层根据ip地址进行过滤

路由选择协议★

定义

在路由器中运行,自动找到路由器转发分组最合适的路径

自治系统

将整个互联网划分为许多较小的自治系统 (Autonomous System,AS),一个自治系统是一个互联网,其最重要的特点是自治系统有权自主地决定在本系统内采用何种路由选择协议。一个自治系统内的所有网络都属于一个行政单位来管辖。一个自治系统的所有路由器在本自治系统内必须是连通的

自治系统之间的路由选择也叫做域间路由选择 (interdomain routing),在自治系统内部的路由选择叫做域内路由选择 (intradomain routing) 。

分类

内部网关协议 IGP (Interior Gateway Protocol)

在一个自治系统内部使用的路由选择协议

RIP
定义

路由信息协议 RIP (Routing Information Protocol) 是一种分布式的、基于距离向量算法的路由选择协议。 要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

“距离”的定义
  • 从一路由器到直接连接的网络的距离定义为 1。
  • 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
  • RIP 协议中的“距离” 也称为“跳数”(hop count) ,因为每经过一个路由器,跳数就加 1。
工作流程

image-20221230105301301

  • 路由器刚开始工作时,只知道自己到直连网络的距离为1.
  • 每个路由器仅和相邻路由器周期性地交换并更新路由信息。
  • 若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。
特点
  • RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短” 。
  • RIP 允许一条路径最多只能包含 15 个路由器。 “距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。
  • RIP 不能在两个网络之间同时使用多条路由。 RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
三个要点★
  • 与谁交换信息?(who)
    • 仅和相邻路由器交换信息。
  • 交互什么信息?(what)
    • 交换的信息是当前本路由器所知道的全部信息, 即自己的路由表
  • 什么时候交互信息?(when)
    • 固定的时间间隔交换路由信息,例如,每隔 30 秒。
    • 网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
优点

实现简单,开销较小。

缺点
  • RIP 限制了网络的规模,它能使用的最大距离为 15 (16 表示不可达)。
  • 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
  • “坏消息传播得慢”,使更新过程的收敛时间过长。
距离向量算法

对每一个相邻路由器发送过来的RIP报文,进行以下步骤:

  1. 对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”字段的值加1。每一个项目都有三个关键数据,即:到目的网络N,距离是d,下一跳路由器是X。

    这样做是为了便于进行本路由表的更新。假设从位于地址X的相邻路由器发来的RIP报文的某一个项目是“Net2,3,Y”,意思是“我经过路由器Y到网络Net2的距离是3”,那么本路由器就可推断出:“我经过X到网络Net2的距离应为3+1 = 4”。于是,本路由器就把收到的RIP报文的这一个项目修改为“Net2,4,X",作为下一步和路由表中原有项目进行比较时使用(只有比较后才能知道是否需要更新)。注意:收到的项目中的Y对本路由器是没有用的,因为Y不是本路由器的下一跳路由器地址(是下下一跳)。

  2. 对修改后的RIP报文中的每一个项目,进行以下步骤:

    1. 若原来的路由表中没有目的网络N,则把该项目添加到路由表中。

      表明这是新的目的网络,应当加入到路由表中。例如,本路由表中没有到目的网络Net2的路由,那么在路由表中就要加入新的项目“Net2,4,X”。

    2. 否则(即在路由表中有目的网络N,这时就再查看下一跳路由器地址〉

      1. 若下一跳路由器地址是X,则把收到的项目替换原路由表中的项目。

        要以最新的消息为准。到目的网络的距离有可能增大或减小,但也可能没有改变。例如,不管原来路由表中的项目是“Net2,3,X”还是“Net2,5,X”,都要更新为现在的“Net2,4,X”。

      2. 否则(即这个项目是:到目的网络N,但下一跳路由器不是X)

        1. 若收到的项目中的距离d小于路由表中的距离,则进行更新;

          例如,若路由表中己有项目“Net2,5,P”,就要更新为“Net2,4,X”。因为到网络Net2的距离原来是5,现在减到4,更短了。

        2. 否则什么也不做。

          若距离更大了,显然不应更新。若距离不变,更新后得不到好处,因此也不更新。

  3. 若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16(距离为16表示不可达)。

  4. 返回。

上面给出的距离向量算法的基础就是 Bellman-Ford 算法(或Ford-Fulkerson算法)。这种算法的要点是这样的:
设是结点A到B的最短路径上的一个结点。若把路径A→B拆成两段路径A→X和X→B,则每一段路径A→X和X→B也都分别是结点A到X和结点X到B的最短路径。

例题

【例4-5】已知路由器R6有表4-9(a)所示的路由表。现在收到相邻路由器R4发来的路由更新信息,如表4-9(b)所示。试更新路由器R6的路由表。

image-20221230111842260

  1. 先把表4-9(b)中的距离都加1,并把下一跳路由器都改为R。得出表4-9©。

    image-20221230112128721

  2. 把这个表的每一行和表4-9(a)进行比较。
    第一行在表4-9(a)中没有,因此要把这一行添加到表4-9(a)中。
    第二行的Net2在表4-9(a)中有,且下一跳路由器也是R4。因此要更新(距离增大了)。第三行的Net3在表4-9(a)中有,但下一跳路由器不同。于是就要比较距离。新的路由信息的距离是2,小于原来表中的4,因此要更新。
    这样,得出更新后的R的路由表如表4-9(d)所示。

    image-20221230112254590

4-37 假定网络中得路由器B的路由表有如下项目。

目的网络距离下—跳路由器
N17A
N22c
N68F
N84E
N94F

现在B收到从C发来的路由信息如下表。

目的网络距离
N24
N38
N64
N83
N95
  1. 先把B收到的路由信息中距离都加1,并且在后面添加C得新表:
目的网络距离下—跳路由器
N25C
N39C
N65C
N84C
N96C
  1. 更新后路由表:
目的网络距离下一条路由备注
N17A无新信息,不变
N25C以新信息为准
N39C原路由表没有目的网络N1,添加进去
N65C相比于F,选择C为下一跳更短
N84E下一跳选择E与C距离相同,不变
N94F选择C为下一跳距离更长,不变。
RIP2报文格式

image-20221230104610613

OSPF 协议
定义

开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的,是分布式的链路状态协议 。

  • “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
  • “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPF

注意:OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。

三个要点★
  • 与谁交互信息?(who)
    • 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
  • 交互什么信息?(what)
    • 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
  • 什么时候交互信息?(when)
    • 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
特点

OSPF最主要的特征就是使用分布式的链路状态协议(link state protocol),而不是像RIP那样的距离向量协议。和RIP协议相比,OSPF 的三个要点和RIP的都不一样

  1. 本自治系统中所有路由器发送信息。这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。

    使用是洪泛法(flooding),路由器通过所有输出端口向所有相邻的路由器发送信息。而每一个相邻路由器又再将此信息发往其所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)。

    而RIP协议仅仅向自己相邻的几个路由器发送信息。

  2. 发送的信息为与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。

    所谓“链路状态”就是说明本路由器都和哪些路由器相邻°,以及该链路的“度量”(metric)。OSPF将这个“度量”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定,因此较为灵活。有时为了方便就称这个度量为“代价”。

    而对于RIP协议,发送的信息是:“到所有网络的距离和下一跳路由器”(路由表)。

  3. 只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。

    而RIP不管网络拓扑有无发生变化,路由器之间都要定期交换路由表的信息。

外部网关协议 EGP (External Gateway Protocol)

若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。

IGP与EGP使用环境
不同的原因
  1. 互联网的规模太大,使得自治系统AS之间路由选择非常困难
  2. 自治系统AS之间的路由选择必须考虑有关策略。e.g:政治、经济、安全等
区别
  • 内部网关协议IGP寻找一条最佳路由
  • 外部网关协议EGP(如BGP)寻找一条能够到达目的网络且比较好的路由(不兜圈子)
BGP
定义

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

BGP 较新版本是 2006 年 1 月发表的 BGP-4 (BGP 第 4 个版本)

特点
  • BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
  • 每一个自治系统中 BGP 发言人(或边界路由器) 的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
  • 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
三个要点★
  • 与谁交换信息?(who)
    • 仅和相邻BGP发言人交换信息。
  • 交互什么信息?(what)
    • 交换的信息是当前本BGP发言人所知道的全部路径信息。(路径向量path vector)
  • 什么时候交互信息?(when)
    • 固定的时间间隔交换信息(30秒)。
BGP发言人

image-20221230115414038

IPv6

出现原因

  1. 互联网经过几十年的飞速发展,IPv4地址已经全部耗尽
  2. 解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即IPv6。

与IPv4的主要变化

  1. 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
  2. 扩展的地址层次结构。
  3. 灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
  4. 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
  5. 允许协议继续扩充
  6. 支持即插即用。自动配置,不需要DHCP
  7. 支持资源预分配
  8. 首部改为8字节对齐。首部长度必须是8字节的整数倍
  9. IPv6 只有在包的源结点才能分片,是端到端的传输路径中的路由器不能分片,所以从一般意义上说,IPv6不允许分片(不允许类似IPv4的路由分片)。

格式

数据报格式

image-20221230120318088

首部格式

image-20221230120338294

  • 版本:占4位。它指明了协议的版本,对IPv6该字段是6。
  • 通信量类:占8位。这是为了区分不同的IPv6数据报的类别或优先级。
  • 流标号:占20位。“流”就是互联网络上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或视频传输),而在这个“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
  • 有效载荷长度:占16位。它指明Pv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)。这个字段的最大值 是64KB(65535字节)。
  • 下一个首部:占8位。它相当于IPv4的协议字段或可选字段。
    • 当IPv6数据报没有扩展首部时,下一个首部字段的作用和IPv4的协议字段一样,它的值指出了基本首部后面的数据应交付IP层上面的哪一个高层协议
    • 当出现扩展首部时,下一个首部字段的值就标识后面第一个扩展首部的类型
  • 跳数限制:占8位。用来防止数据报在网络中无限期地存在。源点在每个数据报发出时即设定某个跳数限制(最大为255跳)。 每个路由器在转发数据报时,要先把跳数限制字段中的值减1。当跳数限制的值为零时,就要把这个数据报丢弃。
  • 源地址:占128位。是数据报的发送端的IP地址。
  • 目的地址:占128位。是数据报的接收端的IP地址。

地址

目的地址类型
单播 (unicast)

传统的点对点通信。

多播 (multicast)

一点对多点的通信。

任播 (anycast)

这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。

冒号十六进制记法
定义

为了使地址再稍简洁些,IPv6 使用冒号十六进制记法 (colon hexadecimal notation, 简写为 colon hex)

记法
  1. 允许把数字前面的 0 省略。例如 把 0000 中的前三个 0 省略,写成 1 个 0

  2. 冒号十六进制记法可以允许零压缩 (zero compression),即一连串连续的零可以为一对冒号所取代。在任一地址中只能使用一次零压缩。

    FF05:0:0:0:0:0:0:B3 可压缩为:FF05::B3

  3. 冒号十六进制记法可结合使用点分十进制记法的后缀。 这种结合在 IPv4 向 IPv6 的转换阶段特别有用。

    0:0:0:0:0:0:128.10.2.1 再使用零压缩即可得出: ::128.10.2.1

  4. CIDR 的斜线表示法。

    60 位的前缀 12AB00000000CD3 可记为: 12AB:0000:0000:CD30:0000:0000:0000:0000/60 或 12AB::CD30:0:0:0:0/60 (零压缩) 或 12AB:0:0:CD30::/60 (零压缩)

举例

一个用点分十进制记法的128位的地址为:
104.230.140.100.255.255.255.255.0.0.17.128.150.10.255.255

对应的冒号十六进制记法地址为:

68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF

分类
地址类型二进制前缀
未指明地址00…0(128位),可记为::/128。
环回地址00…1(128位),可记为::1/128。
多播地址11111111(8位),可记为FF00::/8。
本地链路单播地址1111111010(10位), 可记为FE80::/10。
全球单播地址(除上述四种外,所有其他的二进制前缀)

IPv4向IPv6过渡的方法★

双协议栈
定义

双协议栈(dual stack)是指在完全过渡到IPv6之前,使一部分主机(或路由器)装有双协议栈:一个IPv4和一个IPv6。因此双协议栈主机(或路由器)既能够和IPv6的系统通信,又能够和IPv4的系统通信。

双协议栈的主机(或路由器)记为IPv6/IPv4,表明它同时具有两种IP地址:一个IPv6地址和一个IPv4地址。

策略★

双协议栈主机在和 IPv6主机通信时采用IPv6地址,而和 IPv4主机通信时则采用IPv4地址。双协议栈主机使用域名系统DNS来查询知道目的主机是采用哪一种地址。若DNS返回的是IPv4地址,双协议栈的源主机就使用IPv4地址。但当DNS返回的是IPv6地址,源主机就使用IPv6地址。

举例

图4-49所示的情况是源主机A和目的主机F都使用IPv6,所以A向F发送IPv6数据报,路径是A→B→C→D→E→F。中间B到E这段路径是IPv4网络,路由器B不能向C转发IPv6数据报,因为C只使用IPv4协议。B是IPv6/IPv4路由器,它把IPv6数据报首部转换为IPv4数据报首部后发送给C。C再转发到D。当D转发到IPv4网络的出口路由器E时(E也是IPv6/IPv4路由器),再恢复成原来的IPv6数据报。

注意:IPv6首部中的某些字段无法恢复。例如,原来IPv6首部中的流标号X在最后恢复出的IPv6数据报中只能变为空缺。这种信息的损失是使用首部转换方法所不可避免的。

image-20221230121003815

隧道技术隧道技术(tunneling)
策略★

在IPv6数据报要进入 IPv4网络时,把 IPv6数据报封装成为IPv4数据报。整个的IPv6数据报变成了IPv4 数据报的数据部分。

举例

IPv4数据报从路由器B经过路由器C和D,传送到E,而原来的IPv6数据报就好像在IPv4网络的隧道中传输,什么都没有变化。当IPv4数据报离开IPv4网络中的隧道时,再把数据部分(即原来的IPv6数据报)交给主机的IPv6协议栈。

图中的一条粗线表示在IPv4网络中好像有一个从B到E的“IPv6隧道”,路由器B是隧道的入口而E是出口。
在隧道中传送的数据报的源地址是B而目的地址是E。
要使双协议栈的主机知道IPv4 数据报里面封装的数据是一个IPv6数据报,就必须把IPv4首部的协议字段的值设置为41(41表示数据报的数据部分是IPv6数据报)。

image-20221230121622200

ICMPv6

使用ICMP来反馈一些差错信息。它合并了IPv4中地址解析协议ARP和网际组管理协议IGMP的功能。是面向报文的协议。

image-20230203170553123

VPN★

本地地址与全球地址

本地地址

仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。

全球地址

全球唯一的 IP 地址,必须向互联网的管理机构申请。

问题

在内部使用的本地地址就有可能和互联网中某个 IP 地址重合,这样就会出现地址的二义性问题。

解决

RFC 1918 指明了一些专用地址 (private address)也叫做可重用地址 (reusable address)。

专用地址
定义

专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发

三个专用 IP 地址块
  1. A类,10.0.0.0 到 10.255.255.255,或记为10.0.0.0/8,它又称为 24 位块
  2. B类,172.16.0.0 到 172.31.255.255,或记为172.16.0.0/12,它又称为 20 位块
  3. C类,192.168.0.0 到 192.168.255.255,或记为192.168.0.0/16,它又称为 16 位块
专用网

采用这样的专用 IP 地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。

定义

虚拟专用网 VPN (Virtual Private Network):利用公用的互联网作为本机构各专用网之间的通信载体

  • “专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
  • “虚拟”表示“好像是”,但实际上并不是, 因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样。

构建要求

  1. 如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密
  2. 一个机构要构建自己的 VPN 就必须为它的每一个场所购买专门的硬件和软件,并进行配置, 使每一个场所的 VPN 系统都知道其他场所的地址。

技术实现

隧道技术
要求

VPN连接的每一个场所至少要有一个路由器具有合法的全球IP地址

举例

路由器R1和R2。这两个路由器和互联网的接口地址必须是合法的全球IP地址。路由器R1和R2在专用网内部网络的接口地址则是专用网的本地地址。

image-20221230173511541

NAT★

定义

网络地址转换 NAT (Network Address Translation) :解决在专用网上使用专用地址的主机如何与互联网上的主机通信(并不需要加密)问题。

要求

  1. 在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT 路由器,它至少有一个有效的外部全球IP地址。
  2. 所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。

过程

图中给出了 NAT路由器的工作原理。专用网192.168.0.0内所有主机的IP地址都是本地IP地址192.168.x.x。NAT路由器至少要有一个全球IP地址(此处为172.38.1.5),才能和互联网相连。

image-20221230174055558

  1. 内部主机 A 用本地地址 IPA 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器。
  2. NAT 路由器将数据报的源地址 IPA 转换成全球地址 IPG,并把转换结果记录到NAT地址转换表中,目的地址 IPB 保持不变,然后发送到互联网。
  3. NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 IPB 而目的地址是 IPG
  4. 根据 NAT 转换表,NAT 路由器将目的地址 IPG转换为 IPA,转发给最终的内部主机 A。

可以看出,在内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换:

  1. 离开专用网时:替换源地址,将内部地址替换为全球地址;
  2. 进入专用网时:替换目的地址,将全球地址替换为内部地址;

NAT地址转换表示例

方向字段旧的IP地址新的IP地址
源IP地址192.168.0.3172.38.1.5
目的IP地址172.38.1.5192.168.0.3

多协议标记交换 MPLS (MultiProtocol Label Switching)

定义

“多协议”表示在 MPLS 的上层可以采用多种协议,例如:IP,IPX;可以使用多种数据链路层协议,例如:PPP,以太网,ATM 等。

“标记”是指每个分组被打上一个标记,根据该标记对分组进行转发。

特点

  1. 支持面向连接的服务质量。
  2. 支持流量工程,平衡网络负载。
  3. 有效地支持虚拟专用网VPN。

优点

每个分组携带一个叫做标记 (label) 的小整数。当分组到达交换机(即标记交换路由器)时, 交换机读取分组的标记, 并用标记值来检索分组转发表。这样就比查找路由表来转发分组要快得多。

软件定义网络SDN(Software Defined Network)

特征

  1. 基于流的转发
  2. 数据层面与控制层面分离
  3. 位于数据层面交换机之外的网络控制功能
  4. 可编程的网络

层次

image-20221230181807693

解决ip地址耗尽的措施

  1. 采用划分子网,使IP地址的分配更加合理,减少 IP 地址的浪费
  2. 采用无类别编址CIDR,使IP地址的分配更加有效,减少 IP 地址的浪费
  3. 采用网络地址转换NAT方法以节省全球IP地址
  4. 采用具有更大地址空间的新版本的IP协议IPv6

第五章 运输层

与网络层区别★

网络层为主机之间提供逻辑通信,主机的身份标志是 IP 地址

运输层为应用进程之间提供端到端的逻辑通信,进程的身份标志是端口

进程之间的通信

image-20221230213119568

  • 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层
  • 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到三层(到网络层)的功能。

功能★

  1. 向上面的应用层提供逻辑通信服务。(为应用进程之间提供端到端的逻辑通信)

    “端”是指用户应用程序的“端口”

  2. 端口复用(multiplexing)和分用 (demultiplexing)。

    复用:各个应用进程可以通过运输层将数据传送到网络IP层

    分用:运输层从网络IP层收到应用进程数据后,必须交付给指定的用户进程

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

端口

定义

协议端口号 (protocol port number),简称端口 (port),也称为进程标识。两个计算机中的进程要互相通信,不仅必须知道对方的 IP 地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)。

作用

  1. 标志主机中的进程

  2. 充当通信的终点。

    只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完成。

  3. 应用层的各种协议进程与运输实体进行层间交互的地址

规则

  • 端口用一个 16 位端口号进行标志。
  • 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。
  • 在互联网中,不同计算机的相同端口号是没有联系的。

分类★

服务器端使用的端口号
  • 熟知端口,数值一般为 0 ~ 1023。

    • 常用熟知端口号(前6个,除了TFTP)

      应用程序FTPTELNETSMTPDNSTFTPHTTPSNMPSNMP(trap)HTTPS
      熟知端口号212325536980161162443
  • 登记端口号,数值为 1024 ~ 49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记, 以防止重复。

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

UDP与TCP

对比★

指标UDPTCP
提供的服务无连接面向连接(逻辑连接)
保证可靠和顺序交付
交付尽力而为地交付可靠交付
TPDUUDP报文/用户数据报报文段(segment)
处理上层数据基于报文基于字节流
首部、资源开销
信息交互方式半双工全双工
接收到差错的TPDU直接丢弃接收方丢弃,发送方重传
多播和广播支持不支持

运输[协议数据单元](#协议数据单元 PDU (Protocol Data Unit)) TPDU (Transport Protocol Data Unit):两个对等运输实体在通信时传送的数据单位。
无论在哪一层传送的数据单元,都可笼统地用“分组”来表示。

用户数据报协议 UDP (User Datagram Protocol)

UDP 只在 IP 的数据报服务之上增加了很少一点的功能:复用和分用差错检测

特点★
  1. 无连接,发送数据之前不需要建立连接。因此减少了开销和发送数据之前的时延。

  2. 尽最大努力交付。即不保证可靠交付,因此主机不需要维持复杂的连接状态表。

  3. 面向报文。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,一次交付一个完整的报文。

    应用程序必须选择合适大小的报文。

    • 若报文太长,UDP 把它交给 IP 层后,IP 层在传送时可能要进行分片(MTU),降低 IP 层的效率。
    • 若报文太短,UDP 把它交给 IP 层后,会使 IP 数据报的首部的相对长度太大,也降低 IP 层的效率。
  4. 没有拥塞控制。因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。 很适合多媒体通信的要求。

  5. 支持一对一、一对多、多对一和多对多的交互通信(半双工)。

  6. 首部开销小。只有 8 个字节,比 TCP 的 20 个字节的首部要短。

首部格式★

image-20221231114357398

源端口

源端口号在需要对方回信时选用。不需要时可用全0。

目的端口

目的端口号在终点交付报文时必须使用。

长度

UDP用户数据报的长度,其最小值是8(仅有首部)。

检验和
定义

检测UDP用户数据报在传输中是否有错,有错就丢弃。

举例

假定用户数据报的长度是15字节,因此要添加一个全0的字节。

image-20221231114643101

伪首部:仅用于计算检验和。在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。

例题

5-49 下面是以十六进制格式存储的一个 UDP 首部:
CB84 000D 001C 001C
试问:
(1) 源端口号是什么?
12×163 +11×162 +8×16+4=52100
(2) 目的端口号是什么?
13
(3) 这个用户数据报的总长度是什么?
16+12=28Byte
(4) 数据长度是多少?
28-8=20Byte
(5)这个分组是从客户到服务器还是从服务器到客户?
客户到服务器,因为目的端口号是熟知端口
(6) 客户进程是什么?
从 RFC 867 可以得知,这个客户进程是 Daytime。当 Daytime 服务器收到客户发送的 UDP 用户数据报后,就把现在的日期和时间以 ASCII 码字符串的形式返回给客户。

传输控制协议 TCP (Transmission Control Protocol)

特点
  1. 面向连接

  2. 每一条 TCP 连接只能有两个端点 (endpoint),只能是点对点的(一对一)。

  3. 提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。

  4. 提供全双工通信。TCP运行通信双方的应用进程在任何时候都能发送数据。

  5. 面向字节流。

    流(stream) :流入或流出进程的字节序列。

    面向字节流:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。 但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。

    image-20221231115811942

注意
  • TCP 连接是一条虚连接而不是一条真正的物理连接。
  • TCP 对应用进程一次把多长的报文发送到 TCP 的缓存中是不关心的。
  • TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。
  • TCP 可把太长的数据块划分短一些再传送,也可等待积累有足够多的字节后再构成报文段发送出去。
  • 同一个IP地址可以有多个不同的TCP连接,而同一个端口号也可以出现在多个不同的TCP连接中。
TCP 的连接
定义

TCP 把连接作为最基本的抽象。每一条 TCP 连接有两个端点。每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定,即:

TCP 连接 ::= { socket1 , socket2 } = {(IP1 : port1 ), (IP2 : port2 )}

套接字
定义

套接字 (socket) /插口:是TCP 连接的端点。端口号拼接到 (contatenated with) IP 地址即构成了套接字。

格式

套接字 socket = (IP地址 : 端口号)

可靠传输

TCP发送的报文段是交给IP层传送的。但IP层只能提供尽最大努力服务,也就是说,TCP下面的网络所提供的是不可靠的传输。因此,TCP必须采用适当的措施才能使得两个运输层之间的通信变得可靠。

停止等待协议★
定义

每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

停止等待协议可以看作是连续ARQ协议发送窗口和接收窗口都为1的特殊情况,且只需要1比特给报文段编号即可

作用

使用确认和重传机制,可以在不可靠的传输网络上实现可靠的通信。

无差错情况

A 发送分组 M1,发完就暂停发送,等待 B 的确认 (ACK)。B 收到了 M1 向 A 发送 ACK。A 在收到了对 M1 的确认后,再发送下一个分组 M2。

image-20221231152331184

优缺点

优点是简单,缺点是信道利用率太低。

信道利用率

image-20221231154606148

U = T D T D + R T T + T A U=\dfrac{T_{D}}{T_{D}+RTT+T_{A}} U=TD+RTT+TATD

T D T_{D} TD :A发送分组所需要的时间, T D = 分组长度 数据率 T_{D}=\dfrac{分组长度}{数据率} TD=数据率分组长度

T A T_{A} TA :B发送确认分组所需要的时间

RTT:往返时间

出现差错★
  • 这两种情况下,B 都不会发送任何确认信息

    1. B 接收 M1 时检测出了差错,就丢弃 M1,其他什么也不做 (不通知 A 收到有差错的分组)。

    2. M1 在传输过程中丢失了,这时 B 当然什么都不知道,也什么都不做。

      image-20221231152751806

  • 解决方法为超时重传

    • A 为每一个已发送的分组都设置了一个超时计时器。
    • A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2 。

下面两种情形都会出现延迟重复分组问题

确认丢失★

image-20221231153543635

  • 出现背景
    • 若 B 所发送的对 M1 的确认丢失了,那么 A 在设定的超时重传时间内不能收到确认,但 A 并无法知道:是自己发送的分组出错、丢失了,或者是 B 发送的确认丢失了。
  • A方措施
    • 在超时计时器到期后重传 M1。
  • B方措施
    1. 丢弃这个重复的分组 M1,不向上层交付
    2. 向 A 发送确认。不能认为已经发送过确认就不再发送, 因为 A 之所以重传 M1 就表示 A 没有收到对 M1 的确认(丢失了)。
确认迟到★

image-20221231153614546

  • 出现背景
    • 传输过程中没有出现差错,但 B 对分组 M1 的确认迟到了。
  • A方措施
    • 在超时计时器到期后重传 M1。
    • A 会收到重复的确认,收下后就丢弃。
  • B方措施
    1. 丢弃这个重复的分组 M1,不向上层交付
    2. 向 A 发送确认。不能认为已经发送过确认就不再发送, 因为 A 之所以重传 M1 就表示 A 没有收到对 M1 的确认(迟到了)。
注意
  1. 在发送完一个分组后,必须暂时保留已发送的分组的副本,以备重发。
  2. 分组和确认分组都必须进行编号
  3. 超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。
流水线传输

image-20230206155014604

  • 为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输。如连续ARQ协议和滑动窗口协议。
  • 流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一直有数据不间断地在传送。
  • 这种传输方式可以获得很高的信道利用率。
例题

5-18 假定在运输层使用停止等待协议。发送方在发送报文段M0后在设定的时间内未收到确认,于是重传M0,但M0又迟迟不能到达接收方。不久,发送方收到了迟到的对M0的确认,于是发送下一个报文段M1,不久就收到了对M1的确认。接着发送方发送新的报文段M0,但这个新的M0在传送过程中丢失了。正巧,一开始就滞留在网络中的M0现在到达接收方。接收方无法分辨M0是旧的。于是收下M0,并发送确认。显然,接收方后来收到的M0是重复的,协议失败了。试画出类似于图5-9所示的双方交换报文段的过程。

image-20230102171844389

连续ARQ协议
定义

自动重传请求 ARQ (Automatic Repeat reQuest):重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组。

滑动窗口
  • 发送方维持发送窗口
    • 可连续发送位于发送窗口内的分组,而不需要等待对方的确认。提高信道利用率。
    • 每收到一个确认, 就把发送窗口向前滑动一个分组的位置。
  • 接收方对分组采用累积确认
    • 不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认。表示到这个分组为止的所有分组都已正确收到了。
Go-back-N
  • 出现背景
    • 发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面 3 个分组的下落,而只好把后面的3个分组都再重传一次。
  • 定义
    • Go-back-N(回退 N):表示需要再退回来重传已发送过的 N 个分组。
优点

容易实现,即使确认丢失也不必重传。

缺点
  • 不能向发送方反映出接收方已经正确收到的所有分组的信息。
  • 当通信线路质量不好时,连续 ARQ 协议由于需要Go-back-N会带来负面的影响。
以字节为单位的滑动窗口
发送窗口

在没有收到 B 的确认的情况下,A 可以连续把窗口内的数据都发送出去。

发送窗口里面的序号表示允许发送的序号。

步骤
  1. 根据接收方 B 给出的窗口值,发送方 A 构造出自己的发送窗口。

    假定A收到了B发来的确认报文段,其中(接收)窗口是20字节,而确认号是31(这表明B期望收到的下一个序号是31,而序号30为止的数据已经收到了)。根据这两个数据,A就构造出自己的发送窗口(不能超过接收窗口大小)。

    image-20230101174856815

    TCP 标准强烈不赞成发送窗口前沿向后收缩。因为很可能发送方在收到这个通知以前已经发送了窗口中的许多数据,现在又要收缩窗口,不让发送这些数据,这样就会产生一些错误。

  2. A发送数据

    假定A发送了序号为31~41共11 个字节的数据。

    image-20230101175636927

    P3-P1=A的发送窗口
    P2-P1=已发送但尚未收到确认的字节数
    P3-P2=允许发送但当前尚未发送的字节数(又称为可用窗口有效窗口)

  3. B接收数据并发送确认报文

    1. 数据未按序到达

      假定B收到了序号为32和33的数据,先存下。这些数据没有按序到达,因为序号为31的数据没有收到(也许丢失了,也许滞留在网络中的某处)。请注意,B只能对按序收到的数据中的最高序号给出确认,因此B发送的确认报文段中的确认号仍然是31(即期望收到的序号),而不能是32或33。

    2. 部分已发送数据按序到达

      假定B收到了序号为31的数据,并把序号为31~33的数据交付主机,然后B删除这些数据。接着把接收窗口向前移动3个序号(图5-17),同时给A发送确认,其中窗口值仍为20,但确认号是34。这表明B已经收到了到序号 33为止的数据。A收到B的确认后,就可以把发送窗口向前滑动3个序号,但指针P2不动。可以看出,现在A的可用窗口增大了,可发送的序号范围是42~53。

      image-20230101181050338

  4. A 的发送窗口内的序号都已用完, 但还没有再收到确认,必须停止发送。

    A在经过一段时间后(由超时计时器控制)重传这部分数据,重新设置超时计时器,直到收到B的确认为止。如果A收到确认号落在发送窗口内,那么A就可以使发送窗口继续向前滑动,并发送新的数据。

    image-20230101181826521

超时重传时间
  • 加权平均往返时间/平滑的(smooth)往返时间 RTTS

    • 第一次测量到 RTT 样本时,RTTS 值就取为所测量到的 RTT 样本值。以后每测量到一个新的 RTT 样本,就按下式重新计算一 次 RTTS

    • 新的RTTS = (1 − α) × (旧的RTTS ) + α × (新的RTT样本)

      0 ≤ α ≤ 1。若 α 很接近于零,表示 RTT 值更新较慢。若选择 α 接近于 1,则表示 RTT 值更新较快。

      RFC 2988 推荐的 α 值为 1/8,即 0.125。

  • RTT 的偏差的加权平均值 RTTD

    • 第一次测量时,RTTD 值取为测量到的 RTT 样本值的一半。在以后的测量中,则使用下式计算加权平均的 RTTD

    • 新的 RTTD = (1 − β) × (旧的RTTD ) + β × |RTTS − 新的 RTT 样本|

      β 是个小于 1 的系数,其推荐值是 1/4,即 0.25

  • 超时重传时间 RTO (Retransmission Time-Out) 应略大于上面得出的加权平均往返时间 RTTS

    • RTO = RTTS + 4 × RTTD
选择确认 SACK
定义

选择确认SACK (Selective ACK) :若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,则可只传送缺少的数据而不重传已经正确到达接收方的数据

规定
  1. 要在 TCP 首部的选项中加上“允许 SACK”的选项

  2. 由于首部选项的长度最多只有 40 字节,而指明一个边界就要用掉 4 字节,因此在选项中最多只能指明 4 个字节块的边界信息。

    4个字节块共有8个边界,因而需要用32个字节来描述。另外还需要两个字节。一个字节用来指明是 SACK选项,另一个字节是指明这个选项要占用多少字节。如果要报告五个字节块的边界信息,那么至少需要42个字节。

流量控制
定义

流量控制 (flow control) :让发送方的发送速率不要太快,既要让接收方来得及接收(防止传入数据耗尽接收方资源),也不要使网络发生拥塞。

举例

image-20230101213347946

持续计时器

TCP 为每一个连接设有一个持续计时器 (persistence timer) 。只要 TCP 连接的一方收到对方的零窗口通知,就启动该持续计时器。

  • 若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出现在的窗口值。
    • 若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。
    • 若窗口不是零,则死锁的僵局就可以打破了。

死锁:A 一直等待收到 B 发送的非零窗口的通知,而 B 也一直等待 A 发送的数据。

发送分组时机
  1. TCP 维持一个变量,它等于最大报文段长度 MSS。只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去。
  2. 由发送方的应用进程指明要求发送报文段,即 TCP 支持的推送 (push) 操作。
  3. 发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过 MSS)发送出去。
发送确认报文时机
  1. 让接收方等待一段时间,使得接收缓存已有足够空间容纳一个最长的报文段,
  2. 等到接收缓存已有一半空闲的空间。

只要出现这两种情况之一,接收方就发出确认报文,并向发送方通知当前的窗口大小。

拥塞控制★

image-20230102094949664

拥塞 (congestion)

在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。

原理

防止过多的数据注入到网络中,避免使网络中的路由器或链路过载。

原因

∑对资源需求 > 可用资源

反映
  1. 负载增加,吞吐量反而降低
  2. 由于缺少缓存空间而被丢弃的分组的百分数;
  3. 平均队列长度;
  4. 超时重传的分组数;
  5. 平均分组时延;
  6. 分组时延的标准差

上述这些指标的上升都标志着拥塞的增长。

与流量控制的联系
相同

需抑制发送端发送数据的速率

某些拥塞控制算法向发送端发送控制报文,并告诉发送端,网络已出现麻烦,必须放慢发送速率。

不同
指标流量控制拥塞控制
问题侧重点端到端全局性
作用控制点对点通信量防止过多数据注入网络中
问题产生原因发送端发送数据的速率过快,
接收端来不及接收。
不明确
拥塞控制算法★

此处的拥塞控制算法并未考虑流量控制,认为接收方和发送方的缓存是无限大的。

判断依据
  • 重传定时器超时
    • 现在通信线路的传输质量一般都很好,因传输出差错而丢弃分组的概率是很小的(远小于 1 %)。只要出现了超时,就可以猜想网络可能出现了拥塞。
  • 收到三个相同(重复)的 ACK
    • 个别报文段会在网络中丢失,预示可能会出现拥塞 (实际未发生拥塞),因此可以尽快采取控制措施, 避免拥塞。
慢开始 (slow-start)和拥塞避免 (congestion avoidance)

举例:

image-20230102100424227

规则:

  1. 当 TCP 连接进行初始化时,拥塞窗口cwnd=1。

    图中的窗口单位不使用字节而使用报文段。 慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。

  2. 发送方每收到一个对新报文段的确认 ACK, 就把拥塞窗口值加 1 倍,然后开始下一轮的传输。拥塞窗口 cwnd 随着传输轮次按指数规律增长。

  3. 当拥塞窗口 cwnd 增长到慢开始门限值 ssthresh 时(图中的点①,此时拥塞窗口 cwnd = 16),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。

  4. 当拥塞窗口 cwnd > 16 时,进入拥塞避免,拥塞窗口每一轮次只加1。

  5. 假设当拥塞窗口 cwnd = 24 时,网络出现了超时(图中的点②),发送方判断为网络拥塞。于是调整门限值 ssthresh = cwnd / 2 = 12,同时设置拥塞窗口 cwnd = 1,进入慢开始阶段。

缺点:

  • 慢开始:每次拥塞窗口都从1开始,下降速度太快,网络性能波动太大。
  • 拥塞避免:认为网络出现大面积超时重传时, 则网络网络拥塞,执行慢开始算法。但是,很多情况下,网络只出现一个小小的分组丢失, 就会引起“小题大做”的结果。
快重传 (fast retransmit)
  • 定义

    • 要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
    • 发送方只要一连收到三个重复确认,就知道接收方确实没有收到报文段,因而应当立即进行重传,这样就不会出现因少数几个分组超时,导致发送方误认为出现了网络拥塞。
  • 优点

    让发送方尽早知道发生了个别报文段的丢失,可以使整个网络的吞吐量提高约 20%。

  • 举例

    image-20230102102737251

快恢复 (fast recovery)
  • 定义

    • 当发送端收到连续三个重复的确认时,由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,而是执行快恢复算法 FR (Fast Recovery) 算法。
  • 规则

    1. 慢开始门限 ssthresh = 当前拥塞窗口 cwnd / 2 ;
    2. 新拥塞窗口 cwnd = 慢开始门限 ssthresh ;
    3. 开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大。
  • 举例

    image-20230102100424227

    在图的点④,发送方知道现在只是丢失了个别的报文段。于是不启动慢开始,而是执行快恢复算法。 这时,发送方调整门限值 ssthresh = cwnd / 2 = 8, 同时设置拥塞窗口 cwnd = ssthresh = 8(见图中的点⑤),并开始执行拥塞避免算法。

TCP拥塞控制流程图

四个算法统一使用

image-20230102103651710

例题

5-39 TCP 的拥塞窗口 cwnd 大小与传输轮次 n 的关系如表所示:

n12345678910111213
cwnd1248163233343536373839
n14151617181920212223242526
cwnd4041422122232425261248

(1)试画出如教材中图 5-25 所示的拥塞窗口与传输轮次的关系曲线。

image-20230102172313557

(2)指明 TCP 工作在慢开始阶段的时间间隔。
[1, 6] 和 [23, 26]
(3)指明 TCP 工作在拥塞避免阶段的时间间隔。
[6, 16] 和 [17, 22]
(4)在第 16 轮次和第 22 轮次之后发送方是通过收到三个重复的确认还是通过超时检测到丢失了报文段?
在第 16 轮次之后发送方通过收到三个重复的确认,检测到丢失了报文段,因为题目给出,下一个轮次的拥塞窗口减半了。
在第 22 轮次之后发送方通过超时,检测到丢失了报文段,因为题目给出,下一个轮次的拥塞窗口下降到 1了。
(5)在第 1 轮次,第 18 轮次和第 24 轮次发送时,门限 ssthresh 分别被设置为多大?
在第 1 轮次发送时,门限 ssthresh 被设置为 32,因为从第 6 轮次起就进入了拥塞避免状态,拥塞窗口每个轮次加 1。
在第 18 轮次发送时,门限 ssthresh 被设置为发生拥塞时拥塞窗口 42 的一半,即 21。
在第 24 轮次发送时,门限 ssthresh 被设置为发生拥塞时拥塞窗口 26 的一半,即 13。
(6)在第几轮次发送出第 70 个报文段?
第 1 轮次发送报文段 1。(cwnd = 1)
第 2 轮次发送报文段 2, 3。(cwnd = 2)
第 3 轮次发送报文段 4 ~ 7。(cwnd = 4)
第 4 轮次发送报文段 8 ~ 15。(cwnd = 8)
第 5 轮次发送报文段 16 ~ 31。(cwnd = 16)
第 6 轮次发送报文段 32 ~ 63。(cwnd = 32)
第 7 轮次发送报文段 64 ~ 96。(cwnd = 33)
因此第 70 报文段在第 7 轮次发送出。
(7)假定在第 26 轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口 cwnd 和门限 ssthresh 应设置为多大?
检测出了报文段的丢失时拥塞窗口 cwnd 是 8,因此拥塞窗口 cwnd 的数值应当减半,等于 4,而门限 ssthresh 应设置为检测出报文段丢失时的拥塞窗口 8 的一半,即 4。

发送窗口的上限值
接收方窗口

接收方窗口rwnd/通知窗口(advertised window)

拥塞窗口

拥塞窗口cwnd

公式★

发送窗口的上限值 = Min [rwnd, cwnd]

  • 当 rwnd < cwnd 时,是接收方的接收能力限制发送窗口的最大值。
  • 当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。

rwnd 和 cwnd 中数值较小的一个,控制了发送方发送数据的速率。

首部格式★
  • TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段。
  • TCP 报文段首部的前 20 个字节是固定的,后面 有 4n 字节是根据需要而增加的选项 (n 是整数)。 因此 TCP 首部的最小长度是 20 字节。

image-20221231161044107

源端口和目的端口字段

各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。

序号字段 seq

占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号字段 ack

占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

数据偏移(即首部长度)

占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。固定首部的数值为5。

保留字段

占 6 位,保留为今后使用,但目前应置为 0。

紧急 URG

当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

确认 ACK

只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。

推送 PSH (PuSH)

接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。

复位 RST (ReSeT)

当 RST = 1 时,表明 TCP 连接中出现 严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

同步 SYN

同步 SYN = 1 表示这是一个连接请求或连接接受报文。

终止 FIN (FINish)

用来释放一个连接。FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口字段

占 2 字节,用来让对方设置发送窗口的大小依据,单位为字节。

检验和

占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。

紧急指针字段

占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。

  1. TCP连接:TCP套接字(IP地址;端口号);TCP连接(套接字1,套接字2)
  2. TCP报文段的首部格式及其在具体问题中的理解
  3. “四报文挥手”释放连接的理解(注意发送报文段和确认报文段中 seq和 ack之间的关系)。
主动队列管理 AQM
背景
  • 对 TCP 拥塞控制影响最大的就是路由器的分组丢弃策略。
  • 路由器的队列通常都是按照“先进先出”FIFO (First In First Out) 的规则处理到来的分组。
  • 当队列已满时,以后再到达的所有分组(如果能够继续排队,这些分组都将排在队列的尾部) 将都被丢弃。这就叫做尾部丢弃策略 (tail-drop policy)。
定义

主动队列管理 AQM (Active Queue Management)。

主动:不要等到路由器的队列长度已经达到最大值时才不得不丢弃后面到达的分组。这样就太被动了。应当在队列长度达到某个值得警惕的数值时 (即当网络拥塞有了某些拥塞征兆时),就主动丢弃到达的分组。

实现方法

随机早期检测 RED (Random Early Detection)

连接管理★
计时器※

TCP共使用以下四种计时器,即重传计时器、持续计时器、保活计时器和时间等待计时器。这几个计时器的主要特点如下:
重传计时器:当TCP发送报文段时,就创建该特定报文段的重传计时器。可能发生两种情况:若在计时器截止时间到之前收到了对此特定报文段的确认,则撤销此计时器。若在收到了对此特定报文段的确认之前计时器截止期到,则重传此报文段,并将计时器复位。
持续计时器:为了对付零窗口大小通知,TCP需要另一个计时器。假定接收TCP宣布了窗口大小为零。发送TCP就停止传送报文段,直到接收TCP发送确认并宣布一个非零的窗口大小。但这个确认可能会丢失。我们知道在TCP中,对确认是不需要发送确认的。若确认丢失了,接收TCP并不知道,而是会认为它已经完成任务了,并等待着发送TCP接着会发送更多的报文段。但发送TCP由于没有收到确认,就等待对方发送确认来通知窗口的大小,双方的TCP都在永远地等待着对方。
要打开这种死锁,TCP为每一个连接使用一个持续计时器。当发送TcP收到一个窗口大小为零的确认时,就启动持续计时器。当持续计时器期限到时,发送TCP就发送一个特殊的报文段,叫做探测报文段。这个报文段只有一个字节的数据。它有一个序号,但它的序号永远不需要确认;甚至在计算对其他部分的数据的确认时该序号也被忽略。探测报文段提醒接收TCP:确认已丢失,必须重传。
持续计时器的值设置为重传时间的数值。但是,若没有收到从接收端来的响应,则需发送另一个探测报文段,并将持续计时器的值加倍和复位。发送端继续发送探测报文段,将持续计时器设定的值加倍和复位,直到这个值增大到门限值(通常是60秒)为止。在这以后,发送端每隔60秒就发送一个探测报文段,直到窗口重新打开。
保活计时器:保活计时器使用在某些实现中,用来防止在两个TCP之间的连接出现长时期的空闲。假定客户打开了到服务器的连接,传送了一些数据,然后就保持静默了。也许这个客户出故障了。在这种情况下,这个连接将永远地处理打开状态。
要解决这种问题,在大多数的实现中都是使服务器设置保活计时器。每当服务器收到客户的信息,就将计时器复位。超时通常设置为2小时。若服务器过了2小时还没有收到客户的信息,它就发送探测报文段。若发送了10个探测报文段(每一个相隔75秒)还没有响应,就假定客户出了故障,因而就终止该连接。
时间等待计时器:时间等待计时器是在连接终止期间使用的。当TCP关闭一个连接时,它并不认为这个连接马上就真正地关闭了,在时间等待期间中,连接还处于一种中间过渡状态。这就可以使重复的FIN报文段(如果有的话)可以到达目的站因而可将其丢弃,这个计时器的值通常设置为一个报文段的寿命期待值的两倍。

阶段
  1. 连接建立
  2. 数据传送
    1. 超时重传
    2. 流量控制
    3. 拥塞控制
  3. 连接释放
建立连接★
定义

TCP 建立连接的过程叫做握手。 握手需要在客户和服务器之间交换三个 TCP 报文段。称之为三报文握手(三次握手)。

状态

image-20230102162840006

步骤
  1. A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。①
  2. B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使 SYN = 1,使 ACK = 1, 其确认号 ack = x + 1,自己选择的序号 seq = y。②
  3. A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y + 1。③
  4. A 的 TCP 通知上层应用进程:TCP连接已经建立。
  5. B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。
为什么是三次握手,而不是两次或四次?※
  1. 不是两次的原因:

    防止已失效的连接请求报文段被服务端接收,从而产生错误。

    若客户端向服务端发送的连接请求丢失,客户端等待应答超时后就会再次发送连接请求,此时,上一个连接请求就是『失效的』。由于只有两次握手,服务端收到请求就会进入ESTABLISHED状态,等待发送数据或主动发送数据。但此时的客户端早已进入CLOSED状态,服务端将会一直等待下去,这样浪费服务端连接资源。

  2. 不是四次或更多次的原因:

    三次通信是满足"在不可靠信道上可靠地传输信息"这一需求理论上的最小值,增加次数浪费资源。

连接释放★
定义

TCP 释放连接的过程叫做挥手。 握手需要在客户和服务器之间交换四个 TCP 报文段。称之为四报文挥手(四次挥手)。数据传输结束后,通信的双方都可释放连接。

状态

image-20230102163525390

步骤
  1. 假设现在 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。

  2. A 把连接释放报文段首部的 FIN = 1,其序号 seq = u,等待 B 的确认。①

  3. B 发出确认,确认号 ack = u + 1, 而这个报文段自己的序号 seq = v。TCP 服务器进程通知高层应用进程。②

    至此,从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭(half-close)状态。

  4. B 若发送数据,A 仍要接收。

  5. 若 B 已经没有要向 A 发送的数据, 其应用进程就通知 TCP 释放连接。在确认报文段中FIN = 1,ACK = 1,序号 seq = w ,确认号 ack = u + 1。③

  6. A 收到连接释放报文段后,必须发出确认。在确认报文段中 ACK = 1,确认号 ack = w + 1, 序号 seq = u + 1。④

  7. TCP 连接必须经过时间等待计时器(TIME-WAIT timer)设置的时间 2MSL 后才真正释放掉。

    时间MSL叫做最长报文段寿命(Maximum Segment Lifetime)

主动关闭连接方需要等待 2MSL才释放连接的原因★
  1. 保证A发送的最后一个ACK报文段能够到达 B。

    这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN + ACK报文段的确认。B会超时重传这个FIN +ACK报文段,而A就能在2MSL时间内收到这个重传的FIN + ACK报文段。接着A重传一次确认,重新启动2MSL计时器。最后,A 和B都正常进入到CLOSED 状态。

    如果A在TIME-WAIT 状态不等待一段时间,而是在发送完ACK报文段后立即释放连接,那么就无法收到B重传的FIN + ACK报文段,因而也不会再发送一次确认报文段。这样,B就无法按照正常步骤进入CLOSED状态。

  2. 防止上一节提到的“已失效的连接请求报文段”出现在本连接中。

    A在发送完最后一个ACK 报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。

为什么连接的时候是三次握手,关闭的时候却是四次握手?※
  • 建立连接时,服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。
  • 关闭连接时,客户端向服务端发送 FIN 时,仅仅表示客户端不再发送数据了但是还能接收数据。
  • 服务器收到客户端的 FIN 报文时,先回一个 ACK 应答报文,而服务端可能还有数据需要处理和发送,等服务端不再发送数据时,才发送 FIN 报文给客户端来表示同意现在关闭连接。
TCP 挥手可以只需要三次吗?※

当服务器端收到客户端的FIN后,服务器端同时也要关闭连接,这样就可以把ACKFIN合并到一起发送,节省了一个包,变成了“三次挥手”。

TCP 的有限状态机
优点

可以更清晰地看出 TCP 连接各种状态之间的关系。

格式说明
  • 方框

    TCP 可能具有的状态

  • 方框中的大写英文字符串

    TCP 标准所使用的 TCP 连接状态名

  • 状态之间的箭头

    • 含义

      可能发生的状态变迁

    • 分类

      • 粗实线箭头

        表示对客户进程的正常变迁。

      • 粗虚线箭头

        表示对服务器进程的正常变迁。

      • 细线箭头

        表示异常变迁。

图示

image-20230102165726619

例题

5-41 用 TCP 传送 512 字节的数据。设窗口为 100 字节,而 TCP 报文段每次也是传送 100 字节的数据。再设发送端和接收端的起始序号分别选为 100 和 200,试画出类似于教材中图 5-28 的工作示意图。从连接建立阶段到连接释放都要画上。

img

要传送的 512 B 的数据必须划分为 6 个报文段传送,前 5 个报文段各 100 B,最后一个报文段传送 12 B。下图是双方交互的示意图。下面进行简单的解释。

【----- 进行三报文握手 -----】
报文段 #1:A 发起主动打开,发送 SYN 报文段,除以 SYN-SENT 状态,并选择初始序号 seq = 100。B 处于 LISTEN 状态。

报文段 #2:B 确认 A 的 SYN 报文段,因此 ack = 101(是 A 的初始序号加 1)。B选择初始序号 seq = 200。B 进入到 SYN-RCVD 状态。

报文段 #3:A 发送 ACk 报文段来确认报文段 #2,ack = 201(是 B 的初始序号加 1)。A 没有在这个报文段中放入数据。因为 SYN 报文段 #1 消耗了一个序号,因此报文段 #3 的序号是 seq = 101。这样,A 和 B 都进入了 ESTABLISHED 状态。
【----- 三报文握手完成 -----】

【----- 开始数据传送 -----】
报文段 #4:A 发送 100 字节的数据。报文段 #3 是确认报文段,没有数据发送,报文段 #3 并不消耗序号,因此报文段 #4 的序号仍然是 seq = 101。A 在发送数据的同时,还确认 B 的报文段 #2,因此 ack = 201。

报文段 #5:B 确认 A 的报文段 #4。由于收到了从序号 101 到 200 共 100 字节的数据,因此在报文段 #5 中,ack = 201(所期望收到的下一个数据字节的序号)。B 发送的 SYN 报文段 #2 消耗了一个序号,因此报文段 #5 的序号是 seq = 201,比报文段 #2 的序号多了一个序号。在这个报文段中,B 给出了接收窗口 rwnd = 100。

从报文段 #6 到报文段 # 13 都不需要更多的解释。到此为止,A 已经发送了 500 字节 的数据。

报文段 #14:A 发送最后 12 字节的数据,报文段 #14 的序号是 seq = 601。

报文段 #15:B 发送对报文段 #14 的确认。B 收到从序号 601 到 602 共 12 字节的数据。因此,报文段 #15 的确认号是 ack = 613(所期望收到的下一个数据字节的序号)。

从报文段 #5 一直到报文段 #15,B 一共发送了 6 个确认,都不消耗序号,因此 B 发送的确认报文段 #15 的序号仍然和报文段 #5 的序号一样,即 seq = 201。

【-----数据传送完毕-----】

【-----进行四报文挥手------】
报文段 #16:A 发送 FIN 报文段。前面所发送的数据报文段 #14 已经用掉了序号 601 到 612,因此报文段 #16 序号是 seq = 613。A 进入 FIN-WAIT-1 状态。报文段 #16 的确认号 ack = 202。

报文段 #17:B发送确认报文段,确认号为 614,进入 CLOSE-WAIT 状态。由于确认报文段不消耗序号,因此报文段 #17 的序号仍然和报文段 #15 的一样,即 seq = 201

报文段 #18:B 没有数据要发送,就发送 FIN 报文段 #18,其序号仍然是 seq = 201。这个 FIN 报文会消耗一个报文。

报文段 #19:A 发送最后的确认报文段。报文段 #16 的序号是 613,已经消耗掉了。因此,现在的序号是 seq = 614。但这个确认报文段并不消耗序号。
【-----四报文挥手结束-----】

第六章 应用层

功能

利用应用层协议提供网络与用户应用软件之间的接口服务。通过应用进程间的交互来完成特定网络应用。

协议

应用层协议(application layer protocol):精确定义应用进程之间的通信规则。

数据单位

报文(message)。

报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部/报文头。

DNS★

功能

域名系统 DNS (Domain Name System)用于实现域名到IP地址的解析。

  • 名字到 IP 地址的解析是由若干个域名服务器程序完成的。
  • 域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
  • 基于UDP

域名

定义

任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。

互联网的域名结构
定义
  • 域名采用了层次树状结构的命名方法。

  • 域名的结构由标号序列组成,各标号之间用点隔开:

    … . 三级域名 . 二级域名 . 顶级域名

  • 各标号分别代表不同级别的。

举例

image-20230102184104080

顶级域名 TLD (Top Level Domain)分类
国家顶级域名 nTLD

如 .cn 表示中国, .us 表示美国, .uk 表示英国,等等。

通用顶级域名 gTLD

如 .com(公司和企业) .net (网络服务机构 .org (非赢利性组织) .edu (美国专用的教育机构) .gov (美国专用的政府部门) .mil (美国专用的军事部门) .int (国际组织)

基础结构域名 (infrastructure domain)

这种顶级域名只有一个,即 arpa,用于反向域名解析,因此又称为反向域名。

域名服务器

区 (zone)
定义

一个域名服务器所负责管辖的(或有权限的)范围

规则
  • 各单位根据具体情况来划分自己管辖范围的区。 但在一个区中的所有节点必须是能够连通的。
  • 每一个区设置相应的权限域名服务器(authoritative name server),用来保存该区中的所有主机的域名到 IP 地址的映射。
  • DNS 服务器的管辖范围不是以“域”为单位, 而是以“区”为单位。
举例
区的不同划分方法

假定abc公司有下属部门x和y,部门x下面又分三个分部门u,v和 w,而 y下面还有其下属部门t。
图(a)表示 abc公司只设一个区abc.com。这时,区 abc.com和域 abc.com指的是同一件事。
图(b)表示 abc公司划分了两个区(大的公司可能要划分多个区):abc.com和 y.abc.com。这两个区都隶属于域abc.com,都各设置了相应的权限域名服务器。不难看出,区是“域”的子集。

image-20230102185309866

树状结构的DNS域名服务器

以上图(b)中公司abc划分的两个区为例,给出了DNS域名服务器树状结构图。
这种 DNS域名服务器树状结构图可以更准确地反映出 DNS的分布式结构。
图中的每一个域名服务器都能够进行部分域名到P地址的解析。
当某个 DNS服务器不能进行域名到IP地址的转换时,它就设法找互联网上别的域名服务器进行解析。

image-20230102185500930

分类
根域名服务器
定义
  • 根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。
  • 所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。
功能
  • 根域名服务器并不直接把域名直接转换成 IP 地址。
  • 根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。
顶级域名服务器
定义

顶级域名服务器(即 TLD 服务器)负责管理在该顶级域名服务器注册的所有二级域名。

功能

当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找 的域名服务器的 IP 地址)。

权限域名服务器
定义

负责一个区的域名服务器

功能

当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户, 下一步应当找哪一个权限域名服务器。

本地域名服务器
定义

每一个互联网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。

功能

当一个主机发出 DNS 查询请求时,这个查询请求报文首先发送给本地域名服务器

域名的解析过程

主机配置的DNS是根域名服务器的IP地址

递归查询

image-20230103101419348

如果主机所询问的本地域名服务器不知道被查询域名 的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。

迭代查询

image-20230103101436923

当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询

FTP★

定义

文件传送协议 FTP (File Transfer Protocol) 是互联网上使用得最广泛的文件传送协议。基于TCP

功能

  • FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
  • FTP 屏蔽了各计算机系统的细节,减少或消除在不同操作系统下处理文件的不兼容性,因而适合于在异构网络中任意计算机之间传送文件。
  • FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。

基本工作原理

image-20230103103203923

  • FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求(21号端口);另外有若干个从属进程,负责处理单个请求。
  • 在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:“控制连接”和“数据连接”。
    • 控制连接在整个会话期间一直保持打开,FTP客户所发出的文件传送请求,通过控制连接发送给服务器端的控制进程,由其创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。(服务器端21号端口)
    • 数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。(服务器端20号端口)
    • 由于FTP使用了一个分离的控制连接,因此FTP的控制信息是**带外(out of band)**传送的。
主进程的工作步骤
  1. 打开熟知端口(端口号为 21),使客户进程能够连接上。
  2. 等待客户进程发出连接请求。
  3. 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止, 但从属进程在运行期间根据需要还可能创建其他一些子进程。
  4. 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。
使用两个不同端口号的好处的优点
  1. 使协议更加简单和更容易实现。
  2. 在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。
  3. 数据连接与控制连接不会发生混乱。

TFTP★

定义

TFTP (Trivial File Transfer Protocol) 是一个很小且易于实现的文件传送协议。服务器端熟知端口号69。

  • TFTP 使用客户服务器方式和使用 UDP 数据报, 因此 TFTP 需要有自己的差错改正措施。
  • TFTP 只支持文件传输而不支持交互。
  • TFTP 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别

特点

  1. 每次传送的数据 PDU 中有 512 字节的数据, 但最后一次可不足 512 字节。
  2. 数据 PDU 也称为文件块 (block),每个块按序编号,从 1 开始。
  3. 支持 ASCII 码或二进制传送。
  4. 可对文件进行读或写。
  5. 使用很简单的首部。

可靠机制

  • 发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。
  • 发完数据后在规定时间内收不到确认就要重发 数据 PDU。
  • 发送确认 PDU 的一方若在规定时间内收不到下 一 个文件块,也要重发确认 PDU。这样就可保证文件的传送不致因某一个数据报的丢失而告失败。

TFTP 的工作很像停止等待协议

TELNET

定义

远程终端协议/终端仿真协议 TELNET 是一个简单的远程终端协议,也是互联网的正式标准。

功能

  • 用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)。

  • TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。

    因此TELNET又称为终端仿真协议。

网络虚拟终端 NVT 格式

目的

适应计算机和操作系统的差异

流程
  • 客户软件发送数据时
    • 把用户的击键和命令转换成 NVT 格式,并送交服务器。
    • 服务器软件把收到的数据和命令,从 NVT 格式转换成远地系统所需的格式。
  • 向用户返回数据时
    • 服务器把远地系统的格式转换为 NVT 格式
    • 本地客户软件再从 NVT 格式转换到本地系统所需的格式。

万维网www

定义

万维网 WWW (World Wide Web) 简称web,是一个大规模的、联机式的信息储藏所。是分布式超媒体 (hypermedia) 系统,它是超文本 (hypertext) 系统的扩充。

功能

万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。提供分布式服务。

要解决的四个问题

  1. 怎样标志分布在整个互联网上的万维网文档?-URL
  2. 用什么协议实现万维网上的各种链接?-HTTP
  3. 怎样使不同作者创作的不同风格的万维网文档,都能在互联网上的各种主机上显示出来,同时使用户清楚地知道在什么地方存在着链接?-HTML
  4. 怎样使用户能够很方便地找到所需的信息?-搜索引擎

URL

定义

统一资源定位符 URL (Uniform Resource Locator) :标志万维网上的各种文档,使每一个文档在整个互联网的范围内具有唯一的标识符 URL。

格式

由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。

<协议>://<主机>:<端口>/<路径>

  • <协议>:指出使用什么协议来获取该万维网文档。现在最常用的协议就是http(超文本传送协议HTTP),其次是 ftp(文件传送协议FTP)。
  • 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/860107
推荐阅读
相关标签