1 概述
1.1 计算机网络概述
1.1.1 计算机网络的概念
计算机网络没有明确而的定义,可以直接理解为“互联的,自洽的计算机系统的集合”。 在计算机发展的不同阶段,计算机网络主要随着阶段的不同有三类定义: 广义上,只要能实现远程信息通信或能进一步达到资源贡献的系统,都属于计算机网络;
资源共享上,计算机网络包含三层含义:目的是资源共享,组成单元是分布在不同地理位置的多台独立的“自治计算机”,统一遵循的规则是网络协议。该定义符合目前计算机网络的特征;
用户透明性上,计算机网络像一个大的计算机系统一样对用户透明,用户可以像使用一台单一的超级计算机而无需了解网络的存在,资源的位置信息等内容。这是网络未来发展的目标。
1.1.2 计算机网络的组成
(1)从组成部分上看,计算机网络主要由硬件,软件和协议组成。 硬件:主要有主机(端系统),通信链路(光纤等),交换设备(路由器,交换机),通信处理机(网卡)等组成。 软件:实现资源共享和方便用户使用的各种工具,软件,多属于应用层。 协议:是计算机网络的核心,制定了网络传输数据时所需要遵循的规范。
(2)从工作方式上看,计算机网络(这里主要指 Internet)分为边缘部分和核心部分,我们可以简单理解为边缘部分由用户使用的主机组成,用来进行数据通信和资源共享,核心部分为边缘部分提供连通性和交换服务。
(3)从功能组成上看,计算机网络由通信子网和资源子网构成,通信子网由传输介质,通信设备和网络协议构成,它使得网络具有数据传输,交换,控制和存储的能力,实现联网计算机之间的数据通信。资源子网是实现资源共享功能的设备及其软件的集合,向网络用户提供共享其他计算机上的硬件资源,软件资源和数据资源的服务。
1.1.3 计算机网络的功能
计算机网络主要有五大功能:数据通信,资源共享,分布式处理,可靠性提高和负载均衡。
1.1.4 计算机网络的分类
(1)从分布范围上看,分为广域网(WAN,也叫远程网),城域网(MAN),局域网(LAN),个人区域网(PAN)。 如果中央处理器的距离非常近,一般称为多处理器系统而不是计算机网络。 传统上,局域网使用广播技术,广域网使用交换技术。
(2)从传输技术分类,分为广播式网络和点对点网络。 顾名思义,广播式网络上,所有联网计算机都会共享同一个公共通信信道。局域网基本上都采用广播式通信技术,广域网中的无线,卫星通信网络也采用广播式通信技术。 点对点网络上,每条物理线路连接一对计算机,如果通信的两台主机之间没有之间相连,则分组传输就要通过中间节点进行接收,存储和转发。
(3)按拓扑结构(主要指网中节点(路由器,主机等)与通信线路(网线)之间的几何关系,即通信子网的拓扑结构)分类,主要有总线形(建网容易,节省线路,通信效率低,对任意一处故障敏感),星形(每个终端单独与中央设备相连,便于集中控制和管理,成本高,中央设备对故障敏感),环形(环中信号是单向传输的)和网状(多用在广域网中,可靠性高,控制复杂,线路成本高)。
(4)按使用者分类,分为公有网和专有网,这个比较容易理解。
(5)按交换技术分类,分为电路交换(数据直接传送,时延低,线路利用率低,不利于进行差错控制),报文交换(也称存储-转发网络,实现了不同链路之间的不同数据传输速率的转换,实现格式转换,一对多,多对一的 访问,实现了差错控制,增大了资源开销,增加了缓冲时延,缓冲区难以管理),分组交换(经典套娃,结合优点,更易于标准化,现在的主流网络基本上都可视为分组交换网络)。
1.1.5 计算机网络的标准化
从 Request For Comments 到 Internet Draft 到 Proposed Standard 到 Draft Standard 最后成为 Internet Standard,主要由 ISO,ITU,IEEE 等组织负责。
1.1.6 计算机网络的性能指标
(1)带宽,计算机网络中为数字信道能传送的最高数据传输速率,单位为比特每秒。
(2)时延,数据(一个报文或分组)从网络的一端传送到另一端需要的总时间,分为发送时延,传播时延,处理时延和排队时延。 发送时延:从发送的第一个比特算起,到该分组的最后一个比特发送完毕花的时间。发送时延 = 分组长度 / 信道宽度。 传播时延:一个比特从链路的一段传播的另一端所需要的时间。传播时延 = 信道长度 / 电磁波在信道上的传播速率。 处理时延:数据在交换节点为存储转发而进行的一些必要的处理所花费的时间。排队时延:在输入、输出队列中等待处理、转发的时间。 总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延。
需要注意的是,当我们说高速链路时,往往指的是提高了数据的发送速率,减少发送时延,而不能改变传播时延,传播时延是由信号的物理性质决定的。
(3)时延带宽积(以比特为单位的链路长度),从物理意义的角度上,为发送端发送的第一个比特到达终点时,发送端已经发送了多少个比特。时延带宽积 = 传播时延 * 信道带宽。 以时间的角度考虑,时延带宽积也可被视为数据在传输时,管道上最多可以容纳的比特数。
(4)往返时延,从发送端发出一个短分组到发送端收到来自接收端的确认经历的时延。
(5)吞吐量,单位时间内通过某个网络的数据量,主要受网络带宽的限制。
(6)速率,连接到计算机网络上的主机在数字信道上的传输数据的速率,直观的理解是我们上网时的网速,kb/s,Mb/s 等。
(7)信道利用率,信道被使用的时间占总时间的百分比。
1.2 计算机网络体系结构和参考模型
1.2.1 计算机网络分层结构
分层结构的服务规则 计算机网络的分层结构中,第 n 层的活动元素称为第 n 层实体,第 n 层实体实现的服务为第 n + 1 层所利用,第 n 层成为服务提供者,第 n + 1 层服务于用户。
数据传输的报文结构 在各个层次中,每个报文都分为两部分:服务数据单元(SDU)和控制信息部分(PCI),他们共同组成协议数据单元(PDU),第 n 层的协议数据单元称为 n-PDU,实际的网络中,每层的 PDU 有不同的名字,物理层称之为比特,数据链路层称之为帧,网络层称之为分组,传输层称之为报文段。 第 n 层的实体不仅要使用第 n - 1 层的服务来实现自身定义的功能,还要向第 n + 1 层提供本层的服务,该服务是第 n 层及其下面各层提供的服务总和。 最低层只提供服务,最高层面向用户提供服务,中间各层既是下层服务的使用者,又是上层服务的提供者。 上层只能通过相邻层间接口使用下层的服务,而不能调用其他层的服务;下层所提供服务的实现细节对上层透明。 两台主机通信时,对等层在逻辑上有一条直接信道,表现为不经过下层就能把信息传送到对方。
1.2.2 计算机网络的协议,接口和服务
协议:网络中事先规定的,为数据交换确立的规则。协议只在对等层实体之间存在。 协议由语法,语义和同步三部分组成,语法规定了传输数据的格式,语义决定了要完成的功能,同步规定了事件实现顺序的说明。
接口:同一节点内相邻两层间交换信息的连接点。同一节点相邻两层的实体通过服务访问点(SAP)进行交互。
服务:下层为紧邻的上层提供的功能调用。服务是垂直的,协议是水平的。 服务的三种分类方式:
(1)面向连接和无连接服务:面向连接的服务中,通信双方必须先建立连接,分配相应资源,结束后释放资源,分为连接建立,数据传输和连接释放三个阶段,典型例子如 TCP;无连接服务需要发送数据时可以直接发送,但不保证可靠性,如 IP,UDP。
(2)可靠服务和不可靠服务:可靠指服务的纠错,检错,应答等机制从而使得数据能够正确可靠的送到目的地;不可靠服务尽最大可能保证正确性,可靠性等。
(3)有应答和无应答服务:有应答服务为接收方在收到数据后向发送方给出的由传输系统内部自动实现的应答;无应答服务则是接收方收到数据后不自动给出应答。
1.2.3 ISO/OSI 参考模型简述
开放系统互连参考模型(OSI/RM)有七层,从下至上分别为物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。前三层称为通信子网,后三层称为资源子网。
物理层的传输单位是比特,任务是透明的传输比特流,功能是在物理媒体上为数据段设备透明地传输原始比特流。物理层规定了通信节点之间电路接口的规格,通信链路上传输的信号的意义和电器特征。
数据链路层的传输单位是帧,任务是将网络层传来的 IP 数据报组装成帧。数据链路层的功能为封装成帧,差错控制,流量控制和传输管理。
网络层的传输单位是数据报,关心通信子网的运行控制,主要任务为把网络层的协议数据单元从源端传送到目的端,为分组交换网上的不同主机提供通信服务。网络层的关键问题是对分组进行路由控制,并实现流量控制,拥塞控制,差错控制和网际互连等功能。
传输层的传输单位是报文段(TCP)或用户数据报(UDP),负责主机中两个进程之间的通信,功能是为端到端连接提供可靠的传输服务,为端到端连接提供流量控制,差错控制,服务质量数据传输管理等服务。
会话层允许不同主机上的各个进程之间进行会话,会话层利用传输层提供的端到端的服务,向表示层提供它的增值服务。
表示层主要处理在两个通信系统中交换信息的表示方式。数据压缩,加密和解密也是表示层能提供的数据表示变换功能。
应用层是 OSI 参考模型的最高层,为特定类型的网络应用提供访问 OSI 参考模型环境的手段。
1.2.4 TCP/IP 模型简述
TCP/IP 模型从低到高依次为网络接口层,网际层,传输层和应用层。网络接口层类似于 OSI 模型的物理层和数据链路层;网际层类似于 OSI 参考模型中的网络层;传输层的功能和 OSI 参考模型中的传输层类似;应用层包含所有的高层协议。
2 物理层
2.1 通信基础
2.1.1 通信基本概念
一个数据通信系统主要划分为信源,信道和信宿三部分,分别为数据的产生和发送方,数据的变换和传输方,数据的接收方。通信双方的信息交互方式分为单向通信,半双工通信,全双工通信,这在操作系统课程中有过类似的概念。
码元传输速率:单位时间内数字通信系统所传输的码元个数,码元速率与进制无关。 信息传输速率:单位时间内数字通信系统传输的二进制码元个数。
2.1.2 Nyquist Law 和 Shannon Law
Nyquist Law:理想低通信道中,极限码元传输速率为 $2W$ 波特,其中 $W$ 为理想低通信道的带宽。使用 $V$ 表示每个码元中离散电平的数目,那么极限数据率为 \(2W\log_2V\) 单位为 b/s。 Shannon Law:带宽受限且有高斯白噪声干扰的信道的极限数据传输速率为\(W\log_2(1 + \frac{S}{N})\) 单位为 b/s,其中 $W$ 为信道带宽,$S$ 为信道传输信号的平均功率,$N$ 为信道内部的高斯噪声功率,$\frac{S}{N}$ 为信噪比。
2.1.3 编码与调制
数字信号和模拟信号之间可以相互转换,组合出了四种编码方式。
(1)数字数据编码为数字信号 几种常见的数据编码: 归零编码:高电平 1,低电平 0,每个时钟周期均归零来达成同步。
非归零编码:高电平 1,低电平 0。
反向非归零编码:高电平 0,低电平 1。
曼彻斯特编码:一个码元分为两个相等的间隔,前高后低表示 1,前低后高表示 0。在每个码元中间出现电平跳变,既可作为时钟信号又可作为数据信号。但所占的频带宽度是原始基带宽度的两倍。 以太网使用曼彻斯特编码。
差分曼彻斯特编码:若码元为 1,则前半个码元的电平与上一个码元的后半个码元相同,若码元为 0,则前半个码元的电平与上一个码元的后半个码元相反。
(2)数字数据调制为模拟信号 主要通过幅移(ASK),频移(FSK),相移(PSK),正交振幅调制(QAM)实现。 正交振幅调制将 ASK 与 PSK 结合起来,在频率相同的前提下,设波特率为 $B$,采用 $m$ 个相位,每个相位有 $n$ 种振幅,通过 QAM 得到的数据传输速率 $R=B\log_2(nm)$,单位为 b/s。
(3)模拟数据编码为数字信号 主要包括采样,量化和编码三个步骤。Nyquist Law 已经介绍过,这里不再赘述。
(4)模拟数据调制为模拟信号 电话机和本地局交换机采用模拟信号传输模拟信号的编码方式,模拟的声音数据是加载到模拟的载波信号中传输的。
2.1.4 电路交换,报文交换,分组交换
(1)电路交换
电路交换技术分为三个阶段:连接建立,数据传输,连接释放。在数据传输的过程中,用户始终占用端到端的固定传输带宽。采用电路交换有时延低,传输有序,无冲突等优点,但同时存在建立连接的时间长,数据传输时线路独占导致的使用效率低等问题。 电路一旦建立,电路上的任何节点都采取“直通”方式接收和发送数据,不存在存储转发所花费的时间。
(2)报文交换
报文作为数据传输的单位携带目标地址,源地址等信息,在交换节点进行存储转发,具有无需建立连接,线路分配灵活,利用率高等特点,但由于报文大小没有限制,这对网络节点中的缓存空间提出了要求,且由于转发处理等存在时延,报文交换时延较高。 报文交换主要被使用在早期的电报通信网中,现代已经很少使用。
(3)分组交换
可以将分组交换理解为报文交换+数据块划分,把大的数据块划分为小的数据块,加上必要的控制信息构成分组进行传输。 具有无需建立连接,线路利用率高,存储管理简单等特点,但同样存在传输时延,且由于需要控制信息,提高了传输所需要的信息量,当分组交换采用数据报服务时,可能会出现失序,丢失或重复分组的问题。
2.1.5 数据报与虚电路
数据报方式和虚电路方式是分组交换的两种方式。
数据报
通信子网用户的端系统发送一个报文时,在端系统中实现的高层协议先把报文拆成若干带有序号的数据单元,并在网络层加上地址等控制信息后形成数据报分组(网络层的 PDU)。中间节点存储分组很短的一段时间,找到最佳的路由后,尽快转发每个分组。不同的分组可以走不同的路径,也可以按不同的顺序到达目的节点。
数据报服务具有如下特点:
(1)发送分组前不需要建立连接,发送方可随时发送,网络中的节点可随时接收分组。
(2)网络尽最大可能交付,传输不保证可靠性,可能丢失,每个分组独立地选择路由,转发的路径可能不同,因此分组不一定按序到达目的节点。
(3)每个分组中都包括发送端和接收端的完整地址以便独立传输。
(4)分组在交换节点存储转发时需要排队等待处理,这带来了一定的时延。
(5)网络路径是冗余的,因此对故障有一定的适应能力。
(6)转发双方不独占线路,资源利用率高。
虚电路
虚电路方式结合了数据报和电路交换方式。在分组发送前,要在发送方和接收方建立一条逻辑上相连的虚电路,这个连接一旦建立,就固定了虚电路对应的物理路径。虚电路也要经历虚电路建立,数据传输和虚电路释放三个步骤。
端系统每次建立虚电路时,选择一个未使用过的虚电路号分配给该虚电路,以区别本系统中的其他虚电路。在传送数据时,每个数据分组不仅要有分组号,校验和等控制信息,还要有它要通过的虚电路号,以区别其他虚电路上的分组。在虚电路网络中的每个节点都维护一张虚电路表,表中的每项记录了一个打开的虚电路的信息,包括在接收链路和发送链路上的虚电路号,前一节点和下一节点的标识。上述信息在虚电路的建立过程中确定,数据传输过程是双向的。
虚电路服务具有如下特点:
(1)虚电路的通信链路建立和拆除需要一定的时间开销;
(2)虚电路可以保证分组正确且有序的到达,还可以对两个数据端点的流量进行控制。
(3)分组首部不包含目的地址,而包含虚电路号,相比数据报而言开销较低。
(4)当网络中的某个节点或某条链路失效时,所有经过该节点或链路的虚电路都会被破坏。
2.2 传输介质
2.2.1 双绞线,同轴电缆,光纤,无线传输介质
双绞线 两根采用一定规则并排绞合的、相互绝缘的铜导线组成,即为非屏蔽双绞线(UTP),可以再加一层金属丝编织成的屏蔽层以增加抗电磁干扰的能力,即得到屏蔽双绞线(STP),是最常用的传输介质之一,通信距离为几千米到数十千米。
同轴电缆 分为 $50\Omega$(基带同轴电缆,主要用于传送基带数字信号)和 $75\Omega$(宽带同轴电缆,主要用于传送宽带信号)两种,具有良好的抗干扰特性,被用于传输较高速率的数据。
光纤 利用光导纤维进行通信,可见光频率为 $10^8$ MHz,因此光纤通信的带宽范围很大。 光纤通信主要分为单模和多模光纤,多模光纤主要利用了光的全反射特性,利用发光二极管制造光源,在传输过程中可能造成失真,因此只适合近距离传输;单模光纤的直径只有一个光的波长,利用半导体激光器制造光源,能较远距离传输,但制造成本较高。
光纤通信有损耗小,距离长,抗干扰强,保密性好等优点。
无线传输介质 无线传输介质有无线电波,微波,红外线,激光等。 无线电波穿透能力强,能够简化通信的连接是其最大的优点。 微波,红外线和激光统称为视线介质,有很强的方向性,都是直线传播。 卫星通信是通过地球同步卫星来中继发送微波信号,通信容量大,距离远,覆盖范围广,但保密性较差,端到端传播延时较长。
2.2.2 物理层接口的特性
- 机械特性:接线器的形状,尺寸,引脚数,排列,固定等。
- 电器特性:接口电缆的各条线上出现的电压范围。
- 功能特性:某条线上出现的某一电平的电压的意义。
- 过程特性:对于不同功能的各种可能事件的出现顺序。
2.3 物理层设备
2.3.1 中继器
中继器的主要功能为将数字信号整形放大后转发,以消除信号在传输过程中的失真和衰减,从而扩大网络传输的距离。中继器有两个端口,数据从一个端口输入,从另一个端口输出,使用中继器连接的几个网段仍然是一个局域网。 若中继器出现故障,则相邻两个网段的工作都会被影响。中继器没有存储转发功能,不能连接两个速率不同的局域网。
2.3.2 集线器
集线器实质上是一个多端口中继器,在网络中只起到信号的放大和转发的作用,目的是扩大网络的传输范围,而不具备信号的定向传送能力。集线器只能在半双工状态下工作,网络的吞吐速率会因此受到限制。当多台计算机同时工作时,每台计算机能分到的带宽会减少,使得集线器的工作效率降低。
3 通信链路层
4 网络层
4.1 网络层概述
主要任务:把分组从源端传送到目的端,为分组交换网上的不同主机提供通信服务。
网络层的传输单位是分组。
功能:路由选择与分组转发,异构网络互联,拥塞控制(开环控制与闭环控制)。
网络层要设计得尽量简单,向其上层只提供简单灵活的,无连接的,尽最大努力交付的数据报服务。
4.2 IP 数据报
4.2.1 IP 数据报格式
IP 数据报格式分为首部和数据部分(TCP、UDP 段) 首部分为固定部分(20 字节)和可变部分。 固定部分按顺序,各个信息如下:
4 位版本字段,指定 IP 协议的版本。
4 位首部长度,单位是 4B,最少为 5(因为首部的固定部分为 20 字节)。
8 位区分服务,指期望获得服务的类型。
16 位总长度,单位为 1B。
16 位标识,为一个计数器,每产生一个数据报就加 1,并赋值给标识字段。当一个数据报长度超过网络 MTU 时,必须分片,每个数据报片都复制一次标识号,以便能重装出原来的数据报。
3 位标志。标志分片信息 MF,是否允许分片 DF。
13 位片偏移,指出较长的分组在分片后,某片在原分组中的相对位置。以 8 个字节为偏移单位,除最后一个分片外,每个分片的长度一定是 8B 的整数倍。
8 位生存时间(TTL),数据报在网络中可通过的路由器数最大值,路由器在转发分组前先把 TTL - 1,避免分组在网络中循环。
8 位协议,指出分组携带的数据所使用的协议。值为 6 表示 TCP,值为 17 表示 UDP 等。
16 位首部校验和,对分组的首部进行校验。
4 Byte 源地址,标识发送方的 IP 地址。
4 Byte 目标地址,标识接收方的 IP 地址。
可变部分中的可选字段在 0 - 40B,用以支持其他操作,需要填充 0 把首部补为 4B 的整数倍。
4.2.2 IP 数据报分片
最大传输单元 MTU:数据链路层的数据帧可以封装数据的上限,以太网的 MTU 为 1500 字节。
IP 数据报中的固定部分中,同一数据报的分片使用同一标识。
3 位标志只有两位有意义,中间位 DF(Don’t Fragment),当 DF = 1 时禁止分片,DF = 0 时允许分片,最低为 MF(More Fragment),当 MF = 1 表示后面还有分片,MF = 0 时表示是最后一片或没分片。
13 位片偏移,指出较长的分组分片之后某片在原分组中的相对位置,单位为 8B。
4.2.3 IPv4 地址
连接到 Internet 的每台主机(或路由器)都分配一个 32 比特的全球唯一标识符,即 IP 地址,它由互联网名字和数字地址分配机构 ICANN 进行分配。
分类的 IP 地址
A 类:首位为 0,1B 网络号,3B 主机号
B 类:首两位为 10,2B 网络号,2B 主机号
C 类:首三位为 110,3B 网络号,1B 主机号
D 类:首四位为 1110,为多播地址
E 类:首四位为 1111,保留今后使用。
特殊的 IP 地址
0.0.0.0,可以作为源地址,不能作为目的地址,本网范围内表示主机,路由表中表示默认路由。
255.255.255.255,不能作为源地址,可以作为目的地址,表示整个网络的广播地址。
主机号全 1 表示本网络广播地址,即直接广播地址,*.*.*.255,对特定网络上的所有主机进行广播。
127.*.*.*,表示环回自检地址,表示任意主机本身,目的地址为环回地址的 IP 数据报永远不会出现在任何网络上。
私有 IP 地址
为了网络安全,划分出了部分 IP 地址为私有 IP 地址,私有 IP 地址只用于 LAN,不用于 WAN,因此,私有 IP 地址不能直接用于 Internet,必须通过网关利用 NAT(网络地址转换)把私有 IP 地址转换为 Internet 中的合法的全球 IP 地址后才能用于 Internet,且允许私有 IP 地址被 LAN 重复使用。
在因特网中的所有路由器,对目的地址是私有地址的数据一律不进行转发,这种采用私有 IP 地址的互联网称为专用互联网或本地互联网,私有 IP 地址也称为可重用地址。
A 类:10.0.0.0 - 10.255.255.255
B 类:172.16.0.0 - 172.31.255.255
C 类:192.168.0.0 - 192.168.255.255
4.2.4 网络地址转换
NAT 需要在专用网连接到因特网的路由器上安装 NAT 软件,NAT 路由器至少有一个有效的外部全球 IP 地址。使用本地地址的主机和外界通信时,NAT路由器使用 NAT 转换表进行本地 IP 地址和全球 IP 地址的转换。NAT 转换表中存放着{本地 IP 地址:端口}到{全球 IP 地址:端口}的映射,通过这种映射方式,可以让多个私有 IP 地址映射到一个全球 IP 地址。
普通路由器在转发 IP 数据报时不改变源地址和目标地址,NAT 路由器在转发 IP 数据报时一定会更换其 IP 地址;普通路由器仅工作在网络层,而 NAT 路由器转发数据报时需要查看和转换传输层的端口号。
4.2.5 子网划分与子网掩码
两级 IP 地址导致 IP 地址空间的利用率很低,因此可以通过子网划分的方法在 IP 地址中增加一个子网号字段,使两级 IP 地址变为三级 IP 地址:{网络号,子网号,主机号}。
凡是从其他网络发送给本单位某台主机的 IP 数据报,仍然根据 IP 数据报的目的网络号,先找到连接到本单位网络上的路由器。然后该路由器在收到 IP 数据报后,按目的网络号和子网号找到目的子网。最后把 IP 数据报直接交付给目的主机。
为了告诉主机或路由器对一个 A 类,B 类,C 类网络进行了子网划分,我们需要使用子网掩码表示原网络中主机号的借位。子网掩码由一串连续的 1 后跟随的一串连续的 0 组成,1 对应 IP 地址中的网络号和子网号,0 对应主机号,计算机将 IP 地址与对应的子网掩码按位与后,即可得到对应子网的网络地址。
子网掩码是一个网络或一个子网的重要属性,路由器在交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉对方。
在使用子网掩码时:
(1)一台主机在设置 IP 地址信息的同时,必须设置子网掩码;
(2)属于同一个子网的所有主机及路由器的相应端口必须设置相同的子网掩码;
(3)路由器的路由表中,所包含的信息的主要内容有目的网络地址、子网掩码、下一跳地址。
4.2.6 无分类编址 CIDR
CIDR 消除了 A、B、C 类网络的划分及划分子网的概念,将 IP 地址分为网络前缀和主机号,网络前缀的位数可以任意选取,记法为 IP 地址后加上 /,然后在 / 后写上网络前缀的位数。
CIDR 地址块:网络前缀都相同的连续的 IP 地址。
路由聚合:将多个子网合成一个较大的子网,即路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的信息交换,提高网络性能。
使用 CIDR 时,应采取最长前缀匹配,即查找路由表可能得到几个符合匹配的结果,应该选择具有最长网络前缀的路由,因为前缀越长,地址块越小,路由越具体。
4.2.7 ARP 协议
在网络链路上传输数据帧时,必须使用 MAC 地址。
ARP 协议:完成主机或路由器 IP 地址到 MAC 地址的 映射。
ARP 协议的使用过程:检查 ARP 高速缓存,有对应表项则写入 MAC 帧,没有则用目的 MAC 地址为 FF-FF-FF-FF-FF-FF 的帧封装并广播 ARP 请求分组,同一局域网中的所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个 ARP 相应分组,源主机收到后将此映射写入 ARP 缓存。ARP 缓存表 1200s 更新一次。
4.2.8 DHCP 协议
DHCP 协议是一个应用层协议,使用 C/S 方式,客户端和服务端通过广播的方式进行交互,基于 UDP。
DHCP 提供即插即用联网机制,主机可以从服务器动态获取 IP 地址、子网掩码、默认网关、DNS 服务器与 IP 地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。
4.2.9 ICMP 协议
ICMP 支持主机或路由器进行差错(异常)报告,网络探询。
ICMP 报文包括:
1 字节类型,1 字节代码,2 字节检验和。 而后 4 个字节取决于 ICMP 报文的类型。 而后是 ICMP 报文的数据部分,长度取决于类型。
ICMP 报文主要有 ICMP 差错报文,ICMP 询问报文。
ICMP 差错报告报文
ICMP 差错报告报文一共有五种:
- 终点不可达:当路由器或主机不能交付数据时向源点发送终点不可达报文。
- 源点抑制:当路由器或主机由于拥塞丢弃数据报时,向源点发送源点抑制报文。
- 时间超过:当路由器收到生存时间 TTL = 0 的数据报时,需要丢弃数据报并向源点发送时间超过报文;当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已经收到的数据报片全部丢弃,并向源点发送时间超过报文(traceroute)。
- 参数问题:当路由器或目的主机收到的数据报的首部中有字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
- 重定向:路由器把改变路由报文发送给主机,让主机知道下次应该将数据报发送给另外的路由器。
当使用 ICMP 差错报告报文时,需要将要进行差错报告的 IP 数据报的首部和 IP 数据报的数据字段的前 8 个字节取出作为 ICMP 差错报告报文的数据部分,再在前面加上 ICMP 的前 8 个字节形成 ICMP 差错报告报文,再在前面加上 IP 数据报的首部构成完整的数据报。
不应该发送 ICMP 差错报告报文的情况:
- 禁止套娃。即不对 ICMP 差错报告报文发送 ICMP 差错报告报文。
- 只对第一个分片的数据报片发送 ICMP 差错报告报文,对第一个分片的数据报片所有的后续报片都不发送 ICMP 差错报告报文。
- 对具有组播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址的数据报不发送 ICMP 报文。
ICMP 询问报文
ICMP 询问报文分为四种:
- 回送请求和回答报文:主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文(ping)。
- 时间戳请求和回答报文:请求某个主机或路由器回答当前日期和时间(进行时钟同步,时间测量)。
- 掩码地址请求和回答报文:现在不再使用。
- 路由器询问和通告报文:现在不再使用。
4.3 IPv6
IPv4 的地址快被用完了!我们有了 CIDR 和 NAT 给 IPv4 续命。
为了根本上解决这个问题,同时为了改进首部格式,支持 Qos,就有了 IPv6。
4.3.1 IPv6 数据报格式
IPv6 包括两个部分:基本首部和有效载荷。 基本首部为 40 字节,有效载荷不超过 65535 字节。
为了支持扩展,有效载荷中一开始的部分为扩展首部(根据需要可有可无),分别装载扩展首部 1,扩展首部 2,…,扩展首部 n。
基本首部按顺序,各个信息如下:
4 位版本,指明协议的版本,对于 IPv6 而言是 6。
8 位优先级,区分数据报的类别和优先级。
20 位流标签,类似于 IPv4 中的标识位,“流”是互联网络上从特定源点到特定终点的一系列数据报,所有属于同一个流的数据报都具有同样的流标签。
16 位有效载荷长度,指明 IPv6 中有效载荷的长度。
8 位下一首部信息,标识下一个扩展首部或上层协议首部。可以将下一首部信息想象为一个链表,最后一个扩展首部指向数据部分。
8 位跳数限制,相当于 IPv4 中的 TTL。
128 位源地址,128 位目的地址,分别标识发送方和接收方的 IP 地址。
IPv6 相比 IPv4 的主要区别:
- 地址空间的扩大;
- 移除了校验和字段,减少了每跳的处理时间;
- 移除了 IPv4 中的可选字段,改为有效载荷中的扩展首部,更加灵活;
- IPv6 支持即插即用(即在 IPv4 中 DHCP 协议的工作),可以自动配置 IP 地址;
- IPv6 的首部长度必须是 8B 的整数倍,IPv4 的首部长度必须是 4B 的整数倍;
- IPv6 只能在主机处分片,IPv4 可以在路由器和主机处分片(因此,我们的 ICMPv6 的差错报告报文中增加了一个分组过大的类型);
- IPv6 支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
- IPv6 取消了协议字段,改成了下一个首部字段。
- IPv6 取消了总长度字段,改成了有效载荷长度字段。
- IPv6 取消了服务类型字段。
IPv6 的地址标识形式:冒号十六进制记法,每 4 个十六进制数为一组写在一起,一共 8 组,组间使用冒号分隔开。
4.3.2 IPv6 基本地址类型
IPv6 基本地址类型主要分为三种:单播,多播,任播。
单播为一对一通信,可以作为源地址和目的地址。
多播为一对多通信,可以作为目的地址。
任播为一对多中的一个通信,实质为一对一通信,可以作为目的地址。
4.3.3 IPv4 向 IPv6 过渡
IPv4 向 IPv6 过渡的过程中采用两种策略:双栈协议和隧道技术。
双栈协议:在一台设备上同时启用 IPv4 协议栈和 IPv6 协议栈。如果这个设备是路由器,那么这台路由器的不同接口上分别配置了 IPv4 地址和 IPv6 地址,并分别连接 IPv4 网络和 IPv6 网络;如果这个设备是计算机,那么这个计算机将同时拥有 IPv4 地址和 IPv6 地址。
隧道技术:通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据或负载可以是不同协议的数据帧或包,隧道协议将其他协议的数据帧或包重新封装后通过隧道发送。
4.4 路由算法与路由协议
4.4.1 路由算法
路由算法分为静态路由算法(非自适应路由算法)和动态路由算法(自适应路由算法),他们的区别主要为配置路由信息的方式,静态路由算法由管理员手工配置路由信息,动态路由算法由路由器间彼此交换信息,按照路由算法优化出路由表项。
其中,动态路由算法中,主要分为全局的和分散的两类,他们的区别主要在于每个路由器对网络拓扑和链路费用的掌握情况,全局的动态路由算法的代表为链路状态路由算法(OSPF 协议),分散的动态路由算法的代表为距离向量路由算法(RIP 协议)。
4.4.2 分层次的路由选择协议
由于因特网规模很大,且很多单位不想让外界知道自己的路由选择协议的同时还想连入互联网,这时候就需要使用分层次的路由选择协议。
我们把因特网分成一个个自治系统 AS,这是在单一的技术管理下的一组路由器,这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由协议以确定 AS 之间的路由。
路由选择协议分为内部网关协议 IGP(一个 AS 内所使用的协议,如 RIP、OSPF)和外部网关协议 EGP(AS 之间使用,如 BGP)。
4.4.3 RIP 协议与距离向量算法
RIP 协议是一种分布式的,基于距离向量的路由选择协议,是因特网的协议标准,它要求每个路由器都维护从他自己到其他每一个目的网络的唯一最佳距离记录。RIP 是应用层协议,使用 UDP 传送数据。
路由表中一般有三项,分别为目的网络、距离(跳数)和下一跳的路由器。
RIP 允许一条路由最多包含 15 个路由器,因此 16 条数表示网络不可达,也正因如此,RIP 协议只适用于小型互联网。
RIP 协议只和相邻的路由器交换自己的全部路由表,每 30 秒交换一次,如果 180 秒内没有收到邻居路由器的交换信息,则认为邻居路由器已经不在该网络中。
在开始时,每个路由器只知道直连网络的距离为 1,经过若干次交换后,所有路由器都会知道道道本自治系统下的任何一个网络的最短距离和下一跳路由器的地址。
距离向量算法修改路由表的过程可以被概括为谁发来的路由表,该路由表表项的下一跳目的地址就写谁并把距离 +1,如果此时路由表项中同一地址的网络有距离更小的,那就忽略。
4.4.4 RIP 协议的报文格式
RIP 报文由首部和路由部分构成。首部主要包括命令和版本,路由部分由地址族标识符,路由标记,网络地址,子网掩码,下一跳的路由器地址和距离组成。
一个 RIP 报文的每个路由信息使用 20 个字节,最多可以包括 25 个路由。如果超过 25 个路由,必须再用一个 RIP 报文传送。
由于 RIP 协议的更新不是同步的,因此可能在同步路由表的过程中出现套娃的问题(收敛慢),我以为你可以到,你以为我可以到,实则二者都不能到达目的网络却在互相更新对方的路由表,这种套娃会直到两个路由表到目的网络的距离都增大到 16 才会停止。
4.4.5 OSPF 协议与链路状态算法
OSPF:open shortest path first,其最主要的特征是使用分布式的链路状态协议。
OSPF 使用 BFS 的方法向 AS 内的所有路由器发送信息,与所有路由器交换与本路由器相邻的所有路由器的链路状态(拓扑结构、度量代价),这个广播信息的过程只有在链路状态发生变化时才会发生(当然,还需要每隔 30 min 刷新一次)。
链路状态路由算法
- 每个路由器发现邻居节点【HELLO 问候分组】,并了解邻居节点的网络地址;
- 设置到它的每个邻居的成本度量 metric。
- 构造【DD 数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
- 如果 DD 分组中的摘要自己都有则不做处理,如果没有或者有更新,则发送【LSR 链路状态请求分组】请求自己没有的和比自己更新的信息。
- 收到邻站的 LSR 分组后,发送【LSU 链路状态更新分组】进行更新。
- 更新完毕后,邻站返回一个【LSAck 链路状态确认分组】进行确认。
当一个路由器的链路状态发生变化时:
- BFS 发送【LSU 链路状态更新分组】进行更新。
- 更新完毕后,其他站返回【LSAck 链路状态确认分组】进行确认。
- 每个路由器使用 Dijkstra 算法根据自己的链路状态数据库构造到其他节点间的最短路。
为了使 OSPF 适用于规模更大的网络,OSPF 会将一个 AS 内划分为若干个更小的区域,每个区域用一个 32 位的区域标识符(点分十进制表示)。
OSPF 是网络层协议,直接使用 IP 数据报传送。
4.4.6 BGP 协议
BGP 协议中,每个 AS 选择至少一个路由器作为该 AS 的 BGP 发言人,一个 BGP 发言人可以通过建立 TCP 连接与其他 AS 中的 BGP 交换路由信息(即 BGP 报文是 TCP 报文的数据部分,即 BGP 是应用层协议),然后在此连接上交换 BGP 报文以建立 BGP 会话,利用 BGP 会话交换路由信息。所有 BGP 发言人都相互交换网络可达性信息后,各个 BGP 发言人就可以找到到达各个自治系统的较好路由。
BGP 交换路由信息的节点数量级是 AS 的数量级,要比 AS 中的网络数量少,每个 AS 中的 BGP 发言人是很少的。
BGP 支持 CIDR。
常用的 BGP-4 共使用四种报文:
- 打开报文(open),用来和相邻的另一个 BGP 发言人建立关系,并认证发送方。
- 更新报文(update),用来发送某一路由的信息,以及列出要撤销的多条路由。
- 保活报文(keepalive),用来确认打开报文并周期性证实邻站关系。
- 通知报文(notification),用来发送检测到的差错。
4.5 IP 组播
IP 组播地址让源设备能够将分组发送给一组设备,属于多播组的设备将被分配一个组播组的 IP 地址,他们即为一群共同需求的逐句地相同标识。
组播的地址范围即为 IPv4 的 D 类地址,一个 D 类地址表示一个组播组。
源地址总是为单播地址。
组播数据报为“最大努力交付”,即应用于 UDP,对组播数据报不产生 ICMP 差错报告报文。
但由于有些 D 类地址已经被指派,所以并非所有 D 类地址都可以作为组播地址。
组播分为硬件组播、因特网范围内组播,前者只能在本局域网内组播,后者在因特网范围内组播。
硬件组播
组播 IP 地址也需要相应的组播 MAC 地址在本地网络中实际传送帧。组播 MAC 地址以十六进制的 01-00-5E 开头,余下的 6 个十六进制位是根据 IP 组播组地址最后 23 位转换得到的。
TCP/IP 协议使用的以太网多播地址范围:01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF。
IGMP 协议
IGMP 使用 IP 数据报传送报文,在工作时,当某主机要加入组播组时,该主机向组播组的组播地址发送一个 IGMP 报文,声明自己要称为该组的成员,本地组播路由器收到 IGMP 报文后,要利用组播路由选择协议把这组成员的关系发给因特网上的其他组播路由器。
同时,本地组播路由器周期性的探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员,只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的,否则,在经过几次探询之后没有一个主机响应,组播路由器就认为本网络上没有此组播组的主机,就不再把这组的成员关系发送给其他组播路由器。
组播路由选择协议
组播路由选择协议的目的是找出与源主机为根节点的组播转发树。
组播路由选择协议主要使用基于链路状态的路由选择、基于距离向量的路由选择或协议无关的组播(PIM)。
4.6 移动 IP
移动 IP 技术是指移动节点以固定的网络 IP 地址,实现跨越不同网段的漫游功能,并保证了基于网络 IP 的网络权限在漫游的过程中不发生改变。
本地代理:一个移动节点所在的网络成为归属网络,归属网络中代表移动节点执行移动管理功能的实体叫本地代理。
外地代理:在外部网络中帮助移动节点完成移动管理功能的实体。
永久地址:即移动 IP 技术中提到的固定的网络 IP 地址。
转交地址:移动站点在外部网络中使用的临时地址。
在某一主机进入外部网络时,该主机在外地代理登记获得一个转交地址,离开时注销,完成该过程后向本地代理登记转交地址;当有主机给该主机发送数据报时,本地代理会截获数据报,并重新封装为目的地址是转交地址的数据报,发送给外地代理,外地代理将数据报拆封后发回该主机。
该过程可以类比于快递地址登记过程,发回了原来的地址就让在原来地址的人帮忙转发给自己;但在发送数据报时不用那么麻烦,可以想象为直接填了个假的发货地址(即该主机直接使用自己的主地址作为数据报源地址)进行通信。
4.7 网络层设备
路由器
路由器是一个具有多个输入输出端口的专用计算机,任务为转发分组。
路由选择:构造、更新、维护路由表;
分组转发:根据路由表对分组进行转发。
5 传输层
5.1 传输层概述
传输层是只有主机才具有的,其主要功能为进程和进程之间的逻辑通信、复用(应用层的所有应用进程都可以通过传输层传输到网络层)和分用(传输层从网络层收到数据后交付指明的应用进程)、对收到的报文进行差错检测。
传输层主要有两种协议:TCP(面向连接的传输控制协议)、UDP(无连接的用户数据报协议)。
TCP 可靠,面向连接,但因为要保证可靠性因此时延较大; UPD 不可靠,无连接,不需要保证可靠性因此时延较小。
端口是传输层的 SAP,标识主机中的应用进程。这里的端口是逻辑上的端口,只有本地意义,其长度为 16bit,端口分为服务端使用的端口号和客户端使用的端口号,服务端端口号分为熟知端口号 0-1023 和登记端口号 1024-49151,客户端使用的端口号为 49152-65535。
一些经典的熟知端口号:FTP 21,TELNET 23,SMTP 25,DNS 53,TFTP 69,HTTP 80,SNMP 161。
在网络中采用发送方和接收方的套接字组合来识别端点,套接字(Socket)唯一标识了网络中的一个主机和在它之上的一个进程,套接字 = (主机 IP 地址,端口号)。
5.2 UDP 协议
UDP 只是在 IP 数据服务之上增加了很少的功能,即复用和差错检测。
UDP 的主要特点:
- UDP 为无连接的,减少了开销和发送数据之前的时延
- UDP 不保证可靠交付
- UDP 是面向报文的(保留应用层报文的结构,一次发送一个完整的报文),适合一次性传输少量数据的网络应用。
- UDP 无拥塞控制,适合很多实时应用
UDP 的格式
UDP 分为首部字段和数据字段。
UDP 首部字段非常简单,包括 16 位源端口号,16 位目的端口号,16 位 UDP 长度(首部 + 数据字段的全部长度,单位为 1B),16 位 UDP 检验和(检测整个 UDP 数据报是否有错误,有错误就丢弃),一共 8B。
UDP 的校验 在 UDP 用户数据报计算校验和时,会使用伪首部。 伪首部的结构为 4B 源 IP 地址,4B 目的 IP 地址,1B 全 0,1B UDP标识为 17,2B UDP 长度(UDP 长度不包括伪首部)。
UDP 的校验方法与 IP 的首部检验和类似,在发送端时:
- 填上伪首部
- 全 0 填充检验和字段
- 用 0 填充数据部分补齐 4B
- 把伪首部 + 首部 + 数据部分采用二进制反码求和
- 把结果求反码填入检验和字段
- 去掉伪首部发送数据
在接收端时:
- 填上伪首部
- 伪首部 + 首部 + 数据部分采用二进制反码求和(此时的校验和字段不一定是全 0 的)
- 如果结果全为 1 则没有差错,否则发生差错。
5.3 TCP 协议
5.3.1 TCP 协议特点
TCP 协议是面向连接(点对点连接,每条 TCP 连接只能有两个端点,两个端点之间可以全双工通信)的传输层协议。
TCP 非常可靠,可以做到无差错,不丢失,不重复,不乱序。
TCP 把应用程序交下来的数据视为一连串无结构的字节流。
5.3.2 TCP 格式
TCP 报文段也主要分为首部和数据部分,其中首部分为 20B 的固定首部和选项,在添加选项之后,TCP 要求补齐至 4B 的整数倍。
TCP 协议的首部按顺序为如下内容:
2B 源端口,2B 目的端口。
4B 序号,序号为一个 TCP 报文中传送的字节流中的第一个字节的顺序编号。
4B 确认号,期望收到对方下一个报文段的第一个数据字节的序号。如果确认号为 N,说明序号 N-1 及之前的所有数据都已经被正确接收。
4bit 数据偏移,标识 TCP 报文段的数据起始处距离 TCP 报文段的起始处的距离,单位为 4B,其实质上标识了首部的长度。
6bit 保留位。
6bit 控制位,分别为
紧急位 URG,当 URG = 1 时,表示此报文段中有紧急数据,是高优先级的数据,应该尽快传送,不应在缓存里排队。
确认位 ACK,当 ACK = 1 时,确认位有效,在连接建立后所有传送的报文段都需要把 ACK 置为 1。
推送位 PSH,当 PSH = 1 时,接收方尽快交付接收应用进程,不再等到缓存填满时再向上交付。
复位 RST,当 RST = 1 时,表明 TCP 连接中出现严重差错,必须释放连接,再重新建立连接。
同步位 SYN,当 SYN = 1 时,标明这是一个连接请求/连接接受报文。
终止位 FIN,当 FIN = 1 时,标明此报文段发送方数据已经发完,要求释放连接。
2B 窗口,为发送本报文段的一方(即自己)的接收窗口,即现在允许对方发送的数据量。
2B 检验和,检验首部和数据,检验时要加上 12B 的伪首部,其中的第四个字段为 6,表示 TCP 协议。
2B 紧急指针,当 URG = 1 时起作用,指出本报文段中紧急数据的字节数。
接下来为长度可变的选项,如最大报文段长度 MSS,窗口扩大字段,时间戳字段等。
需要注意的是,TCP 协议的首部需要填充全 0 至 4B 的整数倍。
5.3.3 TCP 连接管理
TCP 连接传输的三个阶段:连接建立-连接传送-连接释放。
TCP 连接的建立采用 C/S 方式,主动发起连接的应用进程叫客户,被动等待连接建立的应用进程叫服务器。
三次握手:
- 客户端发送连接请求报文段(SYN = 1,序号 = x(随机)),无应用层数据。
- 服务器为该 TCP 连接分配缓存和变量,并向客户端返回确认报文段(SYN = 1,ACK = 1,序号 = y(随机),确认号 = x + 1),允许连接,无应用层数据。
- 客户端为 TCP 连接分配缓存和变量,并向服务端返回确认的确认(SYN = 0,ACK = 1,序号 = x + 1,确认号 = y + 1),该过程可以携带数据。
SYN 洪泛攻击
该攻击利用了 TCP 协议的三次握手,攻击者发送第一次握手的数据包,服务器返回 ACK 后,攻击者不进行第三次握手,使该 TCP 连接处于半连接状态,此时服务器收不到再确认,会重复发送 ACK 给攻击者。攻击者发起大量 TCP 连接,消耗服务器资源,最终导致服务器死机。该攻击可以通过设置 SYN cookie 解决。
TCP 连接释放
参与一条 TCP 连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的资源将被释放。
四次握手:
- 客户端发送连接释放报文段(FIN = 1,序号 = u),停止发送数据,主动关闭 TCP 连接。
- 服务器回送一个确认报文段(ACK = 1,序号 = v,确认号 = u + 1),客户到服务器这个方向的连接就释放了,这视为半关闭状态。
- 服务器端发送完数据,发出连接释放报文段(FIN = 1,ACK = 1,序号 = w,确认号 = v + 1),主动关闭 TCP 连接。
- 客户端回送一个确认报文段,等到时间等待计时器设置的 2MSL(最长报文段寿命)后,连接彻底关闭。
5.3.4 TCP 可靠传输
TCP 实现可靠传输的机制主要有校验、序号、确认、重传。
校验机制与 UDP 校验机制相同,通过增加伪首部,计算校验和完成。
基于 TCP 协议中的序号,产生了 TCP 中的确认(累计确认)与重新发送机制(TCP 的发送方在重传时间内没有收到确认就要重传已经发送的报文段,也叫超时重传)。TCP 采用自适应算法,动态地对重传时间做出了调整(加权平均往返时间)。
5.3.5 TCP 流量控制
TCP 使用滑动窗口机制实现流量控制,在通信过程中,接收方根据自己接收缓存的大小,动态调整发送方的发送窗口大小,即接收窗口 rwnd(接收方在确认报文段的窗口字段中将 rwnd 通知发送给对方),发送方的发送窗口取接收窗口 rwnd 和拥塞窗口 cwnd 的最小值。
TCP 为每个连接设置有一个持续计时器,当 TCP 连接的一方收到对方的零窗口通知(即把窗口大小设置为 0),就启动持续计时器。
如果持续计时器设置的时间到期,就发送一个零窗口探测报文段,接收方收到探测报文段时给出现在的窗口值,如果窗口值仍然是 0,那么发送方就重新设置持续计时器。
5.3.6 TCP 拥塞控制
拥塞发生的状况:对资源需求的总和大于可用资源。
越多人用 -> 网络性能越差,类比鱼死水臭,水更臭鱼更死,因此我们需要使用拥塞控制防止过多的数据进入网络中。
拥塞控制更像是多方对资源的占用,流量控制为发送速率与接收速率的不匹配。
拥塞控制主要有慢开始、拥塞避免、快重传、快恢复四种方法,这四种方法比较简单。
拥塞控制的方法需要以下假设:
- 数据是单方向发送的,另一个方向只进行传送确认;
- 接收方总是有足够大的缓存空间,发送窗口的大小在这里取决于拥塞程度。