第一章 概述

1.1 计算机在网络时代中的作用

21世纪重要的特征就是数字化、网络化、信息化, 是一个以网络为核心的时代

网络的分类:电信网络、有线电视网络、计算机网络

Internet 的译名有以下两种:

  • 因特网:较为准确,但确长期未得到推广
  • 互联网:目前流行最广、标准译名,Internet由数量极大的各种计算机网络连接而成

互联网的两个基本特点:连通性共享性

  • 连通性:上网用户之间,不管距离多远,都可以十分快捷经济地交换各种信息
  • 共享性:即资源共享,含义是多方面的,可以是信息共享、软件共享、硬件共享

1.2 互联网概述

1.2.1 网络的网络

计算机网络: (简称“网络”),由若干 节点 和连接这些节点的 链路 组成

节点:可以是计算机、集线器、交换机或者路由器等

网络之间还可以用路由器连接起来,形成一个更大的网络,称为"互连网"

因此可以说,互联网是 "网络的网络"

网络把许多计算机连接到一起,而互连网则把许多网络通过路由器连接在一起,

与网络相连的计算机常称为主机

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

  • 第一阶段:从单个网络 ARPANET 向互联网发展的过程。1983 年 TCP/IP 协议成为 ARPANET 上的标准协议。
  • 第二阶段:建成三级结构的因特网:主干网、地区网和校园网(或企业网)。
  • 第三阶段:形成多层次的ISP(Internet Service Provider 因特网服务提供者)结构的因特网

internet和Internet的区别:

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

1.2.3 互连网的标准化工作

互连网的标准化工作对互联网的发展起到了非常重要的作用。

1992年,互联网不在归属美国政府管辖,因此成立了国际性组织--互联网协会(ISOC)

ISOC下属设置了一个技术组织--互联网体系结构委员会(IAB),负责互联网协议的开发

IAB下属两个工程部:

  • 互联网工程部(IETF):由许多工作组WG组成的论坛
  • 互联网研究部(IRTF):由许多研究组RG组成的论坛

所有的互联网标准都以 RFC 文档的形式发表在互联网上。

互联网上有很多 RFC 文档,但只有少部分是互联网标准

制定互联网标准要经过以下三个阶段:

(1) 互联网草案--有效期6个月,不能算是RFC文档

(2) 建议草案--正式成为RFC文档

(3) 互联网标准--达到正式标准,每个标准获得一个编号

1.3 互联网的组成

  • 边缘部分: 由所有连在互联网上的主机组成,用户直接使用
  • 核心部分: 由大量网络和连接这些网络的路由器组成,为边缘部分提供服务

1.3.1 互联网的边缘部分

边缘部分指的是连在互联网上的所有主机,又被称为端系统,可以是PC 、手机、摄像头等

边缘部分利用核心部分提供的服务进行通信,一般称为计算机之间通信。

计算机之间的通信实际上是计算机 A 上某个进程和计算机 B 上另一个进程之间的通信。

通信方式主要有两类:客户-服务器方式、对等方式(P2P)。

(1) 客户-服务器方式:

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

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

客户程序:

  • 被用户调用后运行,通信时主动向服务器发起通信,必须知道服务器程序的地址

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

服务器程序:

  • 专门用来提供某种服务的程序,可以同时处理多个远程或者本地的请求

  • 系统启动后自动调用,并且不断的运行,被动等待并接受客户的通信请求,不需要知道客户程序的地址

  • 需要强大的硬件和操作系统支持

(2) 对等连接方式:

简称P2P,指的是两台主机在通信的时候,不区分哪个是服务请求方,哪个是服务提供方。

只要双方都运行了P2P软件,就可以进行平等的连接通信

1.3.2 互联网的核心部分

在网络核心部分其特殊作用的是路由器,是实现分组交换的关键构件,任务是转发收到的分组

(1) 电路交换主要特点

在电话问世后不久,人们发现,要让每两个电话两两相连是不现实的,

于是人们将所有的电话都连到交换机上来,称为电路交换

交换:就是按照某种方式动态的分配传输线路的资源

有三个步骤:

  • 建立连接(占用通信资源,一条专用的物理通路)
  • 通话(一直占用通信资源)
  • 释放连接(归还通信资源)

特点:在通话的全部时间内始终占用端到端的通信资源

(2) 分组交换主要特点

要发送的整块数据称为一个报文

将报文分为多个数据段,每个数据段加上一个首部(包头),构成一个分组(包)

分组交换采用存储转发技术。路由器收到分组后,先暂时存储,检查首部,查找转发表,然后按照首部中的目的地址,找到合适的接口转发给下一个路由器,这样一步步交付给最终的目的主机。

首部中主要包含着目的地址、源地址等控制信息。

分组是在互联网中传送的数据单元。

三种交换方式

  • 电路交换:整个报文的比特流连续的从原点到终点
  • 报文交换:整个报文先到达相邻节点,全部存储下来之后查找转发表,转发到下一个节点
  • 分组交换:单个分组传送到相邻节点,存储下来之后查找转发表,转发到下一个节点
image-20220914205447256

1.4 计算机网络在我国的发展

1.5 计算机网络的类别

1.5.1 计算机网络的定义

计算机网络所连接的硬件,并不限于一般的计算机,而且包含了智能手机

计算机网络并非专门用来传送数据,还支持很多其他应用。

1.5.2 不同类型的计算机网络

(1) 按照作用范围分类
  • **广域网WAN:**互联网的核心部分,连接广域网各结点的一般使高速链路。
  • **城域网MAN:**很多城域网采用的是以太网技术,常并入局域网进行讨论
  • **局域网LAN:**一般通过高速通信线路相连,地理范围较小。校园网、企业为一般为局域网
  • **个人区域网PAN:**范围很小,一般在 10m 左右。
(2) 按照使用者分类
  • 公用网:指的是电信公司建造的大型网络,所有人都能使用
  • 专用网:专门满足特殊部门工作需要的网络,如军队、银行、铁路、电力等系统
(3) 接入网

接入网 AN 是用来把用户接入到互联网的网络。

接入网既不属于核心部分,也不属于边缘部分,而是位于端系统到互联网中第一个路由器之间的一种网络。

宽带接入网就是一种接入网。

1.6 计算机网络的性能

1.6.1 计算机网络的性能指标

速率

速率是计算机网络中最重要的性能指标。

速率是数据的传送速率,单位是 bit/s,有时也写为 bps

1G 速率实际上是 1Gbit/s 而不是 1Gbyte/s。提到网络速率时,一般指的是额定速率标称速率

带宽

带宽有两种意义

  1. 某个信号具有的频带宽度,是一个赫兹范围。表示某信道允许通过的信号频带范围就称为该信道的带宽。是频域称谓
  2. 计算机网络中,带宽表示网络中某通道传送数据的能力,网络带宽表示单位时间内网络中的某信道所能通过的最高数据率,单位是 bit/s。是时域称谓。
吞吐量

吞吐量表示单位时间内通过某个网络的实际的数据量。经常用于对现实世界中的网络的一种测量。

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

时延

时延是数据从网络的一端传送到另一端所需的时间。

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

  1. 发送时延:主机或路由器发送数据帧所需的时间,即从发送数据帧的第一个比特到最后一个比特发送完毕的时间,也叫传输时延。

    1. 计算公式:发送时延 = 数据帧长度/发送速率
    2. 发送速率越快,发送时延越低。
  2. 传播时延:传播时延是电磁波在信道中传播一定的距离花费的时间。

    1. 计算公式:传播时延=信道长度 / 电磁波在信道上的传输速率。
    2. 电磁波在网络中的传输速率比真空中低,在铜线中为 2.3 亿米每秒,在光纤中是 2 亿米每秒。
    3. 距离越长,传输时延越长。
  3. 处理时延:主机或路由器在收到分组时要花费时间处理数据,如分析分组的首部,从分组中提取数据部分,差错检验等等。

  4. 排队时延:分组在经过网络传输时要经过许多路由器,要在路由器中排队等待转发。

    1. 网络的通信量越大,排队时延越长。

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

**高速链路(高带宽链路)**相比其他提高的是数据的发送速率,减小发送时延。光纤传输速率高即向光纤信道发送数据的速率高。

时延带宽积

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

时延带宽积表示的是一个管道的体积,表示这个链路可容纳的比特,或者说同一时刻正在链路上传送的数据。

只有链路中充满了比特时,链路才得到充分的利用。

往返时间

A 向 B 发数据后需要收到 B 发回的确认信息才会继续发送数据,

A 发完数据后等待确认信息的时间就是往返时间(RTT)

有效数据率 = 数据长度 / ( 发送时间 + RTT )。

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

使用卫星通信时,往返时间会比较长,是很重要的指标。

利用率

利用率有信道利用率和网络利用率两种:

  1. **信道利用率:**信道有百分之多少的时间是被利用的,即有数据通过。
  2. **网络利用率:**全网络的信道利用率的加权平均值。

信道利用率并非越大越好,因为根据排队论,当利用率增大时,信道引起的时延也会迅速增加。

D0 为网络空闲时的时延,则网络当前时延 D 和利用率 U 之间的关系为: D = D0 / (1 - U)。

当利用率 U 达到 0.5 时,时延就要加倍。利用率接近 1 时,时延会趋于无穷。

1.6.2 计算机网络的非性能特征

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

1.7 计算机网络体系结构

1.7.1 计算机网络体系结构的形成

两个计算机之间通信要完的工作:

  1. 发起通信的计算机必须将数据通信的通路进行激活。
  2. 告诉网络如何识别接收数据的计算机
  3. 发起通信的计算机必须查明对方计算机是否已开机,并且与网络连接正常。
  4. 发起通信的计算机中的应用程序必须清楚,对方计算机中的文件管理程序是否已做好接收文件和存储文件的准备工作。
  5. 若计算机的文件格式不兼容,至少其中一台计算机可以完成格式转换。
  6. 如果出现差错或意外事故,应有可靠的措施保证对方计算机最后收到正确的文件。

相互通信的计算机系统必须高度协调工作才可以完成通信。

OSI 的七层协议的体系结构是法律上的国际标准。

应用最广泛的、事实上的国际标准是 TCP/IP。互联网即采用的 TCP/IP。

1.7.2 协议与划分层次

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

网络协议规定了网络中交换的数据的格式和有关的同步问题。

协议主要由三个要素组成:

  1. **语法:**数据与控制信息的结构或格式
  2. **语义:**需要发出何种控制信息,完成何种动作以及做出何种响应
  3. **同步:**时间实现顺序的详细说明

网络协议是分层的,分层的好处:

  1. 各层之间互相独立。某一层并不知道另一层是如何实现的,只知道接口。
  2. 灵活性好。只要接口不变,一层发生变化不影响另一层。
  3. 结构上可分割开。
  4. 易于实现和维护。
  5. 能促进标准化工作。

各层需要完成的工作包括一下的一种或多种:

  1. **差错控制。**使通信更加可靠。
  2. **流量控制。**发送端的发送速率必须使接收端来得及接受,不能太快。
  3. **分段和重装。**发送端将数据分块,接收端还原。
  4. **复用和分用。**发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
  5. 连接建立和释放。交换数据前先建立一条逻辑连接,数据传送结束后再释放。

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

