配套视频:湖科大教书匠
配套教材:计算机网络(第8版) 谢希仁
根据学习通要求“掌握”的部分总结的,有亿点点长 ,时间来不及就掌握画 ☆ 的就好啦
🕒 1. 概述
🕘 1.1 三种数据交换方式 ☆
交换方式 | 特点 | 优点 | 缺点 |
---|---|---|---|
电路交换 | 预先建立通信路径 | 传输稳定,延迟低 | 资源浪费,不适用于并发 |
报文交换 | 直接传输完整报文 | 灵活性高,传输不需要建立连接 | 延迟高,发送整个报文可能出现阻塞 |
分组交换 | 将数据分割为小的数据包进行传输 | 高效利用网络资源,适用于并发 | 随机延迟,可能出现拥塞和丢包 |
- 若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快。
- 报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。
- 由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。防止过长时间占用线路以及方便排错。
🕘 1.2 计算机网络的分类
按交换技术:①电路交换网络 ②报文交换网络 ③分组交换网络
按使用者:①公用网 ②专用网
按传输介质:①有线网络 ②无线网络
按覆盖范围:①广域网WAN(国家级) ②城域网MAN ③局域网LAN(如校园网) ④个域网PAN(如蓝牙连接)
按拓扑结构:①总线型网络 ②星型网络 ③环型网络 ④网状型网络(如广域网)
※按传输方式:①点对点式 ②广播式
※按服务方式:①主从式(C/S) ②对等式(P2P)
🕘 1.3 时延计算 ☆
常用的数据量单位:
8
bit
=
1
Byte
K
B
=
2
10
B
M
B
=
K
⋅
K
B
=
2
10
⋅
2
10
B
=
2
20
B
G
B
=
K
⋅
M
B
=
2
10
⋅
2
20
B
=
2
30
B
T
B
=
K
⋅
G
B
=
2
10
⋅
2
30
B
=
2
40
B
\begin{array}{l} 8 \text { bit }=1 \text { Byte } \\ K B=2^{10} B \\ M B=K \cdot K B=2^{10} \cdot 2^{10} B=2^{20} B \\ G B=K \cdot M B=2^{10} \cdot 2^{20} B=2^{30} B \\ T B=K \cdot G B=2^{10} \cdot 2^{30} B=2^{40} B \end{array}
8 bit =1 Byte KB=210BMB=K⋅KB=210⋅210B=220BGB=K⋅MB=210⋅220B=230BTB=K⋅GB=210⋅230B=240B
常用的数据率单位:
b
i
t
/
s
(
b
/
s
,
b
p
s
)
k
b
/
s
=
1
0
3
b
/
s
(
b
p
s
)
M
b
/
s
=
k
⋅
k
b
/
s
=
1
0
3
⋅
1
0
3
b
/
s
=
1
0
6
b
/
s
(
b
p
s
)
G
b
/
s
=
k
⋅
M
b
/
s
=
1
0
3
⋅
1
0
6
b
/
s
=
1
0
9
b
/
s
(
b
p
s
)
T
b
/
s
=
k
⋅
G
b
/
s
=
1
0
3
⋅
1
0
9
b
/
s
=
1
0
12
b
/
s
(
b
p
s
)
\begin{array}{l} \mathrm{bit} / \mathrm{s}(\mathrm{b} / \mathrm{s}, \mathrm{bps}) \\ \mathrm{kb} / \mathrm{s}=10^{3} \mathrm{~b} / \mathrm{s}(\mathrm{bps}) \\ \mathrm{Mb} / \mathrm{s}=k \cdot \mathrm{kb} / \mathrm{s}=10^{3} \cdot 10^{3} \mathrm{~b} / \mathrm{s}=10^{6} \mathrm{~b} / \mathrm{s}(\mathrm{bps}) \\ \mathrm{G} b / \mathrm{s}=k \cdot \mathrm{Mb} / \mathrm{s}=10^{3} \cdot 10^{6} \mathrm{~b} / \mathrm{s}=10^{9} \mathrm{~b} / \mathrm{s}(\mathrm{bps}) \\ \mathrm{Tb} / \mathrm{s}=k \cdot \mathrm{Gb} / \mathrm{s}=10^{3} \cdot 10^{9} \mathrm{~b} / \mathrm{s}=10^{12} \mathrm{~b} / \mathrm{s}(\mathrm{bps}) \end{array}
bit/s(b/s,bps)kb/s=103 b/s(bps)Mb/s=k⋅kb/s=103⋅103 b/s=106 b/s(bps)Gb/s=k⋅Mb/s=103⋅106 b/s=109 b/s(bps)Tb/s=k⋅Gb/s=103⋅109 b/s=1012 b/s(bps)
在处理过程中所需要的时间:
- 处理时延(一般不方便计算)
- 排队时延(合并到处理时延)
- 发送时延 = 分组长度( b ) 发送速率( b / s ) 发送时延=\frac{分组长度(b)}{发送速率(b/s)} 发送时延=发送速率(b/s)分组长度(b)
- 传播时延 = 信道长度( m ) 电磁波传播速率( m / s ) 传播时延=\frac{信道长度(m)}{电磁波传播速率(m/s)} 传播时延=电磁波传播速率(m/s)信道长度(m)
光速:3.0×108 m/s
光纤、电磁波:2.0×108 m/s
在时延方面谁占主导要具体情况具体分析。
时延带宽积 = 传播时延 × 带宽
🕘 1.4 计算机网络体系结构 ☆
Q:因特网采用TCP/IP体系结构的原因?
A:TCP/IP更符合市场,OSI缺乏商业驱动力,过于复杂,层次规划不合理。
网络协议三要素为语法、语义和同步。
🕒 2. 物理层
主要任务:
- 机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置
- 电气特性:指明在接口电缆的各条线上出现的电压范围
- 功能特性:指明某条线上出现的某一电平的电压表示何种意义
- 过程特性:指明对于不同功能的各种可能事件的出现顺序
🕘 2.1 传输媒体
- 导引型:同轴电缆、双绞线、光纤、电力线
- 非导引型:无线电波、微波、红外线、可见光
同轴电缆 | 双绞线 | 光纤 | |
---|---|---|---|
传输速率 | 传输速率一般在百Mbps到Gbps之间 | 传输速率一般在Mbps到Gbps之间 | 传输速率高,可达数十Tbps |
抗干扰性 | 较强 | 较强 | 极强 |
安装成本 | 高 | 低 | 较高 |
数据安全性 | 由于同轴电缆使用共享传输,数据安全性差 | 双绞线使用独立传输,数据安全性相对较好 | 光纤使用光的传输,不容易被窃听和干扰 |
🕘 2.2 传输方式
串行传输:数据是1
个比特1
个比特依次发送的,发送端与接收端之间只用1
条数据传输线即可
并行传输:一次发送n个比特而不是一个比特,在发送端和接收端之间要有n
条传输线路
在计算机网络中,数据在传输线路上的传输时串行传输;而计算机内部(如CPU和内存)多使用并行传输。
同步传输:数据块以稳定的比特流形式传输,字节之间没有间隔。接收端在每个比特信号的中间时刻(有区分0,1的标志)进行检测,以判别接收到的是比特0还是1。
需要采取方法使双方的时钟保持同步,有外同步(额外加时钟线)、内同步(内嵌同步信号编码)
异步传输:以字节为独立的传输单位,字节间的时间间隔不是固定的,接收端仅在每个字节的起始处对字节内的比特实现同步,为此通常传送前要在每个字节前后加上起始位和结束位。
- 异步是指字节之间异步(字节之间的时间间隔不固定)
- 字节中的每个比特仍然要同步(各比特的持续时间是相同的)
单工/半双工/全双工 ☆
- 单工通信:通信双方只有一个数据传输方向(无线电广播)
- 半双工通信:通信双方可以相互传输数据,但不能同时进行(对讲机)
- 全双工通信:通信双方可以同时发送和接收消息(电话)
单工需要一条信道;其他的需要两条(一个方向一条)
🕘 2.3 编码与调制
🕘 2.4 奈氏准则 ☆
在假定的理想条件下,为了避免码间串扰,码元传输速率是有上限的。
理想低通信道的最高码元传输速率 = 2W Baud = 2W(单位:码元/秒)
理想低通信道下的极限数据传输率 = 2Wlog2V(单位:码元/秒)
理想带通信道的最高码元传输速率 = W Baud = W(单位:码元/秒)
- W:信道带宽(单位为Hz)
- Baud:波特,即码元/秒
- Log2V:有几种码元/码元的离散电平数
码元传输速率又称为波特率、调制速率、波形速率或符号速率。它与比特率有一定关系:
- 当1个码元只携带1比特的信息量时,则波特率(码元/秒)与比特率(比特/秒)在数值上是相等的;
- 当1个码元携带n比特的信息量时,则波特率转换成比特率时,数值要乘以n。
🕘 2.5 香农公式
C = W × l o g 2 ( 1 + S N ) (单位: b i t / s ) \color{red}C=W \times log_2(1+\frac{S}{N}) (单位:bit/s) C=W×log2(1+NS)(单位:bit/s)
C:信道的极限信息传输速率(单位:b/s)
W:信道带宽(单位:Hz)
S:信道内所传信号的平均功率
N:信道内的高斯噪声功率
S/N:信噪比(dB) =
10
×
l
o
g
10
(
S
N
)
\color{red}10 \times log_{10}(\frac{S}{N})
10×log10(NS)
信道带宽或信道中信噪比越大,信息的极限传输速率越高。
Q:奈氏准则和香农公式,这两个公式对数据通信的意义是什么?
A:奈氏准则指出码元传输的速率会被信道限制,香农公式给出了信息传输速率的极限
习题集:
例1:【2009年题34】在无噪声情况下,若某通信链路的带宽为3kHz,采用4个相位,每个相位具有4种振幅的QAM调制技术,则该通信链路的最大数据传输速率是
A.12 kbps
B.24 kbps
C.48 kbps
D.96 kbps
【解析】(1)根据奈氏准则可知,该通信链路的最高码元传输速率= 2 x 3k = 6k (Baud) = 6k(码元/秒)
(2)采用4个相位,每个相位4种振幅的QAM调制技术,可以调制出4x4=16个不同的基本波形(码元);
采用二进制对这16个不同的码元进行编码,需要使用4个比特(
l
o
g
2
16
log_216
log216 = 4)。换句话说,每个码元可以携带的信息量为4比特;
综合(1)和(2)可知,该通信链路的最大数据传输速率=6k(码元/秒)x4(比特/码元) = 24k(比特/秒)=24kbps
因此答案选B
例2:【2011年题34】若某通信链路的数据传输速率为2400bps,采用4相位调制,则该链路的波特率是
A.600波特
B.1200波特
C.4800波特
D.9600波特
【解析】(1)采用4相位调制,可以调制出4种相位不同的基本波形(码元)。采用二进制对这4个不同的码元进行编码,需要使用2个比特(log24 = 2)。换句话说,每个码元可以携带的信息量为2比特;
(2)数据传输速率 = 波特率(码元传输速率) × 每个码元所携带的信息量
2400(比特/秒) = 波特率 × 2 (比特/码元)
解得:波特率=1200(码元/秒)= 1200 baud/s
例3:【2016年题34】若连接R2和R3链路的频率带宽为8kHz,信噪比为30dB,该链路实际数据传输速率约为理论最大数据传输速率的50%,则该链路的实际数据传输速率约是
A.8 kbps
B.20 kbps
C.40 kbps
D.80 kbps
【解析】理论最大数据传输速率
c
=
8
k
×
l
o
g
2
(
1
+
S
N
)
c=8k \times log_2(1+\frac{S}{N})
c=8k×log2(1+NS),信噪比:
30
(
d
B
)
=
10
×
l
o
g
10
(
S
N
)
30(dB)= 10 \times log_{10}(\frac{S}{N})
30(dB)=10×log10(NS),解得
S
N
\frac{S}{N}
NS= 1000 代入上式
c
=
8
k
×
l
o
g
2
(
1
+
1000
)
≈
80
c= 8k \times log2(1 + 1000) \approx 80
c=8k×log2(1+1000)≈80 kbps
该链路的实际数据传输速率
c
×
50
%
=
40
k
b
p
s
c \times 50\%= 40 kbps
c×50%=40kbps
因此选C
例4:【2017年 题34】若信道在无噪声情况下的极限数据传输速率不小于信噪比为30dB条件下的极限数据传输速率,则信号状态数至少是
A.4
B.8
C.16
D.32
【解析】设信号状态数(可调制出的不同基本波形或码元数量)为X,则每个码元可携带的比特数量为
l
o
g
2
X
log_2X
log2X
信道在无噪声情况下的极限数据传输速率(用奈氏准则计算)= 2W(码元/秒)=
2
W
×
l
o
g
2
X
2W \times log_2X
2W×log2X(比特/秒)
30(dB) =
10
×
l
o
g
10
(
S
N
)
10 \times log_{10}(\frac{S}{N})
10×log10(NS),所以
S
N
=
1000
\frac{S}{N} = 1000
NS=1000。
30dB信噪比条件下的极限数据传输速率(用香农公式计算)=
W
×
l
o
g
2
(
1
+
1000
)
W \times log_2(1 + 1000)
W×log2(1+1000)(比特/秒)
根据题意列出不等式:
2
W
×
l
o
g
2
X
≥
W
×
l
o
g
2
(
1
+
1000
)
2W \times log_2X ≥ W \times log_2(1 + 1000)
2W×log2X≥W×log2(1+1000)
解得
X
≥
32
X ≥ 32
X≥32,选D
🔎 2017年 题34 视频解析
🕒 3. 数据链路层
🕘 3.1 封装成帧
定义:封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。
🕘 3.2 差错检测 ☆
奇偶校验码、循环冗余校验CRC、海明码、BCH码、RS码
例1:待发送的信息为101001,生成多项式为 G ( x ) = x 3 + x 2 + 1 G(x)= x^3+ x^2+ 1 G(x)=x3+x2+1,计算余数。
计算步骤:
- 构造被除数:待发送信息后面添加生成多项式最高次数个0。
- 构造除数:生成多项式各项系数构成的比特串。
- 做“除法”,即异或运算(相同为0,相异为1)
- 检查余数:余数的位数应与生成多项式最高次数相同,如果位数不够,则在余数前补0来凑足位数。
得到的 101001001 就可以发送了。
例2:接收到的信息为101101001,生成多项式为
G
(
x
)
=
x
3
+
x
2
+
1
G(x)= x^3+ x^2+ 1
G(x)=x3+x2+1,判断传输是否误码?
计算方法同上,最后检查余数,余数不为0,表明传输过程产生误码!
🕘 3.3 可靠传输
不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
可靠传输:想办法实现发送端发送什么,接收端就收到什么
🕘 3.4 点对点协议PPP ☆
透明传输:数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样(即保证接收方接到的数据是完整的数据)
透明传输机制:
字节填充:面向字节的异步链路采用插入转义字符的字节填充法。
发送方:
- 如PPP帧的标志字段取值为7E(16进制),如果数据中出现7E则需要在数据前插入转义字符7D(16进制),并将原来的7E减20(16进制),所以7E在数据中最终会变成7D,5E
- 如果数据中有转义字符7D怎么办呢?可以在转义字符7D前再加一个转义字符7D,并将数据的7D减20(16进制),于是转义字符7D在数据中最终会变成7D,5D
- 数据中出现的每一个ASCII码控制字符(数值小于0x20的字符),则在该字符前面插入一个7D字节,同时将该字符的编码加上0x20。
接收方:进行反变换即可恢复出原来的帧的数据部分。
零填充:面向比特的同步链路采用插入比特0的比特填充法。
发送方:对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,则立即填充1个比特0。
接收方:对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,就把其后的1个比特0删除。
🕘 3.5 媒体接入控制MAC
🕤 3.5.1 静态划分信道
频分复用FDM、时分复用TDM、波分复用WDM
🕤 3.5.2 CSMA/CD协议(动态接入控制)
CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中。
现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。
载波监听多址接入/碰撞检测 CSMA/CD( Carrier Sense Multiple Access/Collision Detection)【不用于无线网络】
多址接入MA:多个站连接在一条总线上,竞争使用总线。
载波监听CS:每一个站在发送帧之前先要检测一下总线上是否有其他站点在发送帧(先听后说)
- 若检测到总线空闲96比特时间,则发送这个帧;
- 若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。
96比特时间是指发送96比特所需要的时间,也称为帧间最小间隔。其作用是是接收方可以检测出一个帧的结束,同时也使得其他站点都能有机会平等竞争信道并发送帧
碰撞检测CD:每一个正在发送帧的站边发送边检测碰撞(边说边听)
- 一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送(一旦冲突,立即停说,等待时机,重新再说)。
小结:先听后发、边发边听、冲突停发、延迟重发
🕞 3.5.2.1 争用期(碰撞窗口)
①为什么
τ
−
δ
2
\tau - \dfrac{\delta}{2}
τ−2δ时刻发送碰撞?
当D
开始发送的时,A
已经走了
τ
−
δ
\tau - \delta
τ−δ时间,所以剩下路程所需要的时间是
δ
\delta
δ。
又因为A
和D
发送速度是相同的,因此对于
δ
\delta
δ时间的路程,每人只需要走
δ
2
\dfrac{\delta}{2}
2δ时间就会相遇,即碰撞。
碰撞时刻
=
τ
−
δ
+
δ
2
=
τ
−
δ
2
=\tau - \delta +\dfrac{\delta}{2}=\tau -\dfrac{\delta}{2}
=τ−δ+2δ=τ−2δ
②为什么 t = τ t=\tau t=τ时,D检测到碰撞?
根据上边推论,发现D
走了
δ
2
\dfrac{\delta}{2}
2δ的时间路程后就发送了碰撞,此时它开始返回,经过同样的时间可以回到D
检测到碰撞时间 = δ 2 + δ 2 = δ =\dfrac{\delta}{2}+\dfrac{\delta}{2}=\delta =2δ+2δ=δ
③为什么 2 τ − δ 2\tau - \delta 2τ−δ时,A检测到碰撞?
与D
检测到碰撞同理,A
走了
τ
−
δ
2
\tau -\dfrac{\delta}{2}
τ−2δ时间,因此往回走也是这么多时间
A检测到碰撞时间
=
τ
−
δ
2
+
τ
−
δ
2
=
2
τ
−
δ
=\tau -\dfrac{\delta}{2}+\tau -\dfrac{\delta}{2}=2\tau - \delta
=τ−2δ+τ−2δ=2τ−δ
得出结论:
- 主机最多经过 2 τ 2\tau 2τ(即 δ → 0 \delta→0 δ→0)的时长就可以检测到本次发送是否遭受了碰撞
- 因此,以太网的端到端往返传播时延 2 τ 2\tau 2τ称为争用期或碰撞窗口期(或冲突检测时间)
- 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞
- 每一个主机在自己发送帧之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的。它取决于另一个发送帧的主机到本主机的距离,但不会超过总线的端到端往返传播时延,即一个争用期时间
- 显然,在以太网中发生帧的主机越多,端到端往返传播时延越大,发生碰撞的可能性就越大。因此,共享式以太网不能连接太多的主机,使用的总线也不能太长
- 10 M b / s 10Mb/s 10Mb/s以太网把争用期定为 512 b i t 512bit 512bit发送时间,即 51.2 μ s 51.2μs 51.2μs,因此其总线长度不能超过 5120 m 5120m 5120m,但考虑到其他一些因素,如信号衰减等,以太网规定总线长度不能超过 2500 m 2500m 2500m
🕞 3.5.2.2 最小帧长
Q:为什么需要规定最小帧长?
A:假设A向D发送帧,如果帧很短的话,在
2
τ
2\tau
2τ内就会将帧发送完毕,帧发送完毕后不会进行碰撞检测,而此时依然有发生碰撞的可能。所以必须保证在
2
τ
2\tau
2τ时间内帧不会被发送完,在这段时间里能够保持碰撞检测
- 以太网规定最小帧长为64字节,即512比特(512比特即争用期)
- 如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于
64
字节
- 如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于
- 以太网的最小帧长保证了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞
- 如果在争用期没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞
- 如果在争用期检测到碰撞就立即中止发送,这时已经发送出去的数据一定小于
64
字节,因此凡长度小于64
字节的帧都是由于碰撞检测而异常中止的无效帧
【单选题】长度为10km,数据传输率为10Mb/s的CSMA/CD以太网,信号传播速率为200m/μs。那么该网络的最小帧长是
A、20bit
B、200bit
C、100bit
D、1000bit
解析:争用期
2
τ
=
10
k
m
200
m
/
μ
s
×
2
=
1
0
−
4
s
2\tau = \frac{10km}{200m/ \mu s} \times 2=10^{-4} s
2τ=200m/μs10km×2=10−4s
最短帧长=数据传输速率×争用期2
τ
\tau
τ =
10
M
b
/
s
×
1
0
−
4
s
=
1000
b
10Mb/s \times 10^{-4}s = 1000b
10Mb/s×10−4s=1000b
🕞 3.5.2.3 最大帧长
当帧过长时,其他线路会迟迟得不到资源,同时也可能导致接收方缓冲区溢出,因此帧的最大长度也有规定。
【2009年题37】在一个采用CSMA/CD协议的网络中,传输介质是一根完整的电缆,传输速率为1Gbps,电缆中的信号传播速度是200 000km/s。若最小数据帧长度减少800比特,则最远的两个站点之间的距离至少需要()
A.增加160m
B.增加80m
C.减少160m
D.减少80m
【解析】设最远两个站点之间的距离为d(m),最小帧长为l(bit);
最小帧长=争用期×数据传输速率
l
=
(
d
200000
×
1
0
3
×
2
)
×
1
0
9
l=\left(\frac{d}{200000 \times 10^{3}} \times 2\right) \times 10^{9}
l=(200000×103d×2)×109
得出
d
=
l
10
d=\frac{l}{10}
d=10l
很显然,若最小帧长减少800 bit,最远的两个站点之间的距离至少会减少80m
【2010年 题47】某局域网采用CSMA/CD协议实现介质访问控制,数据传输速率为10Mbps,主机甲和主机乙之间的距离为2km,信号传播速度是200 000km/s。请回答下列问题,要求说明理由或写出计算过程。
(1)如主机甲和主机乙发送数据时发生冲突,则从开始发送数据时刻起,到两台主机均检测到冲突时刻止,最短需经过多长时间?最长需经过多长时间(假设主机甲和主机乙发送数据过程中,其他主机不发送数据)?
两主机同时发送数据,才能使得它们从开始发送数据时刻起,到它们都检测到冲突时刻止,所经过的时间最短。
这段时间包括主机发送的数据信号传播到距离中点处所耗费的传播时延,以及发生碰撞后的碰撞信号传播回主机所耗费的时间(与之前的传播时延相等)。即两主机间单程的传播时延2km÷200 000km/s = 0.01ms
甲发送的帧信号传播到无限接近乙的某个时刻,乙也要发送帧,它检测到信道空闲(但信道此时并不空闲),就立刻开始发送帧,这必然会导致碰撞。乙会首先检测到碰撞,一段时间后甲也会检测到碰撞。
从开始发送数据时刻起,到两台主机均检测到碰撞时刻止,最长需要经过的
时间为两台主机间信号传播的往返时延(争用期)(2km÷200 000km/s ) × 2= 0.02ms
🕘 3.6 MAC地址
单播地址、广播地址(FF-FF-FF-FF-FF-FF
)与多播地址:
MAC地址中第一字节后4比特(即第2位)十六进制数不能整除2(即为1,3,5,7,9,B,D,F)时,MAC地址是多播地址。将此地址填入帧的目的地址栏中,接收到该帧的主机将此多播地址与自己多播组列表中的地址进行逐一配对,如果有匹配的项,则接收,否则丢弃。举例:A发送多播帧给多播地址是07-E0-12-F6-2A-D8,则07中的7(二进制为0111)不能整除2,符合条件。
🕘 3.7 集线器与交换机
集线器HUB:
- 早期以太网的互连设备;
- 工作在OSI体系结构的物理层对接收到的信号进行放大、转发;
- 使用集线器作为互连设备的以太网仍然属于共享总线式以太网。集线器互连起来的所有主机共享总线带宽,属于同一个碰撞域和广播域。
交换机SWITCH:
- 目前以太网中使用最广泛的互连设备;
- 工作在OSI体系结构的数据链路层(也包括物理层)根据MAC地址对帧进行转发;
- 使用交换机作为互连设备的以太网,称为交换式以太网。交换机可以根据MAC地址过滤帧,即隔离碰撞域;
- 交换机的每个接口是一个独立的碰撞域;
- 交换机隔离碰撞域但不隔离广播域(VLAN除外)。
以太网交换机自学习和转发帧的流程:
这部分觉得太长可以跳过看后面的小结
假设各主机知道网络中其他各主机的MAC地址(无需进行ARP)
初始交换机1
和2
的MAC地址表都为空
此时有以下任务:①A-->B
②B-->A
-
A
发送给B
的数据通过端口1
进入交换机,因此交换机先将MAC地址A
接口1
(表示如果要去MAC地址A
,可以走接口1
)记录到MAC表中,同时扫描MAC表查看是否有MAC地址B
对应的接口,发现没有。因此将这个帧从除来源外的所有端口发送出去【泛洪】。
- 交换机
1
的端口2
发送此帧到主机C,主机C对比MAC地址后发现不是给自己的帧,因此丢弃 - 交换机
1
的3
端口发送此帧到主机B
,主机B
对比MAC地址后发现是给自己的帧,因此收下该帧,交付给高层【注意:此时交换机MAC地址表并没有学习新的条目】 - 交换机
1
的4
端口发送此帧到交换机2
的端口2
,交换机2
首先将MAC地址A
接口2
记录到MAC地址表中,接着扫描MAC表,发现没有找到MAC地址B
对应的接口,因此将这个帧从除来源外的所有端口发送出去【泛洪】。 - 同理,接口
1
,3
,4
发送出去给主机后经过比对发现不是自己的帧,因此丢弃
-
B
–>A时,交换机1
的MAC地址表已经有了MAC地址A
接口1
这个条目
-
B
发送给A
的帧从接口3
进入交换机,交换机首先将MAC地址B
接口3
记录到MAC地址表中,接着查询MAC地址表是否有MAC地址A
对应的接口,发现接口1
对应的就是MAC地址A
,因此从接口1
转发出去 - 帧通过接口
1
到达主机A
,主机A
经过比对后发现这是自己的帧,因此将其接收交付给高层
- 此时若有一个与
A
连接在同一总线上的主机G向A
发送帧,过程如何?
- G向
A
发送帧时,由于A
与G处在同一总线上,因此G发送的帧会直接传送到A
处,A
进行比对发现这是发送给自己的数据,因此将数据接收 - 同时数据会跑向交换机
1
的端口1
,所以交换机1
会将MAC地址G 接口1
记录到MAC表中,同时扫描MAC地址表看看是否有MAC地址A
对应的接口,发现接口1
就是。但是刚刚学习到的MAC地址G也是来自接口1
,因此交换机知道接口1
是来源,没有必要将数据再从这个接口转发出去。
以太网交换机进行自学习时使用的PDU(Protocol Data Unit,协议数据单元)地址是源物理地址,进行转发决策时使用的PDU地址是目的物理地址
小结:
- 以太网交换机自学习和转发帧的流程:
- 收到帧后进行登记。登记的内容为帧的源MAC地址及进入交换机的接口号;
- 根据帧的目的MAC地址和交换机的帧交换表对帧进行转发,有以下三种情况:
- 明确转发:交换机知道应当从哪个(或哪些)接口转发该帧(单播、多播、广播)
- 盲目转发:交换机不知道应当从哪个端口转发帧(或转发表是空的),只能将其通过除进入交换机的接口外的其他所有接口转发(也称为泛洪)。
- 明确丢弃:交换机知道不应该转发该帧,将其丢弃。
- 帧交换表中的每条记录都有自己的有效时间,到期删除。原因如下:
- 交换机的接口改接了另一台主机;
- 主机更换了网卡。
🕒 4. 网络层
对比方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须建立网络层连接 | 不需要建立网络层连接 |
终点地址 | 仅在连接建立阶段使用(需要进行路由选择),每个分组使用短的虚电路号(VCID),不需要为每条虚电路预分配带宽。 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组可走不同的路由 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丟失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
服务质量保证 | 可以将通信资源提前分配给每一个虚电路,容易实现 | 很难实现 |
TCP/IP体系结构的因特网的网际层提供的是简单灵活、无连接的,不可靠的数据报服务。
🕘 4.1 IPv4
lPv4地址的编址方法经历了如下三个历史阶段:分类编址(1981年)、划分子网(1985年)、无分类编址(1993年)
32
比特的IPv4地址常用点分十进制的表示方法
🕤 4.1.1 分类编址
- A类、B类和C类地址都是单播地址,只有单播地址可分配给网络中的主机或路由器的各接口
- 主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口
- 主机号为“全1”的地址是广播地址,不能分配给主机或路由器的各接口
网络类型 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 不能指派的网络号 | 占总地址空间 | IP地址范围 | 网络数量及主机数量 |
---|---|---|---|---|---|---|
A类地址 | 1 | 126 | 0和127 | 1/2 | 1.0.0.1~126.255.255.254 | 126(28-1 -2)个,每个网络能容纳16,777,214(224 -2)个主机 |
B类地址 | 128.0 | 191.255 | 无 | 1/4 | 128.0.0.1~191.255.255.254 | 16384(216-2 )个,每个网络能容纳65534(216 -2)个主机 |
C类地址 | 192.0.0 | 223.255.255 | 无 | 1/8 | 192.0.0.1~223.255.255.254 | 2097152(224-3 )个,每个网络能容纳254(28 -2)个主机 |
D类地址 | 多播地址 | 1/16 | 224.0.0.1~239.255.255.254 | |||
E类地址 | 保留为今后使用 | 1/16 | 240.0.0.1~255.255.255.254 |
- A类地址网络号第1位固定为0,网络号后面部分不能全0(保留不指派),也不能全1(作为本地环回测试地址),其中最小的本地环回测试地址为
127.0.0.1
,最大的本地环回测试地址为127.255.255.254
。所以网络号范围是1~126 - B类地址网络号前2位固定为10,网络号后面部分可以全取0(即128.0)或1(即191.255),所以网络号范围是128.0~191.255
- C类地址网络号前3位固定为110,网络号后面部分可以全取0(即192.0.0)或1(即223.255.255),所以网络号范围是192.0.0~223.255.255
- D类地址为多播地址,IP地址为224.0.0.0~239.255.255.255
注:
- 地址
0.0.0.0
是一个特殊的IPv4地址,只能作为源地址使用,表示“在本网络上的本主机”。封装有DHCP Discovery报文的IP分组的源地址使用0.0.0.0; - 以127开头且后面三个字节非“全0”或“全1”的IP地址是一类特殊的IPv4地址,既可以作为源地址使用,也可以作为目的地址使用,用于本地软件环回测试,例如常用的环回测试地址
127.0.0.1
; - 地址
255.255.255.255
是一个特殊的IPv4地址,只能作为目的地址使用,表示“只在本网络上进行广播(各路由器均不转发)”。
【练习】请给出下图各网络的IPv4地址分配方案,要求尽量节约IP地址。
解析:1. 找出图中有哪些网络;2. 根据各网络中主机和路由器的接口总数量给各网络分配相应类别的网络号。3.依据所确定的网络号类别,为每个网络挑选一个网络号。
🕤 4.1.2 划分子网
【习题】已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,请给出划分细节。
解析:根据所给网络地址可知其为C类网络地址,网络号占3字节,主机号占1字节;根据所给子网掩码可知,从1字节主机号中借用1比特作为子网号。
划分出的子网数量:21 = 2
每个子网可分配的地址数量:2(8-1) – 2 = 126 (减2是去掉主机号为全0的网络地址和全1的广播地址)
默认的子网掩码:是指在未划分子网的情况下使用的子网掩码。
🕤 4.1.3 无分类编址 ☆
例1:请给出CIDR地址块128.14.35.7/20的全部细节(最小地址,最大地址,地址数量,聚合C类网数量,地址掩码)。
解析:
使用无分类编址方法,可以根据客户的需要分配适当大小的CIDR地址块,因此可以更加有效地分配IPv4的地址空间。
使用无分类编址方法的另一个好处是路由聚合(也称为构造超网)。
路由聚合(构造超网)
【举例】
- 网络前缀越长,地址块越小,路由越具体;
- 若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。
【2011年题38】在子网192.168.4.0/30中,能接收目的地址为192.168.4.3的IP分组的最大主机数是( )
A.0
B.1
C.2
D.4
解析:
因此选C。
【2018年题38】某路由表中有转发接口相同的4条路由表项,其目的网络地址分别为35.230.32.0/21、35.230.40.0/21、35.230.48.0/21和35.230.56.0/21,将该4条路由聚合后的目的网络地址为()
A.35.230.0.0/19
B.35.230.0.0/20
C.35.230.32.0/19
D.35.230.32.0/20
解析:路由聚合的方法:找共同前缀
🕤 4.1.4 应用规划 ☆
定长的子网掩码FLSM:
【举例】假设申请到的C类网络为218.75.230.0,请使用定长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。
应用需求:将C类网络218.75.230.0划分成5个子网,每个子网上可分配的IP地址数量不得少于各自的需求。即网络1需要IP地址数量为9,网络2需要IP地址数量为28,网络3需要IP地址数量为15,网络4需要IP地址数量为13,网络5需要IP地址数量为4。
变长的子网掩码VLSM:
【举例】假设申请到的地址块为218.75.230.0/24,请使用变长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。
应用需求:从地址块218.75.230.0/24中取出5个地址块(1个“/27”地址块,3个“/28”地址块,1个“/30"地址块),按需分配给上图所示的5个网络。
在218.75.230.0/24地址块中给上图所示的网络N1~N5分配子块,分配原则是“每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点”。建议先给大的子块分配。
如果从小的开始分配:
【2018 大题】某公司的网络如下图所示。IP地址空间192.168.1.0/24被均分给销售部和技术部两个子网,并已分别为部分主机和路由器接口分配了IP地址,销售部子网的MTU =1500B,技术部子网的MTU= 800B。
(1)销售部子网的广播地址是什么?技术部子网的子网地址是什么?若每个主机仅分配一个IP地址,则技术部子网还可以连接多少台主机?
(2)假设主机192.168.1.1向主机192.168.1.208发送一个总长度为1500B的IP分组,IP分组的头部长度为20B,路由器在通过接口F1转发该IP分组时进行了分片。若分片时尽可能分为最大片,则一个最大IP分片封装数据的字节数是多少?至少需要分为几个分片?每个分片的片偏移量是多少?
解析:
(1)广播地址是网络地址中主机号全1的地址(主机号全0的地址代表 网络本身)。 销售部和技术部均分配了192.168.1.0/24的IP地址空间,IP地址的前24位为子网的网络号。于是在后8位中划分部门的子网,选择前1
位作为部门子网的网络号。令销售部子网的网络号为 0,技术部子网的网络号为1,则技术部子网的完整地址为192.168.1.128
;令销售部子网的主机号全1,可以得到该部门的广播地址为192.168.1.127
。
每个主机仅分配1个IP地址,计算目前还可以分配的主机数, 用技术部可以分配的主机数减去已分配的主机数,技术部总共可以分配给计算机的主机数为27 -2=126 (减去全0和全1的主机号)。已经分配了208-129+ 1 =80个,此外还有1个IP地址 分配给了路由器的端口(192.168.1.254),因此还可以分配 126-80 -1 = 45
台。
(2)判断分片的大小,需要考虑各个网段的MTU,而且注意分片的数据长度必须是8B
的整数倍。 由题可知, 在技术部子网内, MTU= 800B,IP分组头部长20B,最大IP分片封装数据的字节数为
⌊
(
800
−
20
)
/
8
⌋
×
8
=
776
\lfloor(800-20) / 8\rfloor \times 8=776
⌊(800−20)/8⌋×8=776。 至少需要的分片数为
⌊
(
1500
−
20
)
/
776
⌋
=
2
\lfloor(1500-20) / 776\rfloor =2
⌊(1500−20)/776⌋=2。 第1个分片的偏移量为0;第2个分片的偏移量为776/8= 97。
【2019 大题】某网络拓扑如下图所示,其中 R 为路由器,主机 H1~H4 的 IP 地址配置以及 R 的各接口 IP 地址配置如图中所示。现有若干以太网交换机(无 VLAN 功能)和路由器两类网络互连设备可供选择。
(1)设备 1、设备 2 和设备 3 分别应选择什么类型的网络设备?
(2)设备 1、设备 2 和设备 3 中,哪几个设备的接口需要配置 IP 地址?为对应的接口配置正确的 IP 地址。
(3)为确保主机 H1~H4 能够访问 Internet,R 需要提供什么服务?
(4)若主机 H3 发送一个目的地址为 192.168.1.127 的 IP 数据报,网络中哪几个主机会接收该数据报?
解析:
(1)以太网交换机(无 VLAN功能)连接的若干LAN仍然是一个网络(同一个广播域),路由器可以连接不同的LAN、不同的WAN或把 WAN和 LAN互连起来,隔离了广播域。IP地址192.168.1.2/26与192.168.1.3/26 的网络前缀均为192.168.1.0
,视为 LAN1
。IP地址192.168.1.66/26与192.168.1.67/26的网络前缀均为192.168.1.64
,视为LAN2
。所以设备1为路由器,设备2、3为以太网交换机。
(2)设备1为路由器,其接口应配置IP地址。IF1接口与路由器R相连,其相连接口的IP地址为192.168.1.253/30,253的二进制数表示形式为11111101,故IF1接口的网络前缀也应为192.168,1.111111,已分配192.168.1.253,去除全0全1,IF1接口的P地址应为192.168.1.254
。LAN1的默认网关为192.168.1.1,LAN2的默认网关为192.168.1.65,网关的IP地址是具有路由功能的设备的IP地址,通常默认网关地址就是路由器中的LAN端口地址,设备1的IF2、IF3接口的IP地址分别设置为192.168.1.1
和192.168.1.65
。
(3)私有地址段:C类192.168.0.0 ~ 192.168.255.255,即 H1 ~ H4均为私有IP地址,若要能够访问Internet,R需要提供NAT服务,即网络地址转换服务。
(4)主机H3发送一个目的地址为192.168.1.127的IP数据报,主机号全为1,为本网络的广播地址,由于路由器可以隔离广播域,只有主机H4会接收到数据报。
🕤 4.1.5 IP数据报分片 ☆
以下三个字段共同用于IP数据报分片:
-
标识
- 占
16
比特,属于同一个数据报的各分片数据报应该具有相同的标识(可理解为ID) - IP软件维持一个计数器,每产生一个数据报,计数器值
+1
,并将此值赋给标识字段
- 占
-
标志
- 占
3
比特,各比特含义如下-
DF
位:1
表示不允许分片,0
表示允许分片 -
MF
位:1
表示"后面还有分片",0
表示"这是最后一个分片" - 保留位:必须为
0
-
- 占
-
片偏移(必须是8的整数倍)
- 占
13
比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少单位 - 片偏移以
8
个字节为单位
- 占
【举例】某个IPv4数据报总长度为3820字节,采用20字节固定首部,根据数据链路层要求,需要将该IPv4数据报分片为长度不超过1420字节的数据报片。
总长度 | 标识 | MF | DF | 片偏移 | |
---|---|---|---|---|---|
原始数据报 | 3800+20 | 12345 | 0 | 0 | 0 / 8 = 0 |
分片1的数据报 | 1400+20 | 12345 | 1 | 0 | 0 / 8 = 0 |
分片2的数据报 | 1400+20 | 12345 | 1 | 0 | 1400 / 8 = 175 |
分片3的数据报 | 1000+20 | 12345 | 0 | 0 | 2800 / 8 = 350 |
🕘 4.2 实验:IP组网规划设计 ☆
实验背景:假设你是某高校的网络管理员。该高校申请到了一个公网地址102.3.1.1/30。现在要为该高校进行IP组网规划。假设使用172.16.0.0/16地址块。应如何规划才能尽量不浪费IP地址?请给出IP地址规划方案,并用下图实验拓扑进行模拟实验。
该校区有教学办公楼、图书馆、南区学生宿舍、英东楼北区学生宿舍公有5个区域需要分配IP地址。其中南区学生宿舍有1500台主机,英东楼中有700台主机,北区学生宿舍有500台主机,教学办公楼有100台主机,图书馆有50台主机。
根据学校需求分配IP网段(理论方案)
区域 | 主机数 | 网段 | 子网掩码(前缀) | 网关 |
---|---|---|---|---|
南区学生宿舍 | 1500 | 172.16.0.0/21 | 255.255.248.0 | 172.16.7.254 |
英东楼 | 700 | 172.16.8.0/22 | 255.255.252.0 | 172.16.11.254 |
北区学生宿舍 | 500 | 172.16.12.0/23 | 255.255.254.0 | 172.16.13.254 |
教学办公楼 | 100 | 172.16.14.0/25 | 255.255.255.128 | 172.16.14.126 |
图书馆 | 50 | 172.16.14.128/26 | 255.255.255.192 | 172.16.14.190 |
外网网段 | 2 | 102.3.1.0/30 | 255.255.255.252 | 102.3.1.2 |
注:网关为网段内可用的最大主机地址。
🕘 4.3 路由器与路由表 ☆
【教材 4-18】设某路由器建立里如下转发表:
前缀匹配 下一跳 192.4.153.0 / 26 R 3 128.96.39.0 / 25 接口 m 0 128.96.39.128 / 25 接口 m 1 128.96.40.0 / 25 R 2 192.4.153.0 / 26 R 3 * (默认) R 4 \begin{array}{lc} \text { 前缀匹配 } & \text { 下一跳 } \\ \hline 192.4 .153 .0 / 26 & \mathrm{R}_{3} \\ 128.96 .39 .0 / 25 & \text { 接口 } \mathrm{m0} \\ 128.96 .39 .128 / 25 & \text { 接口 } \mathrm{m1} \\ 128.96 .40 .0 / 25 & \mathrm{R}_{2} \\ 192.4 .153 .0 / 26 & \mathrm{R}_{3} \\ \text { * (默认) } & \mathrm{R}_{4} \end{array} 前缀匹配 192.4.153.0/26128.96.39.0/25128.96.39.128/25128.96.40.0/25192.4.153.0/26 * (默认) 下一跳 R3 接口 m0 接口 m1R2R3R4
现共收到5个分组,其目的地址分别为:
(1)128.96.39.10
(2)128.96.40.12
(3)128.96.40.151
(4)192.4.153.17
(5)192.4.153.90
试分别计算其下一跳。
解析:
(1)看转发表的第二行:128.96.39.0/25,可以看到目的地址128.96.39.10与其前24位都匹配,因此只需关注第25
位是否匹配。对于目的地址的第四字节,10
即00000010
,其最高位0
与第25位0
是匹配的,因此下一跳为接口m0。
(2)看转发表的第四行:128.96.40.0/25,可以看到目的地址128.96.40.12与其前24位都匹配,同理,目的地址中的25
是00011001
,其最高位0
与第25位0
是匹配的,因此下一跳为R2。
(3)看转发表的第四行:128.96.40.0/25,可以看到目的地址128.96.40.151与其前24位都匹配,同理,目的地址中的151
是10010111
,其最高位1
与第25位0
是不匹配的,因此下一跳不为R2。再看其他路由条目也没有匹配的,只能去默认路由,下一跳为R4。
(4)看转发表的第一行:192.4.153.0/26,可以看到目的地址192.4.153.17与其前24位都匹配,同理,目的地址中的17
是00010001
,其高位00
与第25、26位00
是匹配的,因此下一跳为R3。
(5)看转发表的第一行:192.4.153.0/26,可以看到目的地址192.4.153.90与其前24位都匹配,同理,目的地址中的90
是01011010
,其高位01
与第25、26位00
是不匹配的,因此下一跳不为R3。再看其他路由条目也没有匹配的,只能去默认路由,下一跳为R4。
【教材 4-37】假定网络中的路由器B的路由表有如下的项目:
目的网络
距离
下一跳路由器
N
1
7
A
N
2
2
C
N
6
8
F
N
8
4
E
N
9
4
F
\begin{array}{ccc} \text { 目的网络 } & \text { 距离 } & \text { 下一跳路由器 } \\ \hline N_1 & 7 & A \\ N_2 & 2 & C \\ N_6 & 8 & F \\ N_8 & 4 & E \\ N_9 & 4 & F \end{array}
目的网络 N1N2N6N8N9 距离 72844 下一跳路由器 ACFEF
现在B收到从C发来的路由信息:
目的网络
距离
N
2
4
N
3
8
N
6
4
N
8
3
N
9
5
\begin{array}{cc} \text { 目的网络 } & \text { 距离 } \\ \hline N_2 & 4 \\ N_3 & 8 \\ N_6 & 4 \\ N_8 & 3 \\ N_9 & 5 \\ \end{array}
目的网络 N2N3N6N8N9 距离 48435
试求出路由器B更新后的路由表(详细说明每一个步骤)。
解析:对于N2,距离更改,路由条目更新为 N2 5 C
对于N3,原路由表没有,需要新增,即插入 N3 9 C
对于N6,新收到的C距离短于F,路由条目更新为 N6 5 C
对于N8,新收到的C距离等于E,路由条目不更新,等价负载均衡
对于N9,新收到的C距离长于F,路由条目不更新。
小结:
🕒 5. 运输层
熟知端口号的范围:0~1023
登记端口号的范围:·1024~49151
客户端使用的端口号范围:49152~65535
🕘 5.1 UDP与TCP ☆
用户数据报协议UDP (User Datagram Protocol) |
传输控制协议TCP (Transmission Control Protocol) |
---|---|
无连接,随时可向目的主机发送报文 | 面向连接,发送数据前需要"三报文握手"建立连接,数据传输结束后需要"四报文挥手"释放连接 |
支持单播、多播和广播 | 仅支持单播 |
收到应用层报文后直接为报文添加UDP 首部就进行发送,即面向应用报文
|
面向字节流,其将应用进程交付下来的数据块仅仅看作是一连串的字节流,TCP将这些字节流编号并存储在缓冲中;接收方一边接收数据,一边将缓冲中的数据交给应用进程。 |
UDP向上层提供无连接不可靠传输服务(适用于IP电话、视频会议等实时应用),使用复用和分用、差错检测功能 | TCP向上层提供面向连接的可靠传输服务(适用于要求可靠传输的应用,例如文件传输),使用流量控制和拥塞控制,不会出现传输差错(误码、丢失、乱序、重复) |
首部仅8 字节 |
最小20 字节,最大60 字节 |
🕘 5.2 TCP的流量控制
流量控制定义:让发送方的发送速率不要太快,要让接收方来得及接收。
利用滑动窗口实现流量控制工作流程:
【2010年题39】主机甲和主机乙之间建立了一个TCP连接,TCP最大段长度为1000字节。若主机甲的当前拥塞窗口为4000字节,在主机甲向主机乙连续发送两个最大段后,成功收到主机乙发送的第一个段的确认段,确认段中通告的接收窗口大小为2000字节,则此时主机甲还可以向主机乙发送的最大字节数是( )
A.1000
B.2000
C.3000
D.4000
【解析】TCP发送方的发送窗口= min[ 自身拥塞窗口,TCP接收方的接收窗口 ]
题目未给出TCP发送方的发送窗口的初始值,则取拥塞窗口值作为发送窗口值
🕘 5.3 TCP的拥塞控制 ☆
拥塞控制主要是四个算法:慢启动(慢开始slow-start)、拥塞避免(congestion avoidance)、快速重传(快重传fast retransmit)、快速恢复(快恢复fast recovery)
下面介绍这四种拥塞控制算法的基本原理,假定如下条件:
- 数据是单方向传送,而另一个方向只传送确认。
- 接收方总是有足够大的缓存空间,因而发送方发送窗口的大小由网络的拥塞程度来决定。
- 以最大报文段MSS的个数为讨论问题的单位,而不是以字节为单位。
发送方维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化。
- 拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大;但只要网络出现拥塞,拥塞窗口就减少一些。
- 判断出现网络拥塞的依据:没有按时收到应当到达的确认报文(即发生超时重传)。
发送方将拥塞窗口作为发送窗口swnd,即swnd = cwnd
。
维护一个叫慢启动门限 ssthresh
(slow start threshold)状态变量
- 当
cwnd < ssthresh
时,使用慢启动算法。 - 当
cwnd > ssthresh
时,就会使用拥塞避免算法。 - 当
cwnd = ssthresh
时,既可使用慢启动算法,也可使用拥塞避免算法。
🕤 5.3.1 慢启动
TCP 在刚建立连接完成后,首先是有个慢启动的过程,这个慢启动的意思就是一点一点的提高发送数据包的数量。
慢启动的算法记住一个规则就行:当发送方每收到一个 ACK,拥塞窗口 cwnd 的大小就会加 1
。
这里假定拥塞窗口 cwnd 和发送窗口 swnd 相等,下面举个例子:
- 连接建立完成后,一开始初始化 cwnd = 1,表示可以传一个 MSS 大小的数据。
- 当收到一个 ACK 确认应答后,cwnd 增加 1,于是一次能够发送 2 个
- 当收到 2 个的 ACK 确认应答后, cwnd 增加 2,于是就可以比之前多发2 个,所以这一次能够发送 4 个
- 当这 4 个的 ACK 确认到来的时候,每个确认 cwnd 增加 1, 4 个确认 cwnd 增加 4,于是就可以比之前多发 4 个,所以这一次能够发送 8 个。
可以看出慢启动算法,发包的个数是指数性的增长。
假定 ssthresh = 8
,此时改用拥塞避免算法。
🕤 5.3.2 拥塞避免
规则:每当收到一个 ACK 时,cwnd 线性+1
。
当重传计时器超时,判断网络很可能出现了拥塞,触发超时重传
当发生了超时重传,则就会使用拥塞发生算法
此时sshresh
和 cwnd
的值会发生变化:
-
ssthresh
设为发生拥塞时cwnd
值的一半 -
cwnd
重置为1
,并重新开始慢开始算法
接着,就重新开始慢启动,慢启动是会突然减少数据流的,这种方式太激进了,反应也很强烈,会造成网络卡顿。
参考链接:🔎 TCP 重传、滑动窗口、流量控制、拥塞控制
🕤 5.3.3 快速重传
- 采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失。
- 所谓快重传,就是使发送方尽快进行重传,而不是等超时重传计时器超时再重传。
- 要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认;
- 即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
- 发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传。
- 对于个别丢失的报文段,发送方不会出现超时重传,也就不会误认为出现了拥塞(进而降低拥塞窗口cwnd为1)。使用快重传可以使整个网络的吞吐量提高约20%。
🕤 5.3.4 快速恢复
后来的“快速恢复”算法是在上述的“快速重传”算法后添加的,当收到3个重复ACK时,TCP最后进入的不是拥塞避免阶段,而是快速恢复阶段。
当收到3
个连续重复的ACK,则进入快速恢复算法,如下:
-
cwnd = cwnd/2
; -
ssthresh = cwnd
; -
cwnd = ssthresh
(有的版本是cwnd = ssthresh + 3
,+ 3
的意思是确认有 3 个数据包被收到了) - 重传丢失的数据包
- 如果再收到重复的 ACK,那么
cwnd + 1
; - 如果收到新数据的 ACK 后,设置
cwnd = ssthresh
,接着就进入了拥塞避免算法
注:
- “慢开始”是指一开始向网络注入的报文段少,并不是指拥塞窗口cwnd增长速度慢;
- “拥塞避免”并非指完全能够避免拥塞,而是指在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易。
【2009年题39】一个TCP连接总是以1KB的最大段长发送TCP段,发送方有足够多的数据要发送。当拥塞窗口为16KB时发生了超时,如果接下来的4个RTT(往返时间)内的TCP段的传输都是成功的,那么当第4个RTT时间内发送的所有TCP段都得到肯定应答时,拥塞窗口大小是()
A.7KB
B.8KB
C.9KB
D.16KB
解析:
TCP超时重传时间RTO应略大于TCP端到端加权平均往返时间RTTs。
🕘 5.4 TCP可靠传输的实现
TCP基于以字节为单位的滑动窗口来实现可靠传输。
🕘 5.5 TCP的运输管理 ☆
- TCP是面向连接的协议,它基于运输连接来传送TCP报文段。
- TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。
- TCP运输连接有以下三个阶段:
- 建立TCP连接(三报文握手)
- 数据传送
- 释放TCP连接(四报文挥手)
- TCP的运输连接管理就是使运输连接的建立和释放都能正常地进行。
🕤 5.5.1 连接建立(握手)
TCP的连接建立要解决以下三个问题:
- 使TCP双方能够确知对方的存在;
- 使TCP双方能够协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等);
- 使TCP双方能够对运输实体资源((如缓存大小、连接表中的项目等)进行分配。
一开始。TCP服务器进程与客户进程都首先创建传输控制块,用来存储TCP连接中的一些重要信息。例如TCP连接表、指向发送和接收缓存的指针、指向重传队列的指针、当前的发送和接收序号等。
- 一握手(TCP连接请求报文)
同步位SYN=1
:表明这是一个TCP连接请求报文段。seq=x
:TCP客户进程所选择的初始序号。 - 二握手(TCP连接请求确认报文)
SYN=1
,ACK=1
:表明这是一个TCP连接请求确认报文段。seq=y
:作为TCP服务器进程选择的初始序号。
确认号字段ack=x+1
:这是对TCP客户进程选择的初始序号的确认。 - 三握手(普通的TCP确认报文)
确认位ACK=1
:表明这是一个普通的TCP确认报文段。seq=x+1
,这是因为TCP客户进程发送的第一个TCP报文段的序号为x。(发送的下一份TCP报文序号仍然是x+1)ack=y
,这是对TCP服务器进程选择的初始序号的确认。
注意:
- TCP规定
SYN=1
的报文段不能携带数据,但要消耗掉一个序号。 - TCP规定普通的TCP确认报文段回以携带数据,但如果不携带数据。则不消耗序号。
Q:为什么TCP客户进程最后还要发送普通的TCP确认报文段呢?是否多余?
A:不多余,这是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,因而导致错误。
🕤 5.5.2 连接释放(挥手)
- 一挥手(TCP连接释放报文)
- 终止位
FIN
、确认位ACK
设置为1:表明这是一个TCP连接释放报文段,同时也是对之前接收数据的确认。 - 序号
seq=u
:等于TCP客户进程之前已传送过的数据的最后一个字节的序号加1。 - 确认号
ack=v
:等于TCP客户进程之前已收到的数据的最后一个字节的序号加1。
- 终止位
- 二挥手(普通的TCP确认报文)
-
ACK=1
:表明这是一个普通的TCP确认报文段。 -
seq=v
,等于TCP客户进程之前已收到的数据的最后一个字节的序号加1。(发送的下一份TCP报文序号仍然是v) -
ack=u+1
,这是对TCP连接释放报文段的确认。
-
- 三挥手(TCP连接释放报文段,最后确认状态)
-
FIN=1
,ACK=1
:表明这是—个TCP连接释放报文段,同时也对之前收到的报文段进行确认。 -
seq=w
:在半关闭状态下,TCP进程可能发送一些数据,导致序列号增加;如果没有发送数据则w=v
-
ack=u+1
:这是对之前收到的TCP连接释放报文段的重复确认。
-
- 四挥手(普通的TCP确认报文)
-
ACK=1
:表明这是一个普通的TCP确认报文段。 -
seq=u+1
,等于TCP客户进程之前已收到的数据的最后一个字节的序号加1。 -
ack=w+1
,这是对TCP连接释放报文段的确认。
-
注意:TCP规定终止位FIN=1
的报文段即使不携带数据,也要消耗掉一个序号。
习题:
-
【2017 题39】若甲向乙发起一个TCP连接,最大段长MSS=1KB,RTT=5ms,乙开辟的接收缓存为64KB,则甲从连接建立成功至发送窗口达到32KB,需经过的时间至少是
A、25ms
B、30ms
C、160ms
D、165ms -
【2020年 题38】若主机甲与主机乙已建立一条TCP连接,最大段长MSS为1KB,往返时间RTT为2ms,则在不出现拥塞的前提下,拥塞窗口从8KB增长到20KB所需的最长时间是
A、4ms
B、8ms
C、24ms
D、48ms -
【单选题】在一个TCP连接中,MSS为1KB,当拥塞窗口为28KB时发生了超时事件。如果在接下来的3个RTT内报文段传输都是成功的,那么当这些报文段均得到确认后,拥塞窗口的大小是
A、4
B、8
C、9
D、16 -
【单选题】A和B之间建立了TCP连接,A向B发送了一个报文段,其中序号字段seq=200,确认号字段ack=201,数据部分有2个字节,那么在B对该报文段的确认段中( )
A、seq=202, ack=200
B、seq=201, ack=201
C、seq=201, ack=202
D、seq=202, ack=201
答案:
1.A(解析:🔎 视频讲解) 2.C(解析:视频讲解)
3.B(解析:当发生超时事件时,TCP拥塞算法变成慢开始,并且发送窗口swnd更新为1,慢开始门限ssthresh更新为28KB/2=14KB。
第1个RTT结束后,发送窗口swnd增长到2;
第2个RTT结束后,发送窗口swnd增长到4;
第3个RTT结束后,发送窗口swnd增长到8。)
4.C(解析:seqB = ackA ackB = ackA + 1)
🕒 6. 应用层
🕘 6.1 动态主机配置协议DHCP
动态主机配置协议DHCP可以帮助各主机自动获取网络的相关配置,而不需要手工配置。
工作过程:
-
DHCP客户机首先进行广播寻找DHCP服务器(
DHCP DISCOVER
),源地址为本机0.0.0.0
,目的地址为广播地址255.255.255.255
-
DHCP服务器收到后,返回
DHCP OFFER
消息,其中包含提供给DHCP客户机的IP地址(使用ARP确保所选IP地址未被网络中其他主机占用)和相关配置信息。源地址为DHCP服务器地址,目的地址为广播地址(因为此时目的客户机还没有IP地址) -
客户机可能会收到多个DHCP提供消息,一般以收到的第一个为准。此时客户机知道DHCP服务器可以给它分配地址,因此发送
DHCP REQUEST
报文来请求分配IP地址,报文的源地址为0.0.0.0
,目的地址为255.255.255.255
-
DHCP收到请求信息后,查看其中事务ID是否相符,若不符则丢弃;符合则从地址池中取得一个IP地址,并通过ARP协议确认此地址未被使用后,将其封装进
DHCP ACK
信息中,报文源地址为DHCP服务器地址,目的地址为广播地址 -
客户机收到DHCP确认信息后,查看其中事务ID是否相符,不符则丢弃;符合则再次使用ARP确认IP地址没有被使用
- 若被占用:给DHCP服务器发送
DHCP DECLINE
报文撤销IP地址租约,并重新发送DHCP DISCOVER
报文; - 若未被占用:可以使用租约中的IP地址与网络中其他主机通信了。
- 若被占用:给DHCP服务器发送
-
当IP地址租约达到
0.5
倍时间时,客户机会再次向DHCP服务器发送请求信息更新租用期。源地址为租用的IP地址,目的地址为DHCP服务器地址。此时DHCP服务器会出现以下三种情况:- 收到请求后,返回确认报文(
DHCP ACK
),其中有新的IP地址租期,重新设置计时器。 - 收到请求后,返回否认报文(
DHCP NACK
),则客户机收到后立刻停止使用IP地址并重新发送DHCP DISCOVER
报文 -
不响应。则在租期达到0.875倍时,DHCP客户必须重新发送
DHCP REQUEST
报文,继续等待DHCP服务器可能做出的反应。若依然无反应,则租用期到后,客户机必须立刻停止使用当前IP地址,并重新发送DHCP DISCOVER
报文来重新申请IP地址。
- 收到请求后,返回确认报文(
-
客户端可随时终止DHCP服务器提供的租用期,这时只需要向DHCP服务器发送
DHCP RELEASE
即可。源地址0.0.0.0,目的地址255.255.255.255
🕘 6.2 域名系统DNS
域名解析的过程:
递归查询(较少使用):
迭代查询:
由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:文章来源:https://www.toymoban.com/news/detail-497858.html
- 从请求主机到本地域名服务器的查询是递归查询;
- 而其余的查询是迭代查询。
❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页文章来源地址https://www.toymoban.com/news/detail-497858.html
到了这里,关于【计算机网络详解】——知识点复习(期末不挂科版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!