第 1 章 概述
1.3 互联网的组成
1.6 计算机网络的性能
1.7 计算机网络的体系结构
1.3 互联网的组成
(1) 边缘部分: 由所有连接在互联网上的主机组成。
(2) 核心部分:由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
1.3.1 互联网的边缘部分
端系统之间的通信方式通常可划分为两大类:
客户服务器方式(C/S 方式)
即Client/Server方式,简称为 C/S 方式。
对等方式(P2P 方式)
即 Peer-to-Peer方式 ,简称为 P2P 方式。
1.3.2 互联网的核心部分
网络中的核心部分要向网络边缘中的大量主机提供连通性。
在网络核心部分的主要设备是路由器 (router)。
路由器是实现分组交换 (packet switching) 的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
2. 分组交换的主要特点
分组交换则采用存储转发技术。
在发送端,先把较长的报文划分成较短的、固定长度的数据段。
每一个数据段前面添加上首部构成分组(packet)。
每个分组在互联网中独立地选择传输路径。
用存储转发方式,最后分组到达最终目的地。
在接收端把收到的数据恢复成为原来的报文。
1.6.1 计算机网络的性能指标
计算机网络的性能一般是指它的几个重要的性能指标,主要包括:
速率
带宽
吞吐率
时延
时延带宽积
往返时间 RTT
利用率
速率
速率是计算机网络中最重要的一个性能指标,指的是数据的传送速率,它也称为数据率 (data rate)或比特率 (bit rate)。
速率的单位是 bit/s,或 kbit/s、Mbit/s、 Gbit/s 等。例如 4 1010 bit/s 的数据率就记为 40 Gbit/s。
速率往往是指额定速率或标称速率,非实际运行速率。
带宽
两种不同意义:
“带宽”(bandwidth) 本来是指信号具有的频带宽度,其单位是赫(或千赫、兆赫、吉赫等)。
在计算机网络中,带宽用来表示网络中某通道传送数据的能力。表示在单位时间内网络中的某信道所能通过的“最高数据率”。单位是 bit/s ,即 “比特每秒”。
吞吐量
吞吐量 (throughput) 表示在单位时间内通过某个网络(或信道、接口)的数据量。
吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。
吞吐量受网络的带宽或网络的额定速率的限制。
时延 (delay 或 latency)
时延 (delay 或 latency) 是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。
有时也称为延迟或迟延。
网络中的时延由以下几个不同的部分组成:
(1) 发送时延
(2) 传播时延
(3) 处理时延
(4) 排队时延
时延 (delay 或 latency)
(1) 发送时延
也称为传输时延。
发送数据时,数据帧从结点进入到传输媒体所需要的时间。
也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
时延 (delay 或 latency)
(2) 传播时延
电磁波在信道中需要传播一定的距离而花费的时间。
发送时延与传播时延有本质上的不同。
信号发送速率和信号在信道上的传播速率是完全不同的概念。
时延 (delay 或 latency)
(3) 处理时延
主机或路由器在收到分组时,为处理分组(例如分析首部、提取数据、差错检验或查找路由)所花费的时间。
(4) 排队时延
分组在路由器输入输出队列中排队等待处理所经历的时延。
排队时延的长短往往取决于网络中当时的通信量。
时延 (delay 或 latency)
数据在网络中经历的总时延就是发送时延、传播时延、处理时延和排队时延之和。
四种时延所产生的地方
往返时间 RTT
互联网上的信息不仅仅单方向传输,而是双向交互的。因此,有时很需要知道双向交互一次所需的时间。
往返时间表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。
在互联网中,往返时间还包括各中间结点的处理时延、排队时延以及转发数据时的发送时延。
当使用卫星通信时,往返时间 RTT 相对较长,是很重要的一个性能指标。
利用率
分为信道利用率和网络利用率。
信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。
网络利用率则是全网络的信道利用率的加权平均值。
信道利用率并非越高越好。当某信道的利用率增大时,该信道引起的时延也就迅速增加。
时延与网络利用率的关系
1.7 计算机网络的体系结构
1.7.1 计算机网络体系结构的形成
1.7.2 协议与划分层次
1.7.3 具有五层协议的体系结构
1.7.4 实体、协议、服务和服务访问点
1.7.5 TCP/IP 的体系结构
1.7.1 计算机网络体系结构的形成
计算机网络是个非常复杂的系统。
相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的。
“分层”可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
计算机网络的各层及其协议的集合就是网络的体系结构
1.7.2 协议与划分层次
计算机网络中的数据交换必须遵守事先约定好的规则。
这些规则明确规定了所交换的数据的格式以及有关的同步问题(同步含有时序的意思)。
网络协议 (network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。
网络协议的三个组成要素
语法:数据与控制信息的结构或格式 。
语义:需要发出何种控制信息,完成何种动作以及做出何种响应。
同步:事件实现顺序的详细说明。
1.7.3 具有五层协议的体系结构
OSI 的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用。
TCP/IP 是四层体系结构:应用层、运输层、网际层和网络接口层。
但最下面的网络接口层并没有具体内容。
因此往往采取折中的办法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构 。
1.7.3 具有五层协议的体系结构
主机 1 向主机 2 发送数据
第 2 章 物理层
第 2 章 物理层
2.1 物理层的基本概念
2.2 数据通信的基础知识
2.3 物理层下面的传输媒体
2.4 信道复用技术
2.2 数据通信的基础知识
2.2.1 数据通信系统的模型
2.2.2 有关信道的几个基本概念
2.2.3 信道的极限容量
常用术语
数据 (data) —— 运送消息的实体。
信号 (signal) —— 数据的电气的或电磁的表现。
模拟信号 (analogous signal) —— 代表消息的参数的取值是连续的。
数字信号 (digital signal) —— 代表消息的参数的取值是离散的。
码元 (code) —— 在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形。
2.2.2 有关信道的几个基本概念
信道 —— 一般用来表示向某一个方向传送信息的媒体。
单向通信(单工通信)——只能有一个方向的通信而没有反方向的交互。
双向交替通信(半双工通信)——通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)。
双向同时通信(全双工通信)——通信的双方可以同时发送和接收信息。
2.2.2 有关信道的几个基本概念
基带信号(即基本频带信号)—— 来自信源的信号。像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。
基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。因此必须对基带信号进行调制 (modulation)。
2.2.2 有关信道的几个基本概念
调制分为两大类:
基带调制:仅对基带信号的波形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。把这种过程称为编码 (coding)。
带通调制:使用载波 (carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输(即仅在一段频率范围内能够通过信道) 。
带通信号 :经过载波调制后的信号。
(2) 基本的带通调制方法
基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。为了解决这一问题,就必须对基带信号进行调制 (modulation)。
最基本的二元制调制方法有以下几种:
调幅(AM):载波的振幅随基带数字信号而变化。
调频(FM):载波的频率随基带数字信号而变化。
调相(PM) :载波的初始相位随基带数字信号而变化。
(2) 基本的带通调制方法
2.2.3 信道的极限容量
任何实际的信道都不是理想的,在传输信号时会产生各种失真以及带来多种干扰。
码元传输的速率越高,或信号传输的距离越远,或传输媒体质量越差,在信道的输出端的波形的失真就越严重。
2.2.3 信道的极限容量
从概念上讲,限制码元在信道上的传输速率的因素有以下两个:
信道能够通过的频率范围
信噪比
(2) 信噪比
噪声存在于所有的电子设备和通信信道中。
噪声是随机产生的,它的瞬时值有时会很大。因此噪声会使接收端对码元的判决产生错误。
但噪声的影响是相对的。如果信号相对较强,那么噪声的影响就相对较小。
信噪比就是信号的平均功率和噪声的平均功率之比。常记为 S/N,并用分贝 (dB) 作为度量单位。即:
信噪比(dB) = 10 log10(S/N) (dB)
例如,当 S/N = 10 时,信噪比为 10 dB,而当 S/N = 1000时,信噪比为 30 dB。
(2) 信噪比
1984年,香农 (Shannon) 用信息论的理论推导出了带宽受限且有高斯白噪声干扰的信道的极限、无差错的信息传输速率(香农公式)。
信道的极限信息传输速率 C 可表达为:
C = W log2(1+S/N) (bit/s)
其中: W 为信道的带宽(以 Hz 为单位);
S 为信道内所传信号的平均功率;
N 为信道内部的高斯噪声功率。
香农公式表明
信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。
只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种办法来实现无差错的传输。
若信道带宽 W 或信噪比 S/N 没有上限(当然实际信道不可能是这样的),则信道的极限信息传输速率 C 也就没有上限。
实际信道上能够达到的信息传输速率要比香农的极限传输速率低不少。
2.3 物理层下面的传输媒体
2.3.1 导引型传输媒体
双绞线
同轴电缆
光缆
2.3.2 非导引型传输媒体
自由空间
2.4 信道复用技术
2.4.1 频分复用、时分复用和统计时分复用
2.4.2 波分复用
2.4.3 码分复用
频分复用 FDM
(Frequency Division Multiplexing)
将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
频分复用的所有用户在同样的时间占用不同的带宽资源(请注意,这里的“带宽”是频率带宽而不是数据的发送速率)。
时分复用TDM
(Time Division Multiplexing)
时分复用则是将时间划分为一段段等长的时分复用帧(TDM 帧)。每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙。
每一个用户所占用的时隙是周期性地出现(其周期就是 TDM 帧的长度)。
TDM 信号也称为等时(isochronous)信号。
时分复用的所有用户是在不同的时间占用同样的频带宽度。
时分复用TDM
2.4.2 波分复用 WDM
(Wavelength Division Multiplexing)
2.4.3 码分复用 CDM
(Code Division Multiplexing)
常用的名词是码分多址 CDMA
(Code Division Multiple Access)。
各用户使用经过特殊挑选的不同码型,因此彼此不会造成干扰。
这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
码片序列(chip sequence)
每一个比特时间划分为 m 个短的间隔,称为码片 (chip)。
每个站被指派一个唯一的 m bit 码片序列。
如发送比特 1,则发送自己的 m bit 码片序列。
如发送比特 0,则发送该码片序列的二进制反码。
例如,S 站的 8 bit 码片序列是 00011011。
发送比特 1 时,就发送序列 00011011,
发送比特 0 时,就发送序列 11100100。
S 站的码片序列:(–1 –1 –1 +1 +1 –1 +1 +1)
CDMA 的重要特点
每个站分配的码片序列不仅必须各不相同,并且还必须互相正交 (orthogonal)。
在实用的系统中是使用伪随机码序列。
码片序列的正交关系
令向量 S 表示站 S 的码片向量,令 T 表示其他任何站的码片向量。
两个不同站的码片序列正交,就是向量 S 和T 的规格化内积 (inner product) 等于 0:
正交关系的另一个重要特性
任何一个码片向量和该码片向量自己的规格化内积都是 1 。
一个码片向量和该码片反码的向量的规格化内积值是 –1。
第 3 章 数据链路层
第 3 章 数据链路层
3.1 使用点对点信道的数据链路层
3.3 使用广播信道的数据链路层
3.4 扩展的以太网
3.1.2 三个基本问题
数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是:
(1) 封装成帧
(2) 透明传输
(3) 差错控制
封装成帧
封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
首部和尾部的一个重要作用就是进行帧定界。
用控制字符进行帧定界的方法举例
当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。
控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。
透明传输
如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”。
解决透明传输问题
解决方法:字节填充 (byte stuffing) 或字符填充 (character stuffing)。
发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC” (其十六进制编码是 1B)。
接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
差错检测
在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
误码率与信噪比有很大的关系。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
循环冗余检验的原理
在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。
帧检验序列 FCS
在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。
循环冗余检验 CRC 和帧检验序列 FCS 并不等同。
CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
3.2 点对点协议 PPP
3.2.1 PPP 协议的特点
3.2.2 PPP 协议的帧格式
3.2.3 PPP 协议的工作状态
3.2.1 PPP 协议的特点
对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
用户使用拨号电话线接入互联网时, 用户计算机和 ISP 进行通信时所使用的数据链路层协议就是 PPP 协议。
PPP 协议在1994年就已成为互联网的正式标准。
CSMA/CD 重要特性
使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
争用期
最先发送数据帧的站,在发送数据帧后至多经过时间 2 (两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。
以太网的端到端往返时延 2 称为争用期,或碰撞窗口。
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
二进制指数类型退避算法
(truncated binary exponential type)
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。
基本退避时间取为争用期 2。
从整数集合[0,1,…, (2k 1)]中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间。
参数 k 按下面的公式计算:
k = Min[重传次数, 10]
当 k 10 时,参数 k 等于重传次数。
当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。
争用期的长度
10 Mbit/s 以太网取 51.2 s 为争用期的长度。
对于 10 Mbit/s 以太网,在争用期内可发送 512 bit,即 64 字节。
最短有效帧长
如果发生冲突,就一定是在发送的前 64 字节之内。
由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节。
以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。
强化碰撞
当发送数据的站一旦发现发生了碰撞时:
(1) 立即停止发送数据;
(2) 再继续发送若干比特的人为干扰信号 (jamming signal),以便让所有用户都知道现在已经发生了碰撞。
人为干扰信号
CSMA/CD协议的要点
(1) 准备发送。但在发送之前,必须先检测信道。
(2) 检测信道。若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在 96 比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
(3) 检查碰撞。在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
①发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到 (1)。
②发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待 r 倍 512 比特时间后,返回到步骤 (2),继续检测信道。但若重传达 16 次仍不能成功,则停止重传而向上报错。
3.3.5 以太网的 MAC 层
重点介绍:
1. MAC 层的硬件地址
2. MAC 帧的格式
适配器检查 MAC 地址
适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址。
如果是发往本站的帧则收下,然后再进行其他的处理。
否则就将此帧丢弃,不再进行其他的处理。
“发往本站的帧”包括以下三种帧:
单播 (unicast) 帧(一对一)
广播 (broadcast) 帧(一对全体)
多播 (multicast) 帧(一对多)
适配器检查 MAC 地址
所有的适配器都至少能够识别前两种帧,即能够识别单播地址和广播地址。
有的适配器可用编程方法识别多播地址。
只有目的地址才能使用广播地址和多播地址。
以混杂方式 (promiscuous mode) 工作的以太网适配器只要“听到”有帧在以太网上传输就都接收下来。
2. MAC 帧的格式
常用的以太网 MAC 帧格式有两种标准 :
DIX Ethernet V2 标准
IEEE 的 802.3 标准
最常用的 MAC 帧是以太网 V2 的格式。
以太网 V2 的 MAC 帧格式
无效的 MAC 帧
数据字段的长度与长度字段的值不一致;
帧的长度不是整数个字节;
用收到的帧检验序列 FCS 查出有差错;
数据字段的长度不在 46 ~ 1500 字节之间。
有效的 MAC 帧长度为 64 ~ 1518 字节之间。
3.4 扩展的以太网
3.4.1 在物理层扩展以太网
使用集线器
形成更大的碰撞域
3.4.2 在数据链路层扩展以太网
使用交换机
减少碰撞
按照以下自学习算法
处理收到的帧和建立交换表
B 通过接口 3 向 A 发送一帧。
交换机查找交换表,发现交换表中的 MAC 地址有 A。表明要发送给A的帧(即目的地址为 A 的帧)应从接口1转发。于是就把这个帧传送到接口 1 转发给 A。显然,现在已经没有必要再广播收到的帧。
交换表这时新增加的项目 (B, 3),表明今后如有发送给 B 的帧,就应当从接口 3 转发出去。
经过一段时间后,只要主机 C 和 D 也向其他主机发送帧,以太网交换机中的交换表就会把转发到 C 或 D 应当经过的接口号(2 或 4)写入到交换表中。
按照以下自学习算法
处理收到的帧和建立交换表
交换机自学习和转发帧的步骤归纳
交换机收到一帧后先进行自学习。查找交换表中与收到帧的源地址有无相匹配的项目。
如没有,就在交换表中增加一个项目(源地址、进入的接口和有效时间)。
如有,则把原有的项目进行更新(进入的接口或有效时间)。
转发帧。查找交换表中与收到帧的目的地址有无相匹配的项目。
如没有,则向所有其他接口(进入的接口除外)转发。
如有,则按交换表中给出的接口进行转发。
若交换表中给出的接口就是该帧进入交换机的接口,则应丢弃这个帧(因为这时不需要经过交换机进行转发)。
第 4 章 网络层
第 4 章 网络层
4.2 网际协议 IP
4.3 划分子网和构造超网
4.4 网际控制报文协议 ICMP
4.5 互联网的路由选择协议
4.6 IPv6
4.2 网际协议 IP
4.2.1 虚拟互连网络
4.2.2 分类的 IP 地址
4.2.3 IP 地址与硬件地址
4.2.4 地址解析协议 ARP
4.2.5 IP 数据报的格式
4.2.6 IP 层转发分组的流程
4.2 网际协议 IP
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。
与 IP 协议配套使用的还有三个协议:
地址解析协议 ARP
(Address Resolution Protocol)
网际控制报文协议 ICMP
(Internet Control Message Protocol)
网际组管理协议 IGMP
(Internet Group Management Protocol)
网际层的 IP 协议及配套协议
4.2.2 分类的 IP 地址
在 TCP/IP 体系中,IP 地址是一个最基本的概念。
本部分重点学习:
1. IP 地址及其表示方法
2. 常用的三种类别的 IP 地址
IP 地址的编址方法
分类的 IP 地址。这是最基本的编址方法,在 1981 年就通过了相应的标准协议。
子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950] 在 1985 年通过。
构成超网。这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用。
分类 IP 地址
将IP地址划分为若干个固定类。
每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。
主机号在它前面的网络号所指明的网络范围内必须是唯一的。
由此可见,一个 IP 地址在整个互联网范围内是唯一的。
分类 IP 地址
这种两级的 IP 地址结构如下:
这种两级的 IP 地址可以记为:
各类 IP 地址的网络号字段和主机号字段
点分十进制记法
2. 常用的三种类别的 IP 地址
一般不使用的特殊的 IP 地址
4.2.3 IP 地址与硬件地址
IP 地址与硬件地址是不同的地址。
从层次的角度看,
硬件地址(或物理地址)是数据链路层和物理层使用的地址。
IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)。
4.2.3 IP 地址与硬件地址
主机 H1 与 H2 通信中使用的
IP地址 与 硬件地址HA
地址解析协议 ARP 的作用
已经知道了一个机器(主机或路由器)的IP地址,如何找出其相应的硬件地址?
地址解析协议 ARP 就是用来解决这样的问题的。
地址解析协议 ARP 要点
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
地址解析协议 ARP 要点
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。
地址解析协议 ARP 要点
ARP请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。
本地广播 ARP 请求(路由器不转发ARP请求)。
ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。
ARP 分组封装在物理网络的帧中传输。
ARP 高速缓存的作用
存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量。
为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。
当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。
4.2.5 IP 数据报的格式
一个 IP 数据报由首部和数据两部分组成。
首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的。
【例4-1】 IP 数据报分片
一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。
因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。
于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。
原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。
【例4-1】 IP 数据报分片
【例4-1】 IP 数据报分片
4.3 划分子网和构造超网
4.3.1 划分子网
4.3.2 使用子网时分组的转发
4.3.3 无分类编址 CIDR(构造超网)
4.3.1 划分子网
划分子网的基本思路(续)
凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
最后就将 IP 数据报直接交付目的主机。
一个未划分子网的 B 类网络145.13.0.0
划分为三个子网后对外仍是一个网络
划分子网后变成了三级结构
当没有划分子网时,IP 地址是两级结构。
划分子网后 IP 地址就变成了三级结构。
划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。
划分子网后变成了三级结构
优点
减少了 IP 地址的浪费
使网络的组织更加灵活
更便于维护和管理
划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络。
2. 子网掩码
从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
规则:
子网掩码长度=32位
某位=1:IP地址中的对应位为网络号和子网号
某位=0:IP地址中的对应位为主机号
IP 地址的各字段和子网掩码
(IP 地址) AND (子网掩码) =网络地址
默认子网掩码
【例4-4】已知互联网和路由器 R1 中的路由表。主机 H1 向 H2 发送分组。试讨论 R1 收到 H1
向 H2 发送的分组后查找路由表的过程。
主机 H1 要发送分组给 H2
主机 H1 首先将
本子网的子网掩码 255.255.255.128
与分组的 IP 地址 128.30.33.138 逐比特相“与”(AND 操作)
因此 H1 必须把分组传送到路由器 R1
然后逐项查找路由表
路由器 R1 收到分组后就用路由表中第 1 个项目的
子网掩码和 128.30.33.138 逐比特 AND 操作
路由器 R1 收到分组后就用路由表中第 1 个项目的
子网掩码和 128.30.33.138 逐比特 AND 操作
4.3.3 无分类编址 CIDR
CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24
CIDR 地址块
CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。
128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。
这个地址块的起始地址是 128.14.32.0。
在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。
128.14.32.0/20 地址块的最小地址:128.14.32.0
128.14.32.0/20 地址块的最大地址:128.14.47.255
全 0 和全 1 的主机号地址一般不使用。
128.14.32.0/20 表示的地址(212 个地址)
路由聚合 (route aggregation)
一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
路由聚合也称为构成超网 (supernetting)。
CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。
CIDR 记法的其他形式
10.0.0.0/10 可简写为 10/10,也就是把点分十进制中低位连续的 0 省略。
10.0.0.0/10 隐含地指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0。此掩码可表示为:
网络前缀的后面加一个星号 * 的表示方法,如 00001010 00*,在星号 * 之前是网络前缀,而星号 * 表示 IP 地址中的主机号,可以是任意值。
2. 最长前缀匹配
使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。
应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配 (longest-prefix matching)。
网络前缀越长,其地址块就越小,因而路由就越具体 (more specific) 。
最长前缀匹配又称为最长匹配或最佳匹配。
4.4 网际控制报文协议 ICMP
4.4.1 ICMP 报文的种类
4.4.2 ICMP 的应用举例
4.4 网际控制报文协议ICMP
为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
ICMP 是互联网的标准协议。
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。
4.4.1 ICMP 报文的种类
ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
4.4.2 ICMP的应用举例
PING (Packet InterNet Groper)
PING 用来测试两个主机之间的连通性。
PING 使用了 ICMP 回送请求与回送回答报文。
PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
PING 的应用举例
4.4.2 ICMP的应用举例
Traceroute 的应用举例
在 Windows 操作系统中这个命令是 tracert。
用来跟踪一个分组从源点到终点的路径。
它利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪。
4.4.2 ICMP的应用举例
4.5 互联网的路由选择协议
4.5.1 有关路由选择协议的几个基本概念
4.5.2 内部网关协议 RIP
4.5.3 内部网关协议 OSPF
4.5.4 外部网关协议 BGP
自治系统 AS
(Autonomous System)
• 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
• 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
互联网有两大类路由选择协议
内部网关协议 IGP (Interior Gateway Protocol)
在一个自治系统内部使用的路由选择协议。
目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
外部网关协议 EGP (External Gateway Protocol)
若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。
在外部网关协议中目前使用最多的是 BGP-4。
互联网的路由选择协议
内部网关协议 IGP:具体的协议有多种,如 RIP 和 OSPF 等。
外部网关协议 EGP:目前使用的协议就是 BGP。
互联网的路由选择协议
RIP
只适合小规模网络
“好消息传得快,坏消息传得慢”
OSPF
使用Dijkstra最短路径算法
4.6 IPv6
4.6.1 IPv6的基本首部
4.6.2 IPv6的地址
4.6.3 从IPv4向IPv6过渡
4.6.4 ICMPv6
4.6 IPv6
IP 是互联网的核心协议。
互联网经过几十年的飞速发展,到2011年2月,IPv4 的 32 位地址已经耗尽。
ISP 已经不能再申请到新的 IP 地址块了。
我国在2014-2015年也逐步停止了向新用户和应用分配 IPv4 地址。
解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。
4.6.1 IPv6 的基本首部
IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。为方便起见,本书仍采用数据报这一名词。
所引进的主要变化如下:
更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
扩展的地址层次结构。
灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
4.6.1 IPv6 的基本首部
所引进的主要变化如下(续):
允许协议继续扩充。
支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。
支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。
IPv6 数据报的一般形式
IPv6数据报由两大部分组成:
基本首部 (base header)
有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。
IPv6 数据报的基本首部
IPv6 将首部长度变为固定的 40 字节,称为基本首部。
把首部中不必要的功能取消了,使得 IPv6 首部的字段数减少到只有 8 个。
IPv6 对首部中的某些字段进行了如下的更改:
冒号十六进制记法
在IPv6中,每个地址占 128 位,地址空间大于 3.41038 。
为了使地址再稍简洁些,IPv6 使用冒号十六进制记法(colon hexadecimal notation, 简写为colon hex)。
每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
在十六进制记法中,允许把数字前面的0省略。例如把0000中的前三个0省略,写成1个0。
零压缩
冒号十六进制记法可以允许零压缩 (zero compression),即一连串连续的零可以为一对冒号所取代。
FF05:0:0:0:0:0:0:B3 可压缩为:
FF05::B3
注意:在任一地址中只能使用一次零压缩。
点分十进制记法的后缀
冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在 IPv4 向 IPv6 的转换阶段特别有用。
例如:0:0:0:0:0:0:128.10.2.1
再使用零压缩即可得出: ::128.10.2.1
CIDR 的斜线表示法仍然可用。
例如:60 位的前缀 12AB00000000CD3 可记为:
12AB:0000:0000:CD30:0000:0000:0000:0000/60
或 12AB::CD30:0:0:0:0/60 (零压缩)
或 12AB:0:0:CD30::/60 (零压缩)
第 5 章 运输层
第 5 章 运输层
5.1 运输层协议概述
5.2 用户数据报协议 UDP
5.3 传输控制协议 TCP 概述
5.4 可靠传输的工作原理
5.5 TCP 报文段的首部格式
5.6 TCP 可靠传输的实现
5.7 TCP 的流量控制
5.8 TCP 的拥塞控制
5.9 TCP 的运输连接管理
5.1 运输层协议概述
5.1.1 进程之间的通信
5.1.2 运输层的两个主要协议
5.1.3 运输层的端口
运输层的作用
5.1.2 运输层的两个主要协议
TCP/IP 的运输层有两个主要协议:
(1) 用户数据报协议 UDP (User Datagram Protocol)
(2) 传输控制协议 TCP (Transmission Control Protocol)
TCP 与 UDP
UDP:一种无连接协议
提供无连接服务。
在传送数据之前不需要先建立连接。
传送的数据单位协议是 UDP 报文或用户数据报。
对方的运输层在收到 UDP 报文后,不需要给出任何确认。
虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。
TCP 与 UDP
TCP:一种面向连接的协议
提供面向连接的服务。
传送的数据单位协议是 TCP 报文段 (segment)。
TCP 不提供广播或多播服务。
由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
端口号 (protocol port number)
解决这个问题的方法就是在运输层使用协议端口号 (protocol port number),或通常简称为端口 (port)。
端口用一个 16 位端口号进行标志。
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。
在互联网中,不同计算机的相同端口号是没有联系的。
5.2 用户数据报协议 UDP
5.2.1 UDP 概述
5.2.2 UDP 的首部格式
UDP 的主要特点
(1) UDP 是无连接的,发送数据之前不需要建立连接,,因此减少了开销和发送数据之前的时延。
(2) UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
(3) UDP 是面向报文的。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文。
(4) UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求。
UDP 的主要特点
(5) UDP 支持一对一、一对多、多对一和多对多的交互通信。
(6) UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。
UDP 是面向报文的
5.2.2 UDP 的首部格式
5.3 传输控制协议 TCP 概述
5.3.1 TCP 最主要的特点
5.3.2 TCP 的连接
5.3.1 TCP 最主要的特点
TCP 是面向连接的运输层协议。
每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。
TCP 提供可靠交付的服务。
TCP 提供全双工通信。
面向字节流
TCP 中的“流”(stream)指的是流入或流出进程的字节序列。
“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。
5.3.2 TCP 的连接
TCP 把连接作为最基本的抽象。
每一条 TCP 连接有两个端点。
TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字 (socket) 或插口。
端口号拼接到 (contatenated with) IP 地址即构成了套接字。
套接字 (socket)
5.4 可靠传输的工作原理
5.4.1 停止等待协议
5.4.2 连续 ARQ 协议
无差错情况
出现差错
在接收方 B 会出现两种情况:
B 接收 M1 时检测出了差错,就丢弃 M1,其他什么也不做(不通知 A 收到有差错的分组)。
M1 在传输过程中丢失了,这时 B 当然什么都不知道,也什么都不做。
在这两种情况下,B 都不会发送任何信息。
如何保证 B 正确收到了 M1 呢?
解决方法:超时重传
A 为每一个已发送的分组都设置了一个超时计时器。
A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2 。
出现差错
确认丢失和确认迟到
确认丢失
若 B 所发送的对 M1 的确认丢失了,那么 A 在设定的超时重传时间内不能收到确认,但 A 并无法知道:是自己发送的分组出错、丢失了,或者 是 B 发送的确认丢失了。因此 A 在超时计时器到期后就要重传 M1。
假定 B 又收到了重传的分组 M1。这时 B 应采取两个行动:
第一,丢弃这个重复的分组 M1,不向上层交付。
第二,向 A 发送确认。不能认为已经发送过确认就不再发送,因为 A 之所以重传 M1 就表示 A 没有收到对 M1 的确认。
确认丢失和确认迟到
确认迟到
传输过程中没有出现差错,但 B 对分组 M1 的确认迟到了。
A 会收到重复的确认。对重复的确认的处理很简单:收下后就丢弃。
B 仍然会收到重复的 M1,并且同样要丢弃重复的 M1,并重传确认分组。
确认丢失和确认迟到
自动重传请求 ARQ
通常 A 最终总是可以收到对所有发出的分组的确认。如果 A 不断重传分组但总是收不到确认,就说明通信线路太差,不能进行通信。
使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
像上述的这种可靠传输协议常称为自动重传请求 ARQ (Automatic Repeat reQuest)。意思是重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组。
信道利用率
信道利用率
可以看出,当往返时间 RTT 远大于分组发送时间 TD 时,信道的利用率就会非常低。
若出现重传,则对传送有用的数据信息来说,信道的利用率就还要降低。
流水线传输
为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输。
流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一直有数据不间断地传送。
由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。
流水线传输
5.4.2 连续 ARQ 协议
滑动窗口协议比较复杂,是 TCP 协议的精髓所在。
发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。
连续 ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
5.4.2 连续ARQ协议
累积确认
接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。
优点:容易实现,即使确认丢失也不必重传。
缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。
Go-back-N(回退 N)
如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
这就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。
可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。
TCP 可靠通信的具体实现
TCP 连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口。
TCP 的可靠传输机制用字节的序号进行控制。TCP 所有的确认都是基于序号而不是基于报文段。
TCP 两端的四个窗口经常处于动态变化之中。
TCP连接的往返时间 RTT 也不是固定不变的。需要使用特定的算法估算较为合理的重传时间。
5.5 TCP 报文段的首部格式
TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段。
一个 TCP 报文段分为首部和数据两部分,而 TCP 的全部功能都体现在它首部中各字段的作用。
TCP 报文段首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项 (n 是整数)。因此 TCP 首部的最小长度是 20 字节。
5.6 TCP 可靠传输的实现
5.6.1 以字节为单位的滑动窗口
5.6.2 超时重传时间的选择
5.6.3 选择确认 SACK
5.6.1 以字节为单位的滑动窗口
TCP 的滑动窗口是以字节为单位的。
现假定 A 收到了 B 发来的确认报文段,其中窗口是 20 字节,而确认号是 31(这表明 B 期望收到的下一个序号是 31,而序号 30 为止的数据已经收到了)。
根据这两个数据,A 就构造出自己的发送窗口,
发送缓存与接收缓存的作用
发送缓存用来暂时存放:
发送应用程序传送给发送方 TCP 准备发送的数据;
TCP 已发送出但尚未收到确认的数据。
接收缓存用来暂时存放:
按序到达的、但尚未被接收应用程序读取的数据;
不按序到达的数据。
5.7 TCP 的流量控制
5.7.1 利用滑动窗口实现流量控制
5.7.2 TCP 的传输效率
5.7.1 利用滑动窗口实现流量控制
一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。
流量控制 (flow control) 就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。
5.8 TCP 的拥塞控制
5.8.1 拥塞控制的一般原理
5.8.2 TCP 的拥塞控制方法
5.8.1 拥塞控制的一般原理
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种现象称为拥塞 (congestion)。
若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。
出现拥塞的原因:
拥塞控制与流量控制的区别
拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。
拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。
拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
拥塞控制与流量控制的区别
流量控制往往指点对点通信量的控制,是个端到端的问题(接收端控制发送端)。
流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
5.8.2 TCP 的拥塞控制方法
TCP 采用基于窗口的方法进行拥塞控制。该方法属于闭环控制方法。
TCP发送方维持一个拥塞窗口 CWND (Congestion Window)
拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。
发送端利用拥塞窗口根据网络的拥塞情况调整发送的数据量。
所以,发送窗口大小不仅取决于接收方公告的接收窗口,还取决于网络的拥塞状况,所以真正的发送窗口值为:
控制拥塞窗口的原则
只要网络没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多的分组发送出去,这样就可以提高网络的利用率。
但只要网络出现拥塞或有可能出现拥塞,就必须把拥塞窗口减小一些,以减少注入到网络中的分组数,以便缓解网络出现的拥塞。
拥塞的判断
重传定时器超时
现在通信线路的传输质量一般都很好,因传输出差错而丢弃分组的概率是很小的(远小于 1 %)。只要出现了超时,就可以猜想网络可能出现了拥塞。
收到三个相同(重复)的 ACK
个别报文段会在网络中丢失,预示可能会出现拥塞(实际未发生拥塞),因此可以尽快采取控制措施,避免拥塞。
TCP拥塞控制算法
四种( RFC 5681) :
慢开始 (slow-start)
拥塞避免 (congestion avoidance)
快重传 (fast retransmit)
快恢复 (fast recovery)
慢开始 (Slow start)
用来确定网络的负载能力。
算法的思路:由小到大逐渐增大拥塞窗口数值。
初始拥塞窗口 cwnd 设置:
旧的规定:在刚刚开始发送报文段时,先把初始拥塞窗口cwnd 设置为 1 至 2 个发送方的最大报文段 SMSS (Sender Maximum Segment Size) 的数值。
新的 RFC 5681 把初始拥塞窗口 cwnd 设置为不超过2至4个SMSS 的数值。
慢开始门限 ssthresh(状态变量):防止拥塞窗口cwnd 增长过大引起网络拥塞。
慢开始 (Slow start)
拥塞窗口 cwnd 控制方法:在每收到一个对新的报文段的确认后,可以把拥塞窗口增加最多一个 SMSS 的数值。
其中 N 是原先未被确认的、但现在被刚收到的确认报文段所确认的字节数。
不难看出,当 N < SMSS 时,拥塞窗口每次的增加量要小于 SMSS。
用这样的方法逐步增大发送方的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。
设置慢开始门限状态变量 ssthresh
慢开始门限 ssthresh 的用法如下:
当 cwnd < ssthresh 时,使用慢开始算法。
当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。
拥塞避免算法
思路:让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长。
因此在拥塞避免阶段就有“加法增大” (Additive Increase) 的特点。这表明在拥塞避免阶段,拥塞窗口 cwnd 按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多。
当网络出现拥塞时
无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(重传定时器超时):
ssthresh = max(cwnd/2,2)
cwnd = 1
执行慢开始算法
这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。
快重传算法
发送方只要一连收到三个重复确认,就知道接收方确实没有收到报文段,因而应当立即进行重传(即“快重传”),这样就不会出现超时,发送方也不就会误认为出现了网络拥塞。
使用快重传可以使整个网络的吞吐量提高约20%。
快恢复算法
当发送端收到连续三个重复的确认时,由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,而是执行快恢复算法 FR (Fast Recovery) 算法:
(1) 慢开始门限 ssthresh = 当前拥塞窗口 cwnd / 2 ;
(2) 新拥塞窗口 cwnd = 慢开始门限 ssthresh ;
(3) 开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大。
加法增大,乘法减小 (AIMD)
可以看出,在拥塞避免阶段,拥塞窗口是按照线性规律增大的。这常称为“加法增大” AI (Additive Increase)。
当出现超时或3个重复的确认时,就要把门限值设置为当前拥塞窗口值的一半,并大大减小拥塞窗口的数值。这常称为“乘法减小”MD (Multiplicative Decrease)。
二者合在一起就是所谓的 AIMD 算法。
5.9 TCP 的运输连接管理
5.9.1 TCP 的连接建立
5.9.2 TCP 的连接释放
运输连接的三个阶段
TCP 是面向连接的协议。
运输连接有三个阶段:
连接建立
数据传送
连接释放
运输连接的管理就是使运输连接的建立和释放都能正常地进行。
客户服务器方式
TCP连接的建立采用客户服务器方式。
主动发起连接建立的应用进程叫做客户(client),
被动等待连接建立的应用进程叫做服务器(server)。
5.9.1 TCP 的连接建立
TCP 建立连接的过程叫做握手。
握手需要在客户和服务器之间交换三个 TCP 报文段。称之为三报文握手。
采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。
5.9.2 TCP 的连接释放
TCP 连接释放过程比较复杂。
数据传输结束后,通信的双方都可释放连接。
TCP 连接释放过程是四报文握手。
第 6 章 应用层
第 6 章 应用层
6.1 域名系统 DNS
6.4 万维网 WWW
6.5 电子邮件
6.1 域名系统 DNS
6.1.1 域名系统概述
6.1.2 互联网的域名结构
6.1.3 域名服务器
6.1.2 互联网的域名结构
互联网采用了层次树状结构的命名方法。
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
域名的结构由标号序列组成,各标号之间用点隔开:
… . 三级域名 . 二级域名 . 顶级域名
各标号分别代表不同级别的域名。
互联网的域名空间
域名服务器有以下四种类型
根域名服务器
采用了任播(anycast)技术
顶级域名服务器
权限域名服务器
本地域名服务器
6.4 万维网 WWW
6.4.1 万维网概述
6.4.2 统一资源定位符 URL
6.4.3 超文本传送协议 HTTP
6.4.4 万维网的文档
6.4.1 万维网概述
万维网 WWW (World Wide Web) 并非某种特殊的计算机网络。
万维网是一个大规模的、联机式的信息储藏所。
万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。
这种访问方式称为“链接”。
万维网的工作方式
万维网以客户服务器方式工作。
浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。
客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。
万维网必须解决的问题
(1) 怎样标志分布在整个互联网上的万维网文档?
使用统一资源定位符 URL (Uniform Resource Locator) 来标志万维网上的各种文档。
使每一个文档在整个互联网的范围内具有唯一的标识符 URL。
万维网必须解决的问题
(2) 用何协议实现万维网上各种超链的链接?
在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。
HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
万维网必须解决的问题
(3) 怎样使各种万维网文档都能在互联网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链?
超文本标记语言 HTML (HyperText Markup Language) 使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。
万维网必须解决的问题
(4) 怎样使用户能够很方便地找到所需的信息?
为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)。
URL 的一般形式
由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。
URL 的一般形式是:
6.4.3 超文本传送协议 HTTP