1.7.3 具有五层协议的体系结构

image-20220914212906417
应用层

通过先应用进程间的交互来完成特定网络应用。

运输层

负责向两台主机中进程之间的通信提供通用的数据传输服务

运输层主要使用两种协议:

  1. 传输控制协议 TCP:提供面向连接的、可靠的数据传输服务。数据传输的单位是报文段
  2. 用户数据报协议 UDP:提供无连接的、尽最大努力的数据传输服务,不保证数据传输的可靠性。数据传输的单位是用户数据报
网络层

为分组交换网上的不同主机提供通信服务;选择合适的路由。

发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。

TCP/IP 体系中,网络层使用 IP 协议,因此分组也叫 IP 数据报,或简称数据报,但注意这与用户数据报不同。

互联网使用无连接的网际协议 IP。

无论哪一层的数据单元,都可以笼统地用“分组”来表示。

数据链路层

将网络层交下来的 IP 数据报组装成帧,在两个相邻结点的链路上传送帧。

每一帧包括数据和必要的控制信息(包括同步信息、地址信息、差错控制等)。

物理层

物理层的单位是比特

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

实体表示可发送或可接收信息的硬件或软件进程。

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

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

上层使用下层提供的服务必须通过与下层交换一些命令,即服务原语

同一系统中相邻两层的实体交互的地方称为服务访问点,实际上就是一个逻辑接口。

协议必须把所有不利的条件都事先估计到,确保能应对所有异常情况。

1.7.5 TCP/IP的体系结构

技术的发展不严格遵循分层概念,事实上现在某些应用程序可以直接使用 IP 层甚至网络接口层,如下图。

image-20220914213905135

TCP/IP 协议族中的多种协议如下所示:

image-20220914214006935

第二章 物理层

2.1 物理层的基本概念

物理层的功能:怎样在连接各种计算机的传输媒体上传输数据比特流,屏蔽不同传输媒体和通信手段的差异

规程:用于物理层的协议

传输媒体接口的特性:

(1) 机械特性:接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等 (2) 电气特性:接口电路的各条线上出现的电压范围 (3) 功能特性:某条线上出现某一电平电压的意义 (4) 过程特性:对于不同功能的各种可能事件的出现顺序

2.2 数据通信的基础知识

2.2.1 数据通信系统模型

image-20220914214910940

数据通信系统划分:源系统、传输系统、目的系统

源系统的内容:

  • 源点:源点设备产生要传输的数据
  • 发送器:源点生成的数字比特流要通过发送器编码后才能在传输系统中传输;如调制器
  • 接收器:接收传输系统发送来的信号,并转换成能被目的设备处理的信息;如解调器
  • 终点:终点设备从接收器获取传送来的数字比特流,然后把信息输出

常用术语:

  • 消息:通信的目的是传送消息,如语音、文字、图像、视频等
  • 数据:是运送消息的实体;使用特定方式表示的信息,通常是有意义的符号序列
  • 信号:数据的电气或电磁表现
    • 模拟信号(连续信号):代表消息的参数取值是连续的
    • 数字信号(离散信号):代表消息的参数的取值是离散的
    • 码元:代表不同离散数值的基本波形

2.2.2有关信道的基本概念

信道:表示向某一个方向传送信息的媒体

信息交互的方式:

  • 单工通信:只能有一个方向的通信而没有反方向的交互;只需要一条信道
  • 半双工通信:通信的双方都可以发送信息,但不能双方同时发送,而是一方发送另一方接收,一段时间后可以反过来;两条信道
  • 全双工通信:通信双方可以同时发送和接收信息;两条信道;传输效率最高

基带信号:来自信源的信号;如计算机输出的代表文字或图像的数据信号都是基带信号

调制分类:

  • 基带调制(编码):仅对基带信号的波形进行变换,使其能与信道特性相适应,变换后的信号仍是基带信号
  • 带通调制:使用载波进行调制,把基带信号的频率范围移到较高频段,并转换为模拟信号,变换后的信号称为带通信号

常用编码方式:

image-20220914215255128

  • 不归零制:正电平代表1,负电平代表0

  • 归零制:正脉冲代表1,负脉冲代表0

  • 曼切斯特编码:位周期中心的向上跳变代表0,位周期中心的向下跳变代表1;也可反过来定义

  • 差分曼切斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表0,位开始边界没有跳变代表1

基本的带通调制方法:

image-20220914215519694

  • 调幅:载波的振幅随基带数字信号而变化;如0或1分别对应无载波或有载波输出
  • 调频:载波的频率随基带数字信号而变化;如0或1分别对应频率f1或f2
  • 调相:载波的初始相位随基带数字信号而变化;如0或1分别对应于相位0度或180度

2.2.3 信道的极限容量

限制码元在信道上传输速率的因素:

(1) 信道能够通过的频率范围:

​ 码间串扰:信号中高频分类受到衰减,在接收端收到的波形前沿和后沿不那么陡峭,每个码元所占时间界限不明确,失去了码元间的清晰界限的现象

​ 奈氏准则:在任何信道,码元传输的速率是有上限的,超过上限就会出现严重的码间串扰,使接收端对码元无法识别

(2) 信噪比:

定义:信号的平均功率和噪声的平均功率之比,记作S/N

image-20220914215754992

香农公式:信道的极限信息传输速率C是

image-20220914215856572

其中W为信道带宽,S为信道内所传信号的平均功率,N为信道内部的高斯噪声功率

香农公式表明,信道的带宽或信道中的信噪比越大,信息的极限传输速率就越高 香农公式的意义:只要信息传输速率低于信道的极限速率,就一定存在某种方法来实现无差错的传输

2.3 物理层下面的传输媒体

传输媒体:是数据传输系统中在发送器和接收器之间的物理通路

分类:导引型和非导引型

2.3.1 引导型

​ 双绞线

​ 同轴电缆

​ 光纤

2.3.2 非引导型

电磁波无线传输

2.4 信道复用技术

2.4.1频分复用、时分复用、统计时分复用

复用:允许用户使用一个共享的信道进行通信,降低成本,提高利用率

频分复用:

原理:用户在分配到一定频带后,在通信过程中自始至终都占用这个频带

特点:所有用户在同样的时间占用不同的频率带宽

image-20220914220519831

时分复用:

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

特点:所有用户在不同的时间占用同样的频带宽度

image-20220914220530693

统计时分复用:

原理:使用STDM帧来传送复用的数据,每一个STDM帧中的时隙数小于连接在集中器上的用户数;各用户有数据就发往集中器的输入缓存,集中器按顺序依次扫描输入缓存,把缓存中的输入数据放入STDM帧中,没有数据的缓存就跳过,当一个帧放满即发送,因此STDM帧不是固定分配时隙,而是按需动态分配时隙

某用户占用的时隙不是周期性出现的,因此统计时分复用又称为异步时分复用;而时分复用又称为同步时分复用

image-20220914220544534

2.4.2波分复用

原理:就是光的频分复用,使用同一根光纤同时传输多个光载波信号

2.4.3 码分复用

码分复用(码分多址):

原理:各个用户使用经过特殊挑选的不同码型,因此彼此不会互相干扰

码片:每一个比特时间划分为m个短的间隔,称为码片

工作方式:

​ 每个站被指派一个唯一的mbit码片,若发送1,则发送自己的m bit码片

​ 若发送0,则发送该码片的二进制反码

码片实现扩频:由于一个比特可转换成m个比特的码片,因此实际发送数据率提高了m倍

重要特点:每个站的码片必须各不相同,并相互正交

码片正交关系:不同码片正交,就是向量S和T的规格化内积为0,(规格化内积即对应为相乘)

正交关系的重要特征:任何码片与自己的规格化内积为1,与自己反码的规格化内积为-1

2.5 数字传输系统

早期数字传输系统的缺点:

(1)速率标准不一

(2)不是同步传输

现代的传输网络的传输媒体:光纤

同步光纤网(SONET):各级时钟都来自一个非常精确的主时钟,为光纤传输系统定义了同步传输的线路速率等级结构

同步数字系列(SDH):由sonet为基础发展的国际标准

2.6 宽带接入技术

2.6.1 ADSL技术

非对称数字用户线,将原有的模拟电话线进行改造,使其能够承载宽带业务,将0-4k的低端频谱留给电话使用,将剩余部分给宽带使用,其中上行带宽小于下行带宽

传输距离:与数据率和用户线的线径(粗细)有关

传输速度:与实际用户线的信噪比密切相关

数据率:采用自适应调制技术使用户线能够传输尽可能多的数据,受环境和线路条件影响较大

特点:上行和下行带宽不对称、需要在用户线两端各安装一个调制解调器

第二代ADSL:得到更高的数据率,采用无缝速率自适应技术,可在运营中不中断通信和不产生误码的情况下,自适应的调整数据率

2.6.2 光纤同轴混合网(HFC)

是目前覆盖面较广的有线电视网,采用模拟技术,频分复用,主干部分使用光纤,入户部分使用同轴电缆

2.6.3 FTTx技术

是一种实现宽带居民接入网的方案,代表多种宽带光纤接入方式

无源光网络PON:为有效利用光纤资源,在光纤干线和用户之间使用无源光网络PON。无源光网络无须配备电源,长期运行和管理成本低。

​ 最流行的无源光网络是以太网无源光网络EPON和吉比特无源光网络GPON

第三章 数据链路层

数据链路层使用的信道:

点对点信道:使用一对一的点对点通信方式

广播信道:使用一对多的广播通信方式,过程比较复杂,需要专用的协议来协调

3.1 使用点对点信道的数据链路层

3.1.1 数据链路和帧

链路(物理链路):从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换节点

链路是一条路径的一个组成部分:两台计算机之间的通信路径需要许多链路

数据链路(逻辑链路):把实现了这些通信协议的硬件和软件加到链路上,就构成了数据链路(物理线路+协议)

网络适配器:既有硬件也包括软件,实现了通信协议,包括了数据链路层和物理层两层的功能

规程:数据链路层中,规程等同于协议

:点对点信道数据链路层的协议数据单元

数据链路层通信时的主要步骤

  • 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
  • 结点A把封装好的帧发送给结点B的数据链路层
  • 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取IP数据报上交给网络层;否则丢弃这个帧

特点:数据链路层不用考虑物理层如何实现,所以就相当与对等层水平传输

3.1.2 三个基本问题

(1) 封装成帧

封装成帧:就是在一段数据前后分别添加首部和尾部,确定帧的界限,然后就构成了一个帧

添加首部和尾部的作用:进行帧定界(确定帧的界限);包含许多必要的控制信息

帧长:帧的数据部分加上帧首部和帧尾部的长度

最大传送单元MTU:链路层协议规定的所能传送的帧的数据部分长度上限

帧格式:

image-20220915151226156

帧界定的方法:可用特殊的帧定界符,在ACSCII码中,用SOH表示帧的首部开始,EOT表示帧的结束

