第四章 网络层(TCP/IP称网际层)
4.1 网络层提供的两种服务
| 虚电路服务 | 数据报服务 |
---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 | 连接的建立 | 必须有 | 不需要 | 终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 | 分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 | 当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 | 分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 | 端到端的差错处理和流量控制 | 由网络负责,也可以由用户主机负责 | 由用户主机负责 |
TCP/IP体系的网络层提供的是数据报服务。
4.2 网际协议IP
IP协议配套的三个协议:
- 地址解析协议ARP
- 网际控制报文协议ICMP
- 网际组管理协议IGMP
4.2.1虚拟互连网络
没有一种单一的网络能够适应所有用户的需求。
中间设备:
- 物理层的中间设备:转发器
- 数据链路层中间设备:网桥或桥接器
- 网络层中间设备:路由器
- 网络层以上的中间设备:网关。用网关连接两个不兼容的系统需要在高层进行协议的转换
虚拟互连网络也就是逻辑互连网络,互连起来的各种网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层上看起来好像使一个统一的网络。
互联网可以有多种异构网络互连组成。
4.2.2 分类的IP地址
整个互联网就是一个单一的、抽象的网络。
IP地址的编址方法:
-
分类的IP地址 第一个字段为网络号,它标志主机(或路由器)所连接的网络。一个网络号在整个互联网范围内必须是唯一的。 第二个字段为主机号,它标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须使唯一的。 IP地址::: = {<网络号>,<主机号>}
-
A类地址:8位网络号(0开头)+24位主机号,范围:1.0.0.0 - 126.255.255.255 -
B类地址:16位网络号(10开头)+16位主机号,范围:128.0.0.0 - 191.255.255.255 -
C类地址:24位网络号(110开头)+8位主机/号,范围:192.0.0.0 - 223.255.255.255 -
D类:组播地址,范围:224.0.0.0 - 239.255.255.255 -
E类:保留以后再用,范围:240.0.0.0 - 255.255.255.255 IP地址全0表示this。网络号字段为全0的IP地址是个保留地址,意思使**“本网络”;网络号为127保留作为本地软件环回测试**本主机的进程之间的通信之用。 全0的主机号字段表示该IP地址使“本主机”所连接到的单个网络地址;全1的主机号字段表示该网络上的所有主机。 A类网络可指派的网络号有126个(即
2
7
?
2
2^{7}-2
27?2),网络最大主机数为
2
24
?
2
2^{24}-2
224?2。 B类网络可指派的网络号有
2
16
?
1
2^{16}-1
216?1,因为128.0.0.0一般不指派。网络最大主机数
2
16
?
2
2^{16}-2
216?2。 C类网络可指派的网络号有
2
21
?
1
2^{21}-1
221?1,因为192.0.1.0一般不指派。网络最大主机数
2
8
?
2
2^{8}-2
28?2。 IP地址的指派范围:
网络类别 | 最大可指派的网络数 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 每个网络中的最大主机数 |
---|
A | 126(27-2) | 1 | 126 | 16777214 | B | 16383(214-1) | 128.1 | 191.255 | 65534 | C | 2097151(221-1) | 192.0.1 | 223.255.255 | 254 |
一般不适用的特殊IP地址:
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 含义 |
---|
0 | 0 | 可 | 不可 | 在本网络上的主机(见6.6节DHCP协议) | 0 | host-id | 可 | 不可 | 在本网络上的某个主机host-id | 全1 | 全1 | 不可 | 可 | 只在本网络上进行广播(各路由器均不转发) | net-id | 全1 | 不可 | 可 | 对net-id上的所有主机进行广播 | 127 | 非全0或全1的任何数 | 可以 | 可 | 用作本地软件回环测试之用(例如127.0.0.1) |
可以看到,主机号全为0或网络号全为0的IP地址不可用作目的地址,主机号全为1的IP地址不可用作源地址。 -
子网的划分 -
构成超网
4.2.3 IP地址和硬件地址(MAC地址)
从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。
- IP层抽象的互联网上只能看到IP数据报
- 路由器只根据目的站的IP地址的网络号进行路由选择
- 在局域网的链路层,只能看见MAC帧。
- 在网络层讨论问题,就使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。
4.2.4 地址解析协议ARP
作用:根据一台机器的IP地址解析出对应的硬件地址
4.2.5 IP数据报的格式
-
标志,占3位,目前只有两位有意义。 最低位记为MF。MF = 1表示后面还有分片的数据报。MF = 0 表示这已经是若干数据报片中的最后一个。 中间一位记为DF,意思是不能分片。只有当DF = 0时才允许分片。 -
片偏移,占13位。较长的分组在分片后,某片在原分组中的相对位置。 -
协议:
协议名 | ICMP | IGMP | IP | TCP | EGP | IGP | UDP | IPv6 | ESP | OSPF |
---|
协议字段值 | 1 | 2 | 4 | 6 | 8 | 9 | 17 | 41 | 50 | 89 |
-
首部检验和(只检验数据报的首部,不包括数据部分。)
4.2.6 IP层转发分组的流程
在IP数据报的首部写上的IP地址是源IP地址和目的IP地址,而没有中间经过的路由器的IP地址。
分组转发算法:
? (1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。 ? (2)若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就是间接交付,执行(3)。 ? (3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。 ? (4)若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,”执行(5)。 ? (5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器:否则,执行(6)。 ? (6)报告转发分组出错。
4.3 划分子网和构成超网
4.3.1 划分子网
-
从两级IP地址到三级IP地址 早期IP设计的不合理。
- IP地址空间利用率低
- 会使路由表变太大
- 两级IP不够灵活
划分子网的基本思路
-
一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网(subnet)。划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。 -
划分子网的方法是从网络的主机号借用若干位作为子网号(subnet-id),当然主机号也就相应减少了同样的位数。于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号和主机号。也可以用以下记法来表示:
I
P
地
址
:
:
=
{
<
网
络
号
>
,
<
子
网
号
>
,
<
主
机
号
>
}
IP地址 ::= \lbrace <网络号>,<子网号>,<主机号>\rbrace
IP地址::={<网络号>,<子网号>,<主机号>} -
凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付目的主机。 总之,没有划分子网时,IP地址为两级结构。划分子网后IP地址变成了三级结构。划分子网只是把IP地址的主机号这部分进行划分,而不改变IP地址原来的网络号。 -
子网掩码
子网号的位数 | 子网掩码 | 子网数 | 每个子网的主机数 |
---|
n | 255.255.x.x |
2
n
?
2
2^{n}-2
2n?2 |
2
16
?
n
?
2
2^{16-n}-2
216?n?2 | 2 | 255.255.192.0 (
192
=
2
7
+
2
6
192=2^7+2^6
192=27+26) | 2 |
2
14
?
2
2^{14}-2
214?2 |
“子网号的位数” 0,1,15,16没有意义(全0全1)。 划分子网增加了灵活性,但却减少了能连接在网络上的主机总数。 计算:子网掩码与IP地址相与,得到网络号。
4.3.2 使用子网时分组的转发
子网划分后,路由表必须包含:目的网络地址,子网掩码、下一跳地址。
在划分子网的情况下,路由器转发分组的算法如下:
? (1)从收到的数据报的首部提取目的IP地址
D
D
D。 ? (2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然还需要把
D
D
D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行(3)。 ? (3)若路由表中有目的地址为
D
D
D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。 ? (4)对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和
D
D
D逐位相“与”(AND操作),其结果为
N
N
N。若
N
N
N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行(5)。 ? (5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。 ? (6) 报告转发分组出错。
4.3.3 无分类编址CIDR(构成超网)
-
网络前缀 CIDR两个特点:
-
CIDR消除了传统的A类、B类、C类地址以及划分子网的概念。CIDR把32位的IP地址划分为前后两个部分。前面部分是“网络前缀”,用来指明网络,后面部分则用来指明主机。因此CIDR使IP从三级编址又回到两级编址,但这使无分类的两级地址。其记法:
I
P
地
址
:
:
=
{
<
网
络
前
缀
>
,
<
主
机
号
>
}
IP地址 ::= \lbrace <网络前缀>,<主机号>\rbrace
IP地址::={<网络前缀>,<主机号>} CIDR记法,即在IP地址后面加上斜线“/”,然后写上网络前缀所占的位数。 -
CIDR把网络前缀都相同的连续的IP地址组成一个**“CIDR地址块”**。例如:已知IP地址 128.14.35.7/20 是某个CIDR地址快中的某个地址,写成二进制,前20位是网络前缀,后12位为主机号。
128.14.35.7
/
20
=
10000000
?
00001110
?
0010
0011
?
00000111
128.14.35.7/20 = \mathbf{10000000\:00001110\:0010}0011\:00000111
128.14.35.7/20=10000000000011100010001100000111
| | |
---|
最小地址 | 128.14.32.0 | 100000000 00001110 00100000 00000000 | 最大地址 | 128.14.47.255 | 100000000 00001110 00101111 11111111 |
斜线记法中,斜线后面的数字就是地址掩码中1的个数。 计算:地址掩码与IP地址相与,得到网络号。 路由聚合,也称构成超网。有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
CIDR前缀长度 | 点分十进制 | 包含的地址数 | 相当于包含分类的网络数 |
---|
/n | 255.x.x.x |
2
32
?
n
2^{32-n}
232?n |
2
16
?
n
个
B
类
或
2
24
?
n
个
C
类
2^{16-n}个B类或2^{24-n}个C类
216?n个B类或224?n个C类 | /16 | 255.255.0.0 |
2
16
????
64
k
2^{16}\:\:\:\:64k
21664k | 1个B类或256个C类 |
网络前缀越短,其地址块所包含的地址数就越多。 -
最长前缀匹配 应当从匹配结果中选择具有最长网络前缀的路由。 -
使用二叉线索查找路由表 对唯一前缀做二叉搜索树,匹配不到则说明不在这个二叉线索中;匹配成功则地址掩码与IP地址相与,若与对应的网络前缀匹配,就按下一跳的接口转发该分组。否则,丢弃该分组。 为了提高查找效率,广泛使用压缩技术。
4.4 网际控制报文协议ICMP
4.4.1 ICMP报文种类
ICMP报文的种类有两种,ICMP差错报告报文和ICMP询问报文。
ICMP报文种类 | 类型的值 | ICMP报文的类型 |
---|
差错报文报告 | 3 | 终点不可达 | | 11 | 时间超时 | | 12 | 参数问题 | | 5 | 改变路由(重定向,redirect) | 询问报告 | 8或0 | 回送(echo)请求或回答(测试目的站是否可达以及了解其有关状态) | | 13或14 | 时间戳请求或回答(用于时钟同步和时间测量) |
不应发送ICMP差错报文的几种情况:
- 对ICMP差错报告报文,不再发送ICMP差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文。
- 对具有多播地址的数据报,都不发送ICMP差错报告报文。
- 对具有特殊地址( 如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文。
4.4.2 ICMP应用举例(ping & tracert)
4.5 互联网的路由选择协议
理想的路由算法:
- 算法必须是正确的、完整的。
- 算法再计算上应简单。
- 算法应能适应通信量和网络拓扑的变化(自适应性,稳健性)
- 算法应具有稳定性
- 算法应是公平的
- 算法应是最佳的(只能是相对于某种特定要求下等处较为合理的选择而已。
从算法能否随网络通信量或拓扑自适应地进行调整变化来划分:静态路由选择策略和动态路由选择策略。
分层次的路由选择协议:
一个大的ISP就是一个自治系统。按此分类:
- 内部网关协议IGP
- 外部网关协议EGP
自治系统之间的选择叫域间路由选择,自治系统内的路由选择叫域内路由选择。
4.5.2 内部网关协议RIP
-
工作原理 RIP是一种分布式的基于距离向量的路由选择协议。优点:简单。 ”距离“也称“跳数”。 RIP允许一条路径最多只能包含15个路由器,因此“距离”等于16即相当于不可达。RIP只适用小型互联网。 RIP协议特点:
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表。
- 按固定的时间间隔交换路由信息。
-
距离向量算法 算法要点:设X是结点A到B的最短路径上的一个结点。若把路径A->B拆成两段路径A->X和X->B,则每一段路径A->X和X->B 也都分别是结点A到X和结点X到B的最短路径。 计算:更新路由表;P155例题 +1改路由,无增 有同大 有异小 RIP协议使得从每一个路由器到每一个目的网络的路由都是最短的。 -
之后可能补充 -
之后可能补充
4.5.3 内部网关协议OSPF
- OSPF协议的基本特点
- “最短路径优先” 是因为使用了Dijkstra提出的最短路径算法SPF
- 采用分布式的链路状态协议(link state)
- 三个要点
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 发送的信息就是与本路由器相邻的所有的路由器的链路状态,但这只是路由器所知道的部分信息
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
4.5.4 外部网关协议BGP
BGP是不同自治系统的路由器之间交换路由信息的协议。
4.8 虚拟专用网VPN和网络地址转换NAT
4.8.1 虚拟专用网VPN
专用地址:只能用于一个机构的内部通道,不能用于和互联网上的主机通信。
在互联网中的所有路由器中,对目的地址是专用地址的数据报一律不进行转发。
由场所A和B的内部网络所构成的虚拟专用网VPN又称内联网,表示场所A和B都属于同一个机构。
有时一个机构的VPN需要有某些外部机构,这样的VPN称为外联网。
还有一种类型的VPN,就是远程接入VPN。
4.8.2 网络地址转换NAT
网络地址转换NAT需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网连接。
这种专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务。
使用端口号的NAT也叫做网络地址与端口号转换NAPT,不使用端口号的NAT就叫做传统的NAT。
|