计算机网络体系结构
计算机网络体系结构
1.1 计算机网络概述
1.1.1 计算机网络的概念
计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。
1.1.2 计算机网络的组成
从组成上看:由硬件、软件、协议三大部分组成。
协议是计算机网络的核心,规定了网络传输数据时所遵循的规范。
从工作方式上看:可分为边缘部分和核心部分
- 边缘部分:所有连接到因特网上、供用户直接使用的主机。
- 核心部分:由大量的网络和连接这些网络的路由器组成。
从功能上看:计算机网络由通信子网和资源子网组成。
1.1.3 计算机网络的功能
数据通信
资源共享
分布式处理
提高可靠性
负载均衡
1.1.4 计算机网络的分类
(1)按分布范围分类:
广域网:其覆盖范围通常为几十千米到几千千米的区域,因而有时也称远程网。
城域网:覆盖范围可以跨越几个街区甚至整个城市,覆盖范围约为 5 ~ 50km。
局域网:一般用微机或工作站通过高速线路相连,覆盖范围较小,通常为几十米到几千米的区域。
个人网域:其覆盖的区域直径约为 10m。
注意:若中央处理器之间的距离非常近(如仅 1m 的数量级或甚至更小),则一般就称之为多处理器系统,而不称他为计算机网络。
(2)按传输技术分类:
广播式网络
点对点网络
局域网基本上都采用广播式通信技术。
(3)按拓扑结构分类:
星形网络
总线形网络
环形网络
网状形网络
(4)按使用者分类
公用网
专用网
(5)按交换技术分类
电路交换网络
报文交换网络
分组交换网络,也称包交换网络
(6)按传输介质分类
有线网:双绞线、同轴电缆、光纤
无线网:蓝牙、微波、无线电
1.1.5 计算机网络的标准化工作及相关组织
RFC(Request For Comments)要上升为因特网的正式标准需要经过以下 4 个阶段:
1 | 因特网草案(Internet Draft):这个阶段还不是RFC文档。 |
1.1.6 计算机网络的性能指标
1、带宽本来表示通信线路允许通过的信号频带范围,单位是赫兹(Hz)。在计算机网络中,带宽表示网络的通信线路所能传送数据的能力,是数字信道所能传送的“最高数据率”的同义语,单位是比特/秒(b/s)。
2、时延指数据(一个报文或分组)从网络(或链路)的一端传送到另一端所需要的总时间。
总时延= 发送时延 + 传播时延 + 处理时延 + 排队时延
1.发送时延:结点将分组的所有比特推向(传输)链路所需的时间,即从发送分组的第一个比特算起,到该分组的最后一个比特发送完毕所需要的时间,因此也称传输时延。发送时延 = 分组长度/信道宽度
2.传播时延:传播时延 = 信道长度/电磁波在信道上传播速率
3.处理时延
4.排队时延
注意: 1.排队时延和处理时延一般可忽略不计(除非题目另有说明)。 2.对于高速链路,提高的仅是数据发送速率而非比特在链路上传播的速率。提高数据的发送速率只是为了减少数据的发送时延。
3、时延带宽积:发送端连续发送数据且发送的第一个比特即将到达终点时,发送端已经发出的比特。
时延带宽积 = 传播时延 × 信道带宽
4、往返时间: 发送端发送数据开始到发送端收到来自接收端的确认(接收端收到数据后立即发送确认)总共经历的时延。
5、吞吐量: 单位时间内通过某个网络(或信道、接口)的数据量。
6、速率:连接到计算机网络的主机在数字信道上传送数据的速率,也称数据率或比特率,单位 b/s(或 bit/s,有时也写为 bps)。通常把最高数据率称为带宽。
7、信道利用率:信道利用率
= 数据发送时间 /(数据发送时间+数据传播时间…)
= 最大吞吐量 x 发送方的发送速率
=(数据长度/数据传输率)/发送周期
总结: 1.星型拓扑结构使用一个结点作为中心结点,其他 n-1 个结点直接与中心结点相连构成的网络。中心结点可以是文件服务器,也可以是连接设备。常见的中心结点是集线器。 2.广播式网络共享广播信道(如总线),通常是局域网的一种通信方式(局域网工作在数据链路层),故不需要网络层,因而也不存在路由选择问题。但数据链路层使用物理层的服务必须通过服务访问点实现。
1.2 计算机网络体系结构及参考模型
1.2.1 计算机网络分层结构
不同机器上的同一层称为对等层,同一层的实体称为对等实体。n 层实体实现的服务为 n+1 层所利用。在这种情况下, n 层被称为服务提供者,n+1 层则服务于用户。
物理层的 PDU 称为比特
,数据链路层的 PDU 称为帧
,网络层的 PDU 称为分组
,传输层的 PDU 称为报文
。
SDUn + PCIn = PDUn = SDUn−1
1.2.2 计算机网络协议、接口、服务的概念
协议:协议就是规则的集合。
接口:接口是同一结点内相邻两层之间交换信息的连接点,是一个系统内部的规定。同一结点相邻两层的实体通过服务访问点(Service Access Point,SAP)进行交互。
服务:
服务原语: 1.请求(Request)。由服务用户发往服务提供者,请求完成某项工作。 2.指示(Indication)。由服务提供者发往服务用户,指示用户做某件事情。 3.响应(Response)。由服务用户发往服务提供者,作为对知识的响应。 4.证实(Confirmation)。由服务提供者发往服务用户,作为对请求的证实。
面向连接的服务与无连接的服务
在面向连接的服务中,分为连接建立、数据传输、连接释放三个阶段。无连接服务是一种不可靠的服务。
可靠服务与不可靠服务
可靠服务是指网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地。
不可靠服务是一网络只是尽量正确、可靠的传送,而不能保证数据正确、可靠地传送到目的地,是一种尽力而为的服务。
1.2.3 ISO/OSI 参考模型和 TCP/IP 模型
OSI 参考模型物理层、数据链路层、网络层
、传输层、会话层、表示层、应用层
低三层被称为通信子网,高三层被称为资源子网 1.物理层接口标准:EIA-232C、EIA/TIA RS-449、CCITT 的X.21 2.数据链路层协议:SDLC、HDLC、PPP、STP 3.网络层协议:IP、IPX、ICMP、IGMP、ARP、RARP、OSPF 4.传输层协议:TCP、UDP 5.应用层协议:SMTP、HTTP、DHCP、RIP
端到端的通信是指运行在不同主机内的两个进程之间的通信,一个进程由一个端口来标识,所以称为端到端通信。
传输层:进程之间的通信
网络层:主机与主机之间的通信
TCP/IP 模型:网络接口层、网际层、传输层、应用层
总结: 1.计算机网络分层的目的不包括定义功能执行的具体方法。 2.网络层、表示层和应用层都为上层提交的数据加上首部,数据链路层为上层提交的数据加上首部和尾部,然后交给下一层。物理层不存在下一层,自然也就不用封装。 3.只有传输层及以上的各层的通信才能称为端到端。
4.ISO/OSI 参考模型在网络层支持无连接和面向连接的通信,但在传输层仅支持面向连接的通信;TCP/IP 模型在网络层仅有无连接的通信,而在传输层支持无连接和面向连接的通信。 5.会话层的两个主要服务是会话管理与同步。 6.表示层的功能有数据解密与加密、压缩、格式转换等。
物理层
2.1 通信基础
2.1.1 基本概念
数据、信号与码元:
连续变化的数据(或信号)称为模拟数据(或模拟信号)取值仅允许为有限的几个离散数值的数据(或信号)称为数字数据(或数字信号)
码元是指用一个固定长的信号波形(数字脉冲)表示一位k进制数字。
信源、信道与信宿
信源是产生和发送数据的源头。信宿是接收数据的终点。
信道与电路并不等同,信道是信号的传输媒介。一个信道可视为一条线路的逻辑部件,一般用来表示向某个方向传送信息的介质。
基带信号将数字信号 1 和 0 直接用两种不同的电压表示,然后送到数字信道上传输(称为基带传输)
宽带信号将基带信号进行调制后形成频分复用模拟信号,然后传送到模拟信道上传输(称为宽带传输)
单工通信:只有一个方向的通信而没有反方向的交互,仅需要一条信道。
半双工通信:通信双方都可以发送或接受信息,但任何一方都不能同时发送和接收信息,此时需要两条信道。
双工通信:通信双方可以同时发送和接收信息,也需要两条信道。
速率、波特与带宽
码元传输速率:单位时间内数字通信系统所传输的码元个数(也可称为脉冲个数或信号变化次数)。码元可以是二进制的,也可以是多进制的,但码元速率与进制数无关。
信息传输速率:单位时间内数字通信系统传输的二进制码元个数(即比特数)。
带宽表示单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。此时带宽的单位不再是 Hz ,而是 b/s。
2.1.2 奈奎斯特定理与香农定理
奈奎斯特定理:
奈奎斯特定理又称奈氏准则,它指出在理想低通(没有噪声、带宽有限)的信道中,极限码元传输率为 2W 波特,其中 W 是理想低通信道的带宽,单位为 Hz。若用 V 表示每个码元离散电平的数目,则极限数据率为:理想低通信道下的极限数据传输率C=2Wlog2V
(单位为 b/s) 1.在任何信道中,码元传输的速率是有上限的。 2.信道的频带越宽(即通过的信号高频分量越多),就可以用更高的速率进行码元的有效传输。 3.未对一个码元可以对应多少个二进制位给出限制
香农定理:
香农定理给出了带宽受限且有高斯白噪声干扰的信道的极限数据传输率,当用此速率进行传输时,可以做到不产生误差。信道的极限数据传输率C=Wlog2(1+S/N)
(单位为 b/s)
其中 W 为信道的带宽,S 为信道所传输信号的平均功率,N 为信道内部的高斯白噪声功率。S/N 为信噪比,即信号的平均功率与噪声的平均功率之比。信噪比 = 10log10(S/N)(单位为dB)
1.信道的带宽或信道中的信噪比越大,信息的极限传输速率越高。 2.对一定的传输带宽和一定的信噪比,信息传输速率的上限是确定的。 3.只要信息的传输速率低于信道的极限传输速率,就能找到某种方法来实现无差错的传输。 4.香农定理的出的是极限信息传输速率,实际信道能达到的传输速率要比它低不少。
从另一个侧面表明,一个码元对应的二进制位数时有限的。
2.1.3 编码与调制
把数据变换为模拟信号的过程称为调制
,把数据变换为数字信号的过程称为编码
。
数字数据编码为数字信号 1.非归零编码(NRZ):容易实现,但没有检错功能,而且也无法判断一个码元的开始和结束,以至于首发双方难以同步。 2.曼切斯特编码:前一个间隔为高电平而后一个间隔为低电平表示码元 1,码元 0 正好相反。每个码元中间出现电平跳变,既作为时间信号又作为数据信号,但所占频带宽度为原始基带宽度的两倍。以太网的编码方式就是曼切斯特编码。 3.差分曼切斯特编码:若码元为 1,则前半个码元的电平与上一个码元后半个码元的电平相同,若码元为 0 则相反。可实现自同步,抗干扰性较好。 4.4B/5B 编码
数字数据调制为模拟信号 1.幅移键控(ASK):改变振幅;比较容易实现,但抗干扰能力差。 2.频移键控(FSK):改变频率;容易实现,抗干扰能力强,目前应用较为广泛。 3.相移键控(PSK):改变相位 4.正交振幅调制(QAM):在频率相同前提下,将 ASK 与 PSK 结合起来
模拟数据编码为数字信号
假设原始信号中的最大频率为 f,那么采样频率(f采样)必须大于等于最大频率f的两倍
,才能保证采样后的数字信号完整保留原始模拟信号的信息。
2.1.4 电路交换、报文交换与分组交换
电路交换:
电路交换分三阶段:连接建立、数据传输、连接释放
电路交换的关键点是,在数据传输的过程中,用户始终占用端到端的固定传输带宽。
电路交换技术的优点
: 1.通信时延小 2.有序传输 3.没有冲突 4.适用范围广 5.实时性强 6.控制简单
电路交换技术的缺点
: 1.建立连接时间长 2.线路独占 3.灵活性差 4.难以规格化
报文交换:
报文交换在交换结点采用的是存储转发的传输方式。
报文交换技术的优点
: 1.无需建立连接 2.动态分配线路 3.提高线路可靠性 4.提高线路利用率 5.提供多目标服务
报文交换技术的缺点
: 1.会引起转发时延 2.需要有较大的缓存空间
分组交换:
分组交换限制了每次传送的数据块大小的上限,把大的数据块划分为合理的小的数据块。
分组交换的优点
: 1.无建立时延 2.线路利用率高 3.简化了存储管理 4.加速传输 5.减少了出错概率和重发数据量
分组交换的缺点
: 1.存在传输时延 2.需要额外的信息量 3.可能会出现失序、丢失或重复分组
2.1.5 数据报与虚电路
分组交换根据其通信子网向端点系统提供的服务,还可进一步分为面向连接的虚电路方式和无连接的数据报方式。
常见应用层协议
项目 | 数据报服务 | 虚电路服务 |
---|---|---|
连接的建立 | 不需要 | 必须有 |
目的地址 | 每个分组都有完整的目的地址 | 仅在建立连接阶段使用,之后每个分组使用长度较短的虚电路号 |
路由选择 | 每个分组独立的进行路由选择和转发 | 属于同一条虚电路的分组按照统一路由转发 |
分组顺序 | 不保证分组的有序到达 | 保证分组的有序到达 |
可靠性 | 不保证可靠通信,可靠性由用户主机来保证 | 可靠性由网络保证 |
对网络故障的适应性 | 出故障的结点丢失分组,其他分组路径选择发生变化时可以正常传输 | 所有经过故障结点的虚电路均不能正常工作 |
差错处理和流量控制 | 由用户主机进行流量控制,不保证数据报的可靠性 | 可由分组交换网负责,也可由用户主机负责 |
总结 1.将基带信号直接传送到通信线路(数字通信)上的传输方式被称为基带传输,把基带信号经过调制后送到通信线路(模拟信道)上的方式称为频带传输。 2.波特率表示信号每秒变化的次数。 3.比特率 = 波特率×log2 n
,若一个码元含有 n 比特的信息量,则表示该码元所需的不同离散值为 2n 个。数值上, 波特率=比特率/每码元所含比特数。 4.若给出了码元与比特数之间的关系,则需受两个公式的共同限制。 5.在报文交换中,交换的数据单元是报文。由于报文大小不固定,在交换结点中需要较大的存储空间,另外报文经过中间结点的接收、存储和转发时间较长而也不固定,因此不能用于实时通信应用环境(如语音、视频等)。 6.电路交换是真正的物理线路交换。 7.虚电路不只是临时性的,它提供的服务包括永久性虚电路(PVC)和交换型虚电路(SVC),其中前者是一种提前定义好的、基本上不需要任何建立时间的端点之间的连接,而后者是端点之间的一种临时性连接,这些连接只持续所需的时间,并且会在会话结束时就取消这种连接。
8.NRZ 是最简单的串行编码技术,NRZI 是用电平的一次翻转来表示 1,与前一个 NRZI 电平相同表示 0。
2.2 传输介质
2.2.1 双绞线、同轴电缆、光纤与无线传输介质
双绞线:屏蔽双绞线(STP)
非屏蔽双绞线(UTP)
双绞线的带宽取决于铜线的粗细和传输的距离。
同轴电缆:50Ω同轴电缆
主要用于传送基带数字信号,又称基带同轴电缆,它在局域网中应用广泛。75Ω同轴电缆
主要用于传送宽带信号,又称宽带同轴电缆,主要用于有线电视系统。
同轴电缆具有良好的抗干扰特性,被广泛用于传输较高速率的数据,其传输距离更远,但价格较双绞线贵。
光纤
光纤通信就是利用光导纤维传递光脉冲进行通信。可见光的频率越为 108 MHz,因此光纤通信系统的带宽范围极大。多模光纤
只适合于近距离传输。单模光纤
制造成本较高,适合远距离传输。
无线传输介质 1.无线电波 2.微波、红外线和激光
2.2.2 物理层接口的特性
1.机械特性
:主要定义物理连接的边界点,即接插装置。规定物理连接时所采用的规格、引线的数目、引脚的数量和排列情况。 2.电气特性
:规定传输二进制位时,线路上信号的电压高低、阻抗匹配、传输速率和距离限制等。 3.功能特性
:指明某条线路上出现的某一电平的电压表示何种意义,接口部件的信号线(数据线、控制线、定时线等) 的用途。 4.规程特性
:主要定义各条物理线路的工作规程和时序关系。总结:
同轴电缆的带宽比双绞线更高得益于它的高屏蔽性。
2.3 物理层设备
2.3.1 中继器
中继器又称转发器,主要功能是将信号整形并放大再转发出去,以消除信号经过一长段电缆后,因噪声或其他原因而造成的失真和衰减。其原理是信号再生(而非简单的将衰减的信号放大)。
使用中继器连接的几个网段仍是一个局域网。它不能连接两个具有不同速率的局域网。中继器两端的网络部分是网段,而不是子网,两端的网段一定要使用同一个协议。
10BASE5 以太网规范中,相互串联的中继器个数不能超过 4 个,而且用 4 个中继器串联的 5 段通信介质中只有 3 段可以挂接计算机,其余两段只能用作扩展通信范围的链路段,不能挂接计算机。
2.3.2 集线器
集线器(Hub)实质上是一个多端口的中继器。
由 Hub 组成的网络是共享式网络,但逻辑上仍是一个总线网。Hub只能在半双工状态下工作
。
集线器在一个时钟周期中只能传输一组信息。连接在其上的多台设备均分带宽。总结:
本层及本层以下的协议必须相同,本层以上协议可以不同
数据链路层
3.1 数据链路层的功能
其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
3.1.1 为网络层提供服务
1.无确认的无连接服务
:适用于实时通信或误码率较低的通信信道,如以太网。 2.有确认的无连接服务
:源机器发送数据帧时不需先建立链路连接,但目的机器收到数据是必须发回确认。适用于误码率较高的通信信道,如无线通信。 3.有确认的面向连接服务
:目的机器对收到的每一帧都要给出确认,源机器收到确认后才能发送下一帧,因而该服务的可靠性最高。适用于通信要求(可靠性)较高的场合。
注意:有连接就一定要确认,即不存在无确认的面向连接的服务。
三个基本问题:封装成帧、透明传输和差错检测
3.1.2 帧定界、帧同步于透明传输
首部和尾部中含有很多控制信息,他们的一个重要作用是确定帧的界限,即帧定界。如在 HDLC 通信归程中,用标识位 F(01111110)来标识帧的开始和结束。(HDLC 主要用于广域网)
HDLC 标准帧格式:
比特 | 8 | 8 | 8 | 可变 | 16 | 8 |
---|---|---|---|---|---|---|
标志 F | 地址 A | 控制 C | 信息 I | 帧校验序列 FCS | 标志 F |
透明传输就是不管所传数据是什么样的比特组合,都应当能在链路上传送。
3.1.3 流量控制
流量控制实际上就是控制发送方的数据流量,使其发送的速率不超过接收方的接收能力。
流量控制并不是数据链路层特有的功能,许多高层协议中也提供此功能,只不过控制的对象不同而已。对于数据链路层来说,控制的是相邻两结点之间数据链路上的流量,而对于运输层来说,控制的是源端到目的端之间的流量。
3.1.4 差错控制
用以是发送方确定接收方是否正确收到由其发送的数据的方法称为差错控制。这些错误可分为位错和帧错。
位错指某些位出现了差错。通常采用循环冗余校验(CRC)方式发现错位,通过自动重传请求(Automatic Repeat reQuest,ARQ)方式来重传出错的帧。
帧错指帧的丢失、重复或失序等错误。在数据链路层引入定时器和编号机制,能保证每一帧最终都能有且仅有一次正确的交付给目的地。
组帧:数据链路层之所以把比特组合成帧为单位传输,是为了在出错时只重发出错的帧,而不必重发全部数据,从而提高效率。
3.1.5 字符计数法
计数字段提供的字节数包含自身所占用的一个字节。这种方法最大的问题在于,如果计数字段出错,即失去了帧边界划分的依据。
3.1.6 字符填充的首尾定界符法
使用一些特殊的字符来定界一帧的开始和结束。可以在特殊字符前面填充一个转义字符(DLE)来加以区分(转义字符是 ASCII 码中的控制字符,是一个字符,而非“DLE”三个字符的组合)。接收方收到数据后会自己删除这个插入的 DLE 字符。
3.1.7 比特填充的首尾标志法
01111110 来标志一帧的开始和结束。发送方的数据链路层在信息位中遇到5个连续的“1”时,将自动在其后插入一个“0”
;而接收方做该过程的逆操作,即每收到5个连续的“1”时,自动删除后面紧跟的“0”
,以恢复原信息。
比特填充法很容易由硬件来实现,性能优于字符填充法。
3.1.8 违规编码法
“高-高”电平对和“低-低”电平对在数据比特中是违规的。可以借用这些违规编码序列来定界帧的起始和终止。局域网 IEEE802 标准就采用了这种方法。
违规编码法不需要采用任何填充技术,便能实现数据的透明传输,但它只适用于采用冗余编码的特殊编码环境。
目前较常用的组帧方法是比特填充法和违规编码法。
3.2 差错控制
噪声的两大类:
一类是信道所固有的、持续存在的随机热噪声
另一类是由外界特定的短暂原因所造成的冲击噪声。
前者可以通过提高信噪比来减少或避免干扰,而后者不可能靠提高信号幅度来避免干扰造成的差错,是产生差错的重要原因。
差错控制又可分为:检错编码和纠错编码
3.2.1 检错编码
奇偶校验码:
奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。它由 n-1 位信息元和 1 位校验元组成。又分为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验。
循环冗余码:
循环冗余码(Cyclic Redundancy Code,CRC)又称为多项式码。
假设一个帧有 m 位,其对应的多项式为 M(x) ,计算冗余码的步骤如下: 1.加 0 。假设 G(x) 的阶(即最高幂次)为 r,在帧的低位端加上 r 个 0 。 2.模 2 除。利用模 2 除法,用 G(x)对用的数据串去除第一步中计算出的数据串,得到的余数即为冗余码(共 r 位,前面的 0 不可省略)。 3.循环直到余数小于除数时,该余数为最终余数。
加法不进位,减法不借位,它刚好是异或操作。
3.2.2 纠错编码
最常见的纠错编码是海明码,它能发现双比特错,但只能纠正单比特错
。
海明码“纠错” d 位,需要码距为 2d + 1 的编码方案;“检错” d 位,则只需码距为 d + 1
在 k 比特信息位上附加 r 比特冗余信息,构成 k + r 比特的码字,必须满足 2r ≥ k + r + 1总结:
1.热噪声一般是信道固有的,引起的差错是随机差错,可以通过提高信噪比来降低他对数据传输的影响。 2.奇偶校验码只能发现奇数个比特的错误。
3.3 流量控制与可靠传输机制
3.4.1 流量控制、可靠传输与滑动窗口机制
停止-等待流量控制基本原理:
每次只允许发送一帧,然后就陷入等待接收方确认信息的过程,因而传输效率很低。
滑动窗口流量控制机制基本原理:
若接收到的数据帧落在接收窗口之外,则一律将其丢弃。
重要特性: 1.只有接收窗口向前滑动时,发送窗口才有可能向前滑动。 2.窗口大小差别
- 停止等待:发送窗口大小= 1,接收窗口大小= 1 。
- 后退 N 帧协议:发送窗口大小> 1,接收窗口大小= 1 。
- 选择重传协议:发送窗口大小> 1,接收窗口大小> 1 。
3.接收窗口大小为 1 时,可保证帧的有序接收。 4.数据链路层的滑动窗口协议中,窗口大小在传输过程中是固定的。
可靠传输机制:
自动重传请求(Automatic Repeat reQuest,ARQ)通过接收方请求发送方重传出错的数据帧来回复出错的帧, 是通信中用于处理信道所带来差错的方法之一。
- 停止-等待(Stop-and-Wait)ARQ
- 后退 N 帧(Go-Back-N)ARQ
- 选择重传(Selective Repeat)ARQ
在数据链路层中流量控制和可靠传输机制是交织在一起的。
3.4.2 单帧滑动窗口与停止-等待协议
为了超时重发和判定重复帧的需要,发送方和接收方都必须设置一个帧的缓冲区。只有在收到接收方发来的确认帧 ACK 时,方可清除此副本。
停止等待协议的通信信道利用率很低。
3.4.3 多帧滑动窗口与后退 N 帧协议(GBN)
当接收方检测出失序的信息帧后,要求发送方发送最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了 N 个帧后,若发现现该 N 个帧的前一个帧在计时器超时后仍未返回确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的 N 个帧。换句话说,接收方只允许按顺序接收帧。
对某一数据的确认就表明该数据帧和此前所有的数据帧均已正确无误地收到。
后退 N 帧协议的接收窗口为 1 可保证按序接收数据帧。若采用 n 比特对帧编号,则其发送窗口的尺寸 WT 应满足1 ≤ WT ≤ 2n − 1
后退 N 帧协议不一定就优于停止等待协议。
3.4.4 多帧滑动窗口与选择重传协议(SR)
接收窗口 WR + 发送窗口 WT ≤ 2n,接收窗口尺寸不应该超过序号范围的一半,即 WR ≤ 2(n−1)
接收窗口为最大值时,WTmax = WRmax = 2(n−1)。一般情况下,在 SR 协议中,接收窗口的大小和发送窗口的大小时相同的。
缓冲区的数目等于窗口的大小,而不是序号数目。
信道的效率,也称信道利用率。信道利用率是对发送方而言的,是指发送方在一个发送周期的时间内,有效的发送数据所需要的时间占整个发送周期的比率。发送方从开始发送数据到收到第一个确认帧位置,称为一个发送周期。信道利用率
= (数据长度/数据传输率)/发送周期信道吞吐量
= 信道利用率 × 发送方的发送速率
总结:
- 在后退 N 帧的协议中,序列号个数不小于 MAX_SEQ+1
- 选择重传协议中的 ACK 分组不再具有累积确认的效果
- 接收窗口的尺寸不应该超过序列号范围的一半
- 对于窗口大小为 n 的滑动窗口,其发送窗口大小为 n-1,即最多可以有 n-1 帧已经发送但没有确认
3.5 介质访问控制
常见的介质访问控制方法有:信道划分介质访问控制、随机访问介质访问控制、轮询访问介质访问控制。其中前者是静态划分信道的方法,后两者是动态分配信道的方法。
3.5.1 信道划分介质访问控制
频分多路复用(FDM)
频分多路复用是一种将多路基带信号调制到不同频段上,再叠加形成一个复合信号的多路复用技术。每个子信道分配的带宽可以不同,但他们的总和不可以超过信道的总带宽。相邻信道之间要加入“保护频带”。
频分多路复用的优点在于充分利用了传输介质的带宽,系统效率高;由于技术比较成熟实现也比较容易。
时分多路复用(TDM)
时分多路复用是将一条物理信道按时间分成若干时间片,轮流地分配给多个信号使用。统计时分多路复用(STDM,又称异步时分多路复用)
,STDM 帧并不是固定分配时隙,而是按需动态地分配时隙。
波分多路复用(WDM)
波分多路复用即光的频分多路复用,他在一根光纤中传播多种不同波长(频率)的光信号,由于波长(频率)不同, 各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
码分多路复用(CDM)
码分多路复用是采用不同的编码来区分各路原始信号的一种复用方式。它既共享信道频率,有共享时间。
码分多址(Code Division Multiple Access,CDMA)
是码分复用的一种方式。
将多个正交的码片向量混合在一起进行传输,收到数据序列的机器使用对应数据源机器的码片序列进行内积得出想要的数据。
令向量 S 表示 A 站的码片向量,令 T 表示 B 站的码片向量。两个不同站的码片序列正交,即向量 S 和 T 的规格化内积为 0:
任何一个码片自己的规格化内积为 1,和自己反码的规格化内积为-1
由此,不管是在正交的码片中还是在内积结果中,我们用“1”代表“1”
,“-1”代表“0”
,若内积结果为0则代表该站没有发送数据
。
码分多路复用技术具有频谱利用率高、抗干扰能力强、保密性强、语音质量好等优点,还可以减少投资和降低运行成本,主要用于无线通信系统,特别是移动通信系统。
3.5.2 随机访问介质访问控制
随机访问介质控制协议又称征用型协议。随机介质访问控制实质上是一种将广播信道转化为点到点信道的行为。
ALOHA 协议纯ALOHA协议:
当网络中的任何一个站点需要发送数据时,可以不进行任何检测就发送数据。如果在一段时间内未收到确认,那么该站点就认为传输过程中发生了冲突。发送站点需要等待一段随机时间后再发送数据,直至发送成功。时隙ALOHA协议:
把所有各站点在时间上同步起来,并将时间划分为一段段等长的时隙,规定只能在每个时隙开始时才能发送一帧。从而避免了用户发送数据的任意性,减少了数据产生冲突的可能性,提高了信道利用率。在一个时隙内有两个或两个以上的帧到达时,在下一个时隙将产生碰撞。
CSMA 协议
载波侦听多路访问(Carrier Sense Multiple Access,CSMA)1-坚持CSMA
: 侦听到信道忙后,继续坚持侦听信道;帧听到信道空闲后,发送帧的概率为 1,即立刻发送数据。传播延迟对 1-坚持 CSMA 协议的性能影响较大。非坚持CSMA
: 一个结点要发送数据时,首先侦听信道;如果信道空闲,那么立即发送数据;如果信道忙,那么放弃侦听,等待一个随机的时间后再重复上述过程。信道利用率的提高可以是以增加数据在网络中的延迟时间为代价的。p-坚持CSMA
: 一个结点要发送数据时,首先侦听信道;如果信道忙,那么等待下一个时隙再侦听;如果信道空闲, 那么以概率 p 发送数据,以概率 1-p 推迟到下一个时隙。
信道状态 | 1-坚持 | 非坚持 | p-坚持 |
---|---|---|---|
空闲 | 立即发送数据 | 立即发送数据 | 以概率 p 发送数据, 以概率 1- p 推迟到下一个时隙 |
忙 | 继续坚持监听 | 放弃侦听,等待一个随机时间再侦听 | 持续侦听,等待下一个时隙再侦听 |
CSMA/CD 协议
载波侦听多路访问/碰撞检测(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)
工作流程:先听后发,边听边发(区别于 CSMA 协议),冲突停发,随机重发
如果在传输过程中,适配器检测到来自其他适配器的信号能量,就必须停止传输他的帧,取而代之传输一个 48 比特的拥塞信号。
CSMA/CD 中的站不可能同时进行发送和接收,因此采用 CSMA/CD 协议的以太网不可能进行全双工通信,只能进行半双工通信。
以太网端到端往返时间 2τ 称为争用期(又称冲突窗口或碰撞窗口)。只有经过争用期这段时间还未监测到冲突时, 才能确定这次发送不会发生冲突。所以 CSMA/CD 总线网中的所有数据帧都必须要大于一个最小帧长。所有站点收到帧长小于最小帧长的帧时,就把它当作无效帧立即丢弃。
最小帧长 = 总线传播时延 × 数据传输率 × 2
以太网规定最短帧长为 64B。如果发送数据小于 64B,则需在数据字段后加入整数字节的填充字段以保证以太网的 MAC 帧长度不小于 64B。
CSMA/CD 采用二进制指数退避算法来解决碰撞问题,定义 k = min[重传次数,10],从[0, 1, … , 2k − 1]中随机选取一个 r,重传退避时间就是 2rτ 。当重传 16 次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错。(RIP 转发也是 16 次为不可达)
采用二进制指数退避算法可使重传需要推迟的平均时间随重传次数的增大而增大(这也称动态退避),因而能降低发生碰撞的概率,有利于整个系统的稳定。
CSMA/CA 协议
载波侦听多路访问/碰撞避免(Carrier Sense Multiple Access with Collision Avoidance,CSMA/CA),主要用于无线网。
CSMA/CA 协议的基本思想是在发送数据时先广播告知其他结点,让其他结点在某段时间内不要发送数据,以避免出现碰撞。
3.5.3 轮询访问介质访问控制:令牌传递协议
令牌环网逻辑上是一个环,物理上不一定。只有拿到令牌的计算机才能发送数据。
总结
- CSMA/CA 协议进行信道预约时,主要是用的是请求发送帧(Request to Send,RTS)和清除发送帧(Clear to Send,CTS)。
- ACK 帧是 CSMA/CA 协议避免冲突的机制之一,只有当发送方收到接收方发回的 ACK 帧时才确认发出的数据帧已经正确到达目的地。
3.6 局域网
3.6.1 局域网的基本概念和体系结构
三种特殊的局域网拓扑实现
名称 逻辑拓扑 物理拓扑
以太网(目前使用最广泛的局域网) 总线形结构 星形或拓展星形
令牌环(Token Ring,IEEE 802.5) 环形结构 星形结构
FDDI(光纤分布数字接口,IEEE 802.8) 环形结构 双环结构
3.6.2 以太网与 IEEE 802.3
MAC 帧结构:
目的地址 源地址 类型 数据 FCS
6B 6B 2B 46 ~ 1500B 4B
以太网采用两项措施简化通信:
- 采用无连接的工作方式
- 不对发送的数据帧编号,也不要求接收方发送确认
即以太网尽最大努力交付数据,提供的是不可靠服务,对于差错的纠正则由高层完成。
各种传输介质的适用情况
参数 10BASE5 10BASE2 10BASE-T 10BASE-FL
传输媒体 基带同轴电缆(粗缆) 基带同轴电缆(细缆) 非屏蔽双绞线 光纤对(850m)
编码 曼切斯特编码 曼切斯特编码 曼切斯特编码 曼切斯特编码
拓扑结构 总线形 总线形 星形 点对点
最大段长 500m 185m 100m 2000m
最多结点数目 100 30 2 2
以太网的 MAC 帧
MAC 地址长 6 字节,一般由连字符分隔的 6 个十六进制数表示。有两种标准:DIX Ethernet V2 标准和 IEEE802.3 标准。
MAC 帧并不需要帧结束符,但仍要加首、尾部。规定数据最大字节是 1500B,即最大帧长 1518B。
高速以太网
速率达到或超过 100Mb/s 的以太网称为高速以太网。
- 100BASE-T:既支持全双工,又支持半双工,可在全双工方式下工作而无冲突发生。因此,在全双工方式下不使用 CSMA/CD。
- 吉比特以太网:既支持全双工,又支持半双工,仅在半双工工作方式下使用 CSMA/CD。
- 10 吉比特以太网:不使用铜线而使用光纤作为传输媒介。只工作在全双工方式,没有争用问题,也不使用 CSMA/CD。
10Mb/s 以太网:
争用期:512 微秒;
帧间间隔:9.2 微秒;
100Mb/s 以太网:
争用期:51.2 微秒; 帧间间隔:0.92 微秒;
3.6.3 IEEE 802.11
IEEE 802.11 是无线局域网的一系列协议标准。MAC 层采用 CSMA/CA 协议进行介质访问控制。
总结
- 在使用静态地址的系统中,如果有重复的硬件地址,那么这两个设备都不能正常工作。
- 快速以太网使用的方法是保持最短帧长不变,将一个网段的最大长度减少到 100m,以提高以太网的数据传输率。
令牌环网中,每个结点都可以在一定时间内(令牌持有时间)或的发送数据的权利,而并非无限制地持有令牌。
3.7 广域网
3.7.1 广域网的基本概念
广域网不等于互联网,互联网可以连接不同类型的网络。
广域网使用的协议主要在网络层广域网 局域网
覆盖范围 很广,通常跨区域 较小,
通常在一个区域内
连接方式 结点之间都是点到点连接,但为了提高网络的可靠性, 一个结点交换机往往与多个结点交换机相连 普遍采用多点接入技术
OSI 层次 三层:物理层,数据链路层,网络层 两层:物理层, 数据链路层
着重点 强调资源共享 强调数据传输
联系与相似点:广域网和局域网都是互联网的重要组成构件,从互联网的角度上看,二者平等(不是包含关系)
- 连接到一个广域网或一个局域网上的主机在该网内进行通信时,只需要使用其网络的物理地址
3.7.2 PPP 协议
PPP 是面向字符的,因而所有 PPP 帧的长度都是整数个字符。
F(7E) A(FF) C(03) 协议 信息部分 FCS F(7E)
1 1 1 2 0-1500 2 1
(单位:字节)
注意:
- PPP 提供差错检测但不提供纠错功能,只保证无差错接收(通过硬件进行 CRC 校验)。它是不可靠的传输协议,因此也不使用序列号和确认机制。
- 它仅支持点对点的链路通信,不支持多点线路。
- PPP 只支持全双工链路。
- PPP 的两端可以运行不同的网络层协议,但仍可使用同一个 PPP 进行通信。
- PPP 是面向字节的,当信息字段出现和标志字段一致的比特组合时,PPP 有两种不同的处理方法:若 PPP 用在异步线路(默认),则采用字节填充法;若用在同步线路,则采用硬件来完成比特填充。
3.7.3 HDLC 协议
高级数据链路控制(High-level Data Link Control,HDLC)面向比特的数据链路层协议,使用硬件填充的“0”比特插入法实现透明传输,全双工通信,CRC 校验。
非平衡配置的特点是由一个主站控制整个链路。
平衡配置的特点是链路的两端的两个站都是复合站。
站
HDLC 有三种站类型:主站、从站、复合站
数据操作方式
HDLC 有三种数据操作方式: - 正常响应方式
- 异步平衡方式
- 异步响应方式
帧
标志 F 地址 A 控制 C 信息 info 帧校验序列 FCS 标志 F
8 8 8 可变 16 8
(单位:比特)
可将 HDLC 帧划分为三类:信息帧(I 帧)、监督帧(S 帧)、无编号帧(U 帧)
总结
- PPP 与 HDLC 的区别:
- PPP 协议是面向字节的,HDLC 协议是面向比特的。
- PPP 帧比 HDLC 帧多一个 2 字节的协议字段。当协议字段值为 0x0021 时,表示信息字段是 IP 数据报。
- PPP 协议不使用序号和确认机制,只保证无差错接收(通过硬件进行 CRC 检验),而端到端差错检测由高层协议负责。HDLC 协议的信息帧使用了编号和确认机制,能够提供可靠传输。
3.8 数据链路层设备
3.8.1 网桥的概念及其基本原理
网桥工作在链路层的 MAC 子层,可以使以太网各网段成为隔离开的碰撞域。
基本特点: 网桥必须具备寻址和路径选择能力,可以确定帧的传输方向
从源网络接收帧,以目的网络的介质访问控制协议向目的网络转发该帧
- 网桥在不同或相同类型的 LAN 之间存储转发帧,必要时还进行链路层上的协议转换(一般情况下,存储转发类设备都能进行协议转换,即连接的两个网段可以使用不同的协议)
- 网桥对接收到的帧不做任何修改,或只对帧的封装格式做很少的修改
- 网桥可以通过执行帧翻译互联不同类型的局域网,即把原协议的信息段的内容作为另一种协议的信息部分封装在帧中
- 网桥应有足够大的缓冲空间,因为在短时间内帧的到达速率可能高于转发速率
网桥的优点: - 能过滤通信量
- 扩大了物理范围
- 可使用不同的物理层
- 可互联不同类型的局域网
- 提高了可靠性
- 性能得到改善
网桥点缺点: - 增大了时延
- MAC 子层没有流量控制功能(流量控制功能需要用到编号机制,是现在 LLC 子层)
- 不同 MAC 子层的网段桥接在一起时,需要进行帧格式的转换
- 网桥只适合于用户不多和通信量不大的局域网
透明网桥(路径选择不是最佳路由) - 如果源 LAN 和目的 LAN 相同,那么丢弃该帧
- 如果源 LAN 和目的 LAN 不同,那么转发该帧
- 如果目的 LAN 未知,那么扩散该帧
使用生成树算法来确保无环,以保证每个源到每个目的地只有唯一的路径,但生成树一般不是最佳路由
源路由网桥(选择的是最佳路由)
路由选择由发送数据帧的源站负责,网桥只跟据数据真正的路由信息对帧进行接收和转发。
通过发现帧来寻找目的站,还可帮助源站确定整个网络可通过的帧的最大长度。由于发现帧的数量指数式增加,可能会使网络严重拥塞。
若在两个以太网之间使用并联的源路由网桥,则还可使通信量较平均的分配给每个网桥。
最佳路由并不是经过路由器最少的路由,而是发送帧往返时间最短的路由
3.8.2 局域网交换机及其工作原理
局域网交换机
桥接器的主要限制是在任意一时刻通常只能执行一个帧的转发操作,由此出现了局域网交换机,又称以太网交换机。
本质上来说,以太网交换机是一个多端口的网桥。
虚拟局域网(Virtual LAN,VLAN)不仅可以隔离冲突域,而且可以隔离广播域。
特点:
- 以太网交换机的每个端口都直接与单台主机相连(普通网桥的端口往往连接到以太网的一个网段),并且议案都工作在全双工方式。
- 以太网交换机能同时连通多个端口,且无碰撞。
对于普通 10Mb/s 的共享式以太网,拥有 N 个端口的交换机的总容量为 N × 10Mb/s 。这正是交换机最大的优点。
全双工交换机端口总带宽 = 端口个数 × 单个端口带宽 × 2
谢希仁和王道的说法都是“N 对”,但很多教材都不赞同,清华大学计算机网络的老师和四级网络工程师真题说法都是“N 个”。
网络层
4.1 网络层的功能
4.1.1 异构网络互联
中继系统:
- 物理层:中继器,集线器
- 数据链路层:网桥或交换机
- 网络层:路由器
- 网络层以上:网关
网际协议(Internet Protocol,IP)
4.1.2 路由转发
路由器主要完成两个功能:一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达时所采取的动作)。
4.1.3 拥塞控制
如果随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,那么网络就可能已进入“轻度拥塞”状态;如果网络的吞吐量随着网络负载的增大而下降,那么网络就可能已经进入拥塞状态;如果网络的负载继续增大,而网络的吞吐量下降到零,那么网络就可能已经进入死锁状态。
流量控制和拥塞控制的区别:流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。而拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。
拥塞控制的两种方法:
- 开环控制
- 闭环控制
总结 - 路由表通常包含目的网络和到达该目的网络路径上的下一个路由器的 IP 地址。
4.2 路由算法
4.2.1 静态路由与动态路由
静态路由广泛应用于高端的军事系统和较小的商业网络。
动态路由常用的算法有:距离-向量路由算法和链路状态路由算法
4.2.2 距离-向量路由算法
在距离-向量路由算法中,所有结点都定期的将他们的整个路由选择表传送给与之直接相邻的结点。这种路由选择表包含:每条路径的目的地(另一个结点);路径代价(也称距离,一般定义为跳数)。
在以下情况将更新路由表:
- 被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入这条新的路由。
- 发来的路由信息中有一条到达某目的地但下一跳不同的路由,该路由与当前使用的路径相比,有较短的距离(较小的代价)。
- 发来的路由信息中有一条到达某目的地且下一跳相同的路由,直接更新该路由,以最新数据为准。
它要求每个节点在每次更新时都将他的全部路由表发送给所有相邻结点。
最常见的距离-向量路由算法是 RIP 算法,它采用“跳数”作为距离的度量。
距离-向量算法可能遇到路由环路等问题。
4.2.3 链路状态路由算法
链路状态路由算法要求每个参与该算法的结点都具有完全的网络拓扑信息。典型的链路状态算法是 OSPF 算法。结点就对更新的网络图利用 Dijsktra 最短路径算法重新计算路由。
三个特征: - 不再发送给刚刚发来信息的那个路由器。
- OSPF 算法,链路状态的“度量”主要用来表示费用、距离、时延、带宽等。
- 只有当链路状态发生变化时,路由器才向所有路由器发送此消息。
4.2.4 层次路由
一个自治系统中包含很多局域网
自治系统内路由选择协议称为内部网关协议,也称为域内路由选择,具体协议有 RIP,OSPF 等。
自治系统间路由选择协议称为外部网关协议,也称为域间路由选择,具体协议有 BGP。
总结 - 距离为 16 表示不可到达。
- 慢收敛是导致发生路由回路的根本原因。
- 每个路由器知道如何将分组路由到自己所在区域内的目标地址,但对于其他区域内的结构毫不知情。
4.3 IPv4
4.3.1 IPv4 分组
IPv4 分组的格式首部前一部分的长度固定,共20B
- 版本:4 位;IP 的版本,目前广泛使用的版本号为 4。
- 首部长度:4 位;以 32 位(4B)为单位,最大值为 60B(15X4B)。最常用的首部长度是 20B,此时不使用任何选项
(即可选字段)。 - 总长度:16 位;指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 216 − 1 = 65535B。
- 标识:16 位;它是一个计数器,每产生一个数据报就加 1,并赋值给标识字段。并不是“序号”,因为 IP 是无连接服务。
- 标志:3 位;只有后两位有意义,标志字段的最低位为 MF,MF=1 表示后面还有分片,MF=0 表示最后一个分片。标志字段中间的一位是 DF,只有当 DF=0 时才允许分片。
- 片偏移:13 位;它指出较长的分组在分片后,某片在原分组中的相对位置。8 个字节为偏移单位,即每个分片的长度一定是 8B(64 位)的整数倍。
- 首部校验和:16 位;IP 数据报的首部校验和只校验分组的首部,而不校验数据部分。
- 生存时间(TTL):8 位;数据报在网络中可通过路由器数的最大值。路由器在分组转发前,先把 TTL 减 1。若 TTL 被减为 0,则该分组必须丢弃。
- 协议:8 位;指出此分组携带的数据使用何种协议。如 6 代表 TCP,17 代表 UDP。
- 源地址字段:32 位;标识发送方的 IP 地址。
- 目的地址字段:32 位;标识接收方的 IP 地址。
IP 数据报分片
每个数据报分片都具有原始数据报的标示号。
网络层转发分组的流程 - 从数据报首部提取目的主机 IP 地址 D,得出目的网络地址 N。
- 若网络 N 与此路由器直接相连,则把数据报直接交付给目的主机 D,这称为路由器的直接交付,否则是间接交付,执行步骤 3)。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行步骤
4)。 - 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行步骤 5)。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行步骤 6)。
- 报告转发分组出错。
在不同网络中传送时,MAC 帧中的源地址和目的地址要发生变化,但是网桥在转发帧时,不改变帧的源地址。
4.3.2 IPv4 地址与 NAT
IPv4 地址IP地址::={<网络号>,<主机号>}
其中网络号标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。一台主机号在他前面的网络号所指明的网络范围内必须是唯一的。一个 IP 地址在整个因特网范围内是唯一的。
IP 地址分类:
- A 类(1-126): 0 网络号 主机号
- B 类(128-191): 10 网络号 主机号
- C 类(192-223): 110 网络号 主机号
- D 类(224-239): 1110 _ 多播地址
- E 类(240-255): 1111 _ 保留为今后使用
特殊 IP 地址:
主机号全为 0 表示本网络本身
主机号全为 1 表示本网络的广播地址,又称直接广播地址
127.0.0.0 保留为环路自检(Loopback Test)地址,此地址表示任意主机本身,目的地址为回环地址的 IP 数据报永远不会出现在任何网络上
32 位全为 0,即 0.0.0.0 表示本网络上的本主机
32 位全为 1,即 255.255.255.255 表示整个 TCP/IP 网络的广播地址,又称受限广播地址。实际使用时,由于路由器对广播域的隔离,255.255.255.255 等效为本网络的广播地址
IP 网络上的一个路由器必然至少应该具有两个 IP 地址(路由器每个端口必须至少分配一个 IP 地址)。用转发器或桥接器连接的若干 LAN 仍是同一个网络(同一个广播域),因此该 LAN 中所有主机的 IP 地址的网络号必须相同,但主机号必须不同。
网络地址转换
网络地址转换(NAT)是指将专用网络地址(如 Intrannet)转换为公用地址(如 Internet)从而对外隐藏内部管理的 IP
地址。
私有 IP 地址网段如下:
- A 类:1 个 A 类网段,即 10.0.0.0-10.255.255.255
- B 类:16 个 B 类网段,即 172.16.0.0-172.31.255.255
- C 类:256 个 C 类网段,即 192.168.0.0-192.168.255.255
在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。私有 IP 地址也称可重用地址。
注意:普通路由器在转发 IP 数据报时,不改变其源 IP 地址和目的的 IP 地址。而 NAT 路由器在转发 IP 数据报时,一定要更换其 IP 地址(转换源 IP 地址或目的 IP 地址)。普通路由器仅工作在网络层,而 NAT 路由器转发数据报时需要查看和转换传输层的端口号。
4.3.3 子网划分与子网掩码、CIDR
子网划分
划分子网只是把 IP 地址的主机号这部分进行再划分,而不改变 IP 地址原来的网络号。因此,从一个 IP 地址本身或 IP 数据报的首部,无法判断源主机或目的主机所连接的网络是否进行了子网划分。
子网掩码
现在的因特网标准规定:所有的网络必须都使用子网掩码。如果一个网络未划分子网,按么就采用默认子网掩码。
路由表中的每个条目,出要给出目的网络地址和下一跳地址外,还同时给出该目的的网络的子网掩码。
- 一台主机在设置 IP 地址信息的同时,必须设置子网掩码
- 同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码
- 路由器的路由表中,所包含信息的主要内容必须有网络地址、子网掩码、下一跳地址
使用子网掩码时路由器的分组转发: - 从收到的分组的首部提取目的 IP 地址,记为 D
- 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和 D 逐位相“与”,看结果是否和相应的网络地址匹配。若匹配,则将该分组直接交付;否则间接交付,执行步骤 3)
- 若路由表中有目的地址为 D 的特定主机路由,则将该分组传送给路由表中所指明的下一跳路由器;否则,执行步骤 4)
- 对路由表中的每一行(网络地址、子网掩码、下一跳地址)中的子网掩码和 D 逐位相“与”,其结果为 N。若 N 与该行的网络地址匹配,则将分组传送给改行指明的下一跳路由器;否则,执行步骤 5)
- 若路由表中有一个默认路由,则将分组传送给路由表所指明的默认路由器;否则,执行步骤 6)
- 报告转发分组出错
无分类域间路由选择(CIDR)
IP::={<网络前缀>,<主机号>}
斜杠记法:IP 地址/网络前缀所占比特数
CIDR 地址块中的地址数一定是 2 的整数次幂,实际可指派的地址数通常为 2N − 2,N 表示主机号的位数,主机号全 0 代表网络号,主机号全 1 为广播地址。
应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。这里最常用的数据结构就是二叉线索树。
注意: RFC 950 规定对分类的 IPv4 地址进行子网划分时,子网号不能为全 1 和全 0,而 CIDR 则可以支持全 0 和全 1 的子网号。做题时注意区分题目是否指明地址类别。
4.3.4 ARP、DHCP 与 ICMP
IP 地址与硬件地址
IP 地址是网络层使用的地址,它是分层次等级的。硬件地址是数据链路层使用的地址(如 MAC 地址),它是平面式 的。在网络层及网络层之上使用 IP 地址,IP 地址放在 IP 数据报的首部,而 MAC 地址放在 MAC 帧的首部。通过数据封装,把 IP 数据报分组封装为 MAC 帧后,数据链路层看不见数据报分组中的 IP 地址。
IP 数据报在被路由器转发时,其数据链路层封装所使用的 MAC 地址是不断改变的。这也决定了无法使用 MAC 地址跨网络通信。
注意: 路由器由于互联多个网络,因此它不仅有多个 IP 地址,也有多个硬件地址。
地址解析协议(ARP)
ARP 由于“看到了”IP 地址,所以他工作在网络层,而 NAT 路由器由于“看到了”端口,所以他工作在传输层。
尽管 ARP 请求分组是广播发送的,但 ARP 响应分组是普通的单播。这是因为一开始不知道目的地址,所以使用广播, 但响应发回来的时候知道源地址所以可以单播。
ARP 的 4 种典型情况总结:
- 发送方是主机时,要把 IP 数据报发送到网络上的另一台主机。这时用 ARP 找到目的主机的硬件地址。
发送方是主机时,要把 IP 数据报发送到另一个网络上的一台主机。这时用 ARP 找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成。
发送方是路由器,要把 IP 数据报转发到本网络上的一台主机。这时使用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一台主机。这时用 ARP 找到本网络上的一个路由器的硬件地址,剩下的工作由找到的这个路由器完成。
动态主机配置协议(DHCP)
DHCP 是应用层协议,它基于 UDP 的。DHCP 服务器的回答报文称为提供报文。
对于网络上有多个 DHCP 服务器,可能收到多个应答信息,客户机只选取最先到达的。
DHCP 的客户端和服务端需要通过广播的方式来进行交互,原因是在 DHCP 执行期间,客户端和服务端都没有标识自己身份的 IP 地址。客户端发起申请时,广播帧的源地址为 0.0.0.0,广播地址为 255.255.255.255。
网际控制报文协议(ICMP)
ICMP 是 IP 层协议。
ICMP 报文有两种类型:ICMP 差错报告报文,ICMP 询问报文
ICMP 差错报告报文的 5 种类型:
- 终点不可达
- 源点抑制
- 时间超过
- 参数问题
- 改变路由(重定向)
不应发送 ICMP 差错报告的几种情况: - 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文
- 对具有组播地址的数据报都不发送 ICMP 差错报告报文
- 对具有特殊地址(如 127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文
ICMP 请求报文的 4 种类型: - 回送请求和回答报文
- 时间戳请求和回答报文
- 掩码地址请求和会回答报文
- 路由器询问和通告报文
其中最常见的是前两种。
ICMP 的两个常见应用是分组网间探测 PING(用来测试两台主机之间的连通性)和 Traceroute(UNIX 中的名字,在 Windows 中时 tracert,可以用来跟踪分组经过的路由)。其中 PING 使用了 ICMP 回送请求和回答报文, Traceroute(Tracert)使用了 ICMP 时间超过报文。
注意: PING 工作在应用层,他直接使用网络层的 ICMP,而未使用传输层的 TCP 或 UDP。Traceroute/Tracert 工作在网络层。
总结 - IP 分组的校验字段仅检查分组的首部信息,不包括数据部分。
- 分片最终只有在目的主机才会被重组。
- CIDR 中,选择最长的匹配结果的网络路由。
- 划分子网:减少广播域的大小、减少主机数量、提高 IP 地址利用率。
当问子网内最大可分配地址数时要加上主机和广播地址,当问可分配最大 IP 地址数时要减去主机和广播地址。
若问某网络下主机不能与其他几台主机正常通信意味着它的 IP 地址与其他主机不在同一个子网。
- 0.0.0.0/32 可作为本主机在网络上的源地址,但不能作为目的地址。
- NAT 的表项需要管理员添加,NAT 表中如果找不到对应条目,则不转发该分组。
4.4 IPv6
4.4.1 IPv6 的主要特点
- 更大的地址空间。IPv6 将地址从 IPv4 的 32 位增大到了 128 位。IPv6 的字节数(16B)是 IPv4 字节数(4B)的平方。
- 扩展的地址层次结构
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持即插即用(即自动配置)
- 支持资源的与分配
- IPv6 不允许分片(不允许类似 IPv4 在路由分片)
- IPv6 的首部必须是 8B 的整数倍,而 IPv4 首部是 4 的整数倍
- 扩大了安全性,身份验证和保密功能是 IPv6 的关键特征
4.4.2 IPv6 地址
三种基本类型: - 单播:点对点
- 多播:一对多
- 任播:任播的目的站是一组计算机,但数据报在交付时只交付其中一台计算机,通常是距离最近的一台计算机
地址表示法:每 4 位用一个十六进制数表示,并用冒号隔开。当有 0 时可以缩写(xxx:0000:xxx->xxx:0:xxx),有连续的零时可用双冒号进一步缩写(xxx:0000:0000:xxx->xxx::xxx),但一个地址中双冒号缩写只能出现一次,这是因为在还原时是依据完整长度来计算省略的数目,如果使用两个双冒号则无法计算出每个各省略了多少位。
总结 - IPv6 没有校验和字段。
- IPv6 不允许分片。当路由器收到数据报太大而不能转发到链路上,将丢弃该数据报,并发回一个指示数据报太大的 ICMP 报文。
- IPv6 支持 QoS,以满足实时、多媒体通信的需要。
- IPv6 首部长度固定,因而也没有首部长度字段。
4.5 路由协议
4.5.1 自治系统
自治系统(Autonomous System,AS)
4.5.2 域内路由与域间路由
自治系统内部的路由选择称为域内路由,自治系统之间的路由选择称为域间路由。 内部网关协议(Interior Gateway Protocol,IGP),目前这类路由选择协议使用最多,如 RIP 和 OSPF。
外部网关协议(External Gateway Protocol,EGP),目前使用最多的是 BGP-4.
4.5.3 路由信息协议(RIP)
路由信息协议(Routing Information Protocol,RIP)是一种分布式的基于距离向量的路由选择协议。
RIP 规定- 优先选择跳数少的路径
- 允许一条路径最多只能包含 15 个路由器。因此距离等于 16 时,它表示网络不可达。可见 RIP 只适用于小型互联网。
- 每隔 30 秒广播一次 RIP 路由更新信息
- RIP 中每个网络的子网掩码必须相同
特点: - 仅和相邻路由器交换信息
- 当前本路由器知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息
距离向量算法
每个路由表项有三个关键数据:<目的网络 N,距离 d,下一跳路由器 X>
如果 180 秒(RIP 默认超时时间为 180 秒)还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可到达路由器,即把距离设置为 16。
优点:简单、开销小、收敛快
缺点: - RIP 限制了网络规模,它能使用的最大距离为 15
- 网络规模越大,开销也越大
- 网络出现故障时,会出现慢收敛现象,俗称“坏消息传得慢”,使更新过程的收敛时间长
RIP 是应用层协议,使用 UDP 传送数据(端口 520)。
4.5.4 开放最短路径优先(OSPF)协议
基本特点 - OSPF 向本自治系统中的所有路由器发送信息,这里使用的方法是洪泛法。
- 发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
- 只有当链路状态发生变化时,路由器采用洪泛法向所有路由器发送此信息,并且更新过程收敛的快,不会出现 RIP“坏消息传得慢”的问题。
- OSPF 是网络层协议,直接使用 IP 数据报传送(其 IP 数据报首部的协议字段为 89)。
- OSPF 对不同类型的业务可计算出不同的路由。
- 多路径间的负载平衡。
- 支持可变长度的子网划分和无分类编址 CIDR。
- 每个链路状态都带上一个 32 位的序号,序号越大,状态就越新。
基本工作原理
建立一个链路状态数据库,就是全网的拓扑结构图,在全网范围内是一致的,使用 Dijkstra 最短路径算法计算最优路径,由此构建路由表。
五种分组类型 问候分组,每隔 10 秒两相邻路由器交换一次问候分组。
数据库描述分组
- 链路状态请求分组
- 链路状态更新分组
- 链路状态确认分组
4.5.5 边界网关协议(BGP)
边界网关协议只能力求选找一条能够到达目的地的网络且比较好的路由(不兜圈子),而并非寻找一条最佳路由。
BGP 是应用层协议,基于 TCP。
BGP-4 的四种报文: - 打开报文
- 更新报文
- 保活报文
- 通知报文
协议 RIP OSPF BGP
类型 内部 内部 外部
路由算法 距离-向量 链路状态 路径-向量
传递协议 UDP IP TCP
路径选择 跳数最少 代价最低 较好,非最佳
交换结点 和本结点相邻的路由器 网络中所有路由器 和本结点相邻的路由器
交换内容 当前本路由器知道的全部信息,即自己的路由表 与本路由器相邻的所有路由器的链路状态 首次:整个路由表; 非首次:有变化的部分
总结
- RIP 规定一个路由器只向相邻路由器发布路由信息,而不像 OSPF 那样向整个域洪泛
- OSPF 协议使用 Hello 分组来保持与其邻居的连接
- BGP 交换的路由信息是到达某个目的网络所要经过的各个自治系统序列而不仅仅是下一跳
4.6 组播
4.6.1 组播的概念
组播一定仅应用于 UDP。一台主机可以同时属于多个组,使用 IGMP(因特网组管理协议)来加入组播组。
主机组播时仅发送一份数据,只有数据在传送路径出现分叉时才将分组复制后继续转发。
能够运行组播协议的路由器称为组播路由器。
4.6.2 IP 组播地址
注意: - 组播数据报也是“尽最大努力交付”,不提供可靠交付
- 组播地址只能用于目的地址,而不能用于源地址
对组播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入组播地址,将永远不会收到响应
并非所有的 D 类地址都可以作为组播地址
以太网组播地址范围:01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF
IP 组播地址范围:224.0.0.0 - 239.255.255.255
4.6.3 IGMP 与组播路由算法
因特网组管理协议(Internet Group Management Protocol,IGMP)让连接本地局域网上的组播路由器知道本局域网上是否有主机参加或退出了某个组播组。
4.8 网络层设备
4.8.1 路由器的组成和功能
路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。在多个逻辑网络(即多个广播域)互联时必须使用路由器。也可作为最基础的包过滤防火墙应用。隔离了广播域。
如果一个存储转发设备实现了某个层次的功能,那么他就可以互联两个在该层次上使用不同协议的网段(网络)。但中继器实现了物理层后,却不能互联两个物理层不同的网段,这是因为中继器不是存储转发设备,它属于直通式设备。
三种交换方式:通过存储器进行交换、通过总线进行交换、通过互联网络进行交换。
4.8.2 路由表与路由转发
路由表总是用软件来实现的;转发表可以用软件来实现,甚至也可以用特殊的硬件来实现。路由表不等于转发表。分组的实际转发是靠直接查找转发表,而不是直接查找路由表。
“转发”是路由器根据转发表把收到的 IP 数据报从合适的端口转发出去,它仅涉及一个路由器。而“路由选择”则涉及很多路由器,路由表是许多路由器协同工作的结果。
总结- 路由器只能根据 IP 地址进行转发。
- 路由表中默认路由的目的地址和子网掩码都是 0.0.0.0
传输层
5.1 传输层提供的服务
5.1.1 传输层的功能
传输层为运行在不同主机上的进程之间提供了逻辑通信,而网络层提供主机之间的逻辑通信。
传输层的分用复用功能与网络层的分用复用功能不同。网络层分用复用是指发送方不同协议的数据都可以封装成 IP 数据报发送出去,分用是指接收方的网络层在剥去首部后把数据交付给相应的协议。
传输层对收到的报文进行差错检测(首部和数据部分)。而网络层只检查 IP 数据报的首部,不检查数据部分是否出错。
提供两种不同的传输协议,即 TCP,UDP。而网络层无法同时实现两种协议。
当传输层采用面向连接的 TCP 时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道。但当传输层采用无连接的 UDP 时,这种逻辑通信信道仍然是一条不可靠信道。
5.1.2 传输层的寻址与端口
端口的作用
端口是传输层服务访问点(TSAP),标识的是主机中的应用进程。
数据链路层的 SAP 是 MAC 地址,网络层的 SAP 是 IP 地址,传输层的 SAP 是端口。
端口号
端口号长度为 16bit,能够表示 65536(216 )个不同的端口号,端口号只具有本地意义。
熟知端口号,数值为 0 ~ 1023,IANA(互联网地址指派机构)指派给了 TCP/IP 最重要的一些应用程序。登记端口号,数值为 1024 ~ 49151,使用这类端口号必须在 IANA 登记,以防止重复。
客户使用的端口号,数值为 49152 ~ 65535,短暂端口号(临时端口号),仅在进程运行时才动态选择。
套接字
套接字=(主机 IP 地址,端口号)
它唯一地表识网络中的一台主机和其上的一和应用(进程)。
5.1.3 无连接服务与面向连接服务
在网络层若采用虚电路方式,则无法提供无连接服务;而在传输层采用 TCP 不影响网络层提供无连接服务。
总结
- 主机与主机之间的通信称为点到点的通信,进程与进程之间的通信称为端到端的通信。
当一个层级是不可靠传输,要最终实现可靠传输,至少由该层以上的一层来实现可靠性方面的全部工作。
5.2 UDP 协议
5.2.1 UDP 数据报
概述
UDP 在 IP 之上仅提供两个附加服务:多路复用和对数据的错误检查。
UDP 首部仅 8B。
UDP 尽最大努力交付,但并不意味着应用对数据的要求是不可靠的,因此所有维护传输可靠性的工作需要用户在应用层来完成。
报文不可分割,是 UDP 数据报处理的最小单位。
UDP 的首部格式
总共四个字段,每个字段 2B源端口
- 目的端口
- 长度:最小值为 8(仅首部)
- 校验和:当主机不想计算校验和时,则直接令该字段为全 0。
如果接收方 UDP 发现收到的报文中的目的端口号不正确,那么就丢弃该报文,并由 ICMP 发送“端口不可达”差错报文给发送方。
5.2.2 UDP 校验
在校验时,要在 UDP 数据报之前增加 12B 的伪首部。使用二进制反码运算求和再取反。
若 UDP 数据报的数据部分不是偶数个字节,则要在数据部分末尾增加一个全零字节(但此字节不发送)。
总结 - UDP 的校验和不是必需的,如果不使用校验和,那么将校验和字段置为 0,而如果校验和的计算恰好为 0,那么将校验和置为全 1。
传输层分用的定义是,接收方的传输层剥去报文首部后,能把这些数据正确交付到目的的进程。
5.3 TCP 协议
5.3.1 TCP 协议的特点
主要解决传输的可靠、有序、无丢失和不重复问题。
提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此 TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。
TCP 是面向字节流的。
5.3.2 TCP 报文
TCP 传输的数据单元称为报文段。TCP 报文段的首部最短为 20B,后面有 4N 字节是根据需要而增加的选项,通常长度为 4B 的整数倍。TCP 报文段既可以用来运载数据,又可以用来建立连接、释放连接和应答。源端口和目的端口字段:各占 2B。
- 序号字段:占 4B。序号字段的值是指本报文段所发送的数据的第一个字节的序号。
- 确认号字段:占 4B。若确认号为 N,则表明到序号 N-1 为止的所有数据都已经正确收到。
- 数据偏移(即首部长度):占 4 位。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。单位是 4B,因此 TCP 首部的最大长度为 60B。
- 保留字段:占 6 位。保留今后使用,目前应置为 0。
- 紧急位 URG:URG=1 时,表明紧急指针字段有效,即从数据第一个字节到紧急指针所致字节就是紧急数据(相当于高优先级的数据)。
- 确认为 ACK:只有当 ACK=1 时确认号字段才有效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
- 推送位 PSH(Push):接收 TCP 收到 PSH=1 的报文段,就尽快的交付给接收应用进程,而不再等到整个缓存都填满后再向上交付。
- 复位位 RST(Reset):RST=1 时,表明 TCP 连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
- 同步位 SYN:同步 SYN=1 表示这是一个连接请求或连接接收报文。当 SYN=1,ACK=0 时,表明这是一个连接请求报文,若对方同意建立连接,则在响应报文中使用 SYN=1,ACK=1。
- 终止位 FIN(Finish):用来释放一个连接。
- 窗口字段:占 2B。窗口值作为接收方让发送方设置其发送窗口的依据,单位为字节。
- 校验和:占 2B。校验和字段检验的范围包括首部和数据两部分。和 UDP 一样,要在 TCP 报文段的前面加上 12B 的伪首部(只需将 UDP 伪首部的第 4 个字段,即协议字段的 17 改成 6,其他的和 UDP 一样)。
- 紧急指针字段:占 16 位。紧急数据放在本报文数据的最前面。
- 选项字段:长度可变。
- 填充字段:使整个首部长度是 4B 的整数倍。
5.3.3 TCP 连接管理
TCP 连接的端口称为套接字(socket)或插口。端口拼接到 IP 地址即构成套接字。每条 TCP 连接唯一的被通信端的两个端点(即两个套接字)确定。
TCP 连接的建立
- 客户机首先向服务器发送一个连接请求报文段,该报文段不含应用层数据,SYN=1,ACK=0,客户机随机选择一个起始序号 seq=x(连接请求报文不携带数据,但要消耗一个序号)。
- 服务器如果同意请求,就分配缓存和变量,发回确认报文段,SYN=1,ACK=1,ack=x+1,并且服务器随机产生起始序号 seq=y(确认报文不携带数据,但要消耗一个序号)
- 客户机收到确认报文段后,分配缓存和变量,发回确认报文段,SYN=1,ACK=1,seq=x+1,ack=y+1(该报文段可携带数据,若不携带则不消耗序号)
注意:服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到 SYN 洪泛攻击。
为什么不采用“两次握手”建立连接呢?
主要是为了防止两次握手情况下已失效的连接请求报文段突然又传送到服务器而产生错误。
TCP 连接的释放 - 客户机打算关闭连接时,发送连接释放报文段,并停止发送数据,FIN=1,seq=u,它等于前面发送过的数据的最后一个字节的序号加 1(FIN 报文段即使不携带数据,也要消耗一个序号)。发送 FIN 后,发送方不能再发送数据,但对方还可以发送数据。
- 服务器收到后发回确认,ack=u+1,而这个报文段自己的序号是 v,等于他前面已经传送过的数据的最后一个字节的序号加 1。此时客户机到服务器方向的连接就关闭了,但服务器若继续发送数据,客户机仍要接收,即服务器到客户机 方向的连接并未关闭。
- 若服务器已经没有要向客户机发送的数据,就发出连接释放报文段,FIN=1。
- 客户机收到释放报文段后,必须发出确认。在确认报文段中,ACK=1,ack=w+1,seq=u+1。此时 TCP 连接还未释放,必须经过时间等待计时器设置的时间 2MSL 后才进入连接关闭状态。
为什么不采用“三次握手”释放连接,且发送最后一次握手报文后要等待 2MSL 的时间呢?
原因有两个: - 保证 A 发送的最后一个报文段能够到达 B。如果 A 不等待 2MSL,若 A 返回的最后确认报文段丢失,则 B 不能进入正常关闭状态,而 A 此时已经关闭,也不可能再重传。
- 防止出现“已失效的连接请求报文段”。A 在发送最后一个确认报文段后,再经过 2MSL 可保证本连接持续的时间内所产生的所有报文段从网络中消失。造成错误的情形与不采用“两次握手”建立连接的情形相同。
注意:服务器结束 TCP 连接的时间要比客户端早一些,因为客户机最后要等待 2MSL 后才可进入 CLOSED 状态。总结如下: - 连接建立,分 3 步:
- SYN=1,seq=x
- SYN=1,ACK=1,seq=y,ack=x+1
- ACK=1,seq=x+1,ack=y+1
- 释放连接,分 4 步:
- FIN=1,seq=u
- ACK=1,seq=v,ack=u+1
- FIN=1,ACK=1,seq=w,ack=u+1
- ACK=1,seq=u+1,ack=w+1
5.3.4 TCP 可靠传输
序号
TCP 连接传送的数据流中的每个字节都编上一个序号。序号字段的值指本报文段所发送的数据的第一个字节的序号。
确认
TCP 首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号。
TCP 默认使用累计确认,即 TCP 只确认数据流至第一个丢失字节为止的字节。
重传
有两种事件会导致 TCP 对报文段进行重传:超时和冗余 ACK
超时
一个报文段发出的时间以及收到响应确认的时间之间的差成文报文段段往返时间(Round-Trip Time,RTT)
每收到一个新的 RTT 样本,就重新计算一次加权平均往返时间 RTTS :
新 RTTS = (1 − α) × (旧 RTTS ) + α × (新 RTT 样本)
式中 0 ≤ α < 1,RFC2988 推荐的 α 值为 0.125。
显然,超时计时器设置的超时重传时间(Restransmission Time-Out,RTO)应略大于上面的出的加权平均利率往返时间 RTTS :
RTO = RTTS + 4 × RTTD
式中,RTTD 是 RTT 的偏差的加权平均值:
新 RTTD = (1 − β) × (旧 RTTD) + β × |RTTS − 新 RTT 样本|
式中,β 是个小于 1 的系数,他的推荐值是 0.25。
冗余 ACK(冗余确认)
冗余 ACK 就是再次确认某个报文段的 ACK,而发送方先前已经收到过该报文段的确认。TCP 规定每当比期望序号大的失序报文段到达时,就发送一个冗余 ACK,指明下一个期待字节的序号[RFC 1122,RFC 2581]。
5.3.5 TCP 流量控制
接收窗口 rwnd:接收方根据目前接收缓存大小所许诺的最新窗口值,反映接收方的容量。
拥塞窗口 cwnd:发送方根据自己估算的网络用塞程度而设置的窗口值,反映网络的当前容量。
发送方的发送窗口取 rwnd 和 cwnd 中的最小值。(可以将发送窗口等同为拥塞窗口)
传输层定义端到端用户之间的流量控制,数据链路层定义两个中间的相邻结点的流量控制。数据链路层的滑动窗口协议的窗口大小不能动态变化,传输层的则可以动态变化。
5.3.6 TCP 拥塞控制
拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是指点对点的通信量的控制,即接收端控制发送端,它所要做的是抑制发送端发送数据的速率,以便接收端来得及接收。
4 种算法:慢开始、拥塞避免、快重传、快恢复。
慢开始和拥塞避免
慢开始算法
TCP 刚建立好并开始发送报文段时,先令拥塞窗口 cwnd=1,即一个最大报文段长度 MSS。每收到一个对新报文段的确认后,将 cwnd 加 1。
使用慢开始算法后,每经过一个传输轮次(即往返时延 RTT),拥塞窗口 cwnd 就会加倍,即 cwnd 的大小指数式增长,当增大到一个规定的慢开始门限 ssthresh(阈值),然后改用拥塞避免算法。(cwnd 不能越过 ssthresh)
拥塞避免算法
发送端的拥塞窗口 cwnd 每经过一个往返时延 RTT 就增加一个 MSS 的大小,而不是加倍,使 cwnd 按线性规律缓慢增长
(即加法增大),而每当出现一次超时(网络拥塞)时,令慢开始门限 ssthresh 等于当前 cwnd 的一半(即乘法减小)。
网络用塞的处理
无论是慢开始还是拥塞避免阶段,只要检测到超时,就把慢开始门限 ssthresh 设置为出现拥塞时的发送方 cwnd 值的一半(但不能小于 2)。然后把 cwnd 重新设置为 1,执行慢开始算法。
快重传和快恢复
快重传
当发送方连续收到三个重复的 ACK 报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。
快恢复
发送端收到连续三个冗余 ACK 时,执行“乘法减小”,把慢开始门限 ssthresh 设置为出现拥塞时发送方 cwnd 的一半,把 cwnd 设置为慢开始门限改变后的数值,然后开始执行拥塞避免算法。
在流量控制中,发送方发送数据的量由接收方决定,而在拥塞控制中,则由发送方自己通过监测网络状况来决定。
总结
- TCP 中端口号 80 标识 Web 服务器端 HTTP 进程,客户端访问 Web 服务器的 HTTP 进程的端口号由客户端的操作系统动态分配。
- 17 代表 UDP,6 代表 TCP
- ACK 应答信息中的窗口值为下一次在收到未确认之前可以发送的最佳字节数
- TCP 使用大小可变的滑动窗口机制来进行流量控制
- 拥塞窗口是发送端根据网络拥塞情况确定的窗口
- cwnd 的增加都发生在收到确认报文后
- 一条连接使用他们的套接字来表示,而之后再使用重复端口建立的连接会被阻止,但原连接仍可正常使用。
应用层
6.1 网络应用模型
6.1.1 客户/服务器模型
特点:
- 网络中个计算机地位不平等
- 客户机之间不直接通信
- 可扩展性不佳
6.1.2 P2P 模型
优点:
- 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可已将任务分配到各个结点上,因此大大提高了系统效率和资源利用率。
- 多个客户机之间可以直接共享文档。
- 可扩展性好
- 网络健壮性强
缺点:在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度。
总结 - 客户机是面向用户的,服务器是面向任务的。
- P2P 网络是一种动态的逻辑网络
6.2 域名系统
域名系统(Domain Name System,DNS)采用客户/服务器模型,其协议运行在 UDP 之上,使用 53 号端口。
6.2.1 层次域名空间
注意: - 标号中的英文不区分大小写
- 标号中除连字符(-)外不能使用其他的标点符号
- 每个标号不超过 63 个字符,多标号组成的完整域名最长不超过 255 个字符
- 级别最低的域名写在最左边,级别最高的顶级域名写在最右边
顶级域名(Top Level Domain,TLD)分为如下三大类: - 国家顶级域名:cn、us、uk、hk
- 通用顶级域名:com、net、org、gov
- 基础结构域名:arpa(该域名只有一个,用于反向域名解析,因此又称反向域名)
6.2.2 域名服务器
因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型。
根域名服务器
根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的 IP 地址。任何本地服务器只要自己无法解析,就首先求助于根域名服务器。根域名服务器通常并不直接把带查询的域名直接转换成 IP 地址,而是告诉本地域名服务下一步应该找哪个顶级域名服务器进行查询。
顶级域名服务器
这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。收到 DNS 查询请求时,就给出相应的回答(可能是最后结果,也可能是下一步应当查找的域名服务器的 IP 地址)。
授权域名服务器(权限域名服务器)
每台主机都必须在授权域名服务器处登记,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的 IP 地址。
本地域名服务器
当一台主机发出 DNS 查询请求时,这个请求就发送给该主机的本地域名服务器。
6.2.3 域名解析过程
域名解析是指把域名影射成 IP 地址或把 IP 地址影射成域名的过程,前者称为正向解析,后者称为反向解析。
域名解析有两种方式:递归查询和递归与迭代相结合的查询。由于递归查询方法给根域名服务器造成的负载过大,所以在实际中几乎不使用。
主机向本地域名服务器的查询采用的是递归查询,本地域名服务器向根域名服务器的查询采用迭代查询。
域名服务器中通常有高速缓存,因为主机名和 IP 地址之间的映射不是永久的,所以 DNS 服务器将在一段时间后丢弃高速缓存中的信息。
总结
- 每台主机都必须在授权域名服务器处注册登记,授权域名服务器一定能够将其管辖的主机转换为该主机的 IP 地址。
6.3 文件传输协议
6.3.1 FTP 的工作原理
文件传输协议(File Transfer Protocol,FTP)采用客户/服务器的工作方式,使用 TCP 可靠传输服务,熟知端口 21(控制端口)。
6.3.2 控制连接与数据连接
FTP 在工作时使用两个并行的 TCP 连接:一个是控制连接(端口号 21),一个是数据连接(端口号 20)
控制连接
控制连接用来传输控制信息(如连接请求、传送请求),并且控制信息都以 7 位 ASCII 格式传送。在传输文件时控制连接一直保持打开状态。
数据连接
服务器端的控制进程在接收到 FTP 客户发来的文件传输请求后,就创建“数据传送进程”和“数据连接”。
也称 FTP 的控制信息是带外(Out-of-band)传送的。
使用 FTP 时,若要修改服务器上的文件,则需要先将此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器。
网络文件系统(NFS)允许进程打开一个远程文件,并在该文件的某个特定位置开始读写数据。这样可使用户复制一个大文件中的一个很小的片段,而不必复制整个大文件。
总结 - 针对文件传输 FTP,系统管理员建立了一个特殊的用户 ID,名为 anonymous,即匿名用户。该用户 ID 的密码可以是任何字符串。
6.4 电子邮件
6.4.1 电子邮件系统的组成结构
电子邮件是一种异步通信方式。一个电子邮件系统应具有三个最主要的组成构件:用户代理、邮件服务器和电子邮件使用的协议
用户代理是用户与电子邮件系统的接口,实现撰写、显示和邮件处理的功能。
邮件服务器构成电子邮件系统的核心,其功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况。邮件服务器采用客户/服务器方式工作,但它能同时充当客户和服务器。
邮件发送协议和读取协议:邮件发送协议用于用户代理向服务器发送邮件,或在邮件服务器之间发送邮件,通常使用 SMTP;邮件读取协议用于用户代理从邮件服务器读取邮件,如 POP3。
SMTP 采用“推”的通信方式,主动推送;POP3 采用“拉”的通信方式,用户代理发起拉取请求。
6.4.2 电子邮件格式与 MIME
电子邮件格式
一个电子邮件分为信封和内容两大部分,内容又分首部和主体两部分。
多用途网际邮件扩充(MIME)
多用途网际邮件扩充(Multipurpose Internet Mail Extensions,MIME)增加了邮件主体的结构,定义了传送非 ASCII
码的编码规则。
6.4.3 SMTP 和 POP3
SMTP
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)采用客户/服务器工作方式,用的 TCP 连接,端口号为 25。两个服务器即使相隔再远也是直接连接的,不使用中间邮件服务器。
POP3
邮局协议(Post Office Protocol,POP),也使用客户/服务器的工作方式,在传输层使用 TCP,端口号为 110。
用户可选择“下载并保留”和“下载并删除”工作方式,如果选择“下载并删除”则邮件一旦读取就被从服务器上删除,用户不能再次读取。
另一个邮件接收协议是网际报文存取协议(IMAP),他要比 POP 复杂得多,但目前还只是因特网的建议标准。
用户浏览器与 Hotmail 或 Gmail 的邮件服务器之间的邮件发送或接收使用的是 HTTP,而仅在不同邮件服务器之间传送邮件时才使用 SMTP。
总结
- 发信人地址(From)、发送时间等由系统自动生成;收信人地址(To:)、邮件主题(Subject:)等由发件人输入。
- POP3 协议在传输层是使用明文来传输密码的,并不对密码进行加密。
6.5 万维网
6.5.1 www 的概念与组成结构
万维网(World Wide Web,WWW)的内核有三个标准构成: - 统一资源定位符(URL)
- 超文本传输协议(HTTP)
- 超文本标记语言(HyperText Markup Language,HTML)
URL 是对可以从因特网上得到的资源的位置和访问方法的一种简介表示,相当于一个文件名在网络范围的扩展。
一般形式:<协议>://<主机>:<端口>/<路径>
常见的协议由 http、ftp 等;主机可以是域名也可以是 IP 地址;端口和路径有时可以省略。URL 中不区分大小写。
6.5.2 超文本传输协议(HTTP)
HTTP 是面向事务(Transaction-oriented)的应用层协议。
HTTP 报文有两类:请求报文、响应报文
HTTP 的特点
HTTP 是无状态的。
通常使用 Cookie 加数据库的方式来跟踪用户的活动,Cookie 是一个存储在用户主机中的文本文件。
HTTP 本身是无连接的,即可使用非持久连接,也可使用持久连接(HTTP/1.1 支持)。
对于非持久连接,每个网页元素对象(如 JPEG 图形、Flash 等)等传输都需要单独建立一个 TCP 连接。
持久连接,是指万维网服务器在发送响应请求后仍然保持着条连接,使用同一个客户和服务器可以继续在这条连接上传送后续的 HTTP 请求与响应报文。
持久连接又分为非流水线和流水线两种方式。对非流水线,用户在收到前一个应答后才能发出下一个请求。HTTP/1.1 默认使用流水线的持久连接,每遇到一个对象引用就可立即发出请求,因而客户端可以逐个的连续发出对各个引用对象的请求。
HTTP 的报文结构
HTTP 是面向文本的(Text-Oriented),因此报文中的每个字段都是一些 ASCII 码串,并且每个字段的长度都是不确定的。
HTTP 的请求报文和响应报文都有三个部分组成:
- 开始行:用于区分是请求报文还是响应报文,最后的“CR”和“LF”分别代表“回车”和“换行”
- 首部行:首部行可以有几行,但可不使用。整个首部行结束时还有一空行将首部行与后面的实体主体分开
- 实体主体:在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段
总结 - 使用 HEAD 方法时服务器可对 HTTP 报文进行响应,但不会返回请求对象,其作用主要是调试。
- Connection:连接方式,Close 表明为非持续连接方式,keep-alive 表示持续连接方式。
线索串联
硬件设备
设备名称 工作层级 能否隔离冲突域 能否隔离广播域
放大器 物理层 × ×
设备名称 工作层级 能否隔离冲突域 能否隔离广播域
中继器 物理层 × ×
集线器 物理层 × ×
网桥 数据链路层 √ ×
局域网(以太网)交换机 数据链路层 √ ×
路由器 网络层 √ √
协议头部长度
协议名称 首部/封装信息长度
MAC 帧 18B
HDLC 6B
IP 20B
TCP 20B
UDP 8B
各层级数据类型名称
层级 名称
应用层 数据
传输层 数据段
网络层 数据报
链路层 数据帧
物理层 比特
常见应用层协议
应用程序 FTP 数据连接 FTP 控制连接 TELNET SMTP DNS TFTP HTTP POP3 SNMP
使用协议 TCP TCP TCP TCP UDP UDP TCP TCP UDP
熟知端口号 20 21 23 25 53 69 80 110 161
常用 8 位二进制数
十进制 二进制
240 11110000
十进制 二进制
224 11100000
192 11000000
172 10101100
168 10101000
128 10000000
127 01111111
64 01000000
32 00100000
16 00010000
名词解释
WAN(Wide Area Network):广域网
MAN(Metropolitan Area Network):城域网
LAN(Local Area Network):局域网
AN(Access Network):接入网
PAN(Personal Area Network):个人区域网
RFC(Request For Comment):RFC
SAP(Services Access Point):服务访问点
物理层
STP:屏蔽双绞线
UDP:非屏蔽双绞线
Hub:集线器
数据链路层
CRC(Cyclic Redundancy Code):循环冗余校验
ARQ(Automatic Repeat reQuest):自动重传请求
FEC(Forward Error Correction):前向纠错
ACK:确认帧
MAC(Medium Access Control):介质访问控制
FDM:频分多路复用
TDM:时分多路复用
STDM:统计时分多路复用(异步时分多路复用)
WDM:波分多路复用
CDM:码分多路复用
CDMA(Code Division Multiple Access):码分多址
ALOHA(Additive Link On-line HAwaii System):ALOHA 协议
CSMA/CD(Carrier Sense Multiple Access with Collision Detection):载波帧多路访问/碰撞检测
PPP(Point-to-Point Protocol):点对点协议
HDLC(High-level Data Link Control):高级数据链路控制
VLAN(Virtual LAN):虚拟局域网
协议
应用层:HTTP、SMTP、DNS、RTP、DHCP、RIP
传输层:TCP、UDP
网络层:IP、IPX、ICMP、IGMP、ARP、RARP、OSPF
数据链路层:SDLC、HDLC、PPP、STP
物理层接口标准:EIA-232C、EIA-TIA、RS-499、CCITT 的 X.21
网络层
P( Internet Protocol ) :网际协议
TTL :生存时间
MTU :最大传送单元
NAT :网络地址转换
CIDR :无分类域间路由选择
ARP :地址解析协议( Address Resolution Protocol )
DHCP( Dynamic Host Configuration Protocol ) :动态主机配置协议
ICMP( internet Control Message Protocol ) :网际控制报文协议
AS :自治系统( Autonomous System )
IGP( Interior Gateway Protocol ) :内部网关协议
EGP( External Gateway Protocol ) :外部网关协议
RIP( Routing Information Protocol ) :路由信息协议
OSPF :开放最短路径优先
BGP( Border Gateway Protocol ) :边界网关协议
IGMP( Internet Group Management Protocol):因特网组管理协议
传输层
UDP( User Datagram Protocol ) :用户数据报协议
TCP( Transmission Control Protocol ) :传输控制协议
MSS( Maximum Segment Size ) :最大报文段长度
RTT( Round-Trip Time ) :往返时间
RTO( Retransmission Time-Out ) :超时重传时间
应用层
C/S( Client/Server ) :客户/服务器
DNS( Domain Name System ) :域名系统
FTP( File Transfer Protocol ) :文件传输协议
NFS :网络文件系统
MIME( Multipurpose Internet Mail Extensions) :多用途网络邮件扩充
SMTP( Simple Mail Transfer Protocol ) :简单邮件传输协议
POP( Post Office Protocol ) :邮局协议
WWW(World Wide Web):万维网
HTTP :超文本传输协议
URL :统一资源定位符
HTML( HyperText Markup Language ) :超文本标记语言
SNMP( Simple Network Management Protocol ) :简单网络管理协议
视频、音频与无线网络
TP( Real-Time Transport Protocol) :实时运输协议
RTCP( RTP Control Protocol ) :实时运输控制协议
QoS( Quality of Service ) :服务质量
IntServ :综合服务
DiffServ :区分服务
设备
物理层:中继器、集线器(Hub)
数据链路层:网桥、局域网交换机
网络层:路由器
发送时延 传播时延
发送时延=数据帧长度(bit)/发送速率(bit/s)
传播时延=信道长度(m)/电磁波在信道上的传播速度(m/s)
802.11 无线局域网帧间间隔:SIFS、PIFS、DIFS、EIFS
24 路(T1):1.544Mbit/s
30/32 路(E1):2.048Mbit/s(我国)
常见应用层协议
应用程序 | FTP 数据连接 | FTP 控制连接 | TELNET | SMTP | DNS | TFTP | HTTP | POP3 | SNMP |
---|---|---|---|---|---|---|---|---|---|
使用协议 | TCP | TCP | TCP | TCP | UDP | UDP | TCP | TCP | UDP |
熟知端口号 | 20 | 21 | 23 | 25 | 53 | 69 | 80 | 110 | 161 |
名词解释
计算机网络体系结构
- WAN:广域网
- MAN:城域网
- LAN:局域网
- PAN:个人区域网
- RFC:RFC(Request For Comments)
- SAP:服务访问点(Service Access Point)
物理层 - STP:屏蔽双绞线
- UTP:非屏蔽双绞线
- Hub:集线器
数据链路层 - CRC:循环冗余校验(Cyclic Redundancy Code)
- ARQ:自动重传请求(Automatic Repeat reQuest)
- FEC:前向纠错(Forward Error Correction)
- ACK:确认帧
- MAC: 介质访问控制(Medium Access Control)
- FDM: 频分多路复用
- TDM:时分多路复用
- STDM:统计时分多路复用(异步时分多路复用)
WDM:波分多路复用
CDM:码分多路复用
- CDMA:码分多址(Code Division Multiple Access)
- ALOHA:ALOHA 协议(Additive Link On-line HAwaii system)
- CSMA/CD:载波帧听多路访问/碰撞检测(Carrier Sense Multiple Access with Collision Detection)
- PPP:点对点协议(Point-to-Point Protocol)
- HDLC:高级数据链路控制(High-level Data Link Control)
- VLAN:虚拟局域网(Virtual LAN)
网络层 - IP:网际协议(Internet Protocol)
- TTL:生存时间
- MTU:最大传送单元
- NAT:网络地址转换
- CIDR:无分类域间路由选择
- ARP:地址解析协议(Address Resolution Protocol)
- DHCP:动态主机配置协议(Dynamic Host Configuration Protocol)
- ICMP:网际控制报文协议(Internet Control Message Protocol)
- AS:自治系统(Autonomous System)
- IGP:内部网关协议(Interior Gateway Protocol)
- EGP:外部网关协议(External Gateway Protocol)
- RIP:路由信息协议(Routing Information Protocol)
- OSPF:开放最短路径优先
- BGP:边界网关协议(Border Gateway Protocol)
- IGMP:因特网组管理协议(Internet Group Management Protocol)
传输层 - UDP:用户数据报协议(User Datagram Protocol)
- TCP:传输控制协议(Transmission Control Protocol)
- MSS:最大报文段长度(Maximum Segment Size)
- RTT:往返时间(Round-Trip Time)
- RTO:超时重传时间(Retransmission Time-Out)
应用层 - C/S:客户/服务器(Client/Server)
- DNS:域名系统(Domain Name System)
- FTP:文件传输协议(File Transfer Protocol)
- NFS:网络文件系统
- MIME:多用途网络邮件扩充(Multipurpose Internet Mail Extensions)
- SMTP:简单邮件传输协议(Simple Mail Transfer Protocol)
- POP:邮局协议(Post Office Protocol)
- WWW:万维网(World Wide Web)
- HTTP:超文本传输协议
- URL:统一资源定位符
- HTML:超文本标记语言(HyperText Markup Language)
- SNMP:简单网络管理协议(Simple Network Management Protocol )
视频、音频与无线网络 RTP:实时运输协议(Real-Time Transport Protocol)
RTCP:实时运输控制协议(RTP Control Protocol)
- QoS:服务质量(Quality of Service)
- IntServ:综合服务
- DiffServ:区分服务
参考资料
《2020 王道计算机网络》
《计算机网络》(第六版),谢希仁,电子工业出版社,2013 年。