帧界定的作用:判断收到的帧是否完整,不完整则丢弃

(2) 透明传输

透明传输:不管什么数据,都能完整无差错的通过这个数据链路层,数据链路层对数据没有妨碍,数据链路层对数据时透明的

透明传输中的问题:若数据中的某个字节的二进制代码恰好组成了帧界定符,就会出现错误

解决方法:字节填充,在控制字符和特殊字符前插入一个转义字符"ESC",而真正的首部和尾部前不加

(3) 差错检测

比特差错:在传输中可能会产生比特差错,1可能变0,0可能变1

误码率:在一段时间,传输错误的比特占所有传输比特总数的比率,与信噪比有关

循环冗余校验(CRC):

原理:在发送端,先把数据划分为组,假定每组k个比特,若传输一组数据M=101001(k=6),在M后添加供差错检测用的n位冗余码后一起发送,共发送(k+n)位,接收方用收到的数据除P,若余数为0则表示没有差错

冗余码计算方法:在M后面添加n个0,得到(k+n)位的数除以选定好的除数p,得出商Q,余数R,将余数R作为冗余码,添加到M后

例:k=6,M=101001,设n=3,除数P=1101,被除数是101001000,计算后得到商Q=110100,余数R=001

帧校验序列(FCS):为差错检验而添加的冗余码;就是计算后得到的余数R

生成多项式:一种方便的表示循环冗余校验过程的方法

​ 例:P=1101->P(X)=X³+X²+1(最高位对应X³,最低位对应Xº)

传输差错的分类:

  • 比特差错:1变0,0变1

  • 帧丢失:丢失某个帧

  • 帧重复:某个帧收到多次

  • 帧失序:后发送的帧反而先到达接收端

CRC的局限性:只能实现无比特差错,不能实现无传输差错,只能判断收到的数据是否正确,其余均无法判断,并不是可靠传输

​ 无差错接受:接收端数据链路层接受的帧,都能认为在传输过程中没有产生差错

​ 可靠传输:发送端发送什么,接收端就收到什么

3.2 点对点协议PPP

对于点对点的链路,目前使用最广泛的是PPP协议

3.2.1 PPP协议的特点

作用域:用户计算机和ISP通信时所使用的数据链路层协议

PPP协议应满足的需求:

  1. 简单:对数据链路层的帧,不需要纠错、序号、流量控制,简单作为首要要求;收到帧进行CRC检验,无差错则接收,反之丢弃

  2. 封装成帧:必须规定特殊的字符作为帧定界符,使接收端从收到的比特流中准确找出帧的开始和结束位置

  3. 透明性:必须保证数据传输的透明性,要能解决碰巧出现和帧定界符一样的比特组合的问题

  4. 多种网络层协议:必须能够在同一条物理链路上同时支持多种网络层协议的运行,如IP等;在局域网和路由器上同样如此

  5. 多种类型链路:必须能够在多种链路上运行

  6. 差错检验:必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧

  7. 检测连接状态:必须能够自动检测链路是否处于正常工作状态

  8. 最大传送单元:必须对每一种类型的点对点链路设置MTU的标准默认值;促进各种实现之间的互操作性,若高层协议发送的分组数据部分超过MTU值,则丢弃并返回差错

  9. 网络层地址协商:必须提供一种机制使通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址

  10. 数据压缩协商:必须提供方法来协商使用数据压缩算法

PPP的特点

  • 不支持多点线路
  • 只支持点对点的链路通信
  • 只支持全双工链路

PPP协议不需要的功能:纠错、流量控制、序号、多点线路、半双工或单工链路(只工作在点对点链路)

PPP协议的组成:

  1. 将IP数据报封装到串行链路的方法;PPP支持异步链路,也支持面向比特的同步链路;IP数据报在PPP帧中数据部分,收到MTU限制

  2. 用来建立、配置和测试链路连接的链路控制协议LCP

  3. 网络控制协议NCP,其中每一个协议支持不同的网络层协议

3.2.2 PPP协议的帧格式

image-20220915151852233

​ 首部和尾部分别为4个字段和2个字段

​ 标志字段F:规定为0x7E,表示一个帧的开始或结束,就是帧的定界符

​ 地址字段A:规定为0xFF

​ 控制字段C:规定为0x03

​ 协议字段:

​ (1)当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。

​ (2)当协议字段为0xC021时,PPP帧的信息字段就是PPP链路控制协议LCP的数据。

​ (3)当协议字段为0x8021时,PPP帧的信息字段就是网络层的控制数据。

​ 信息字段:长度可变,不超过1500字节

​ 帧减压序列FCS:CRC中使用的冗余码

透明传输问题: 当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一言的比特组合不出现在信息字段中。

​ 异步传输-字符填充:

当PPP使用异步传输时,它把转移符定义为0x7D,并使用字节填充。

RFC1662规定了如下填充方法:

(1)把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。

(2)若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。

(3)若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。

由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在接收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

同步传输-零比特填充:

当PPP使用同步传输时,使用零比特填充。

零比特填充的具体方法:

  • 在发送端先扫描整个信息字段(通常使用硬件实现,但也可以用软件实现,但是会慢一些)。

  • 只要发现有5个连续的1,则立即填入一个0。

  • 接收端在收到一个帧时,先找到标志字段F以确定帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把5个连续1后的一个0删除,以还原成原来的信息比特流。

因此通过这种零比特填充后的数据,就可以保证在信息字段中不会出现连续6个1。

3.2.3 PPP协议的工作状态

image-20220915152219132

3.3 使用广播信道的数据链路层

3.3.1 局域网的数据链路层

局域网的特点:网络为一个单位所拥有,且地理范围和站点数目均有限

局域网的优点:

  • 具有广播功能,从一个站点可方便的访问全网;局域网上主机共享局域网上各种硬件和软件资源

  • 便于系统的扩展和演变,各设备的位置可灵活调整和改变

  • 提高了系统的可靠性、可用性和生存性

局域网的拓扑结构:总线网、环形网、星形网

媒体共享技术:

  • 静态划分信道:频分复用、时分复用、波分复用、码分复用;代价较高,不适合局域网使用

  • 动态媒体接入控制(多点接入)

    • 随机接入:所有用户可随机发送信息,若发生碰撞(冲突),会使这些发送失败,需要解决碰撞的网络协议

    • 受控接入:用户不能随机发送信息而必须服从一定的控制,如多点线路探询(轮询)

以太网的两个标准:DIX Ethernet V2;IEEE 802.3

数据链路层的两个子层:

  • 逻辑链路控制(LLC):靠近网络层,看不见下面的局域网,为网络层提供统一的接口,已经过时

  • 媒体接入控制(MAC):靠近物理层,存放与接入媒体有关的内容

适配器的作用:

  • 网络适配器又被称为网卡

  • 包含了数据链路层和物理层两层的功能

  • 适配器的重要功能:

    • (1)进行串行\并行转换
    • (2)对数据进行缓存
    • (3)在计算机的操作系统安装设备驱动程序
    • (4)实现以太网协议
  • 计算机通过配置器和局域网通信:

image-20220915152538985

3.3.2 CSMA\CD协议

总线的特点:当一台主机发送数据时,总线上所有主机都能检测到这个数据,就是广播通信方式

为使通信简便采取的措施:

  • 采用无连接工作方式,不必先建立连接就可以直接发送数据;适配器对数据帧不编号,不要求发回确认;因此,以太网提供尽最大努力交付,是不可靠交付;收到差错帧则丢弃,是否重传由高层决定,和以太网无关;同一时间只允许一台主机发送数据;使用CSMA/CD协议

  • 发送的数据使用曼切斯特编码

CSMA/CD协议要点:

  • 多点接入:说明是总线型网络

  • 载波监听:检测总线上有没有其他计算机也在发送;每个主机必须不停的检测信道,发送前检测是为了获得发送权,发送中检测是为了及时发现碰撞

  • 碰撞检测:边发松边监听,也叫冲突检测;发生碰撞就立即停止发生,等待一段随机时间后再次发送

发生碰撞的原因:电磁波在1km电缆的传播时延为5μs,在这段时间其他主机发送数据无法检测到,就会导致之后某时刻发送冲突

适用环境:双向交替通信(半双工通信)

以太网的发送不确定性:每一个站在自己发送数据之后一段时间内,存在遭遇碰撞的可能,这段时间是不确定的,取决于离另一个发送站的距离,因此无法保证一定能把自己的数据帧成功发送出去

争用期(碰撞窗口):以太网端到端的往返时间2τ;经过争用期没检测到碰撞,才能肯定这次发送不会发送碰撞

截断二进制指数退避算法:用来确定碰撞后重传的时机,不是信道空闲就立即再次发送,而是推迟一个随机的时间

​ 具体流程:

  • 规定了基本退避时间为争用期2τ,具体的争用期时间是51.2μs;对于10Mbit/s以太网,争用期内能发送512bit,即64字节,也可以说争用期是512比特时间。

  • 从离散的整数集合[0,1,...,(2^k-1)]中随机取一个数,记为r,重传应推后r倍的争用期,k=min(重传次数,10)

  • 当重传16次仍不成功时,丢弃该帧,向高层报告

​ 凡长度小于64字节的帧都是由于冲突而异常终止的无效帧

强化碰撞:当发现碰撞时,处理立即停止发送数据外,还要继续发送32bit或48bit的人为干扰信号,使所有用户都知道发生了碰撞

帧间最小间隔:9.6μs,即96比特时间,使刚收到数据帧的站的接受缓存来得及清理,做好接收下一帧的准备

CSMA/CD协议要点

  1. 准备发送:适配器从网络获得一个分组,加上首部和尾部组成以太网帧,放入以太网缓存中,发送前先检测信道

  2. 检测信道:若检测到信道忙,则不停检测,直到信道转为空闲;若检测到信道空闲,并在96比特时间内保持空闲,就发送这个帧

  3. 在发送过程中仍不停检测信道,边发送边监听。这里有两种可能:

    1. 发送成功:争用期内未检测到碰撞。这个帧一定能发送成功。发送完毕后回到步骤1

    2. 发送失败:争用期内检测到碰撞。立即停止发送,并按规定发送人为干扰信号(强化碰撞),执行指数退避算法,等待r倍512比特时间后,返回步骤2;若重传16次仍不成功,停止重传并向上报错

3.3.3 使用集线器的星形拓扑

集线器的特点:

  1. 使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,还是使用CSMA/CD协议,在同一时刻只允许一个站发送数据

  2. 一个集线器有多个接口,因此一个集线器很像一个多接口转发器

  3. 集线器工作在物理层,仅简单的转发比特,不进行碰撞检测

  4. 有专用的芯片,能自适应串音回波抵消

每次只能发送一个信号,工作在物理层,只对比特进行转发不进行检测

3.3.4 以太的网信道利用率

以太网信道的利用率:由于会发生碰撞,实际利用率达不到100%

成功发送一个帧占用信道的时间:T0+τ

参数a:

  • a=τ/T0 是单程端到端时延τ与帧的发送时间T0之比

  • a->0表示一发生碰撞就能立即检测出来并停止发送,而a越大,争用期占比越大,使信道利用率降低

  • 因此a的值越小越好;当数据率一定时,以太网连线的长度受到限制,同时以太网的帧长不能太短

极限信道利用率Smax:

  • Smax=T0/(T0+τ)=1/1+a
  • 只有参数a远小于1才能得到尽可能高的极限信道利用率

3.3.5 以太网的MAC层

MAC地址:

  • 定义:又叫物理地址或硬件地址;就是适配器的标识符,用48位二进制数来标识网卡的硬件地址,表示为6个16进制数,在局域网内具有唯一性
  • I/G位:地址字段第一个字节的最低位;为0表示单个站地址、为1表示组地址,用来进行多播
  • G/L位:地址字段第一个字节的最低第二位;为0表示全球管理、为1表示本地管理

适配器的过滤功能:适配器收到MAC帧后检查帧中目的地址,若发往本站则收下,否则丢弃

发往本站的帧:

  • 单播帧:一对一,即收到的帧的MAC地址与本站的硬件地址相同
  • 广播帧:一对全体,即发送给本局域网上所有站点的帧(全1地址)
  • 多播帧:一对多,即发送给本局域网上一部分站点的帧

MAC帧格式:

image-20220915153453598

以太网数据帧长度:64~1518

各字段含义:

  • 类型:用来标志上一层使用的是什么协议
  • 数据:长度在46~1500字节
  • FCS:帧检验序列,使用CRC检验

填充字段:当数据字段长度小于46字节时,MAC子层会在数据字段后面加入一个整数字节的填充字段,以保证MAC帧长不小于64字节

插入的8字节:从MAC子层传到物理层时要在帧前插入8字节,由硬件生成

前同步码:7字节;使接收端的适配器在接收MAC帧时能迅速调整时钟频率,使其和发送端时钟同步

帧开始定界符:定义为10101011;用来表示帧开始

无效的MAC帧:

  • 帧的长度不是整数个字节
  • 用收到的帧检验序列FCS查出差错
  • 收到的帧的MAC客户数据长度不在46~1500字节之间,或MAC帧长度不在64~1518

3.4 扩展以太网

3.4.1 物理层扩展

集线器、光纤

3.4.2在数据链路层扩展以太网

网桥:对收到的帧根据MAC帧目的地址查找地址表进行转发和过滤

交换机:工作在数据链路层,实质就是一个多接口网桥

特点:交换机上的主机是全双工工作,不会产生冲突,交换机中存有地址表通过自学习算法建立,交换机上所有端口在同一个广播域上

帧转发方式:

直通:收到帧之后直接转发,不必事先把整个数据帧缓存,但也不对帧进行检验 存储转发:将所有帧都收到后进行检查,然后再发送

交换机的自学习功能:

地址表的形成:收到未知的地址后,存储源地址和接口的对应关系,向除来源端口的其它端口广播,目的地址不符则丢弃,否则接收并回复,收到回复后存储对应关系;地址表有有效时间,超过有效时间则失效

生成树协议STP:解决无限循环的问题

3.4.3虚拟局域网

虚拟局域网(VLAN):是一些局域网网段构成的与物理位置无关的逻辑组

VLAN标记:在MAC帧的源地址和类型间插入4字节的VLAN标记,交换机收到帧后只向所属VLAN转发,而不进行广播

最大帧长变为1522字节(1518+4)

第四章 网络层

4.1 网络层提供的两种服务

网络层提供服务的特点:网络层向上只提供简单的、无连接的、尽最大努力交付的数据报服务,不保证可靠通信

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

4.2 网际协议IP

IP是TCP/IP体系中连个最主要的协议,也是最重要的互联网标准协议之一

与IP配套使用的三个协议:

  • 地址解析协议ARP
  • 网际控制报文协议ICMP
  • 网际组管理协议IGMP
image-20220915155101354

4.2.1 虚拟互联网络

虚拟互联网络:逻辑互连的网络,可以由多种异构网络互连组成,在网络层上看起来像一个统一的网络

中间设备:用来将网络互相连接

  • 物理层的中间设备:转发器
  • 数据链路层的中间设备:网桥
  • 网络层的中间设备:路由器
  • 网络层以上的中间设备:网关

4.2.2 分类的IP地址

IP地址的编址方法:

  • 分类的IP地址:是最基本的编址方法
  • 子网的划分:对最基本编址方法的改进
  • 构成超网:比较新的无分类编址方法

分类的IP地址:

​ 将IP地址划分为若干个固定类,每一类地址都由网络号(net-id)和主机号(host-id)构成

​ 一个IP地址再整个互联网范围内是唯一的

A、B、C类地址都是单播地址

D类地址用于多播

image-20220915160033395

IP地址的指派范围:

image-20220915160304795

每个网络中最大主机数:

A:2^24-2

B:2^16-2

C:2^8-2

一般不使用的特殊IP地址:

image-20220915160605370

IP地址的重要特点:

  1. 每一个IP地址都由网络号和主机号两部分组成,是一种分等级的地址结构

  2. 实际上IP地址是标志一个主机或(路由器)和一条链路的接口

  3. 用转发器或网桥连接起来的若干给局域网仍为一个网络,因为这些局域网都具有同样的网络号net-id

  4. 所有分配到网络号的网络都是平等的

网络上的IP地址:

  1. 同一局域网上的各IP地址的网络号都是相同的

  2. 用网桥互连的网段仍是一个局域网,只有一个网络号

  3. 一个路由器有多个接口,每个接口对应的网络号不同

  4. 两路由器直接相连时,可以不给两端接口分配IP,这样的特殊网络也叫无编号网络或无名网络

4.2.3 IP地址与硬件地址

IP地址与硬件地址区别:从层次看,硬件地址或物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址

image-20220915160954137

4.2.4 地址解析协议ARP

IP地址与MAC地址:源IP地址和目的IP地址始终不变;而源MAC地址和目的MAC地址在每条链路上都要变化

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

工作方式:每个主机里都设有一个ARP高速缓存,里面有所在局域网上各主机和路由器的IP地址到硬件地址的映射表,且这个映射表经常动态更新

工作流程:当主机A向局域网上某个主机B发送IP数据报时,先在ARP高速缓存中查看有无主机B的IP地址,若有,就可查出对应的硬件地址,反之,执行ARP请求分组:

  1. ARP请求分组:在局域网广播一个ARP请求分组,包含发送方硬件地址,发送方IP地址,目的方硬件地址(未知时填0),目的方IP地址

  2. 本地广播ARP请求,路由器不转发ARP请求

  3. ARP响应分组:某主机收到广播,发现本机IP与查询IP一致,就回复ARP响应分组,包含发送方硬件地址,发送方IP地址;同时将请求分组中IP与硬件地址对应关系保存

  4. 收到回复的ARP响应分组后,将对应IP和硬件地址存入ARP高速缓存中,方便下次使用

生存时间:ARP高速缓存中每条映射都只存在一段时间,超过时间后就被删除

特点:

  • ARP协议只解决同一局域网上IP地址和硬件地址映射问题,不在同一局域网则无法解决
  • ARP工作过程对用户来说是透明的

四种使用ARP的典型情况:

  1. 发送方是主机,要把IP数据报发送到本网络上的一个主机,这时ARP找到目的主机的硬件地址

  2. 发送方是主机,要把IP数据报发送到另一个网络上的一个主机,这时ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器完成

  3. 发送方是路由器,要把IP数据报发送到本网络上的一个主机,这时ARP找到目的主机的硬件地址

  4. 发送方是路由器,要把IP数据报发送到另一个网络上的主机,这时ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器完成

4.2.5 IP数据报格式

image-20220915161534173

首部各字段含义:

  1. 版本:占4位,说明该IP数据报使用的IP协议的版本,通信双方必须使用同一个IP协议版本

  2. 首部长度:占4位,长度20~60字节,因为IPv4中首部存在可变部分,所以需要指出首部的长度以划分首部与数据部分;以4字节为单位,不是4的整倍数时要填充至整倍数

  3. 区分服务:占8位,只在区分服务时才起作用,一般不用

  4. 总长度:占16位,说明该IP数据报的总长度(首部+数据)。IP数据报封装为MAC帧时受限于MAC帧的长度上限,所以IP数据报还存在“分片”操作,即将IP数据报分为多片,封装进多个MAC帧。因此IP数据报最大长度2^16-1=65535字节

  5. 标识:占16位,IP数据报若存在分片,则接收方需要将各分片组合出原IP数据报,相同标识号的IP数据报就说明它们其实是同一个源IP数据报。

  6. 标志:占3位,目前只有前两位有意义,最低位为MF(More Fragment),若MF=1则说明该数据报后面“还有分片”。中间一位为DF(Don't Fragment),若DF=1则不能分片,只有DF=0才可以分片

  7. 片偏移:占13位,用于说明该IP数据报(已分片)在源IP数据报中的相对位置(相对于数据字段的起点),单位是8字节,每个分片一定是8字节的整倍数

  8. 生存时间:IP分组在网络中传递时有可能出现“兜圈子”的情况,所以需要对IP数据报进行一定的限制,生存时间的单位是“跳数”,最大值为255,每经过一个路由器,路由器便将IP数据报的生存时间-1,当IP数据报中的生存时间为0时,路由器丢弃该分组。

  9. 协议:说明该IP数据报的上层协议类型,如IP对应4,TCP对应6,UDP对应17

  10. 首部校验和:验证首部是否存在传输错误,只检验首部,不包括数据部分

  11. 源地址

  12. 目的地址

可变部分:长度为1~40字节,IP地址中的可变部分可用于支持很多操作,但很多情况都用不上,而且会增加路由器处理分组的开销,所以IPv6中的数据报首部做成了固定长度

4.2.6 IP层转发分组的流程

每个路由器路由表表项数:每有一个网络就要有一个路由表项

​ 接口所在网络为直连网络,直接交付

​ 特定主机的路由:给特定主机指定路由表,通过指定路线访问目标主机

​ 默认路由:可以减少路由表所占用的空间和搜索路由表所用的时间,将不在路由表中的网络都连向默认路由

​ 路由表:只有目标网络和对应的下一跳地址,并不储存到某个网络的完整路径

分组转发算法:

  1. 从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。

  2. 若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付给目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就要执行(3)进行间接交付。

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

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

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

  6. 报告转发分组出错。

4.3 划分子网和构造超网

4.3.1 划分子网

两级IP地址的问题:

  • IP地址空间利用率有时很低

  • 给每个屋里网络分配一个网络号会使路由表变得很大,因此是网络性能变坏

  • 两级IP地址不够灵活

划分子网的基本思路:借用主机号若干位作为子网地址

划分子网后的IP地址:| 网络号 | (子网) | 主机号 |

子网掩码:

作用:用来找出IP地址中的子网部分,长度为32位,原IP中网络号和子网部分置为1,主机号部分置为0

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

默认子网掩码:在不进行子网划分时,也要给出子网掩码,就用默认子网掩码

image-20220915162322190

子网掩码是一个网络或一个子网的重要属性,路由表中的每一项还要给出该网络的子网掩码

子网数:2^k-2,k表示子网号的位数,减去全0和全1,就是可用子网数,虽然现在全0和全1地址也可以使用,但不推荐

子网划分方法:

​ 固定长度划分:所划分的所有子网的子网掩码都是相同的,取所用最大的主机数进行划分

​ 变长划分:根据需求灵活划分

4.3.2 使用子网时的分组转发

子网划分后的路由表:包含目的网络地址、子网掩码、下一跳地址

子网划分后的路由器转发分组算法:

​ 1)从收到的数据报首部提取目的IP地址D

​ 2)先判断是否为直接交付。对路由器直接相连的网络进行逐个检查:用各网络的子网掩码和D逐位相与,看结果是否和相对应的网络地址匹配。若匹配,则把分组进行直接交付,转发任务结束。否则就是间接交付,执行(3)。

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

​ 4)对路由表的每一行,用其中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则执行(5)。

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

​ 6)报告转发分组出错。

4.3.3 无分类编址CIDR

概述:它最最主要的一点是消除了A,B,C类地址和划分子网的概念.它重新将IP地址划分为两个部分即,”网络前缀”和”主机号”.注意这里的网络前缀再也没有位数的限制,即没有A,B,C类之分.

CIDR的主要特点:

  • 消除了传统A、B、C类地址及划分子网的概念,重新将IP地址划分为两个部分即,”网络前缀”和”主机号”.注意这里的网络前缀再也没有位数的限制,即没有A,B,C类之分.

  • 把网络前缀相同的连续IP地址组成一个CIDR地址块,只要知道任一个地址,就可以知道这个地址块的起始地址和最大地址以及地址数

格式:使用网络前缀代替网络号和子网号,使IP地址变回两级格式

斜线表示法:/24表示子网掩码前24位为1,即网络前缀的位数

CIDR地址块:把网络前缀都相同的连续IP地址组成CIDR地址块

路由聚合:一个CIDR地址块能表示很多地址,这种地址的聚合称为路由聚合,也称为构成超网;有利于减少路由器之间的路由选择信息的交换,从而提高整个互联网的性能

最长前缀匹配:

用收到的目的地址与路由表中的每条掩码依次相与,取最长前缀匹配项的地址作为下一跳

因为前缀越长,其地址块就越小,因而路由就越具体

4.4 网际控制报文协议ICMP

作用:ICMP允许主机或路由器报告差错和提供有关异常情况的报告

报文格式:

image-20220915202845617

4.4.1 ICMP报文种类

CMP报文种类有两种,分别是:ICMP差错报告报文ICMP询问报文

image-20220915203142352

差错报告报文分类

  • 终点不可达
  • 时间超过
  • 参数问题
  • 改变路由

ICMP差错报告报文封装过程:

image-20220915203607986

不发送ICMP差错报告报文的情况:

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

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

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

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

常用的ICMP询问报文

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

4.4.2 ICMP的应用

  • PING:

    • PING即Packet InterNet Groper,用于探测两台主机间是否连通,源主机向目标主机发送ICMP的回送请求报文(封装在IP数据报中),目标主机若接收到该报文则返回回送回答报文
  • 路由探测:

    • 路由探测即源主机向目标主机发送无法交付的UDP数据报(封装于IP数据报,若目标主机接收到该数据报,则会返回ICMP终点不可达报文),第一次发送时将IP数据报的生存时间设为1,这样一来第一个路由器接收到后将生存时间-1就会直接判断该IP分组需要丢弃,并返回ICMP时间超过报文,源主机接下来发送第二个IP数据报(依然为不可交付UDP数据报),此次将生存时间设为2……以此类推,直至接收到ICMP终点不可达报文,或生存时间达到上限为止。

4.5 互联网的路由选择协议

4.5.1 路由选择协议基本概念

理想的路由算法

路由选择协议的核心就是路由算法,即需要何种算法来获得路由表中的各个项目

分层次的路由选择协议:

​ 互联网采用分层次的路由选择协议,自适应的(动态的)、分布式路由选择协议

自治系统AS:

​ 在单一技术管理下的一组路由器,在AS内部使用内部网关协议,AS之间使用外部网关协议

路由选择协议分类:

  • 内部网光协议IGP:在一个自治系统内部使用。如RIP、OSPF协议

  • 外部网光协议EGP:在不同自治系统之间使用。如BGP协议

4.5.2 内部网关协议RIP

工作原理

概述:是一种分布式,基于距离的路由选择协议

距离:直连网络距离为1,每过一个非直连网络距离加1,距离也称为跳数,每经过一个路由器跳数就加1,距离实际上指最短距离

RIP允许一个路径最多包含15个路由器,也就是距离最大值为16,故RIP适合小型互联网使用;RIP不能在两个网络之间同时使用多条路由

工作流程:每个路由器每隔一段时间向外广播,每个路由器收到广播后更新自己的路由表

刚开始时只知道直连网络的距离,路由表为空,以后,每个路由器只和数目有限的相邻路由器交互并更新路由信息,经过若干次更新后,所有路由器最终会知道到达本自治系统其他路由器的最短距离和下一跳地址,此时称该网络收敛

RIP协议的特点:

  • 仅和相邻路由器交换信息,不相邻的路由器不交换信息
  • 交换的信息是当前本路由器所知道的全部信息,即其现在的路由表
  • 按固定时间间隔交换信息
距离向量算法
  • 路由器收到地址为X的相邻路由器的一个RIP报文,修改报文中所有项目,把下一跳地址改为X,把距离字段值都+1

  • 对修改后的RIP报文中的每个项目重复以下步骤

    • 若项目中目的地址不在路由表中,则加入路由表;

    • 若下一跳给出的路由器地址与RIP报文传来地址相同,则用收到的项目替换原路由表中的项目

    • 若收到项目中的距离小于路由表中的距离,进行更新

  • 若超过3分钟未收到相邻路由信息,则将其标记为不可达,即把距离置为16

  • 返回

例:路由表更新

image-20220915205117712

解:先将收到的路由表进行修改:

image-20220915205237554

将修改后的表与路由表对比:

​ net1:原路由表中没有,故加入

​ net2:原表中有,且下一跳相同,替换原有

​ net3:原表中有,但下一跳不同,比较距离,选择较小的

RIP协议报文格式
image-20220915205358874

各字段含义:

  • 命令:指出报文的意义;1表示请求路由信息,2表示对请求路由信息的响应或路由更新报文

  • 地址族标识符:标志所使用的的地址协议;如IP地址就置为2

  • 路由标记:填入自治系统号,因为RIP可能受到本自治系统以外的路由选择信息

RIP报文最大长度:4+20*25=504字节

*RIP2改动:支持变长子网掩码和无分类域间路由选择CIDR;提供简单的鉴别过程支持多播

RIP存在的问题:当网络出现故障时,要经过较长时间才能将此信息传送到所有路由器

*RIP协议特点:

  • 好消息传播快,坏消息传播慢,网络出故障的传播时间需要较长时间

  • 优点:实现简单,开销较小;

  • 缺点:限制了网络的规模,出故障时传播时间较长

4.5.3 OSPF协议

主要特征:使用分布式的链路状态协议,而不像RIP使用距离向量协议

*OSPF的要点:

  • 向本自治系统中所有路由器发送信息。使用洪泛法,向所有相邻路由发送信息,每个相邻路由又再将此信息发给所有相邻路由

  • 发送信息就是与本路由器相邻的所有路由器的链路状态,说明与哪些路由相邻,以及该链路的"度量";而不是发生路由表

  • 只有当链路状态发生变化时,才使用洪泛法发生信息;不是定期更新

*度量:费用、距离、时延、带宽

链路状态数据库:实际就是全网的拓扑结构图,它在全网范围内是一致的,能较快的更新,收敛较快

OSPF的区域:

为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干各更小的范围,叫做区域;必须要有一个主干区域,其它区域一般都和主干区域直接相连;每个区域都有一个32位的区域标识符;区域不能太大,一个区域路由器数量不超过200个;

优点:使用泛洪法交换链路信息时,仅在一个区域内而不是整个自治系统中,这减小了整个网络上的通信量

OSPF的特点:

  • 使用层次结构的区域划分

  • OSPF直接用IP数据报传送,而不用UDP

  • 支持可变长度的子网划分和无分类编址CIDR

  • OSPF对于不同类型的业务可计算出不同的路由

  • 到达同一目的网络可有多条代价相同的路径,多路径间的负载平衡

  • 所有在OSPF路由器之间交换的分组都具有鉴别功能

OSPF报文: image-20220915205625972

OSPF报文的5种分组类型:

  • 类型1:问候分组;

  • 类型2:数据库描述分组;

  • 类型3:链路状态请求分组;

  • 类型4:链路状态更新分组,用泛洪法对全网更新链路状态;

  • 类型5:链路状态确认分组

指定路由器法:指定一个代表路由器,将信息都传送给指定的路由,再由其向其他路由器转发,减小网络上的通信量

4.5.4 外部网关协议EGP

EGP协议的作用:寻找一条能够到达目的网络且比较好的路由,不一定是最佳路由,采用路径向量路由选择协议

4.5.5 路由器的构成

路由器:路由器是一种由多个输入端口和多个输出端口的专用计算机

路由器两大部分:

  • 路由选择部分:路由选择处理机,路由选择协议,路由表

  • 分组转发部分:交换结构,一组输入端口,一组输出端口

转发与路由选择:转发根据转发表,转发表由路由表而来,路由选择根据路由表,路由表由路由选择协议及相关算法而来

分组丢弃:由于没有足够存储空间

交换结构:交换结构是路由器的关键部件、把分组从一个输入端口转到一个输出接口

三种交换方式:通过存储器、通过总线、通过互连网络

4.6 IPv6

6.1.IPv6的基本首部

IPv6出现的原因:到2011年,IPv4的地址已经耗尽

主要变化:

  • ​ 更大的地址空间:将地址从32位增大到128位

  • ​ 扩展的地址层次结构

  • ​ 灵活的首部格式:定义了很多可选的扩展首部

  • 改进的选项:允许数据报包含有选项的控制信息,其选项放在有效载荷中

  • 允许协议继续扩充

  • 支持即插即用:自动配置,不需要使用DHCP

  • 支持资源的预分配

  • 首部改为8字节对齐

IPv6数据报格式:

image-20220915210204162

首部长度固定位40字节

基本首部:

image-20220915210323715

​ 各字段含义:

  • 版本:占4位。指明协议的版本

  • 通信量类:占8位。为了区分不同的IPv6数据报的类别或优先级

  • 流标号:占20位。标明数据报所属的流,在流经过的路径上的路由器都保证服务质量

  • 有效载荷长度:占16位。指明除基本首部外的字节数,最大值是64KB

  • 下一个首部:占8位。相当于IPv4的协议字段或可选字段。当没有扩展首部时,指明首部后面的数据应交付IP上层哪个协议;有扩展首部时,就标识后面第一个扩展首部的类型

  • 跳数限制:占8位。防止数据报在网络中无限期存在,最大255跳,每转发一次就-1,为0就将这个数据报丢弃

  • 源地址:占128位。是数据报发送端的IP地址

  • 目的地址:占128位。是数据报接收端的IP地址

4.6.2 IPv6地址

结点与接口:将实现IPv6的主机和路由器均称为结点

IPv6的表示:

冒号16进制记法:用8段,每段4个16进制数组成,允许将数据前的0省略

​ 例:68E6:8C64:FFFF:FFFF:0:1180:FFFF:FFFF

零压缩:一串连续的零可用一对冒号所代替,在一个地址中只能使用一次,若多次压缩将导致地址无法还原

​ 例:FF05:0:0:0:0:0:0:0:03 => FF05::03

点分十进制记法的后缀:可将IPv4地址前添加6组0,使其变成IPv6的地址

​ 例如:0:0:0:0:0:0:128.10.2.1 = ::128.10.2.1

IPv6地址分类:

image-20220915210514278

全球单播地址的3种划分方法:

image-20220915210540495

4.6.3 IPv4向IPv6过渡

双协议栈:在完全过渡到IPv6前,使一部分主机或路由器装有两个协议栈,使其可与不同网络通信时采用不同的协议,将IPv6数据报报头改为IPv4数据报形式

隧道技术:在IPv6协议进入IPv4网络时,更改源地址为隧道起点,目的地址变为隧道终点,建立隧道,使整个原IPv6数据报作为IPv4数据报的数据部分,在出隧道时改回原来的源地址和目的地址,还原为IPv6数据报

4.6.4 ICMPv6

ICMPv6:地址解析协议ARP和IGMP都集合到ICMPv6中

分类:差错报文,信息报文,邻站发现报文,组成员关系报文

4.7 IP多播(略)

4.8 虚拟专用网VPN和网络地址转换NAT(了解)

4.8.1 虚拟专用网VPN:

概述:用于机构内部的通信,而不是用于和网络外非本机构的主机通信,但没有真正使用通信专线,VPN只是在效果上和真正的专用网一样

VPN的构建:

所有通过互联网传送的数据都必须加密,要构建VPN必须为它的每一个场所配置专门的硬件和软件,使每一个场所的VPN系统都知道其他场所的地址

远程接入VPN:可以满足外部流动员工访问公司网络的需求

4.8.2 网络地址转换NAT:

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

​ 网络转换的过程:

​ 在内部主机与外部主机通信时,在NAT路由器上进行了两次转换

​ 离开专用网时:替换源地址,将内部地址替换为全球地址

​ 进入专用网时:替换目的地址,将全球地址替换为内部地址

​ 通过NAT路由器的通信必须由专用网内的主机发起,专用网内部的主机不能充当服务器用,因为互联网上的用户无法请求专用网内的服务器提供服务

网络地址与端口号转换NAPT:

​ 可以使多个本地主机共用一个全球IP地址

​ NAPT地址转换过程:

​ NAPT把专用网内不同的源IP地址,都转换为同样的全球IP地址,但对源主机所采用的TCP端口号,则转换为不同的新的端口号,因此,当NAPT路由器收到从互联网发来的应答时,就可以从IP数据报的数据部分找出运输层的端口号,然后根据不同的目的端口号,从NAPT转换表中找到正确的目的主机

6.9 多协议标记交换MPLS(了解)

​ 多协议标识MPLS的上层可以采用多种协议,可以使用多种数据链路层协议

为实现交换,可以利用面向连接的概念,使每一个分组携带一个叫做标记的小整数

第五章 运输层

5.1 运输层协议概述

5.1.1 进程间的通信

概述:

运输层向它上面的应用层提供通信服务运输层属于面向通信部分的最高层,同时也是用户功能中的最底层;只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发时只用到下三层的功能

通信:

真正进行通信的实体是在主机中的进程,是一台主机中的进程和另一台主机中的进程在交换数据,严格来讲,两台主机进行通信就是两台主机中的应用进程互相通信

运输层的作用:

提供应用进程间的逻辑通信

image-20220915211619054

网络层与运输层的区别:网络层为主机之间提供逻辑通信,运输层为应用进程之间提供端到端的逻辑通信

基于端口的复用和分用功能:

  • 复用:在发送方不同的应用进程都可以使用同一个运输层协议传送数据

  • 分用:接收方的运输层在剥去报文的首部后能把这些数据正确交付目的应用进程

屏蔽作用:运输层向高层屏蔽了网络核心的细节,使应用进程看见的就好像在两个运输层实体之间有一条端到端的逻辑通信信道

两种不同的运输协议:

  • 当运输层采用TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道

  • 当运输层采用无连接的UDP协议时,这种逻辑信道仍是一条不可靠信道

5.1.2 运输层的两个主要协议

​ 两个主要协议:

​ (1)用户数据报协议(UDP)

​ (2)传输控制协议(TCP)

​ 两种协议在协议栈中的位置:

image-20220915211900797
  • UDP:

    • 在传送数据之前不需要先建立连接,远地主机收到UDP报文后,不需要给出确认,UDP不提供可靠交付,但某些情况却是最有效的工作方式
  • TCP:

    • 提供面向连接的服务,在传送数据前先建立连接,数据传送结束后要释放连接;TCP不提供广播或多播服务;TCP提供可靠的、面向连接的运输服务,因此增加了很多开销

    UDP与IP数据报的区别:

  • IP数据报要经过互联网中许多路由器的存储转发

  • UDP用户数据报是在运输层的端到端抽线的逻辑信道中传送的

  • TCP报文是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道

5.1.3 运输层的端口

目的:把特定主机上运行的进程作为互联网上通信的终点不可行,因为进程的创建和撤销是动态的,因此使用协议端口号作为识别的终点,而不需要知道具体进程

协议端口号(端口):虽然通信的终点是应用进程,但只要把报文交到目的主机的某个目的端口,剩下的工作就由TCP或UDP来完成

两种端口区别:

  • 硬件端口:不同硬件设备进行交互的接口
  • 软件端口:应用层的各种协议进程与运输实体进行层间交互的一种地址,此处的端口都是指软件端口
  • 端口的表示:用16位的端口号来标志一个端口;端口号只具有本地意义,只标志本计算机应用层中各进程和运输层交互时的层间接口

端口号的分类:

  • 服务器端口号:
    • 熟知端口号:0~1023,这些端口号被指派给TCP/IP最重要的以下应用程序,让所有用户都知道
    • 登记端口号:1024~49151,为没有熟知端口号的应用程序使用
image-20220915212311915
  • 客户端端口号:49152~65535,仅在客户进程运行时才动态选择,因此又叫短暂端口号

5.2 用户数据报协议UDP

5.2.1 UDP概述:

UDP的主要特点:

  • UDP是无连接的
    • 发生数据之前无需建立连接,减少了开销和发送数据之前的时延
  • UDP使用尽最大可能交付
    • 不保证可靠交付,因此主机不需要维持复杂的连接状态表
  • UDP是面向报文的
    • UDP对应用层交下来的报文不做处理,直接加上首部后就转发,若报文过长,IP层会进行分片,可能使IP层效率降低
image-20220915213217167
  • UDP没有拥塞控制

    • 因此网络出现拥塞不会使源主机发送速率降低,对实时应用很重要
  • UDP支持一对一、一对多、多对一和多对多的交互通信

  • UDP的首部开销小

    • 只有8字节,比TCP的20字节首部短

5.2.2 UDP的首部格式

image-20220915213408823

伪首部:只在计算校验和时使用,不参与数据传输

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

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

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

校验和:检测UDP用户数据报在传输过程中是否有错。有就丢弃

计算UDP校验和:与IP首部检验相似,但UDP的检验和把首部和数据部分一起都检验

5.3 传输控制协议TCP概述

5.3.1 TCP的主要特点

  • TCP是面向链接的运输层协议

    • 在使用TCP协议之前,必须先建立连接
  • 每一条TCP链接只能有两个端点,每一条TCP连接只能是点对点的

  • TCP提供可靠交付的服务

    • 保证数据无差错、不丢失、不重复、按序到达
  • TCP提供全双工通信

    • 允许通信双方任何时候都能发送数据
  • 面向字节流:

    • 流指的是流入到进程或从进程流出的字节序列;TCP把应用程序交下来的数据仅看作一串无结构的字节流
image-20220915213725020

TCP连接是一条虚连接(逻辑连接),并不是真正的物理连接

5.3.2 TCP的连接

套接字:套接字=(IP地址:端口号) IP地址拼接上端口号,例如(192.168.1.1:80)

每一条TCP连接唯一被通信两个端点(两个套接字)所确定:

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

TCP连接的端点不是进程,而是套接字

同一个IP地址可以由多个不同的TCP连接,而同一个端口也能出现在多个不同TCP连接中

5.4 可靠传输的工作原理

理想传输条件:

​ 传输信道不产生差错

​ 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据

5.4.1 停止-等待协议

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

无差错情况
image-20220915214459730
出现差错
image-20220915214533760

A只要超过一段时间没有收到确认,就默认发送的分组丢失而重传之前的分组,就是超时重传

注意:

  • A发送完一个分组后,必须暂时保留已发送分组的副本,只有在收到相应确认后才删除

  • 分组和确认都需要编号,才能明确哪个分组收到确认,哪个没收到

  • 超时计时器的重传时间应比数据在分组传输的平均往返时间更长一些

确认丢失和确认迟到

确认丢失

image-20220915214727163

确认迟到:

image-20220915214749027

5.4.2 连续ARQ协议

发送方维持发送窗口,位于发送窗口内的分组都可以连续发送出去,而不需要等待对方确认,这样信道利用率就提高了

工作原理:

image-20220915214930433

ARQ规定,发送方每收到一个确认,就把发送窗口滑动一个分组位置,接收方采用累积确认方式,在收到几个分组后,对按序到达的最后一个分组发送确认

​ 优点:容易实现,确认丢失也不必重传

​ 缺点:不能向发送方反映出接收方已经正确收到的所有分组信息

5.5 TCP报文段的首部格式

image-20220915215035649

(1)源端口和目的端口:各占2字节,分别是源端口号和目的端口号

(2)序号:占4字节,TCP中传输的数据流中的每一字节都有一个编号。序号字段的值是本报文段所发送的数据的第一个字节的序号

(3)确认号:占4字节,是期望收到对方下一个报文段的第一个数据字节的序号

​ 确认号=N,则表明到序号N-1为止所有数据都正确收到

(4)数据偏移:占4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远

(5)保留:占6位,保留为今后使用

(6)紧急URG:当URG=1时,表明紧急指针字段有效,告诉系统此报文中有紧急数据,应尽快传送,而不采用原来的按排队顺序来传送

(7)确认ACK:当ACK=1时确认号字段有效,TCP规定,在连接建立后所有数据报文段都把ACK置为1

(8)推送PSH:当收到PSH=1的报文时,就尽快交付接收应用进程,而不再等到整个缓存都填满后再向上交付

(9)复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后重新建立连接

(10)同步SYN:在连接建立时用来同步序号;当SYN=1而ACK=0时,表明这是一个连接请求报文,对方若同一建立连接,则应在响应报文中使SYN=1,ACK=1

(11)终止FIN:用来释放一个连接,当FIN=1时,表示此报文段的发送方已经发送完毕,并要求释放连接

(12)窗口:占2字节,指的是发送本段报文段的一方的接收窗口,窗口值作为接收方让对方设置其发送窗口的依据;窗口字段明确指出了现在允许对方发送的数据量,窗口值经常动态变化

(13)校验和:占2字节,检验和字段检验的范围包括首部和数据两部分

(14)紧急指针:占2字节,在URG=1时才有意义,指出本报文段中的紧急数据的字节数

(15)选项:长度可变,最长40字节

最大报文段长度(MSS): 是每一个TCP报文段中的数据字段的最大长度,并不是整个TCP报文段的最大长度,是TCP报文段长度-TCP首部长度

5.6 TCP可靠传输的实现

5.6.1 以字节为单位的滑动窗口

据B给出的窗口值,A构造自己的发送窗口

image-20220915215451241

发送窗口表示:在没有收到B的确认时,A可以连续把窗口内的数据都发送出去

​ 发送窗口中的序号表示允许发送的序号,窗口越大,发送方就可以在收到对方确认前连续发送更多的数据,因此可能获得更高的传输效率

​ 收到新的确认后发送窗口前沿向前移动,没有收到新的确认或收到新的确认但对方通知的窗口缩小了,会使发送窗口前沿不动

TCP的缓存和窗口的关系:

image-20220915215530458
  • 发送缓存存放:

    • 发送应用程序发送给发送方TCP准备发送的数据

    • TCP已发送出但尚未收到确认的数据

  • 接收方缓存存放:

    • 按序到达的、但尚未被接受应用程序读取的数据

    • 未按序到达的数据

5.6.2 超时重传时间的选择

加权平均往返时间RTTs:

​ 新的RTTs=(1-a)(旧的RTTs)+a(新的RTT样本)

​ 超时重传时间RTO:

​ RTO=RTTs+4*RTTd

​ RTT的偏差的加权平均值RTTd:

​ 新的RTTd=(1-b)(旧的RTTd)+b|RTTs-新的RTT样本| 其中b=0.25

​ Karn算法:

​ 在计算加权平均RTTs时,只要报文段重传了,就不采用其往返时间样本,这样得出的加权平均RTTs和RTO就较准确

5.6.3 选择确认SACK

选择确认的工作原理:

接收方在接受对方发送过来的数据字节流的序号不连续,结构就形成了一些不连续的字节块,如果这些字节的序号都在接受窗口内,接收方就先收下这些数据,但要把这些信息告诉发送方,使发送方不再重复发送这些已收到的数据

image-20220915215733476

左边界为闭,右边界为开;左边界指向字节块第一个字节序号,右边界指向字节块最后一个序号+1

5.7 TCP的流量控制

5.7.1 利用滑动窗口实现流量控制

​ 流量控制:让发送方发送速率不要太快,让接收方来得及接收

​ 滑动窗口的单位:字节

​ 滑动窗口流量控制流程:

​ 开始时rwnd=400,每个报文段长100字节

image-20220915215930120

持续计时器:解决盲等死锁。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若计时器到期,就发送一个零窗口探测报文段,而对方就在确认这个报文段时给出了现在的窗口值,若窗口值仍是零,那么收到报文的一方就重新设置持续计时器,若不是零,那么死锁就被打破

5.7.2 TCP的传输效率

Nagle算法:

​ 若发送应用进程要把发送的数据逐个字节地送到TCP发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节都缓存起来。当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文发送出去,同时继续对后到达的数据进行缓存。只有在收到对前一个报文段的确认后才继续发送下一个报文段

糊涂窗口综合征:

​ 接收缓存每次只能释放出1字节空间,然后把窗口设为1,向发送方发送确认,发送方又发来1字节数据,接收方发回确认,仍将窗口设为1字节,这样会使网络效率降低

解决方法:

​ 让接收方等待一段时间,使得接收缓存有足够空间容纳一个最大的报文段,或等接收缓存中有一半空闲空间。此时再发送确认报文

5.8 TCP的拥塞控制

5.8.1 拥塞控制的一般原理

拥塞:某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种现象称为拥塞

出现拥塞的原因:对资源的需求>可用资源

增加资源解决拥塞:不能。拥塞由多种因素引起,不能单纯通过增加资源解决

拥塞的恶化:如果路由器没有足够缓存空间,就会丢弃一些新到的分组,当分组被丢弃时,发送方就会重传,甚至多次重传,这样会导致更多分组流入网络和被网络中的路由器丢弃

拥塞控制与流量控制的区别:

  • 拥塞控制就是防止过多的数据注入到网络,这样可以使网络中的路由器或链路不致过载,拥塞控制的前提是网络能够承受现有的网络负荷,拥塞控制是一个全局性过程

  • 流量控制是指对点对点通信量的控制,是端到端的问题,流量控制就是抑制发送端发送数据的速率,以便使接收端来得及接收

拥塞控制的一般原理:

  • 开环控制:就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不发生拥塞

  • 闭环控制:基于反馈回路概念;检测网络系统以便检测到拥塞在何时、何处发生;把拥塞发生的信息传送到可采取行动的地方;调整网络系统的运行以解决出现的问题

检测网络拥塞的指标:

  • 由于缺少缓存空间而被丢弃的分组的百分数

  • 平均队列长度

  • 超时重传分组数

  • 平均分组时延

  • 分组时延的便准差

5.8.2 TCP的拥塞控制方法

拥塞控制算法:

  • 慢开始

  • 拥塞避免

  • 快重传

  • 快恢复

慢开始和拥塞避免:

​ 拥塞窗口:大小取决于网络的拥塞程度,并且动态的变化,发送方让自己的发送窗口等于拥塞窗口

​ 判断拥塞的依据:出现了超时

​ 发送方控制拥塞窗口的原则:

​ 只要没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多分组发送出去,提高网络利用率;只要发生拥塞,就把拥塞窗口减小一些,以减少注入到网络种的分组数,以缓解网络出现的拥塞

​ 拥塞的判断:重传定时器超时、收到三个相同的ACK

慢开始算法:

​ 算法思路:由小到大逐渐增大拥塞窗口数值

​ 初始拥塞窗口:初始拥塞窗口设置为1至2个发送方的最大报文段的数值

​ 拥塞窗口的控制:在每收到一个对新报文段的确认后,可以把拥塞窗口增加多一个SMSS(发送方最大报文段)的数值,即拥塞窗口cwnd每次的增加量 = min(N,SMSS),N是原先未被确认、现在被刚收到的确认报文确认的字节数

算法流程:

image-20220915220408696

每经过一个传输轮次,拥塞窗口cwnd就加倍

传输轮次:一个传输轮次所经历的时间就是往返时间RTT;即发送n个报文段并受到n个报文段确认总共经历的时间

传输轮次更加强调:把拥塞窗口所允许发送的报文段都连续发送出去,并收到对已发送的最后一个字节的确认

慢开始:不是指cwnd的增长速度慢,而是在TCP开始发送报文段时先把cwnd设置为1,然后再逐步增大cwnd

慢开始门限:防止拥塞窗口增长过大引起网络拥塞

用法:

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

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

​ 当cwnd=ssthresh时,既可用慢开始,也可用拥塞避免

拥塞避免算法: 算法思路:让拥塞窗口缓慢的增大,每经过一个RTT就把发送方的拥塞窗口+1,而不是像慢开始加倍增长

拥塞避免特点:加法增大,拥塞窗口按线性规律缓慢增长,比慢开始的拥塞窗口增长速率慢得多

拥塞避免不能完全避免拥塞,只是控制拥塞窗口按线性规律增长,使网络不易出现拥塞

快重传算法

特点:可以让发送方尽早知道发生了个别报文段的丢失

算法思路:要求接收方不等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认

算法启动:发送方只要一连收到3个重复确认,就立即进行重传(即快重传)

算法流程:

image-20220915220646791

快恢复算法:

发送方只是丢失个别报文,不启动慢开始而用快恢复算法,发送方调整门限值ssthresh=cwnd/2,同时设置拥塞窗口cwnd=ssthresh,并开始执行拥塞避免算法

拥塞控制流程图:

image-20220915220743085

发送方窗口的上限值:发送方的发送窗口一定不能超过对方给出的接收方窗口值rwnd;上限值应取接收方窗口和拥塞窗口这两个变量中较小的一个,即发送方窗口的上限值= min(rwnd,cwnd)

5.8.3 主动队列管理AQM

​ 略

5.9 TCP的运输连接管理

运输连接的三个阶段:连接建立、数据传送、连接释放

客户-服务器方式:TCP连接建立采用客户服务器方式,主动发起连接建立的应用叫客户,而被动等待连接建立的应用进程叫服务器

5.9.1 TCP的连接建立

三次握手

image-20220915221017236

流程:

  • 最初两端TCP进程都处于关闭状态,开始时B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求,然后进入收听状态;

  • A的TCP客户进程也先创建TCB,然后打算建立TCP连接时,向B发送连接请求报文,这是首部中同步位SYN=1,同时选择一个初始序号seq=x,TCP规定,SYN报文段不能携带数据,但要消耗一个序号,这时TCP客户进程进入同步已发送状态;

  • B收到连接请求报文后,若同意建立连接,则向A发送确认。在确认报文中将SYN位和ACK位都置1,确认号时ACK=x+1,同时也为自己选择一个初始序号seq=y。这个报文段也不能携带数据,但同样消耗一个序号,这时TCP服务器进程进入同步收到状态

  • TCP客户进程收到B的确认后,还要向B给出确认。确认报文的ACK置1,确认号ack=y+1,而自己的序号seq=x+1。TCP规定,ACK报文段可以携带数据,但如果不携带数据则不消耗序号,这种情况,下一个数据报文段序号仍是seq=x+1。这时TCP连接已经建立,A进入已建立连接状态

  • B收到A的确认后,也进入已建立连接状态

5.9.2 TCP连接的释放

四次挥手

image-20220915221201957

流程:

  • 起始时A和B都处于已建立连接状态

  • A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接,A把连接释放报文段首部的终止控制位FIN置1,序号seq=u,它等于前面已传送过的数据的最后一个字节的序号+1。这时A进入终止等待状态。FIN报文段即使不携带数据,也消耗一个序号

  • B收到连接释放报文后发出确认,确认号是ack=u+1,而这个报文自己的序号是v,等于B前面已传送过的数据的最后一个字节的序号+1。然后B进入关闭等待状态,TCP服务器进程通知高层应用进程,因而从A到B这个方向的连接就释放了,这时的TCP连接处于半关闭状态,即A已经没有数据要发送了,但B若发送数据,A仍要接受

  • A收到来自B的确认后,进入终止等待2状态,等待B发送的连接释放报文段

  • 若B已经没有要向A发送的数据,应用进程就通知TCP释放连接,此时B发出的连接释放报文段FIN=1,假定现在B的序号为w,B还必须重复上次已发送过的确认号ack=u+1,此时B进入最后确认状态,等待A的确认

  • A在收到B的链接释放报文后,必须对此发出确认,在确认报文段中把ACK置1,确认号ack=w+1,而自己的序号时seq=u+1,然后进入时间等待状态。此时TCP连接还没有释放,必须经过时间等待计时器设置的时间2MSL后,A才进入关闭状态。

  • A等待2MSL时间的原因:

    • 保证A发送的最后一个ACK报文段能够到达B

    • 防止已失效的连接请求报文段出现在本连接中

5.9.3 TCP的有限状态机

​ 略

第六章 应用层

应用层协议:每个应用层协议都是为了解决一类应用问题,而解决问题需要通过位于不同主机的多个应用进程之间的通信和协同来完成,应用层的具体内容就是定义这些通信规则

6.1 域名系统DNS

6.1.1 域名系统概述

域名系统DNS:是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址

许多应用层软件经常使用域名系统DNS,但计算机的用户只是间接而不是直接使用DNS

互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统DNS

DNS使大多数名字都在本地进行解析,仅少量解析需要互联网上通信

域名的解析过程:

当需要把主机名解析成IP地址时,应用进程调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器,本地域名服务器查找域名后,把对应的IP地址放在回答报文中返回,应用进程获得目的主机的IP地址后即可进行通信

6.1.2 互联网的域名结构

互联网采用了层次树状结构的命名方法

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

域是名字空间中一个可被管理的划分,域还可以划分为子域,而子域还可继续划分

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

标号的规定:

​ 域名中的标号由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写;级别低的域名写在左边,级别高的写在右边;由多个标号组成的完整域名总共不超过255个字符

域名是逻辑概念,并不代表计算机所在的物理地点

顶级域名的分类:

​ 国家顶级域名:如cn、us

​ 通用顶级域名:如com、net、org、edu

​ 基础结构域名:只有arpa,用于反向域名解析,又称为反向域名

二级域名:

​ 类别域名:ac、com、edu、gov

​ 行政区域名:bj、js

互联网的域名空间:

image-20220915221928407

6.1.3 域名服务器

目的:为每一级的域名都设置一个对应的域名服务器,数量太多,效率低下。因此DNS采用划分区的办法

区:一个服务器所负责的范围

权限域名服务器:每一个区都设有,用来保存区中所有主机的域名到IP地址的映射

互联网上的DNS域名服务器树状结构:

image-20220915222101136

域名服务器分类:

  • 根域名服务器:
    • 是层次最高的域名服务器,也是最重要的。所有根域名服务器都知道所有顶级域名服务器的域名和IP地址。任何本地域名服务器只要自己无法解析,就首先求助于根域名服务器
  • 顶级域名服务器:
    • 负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答
  • 权限域名服务器:
    • 负责一个区的域名服务器。当权限域名服务器还不能给出回答时,就会告诉发出查询请求的DNS客户,下一步应找哪一个权限域名服务器
  • 本地域名服务器:
    • 并不属于域名服务器层次结构,但很重要。当主机发出DNS查询请求时,这个查询请求报文发给本地域名服务器

提高域名服务器可靠性:

​ DNS域名服务器把数据复制到几个域名服务器来保存,其中一个是主域名服务器,其余是辅助域名服务器。当主域名服务器出现故障时,辅助域名服务器就可以保证DNS的查询工作不会中断

域名的解析过程:

​ 主机向本地域名服务器查询,采用递归查询:如果本地域名服务器不知道查询域名的IP,则本地域名服务器以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让主机自己进行下一步查询。因此,递归查询返回的查询结构是查询的IP地址或报错,即无法查询到IP

​ 本地域名服务器向根域名服务器查询,采用迭代查询:当根域名服务器收到本地域名服务器发出的查询请求报文时,要么给出要查询的IP地址,要么告诉本地域名服务器下一步应向哪个域名服务器查询,然后让本地域名服务器进行后续查询。根域名服务器通常把自己知道的顶级域名服务器的IP告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询

6.2 文件传送协议FTP

6.2.1 FTP概述

文件传输协议FTP:时互联网上使用最广泛的文件传送协议,提供交互式访问,允许客户指明文件的类型与格式,并允许文件具有存取权限

特点:要存取一个文件,必须先获得一个本地的文件副本,要修改文件,只能对副本进行修改,然后将修改后的文件副本传回原节点

6.2.2 FTP的基本工作原理

FTP的特点:只提供文件传送的基本服务,使用TCP可靠性运输服务,FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性

FTP工作流程:FTP使用客户服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务,FTP的服务进程分为两大部分:主进程,负责接受新的请求;若干从属进程,负责处理单个请求

主进程的工作步骤:

​ (1)打开熟知端口(21),使客户进程能够连接

​ (2)等待客户进程发出连接请求

​ (3)启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建一些子进程

​ (4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的

FTP的两个TCP连接:

​ 控制连接:在整个会话期间一直打开,FTP客户发出的传送请求,通过控制连接发送给服务器端;端口号21

​ 数据连接:用于传输文件;端口号20

由于FTP使用两个不同的端口号,所以数据连接与控制连接不会发生混乱

服务器端控制进程收到FTP客户发来的文件传输请求后,就创建数据传送进程和数据连接,用来连接客户端和服务端的数据传送进程

6.2.3 简单文件传送协议TFTP

TFTP:是很小且易于实现的文件传送协议,使用客户服务器方式,但使用UDP数据报,因此,TFTP需要有自己的差错改正措施,TFTP只支持文件传输而不支持交互。TFTP没有庞大的命令集,没有列目录功能,不能对用户进行身份识别

优点:TFTP可用于UDP环境;TFTP代码所占的内存小

TFTP的主要特点:

​ (1)每次传送的数据报文中有512字节的数据,但最后一次可不足512字节

​ (2)数据报文按序编号,从1开始

​ (3)支持ASCII码或二进制传送

​ (4)可对文件进行读或写

​ (5)使用很简单的首部

TFTP工作流程:

​ TFTP客户进程发送一个请求报文给TFTP服务器进程,其熟知端口号为69。TFTP服务器进程选择一个新的端口和TFTP客户进程通信。若文件长度恰好为512字节整倍数,则文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据报;若不是整倍数,则最后一个报文一定不足512字节,可作为文件结束的标志

6.3 远程终端协议TELENT

6.4 万维网WWW

6.4.1 万维网概述

万维网:是一个大规模联机式的信息储存所,用连接的方法能非常方便的从互联网上的一个站点访问另一个站点,从而主动按需获得信息;是一个分布式的超媒体系统,是超文本系统的扩充

页面:在客户程序(浏览器)主窗口上显示出的万维网文档就是页面

统一资源定位符URL:标志万维网上各种文档,使每个文档在互联网范围具有唯一标识符URL

超文本传送协议HTTP:是一个应用层协议,使用TCP进行可靠传送

6.4.2.统一资源定位符URL

URL作用:用来表示从互联网上得到的资源位置和访问这些资源的方法

URL的格式:<协议>://<主机>:<端口>/<路径>

协议:指出使用什么协议来获得该文档,常用HTTP或FTP

主机:指出文档在哪台主机上,主机就是指该主机在互联网上的域名

端口和路径:为了进一步定位,有事可省略

6.4.3 超文本传送协议HTTP

HTTP作用:定义了浏览器怎么向万维网服务器请求万维网文档,以及服务器怎么把文档传送给浏览器;是面向事物的应用层协议

HTTP的主要特点:

​ (1)HTTP本身是无连接的:虽然使用TCP连接,但通信双方在交换HTTP报文前不需要建立HTTP连接

​ (2)HTTP是无状态的:同一个客户第二次访问同一服务器上的页面时,服务器的响应与第一次被访问时相同

​ 请求一个万维网文档所需时间:是该文档的传输时间+两倍往返时间RTT

HTTP/1.0的主要缺点:每请求一个文档就要有两倍的RTT的开销;这种非持续连接会使万维网服务器负担很重

HTTP/1.1的改进:使用了持续连接;服务器在发送响应后仍在一段时间内保持连接,使同一个客户能继续在这条连接上传送后续HTTP请求报文和响应报文

HTTP/1.1持续连接的两种工作方式:

  • 非流水线方式:客户在收到响应报文之后才能继续发送

  • 流水线方式:客户收到响应报文之前也可以继续发送

代理服务器:略

HTTP的报文结构:略

6.6 动态主机配置协议DHCP

​ DHCP作用:提供一种机制,称为即插即用连网,允许一台计算机加入网络和获取IP而不用手工参与

​ 协议配置:在协议软件中给参数赋值的动作叫做协议配置

​ 需要配置的项目:

​ IP地址

​ 子网掩码

​ 默认路由器的IP地址

​ 域名服务器的IP地址

DHCP工作方式:

  • (1)DHCP使用客户服务器方式

  • (2)需要IP地址的主机在启动时向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户

  • (3)本地网络上所有主机都能收到该报文,但只有DHCP服务器才回复此报文

  • (4)DHCP服务器先在其数据库中查找该计算机的配置信息,若找到,则返回找到的信息,若找不到,则从服务器IP地址池中取一个地址分配给该计算机

  • (5)DHCP服务器的回答报文叫提供报文,表示提供了IP地址等配置信息

DHCP中继代理:并不是每个网络上都有DHCP服务器,因为这样会使DHCP服务器数量过多,因此现在是使每个网络至少有一个DHCP中继代理,它配置了DHCP服务器的IP地址信息

DHCP中继代理工作流程:

​ 当DHCP中继代理收到主机A以广播形式发送的发现报文后,就以单播方式向DHCP服务器转发此报文,并等待其回答

​ 收到DHCP服务器回应的提供报文后,DHCP中继代理再把此提供报文发回给主机A

DHCP工作流程:

image-20220915222955127
  1. DHCP服务器被动打开UDP端口67,等待客户端发来的报文

  2. DHCP客户从UDP端口68发送DHCP发现报文

  3. 所有收到DHCP发现报文的服务器都会发出DHCP提供报文,因此客户可能收到多个DHCP提供报文

  4. 客户从几个DHCP服务器中选择一个,并向其发送DHCP请求报文

  5. 被选中的服务器发送确认报文DHCPACK,此时客户就可以使用这个IP地址了,这种状态叫已绑定状态;DHCP客户现在要根据服务器提供的租用期T设置两个计时器T1和T2,它们的超时时间分别为0.5T和0.875T,当超时时间到了就要请求更新租用期

  6. 租用期过半,DHCP发送请求报文,要求更新租用期

  7. 服务器若同意,则发回确认报文。客户得到了新的租用期,重置计时器

  8. 服务器若不同意,则发回否认报文。这是客户停止使用原来的IP地址,而重新申请新IP地址(回到步骤2)

  9. 客户可以随时提前终止服务器所提供的租用期,这时只需向DHCP服务器发送释放报文即可

Contributors: YNight-FZQ