《计算机网络》 第四章 网络层

第四章 网络层

4.1 网际协议IP

1.网际协议 IP 是TCP/IP 体系中两个最主要的协议之一
与 IP 协议配套使用的还有三个协议

  • 地址解析协议 ARP
  • 网际控制报文协议 ICMP
  • 网际组管理协议 IGMP
    这里写图片描述
    与网络互相连接需要使用一些中间设备:
    (1)物理层使用的中间设备叫做转发器
    (2)数据链路层使用的中间设备叫做网桥桥接器
    (3)网络层使用的中间设备叫做路由器
    (4)在网络层以上使用的中间设备叫做网关

2.分组在互联网中的传送
例如: H1 要把一个 IP 数据包发送给目的主机 H2
这里写图片描述
步骤
(1)主机H1先要查找自己的路由表,看目的主机是否就在本网络上。
(2)① 如果是,则不需要经过任何路由器而是直接交付,任务就完成了。
② 如果不是,则必须把IP数据报发送给某个路由器(如图中的R1),R1再查找自己的路由表后,知道应当把IP数据报转发给R2进行间接交付。这样一直转发下去,最后由路由器R5知道自己是和H2连接在同一个网络上,不需要再使用别的路由器转发了,于是就把IP数据报直接交付给目的主机H2。

4.2 分类的 IP 地址

一. IP 地址及其表示方法
1.分类的 IP 地址:将 IP 地址划分为若干个固定类(A、B、C类),这三类地址都由两个固定长度的字段组成,其中第一个字段是网络号,标志主机所连接的网络。第二个字段是主机号,标志该主机。

        IP 地址 ::= {<网络号>,<主机号>}

这里写图片描述

  • A类、B类、C类地址的网络号字段分别是1个、2个、3个字节长。并且在网络号字段的前面有1~3位的类别位,其数值分别规定为0,10,110.
  • A类、B类、C类地址的主机号字段分别为3个、2个、1个字节长。

近几年来已经广泛使用无分类 IP 地址进行路由选择,A类、B类、C类地址的区别已成为历史。
从 IP 地址的结构来看,IP 地址并不仅仅指明一台主机,而是指明主机所接连到的网络。

2.常用的三种类别的 IP 地址
(1)A类地址
网络号占1个字节,只有 7 位可供使用,但可指派的网络号是126个(即2^7-2),减 2 的原因是第一,全 0 的 IP 地址是个保留地址,意思是“本网络”;第二,网络号为127(即01111111)保留作为本地软件环回测试本主机的进程之间的通信之用。

主机号占3个字节,因此每一个 A 类网络中的最大主机数是2^24-2,减 2 的原因:第一,全 0 的主机号字段表示该 IP 地址是“本主机”所连接到的单个网络地址(例如,一主机的 IP 地址为 5.6.7.8,则该主机所在的网络地址就是 5.0.0.0);第二,全 1 表示“所有的”,因此全 1 的主机号字段表示该网络上的所有主机。

(2)B类地址
网络号占2个字节,由于前两位(1 0)已经固定,所以不存在网络为全 0 或全 1 的情况。但实际上B类网络地址 128.0.0.0 是不指派的,而可以指派的 B 类最小网络地址是 128.1.0.0。因此 B 类地址可指派的网络数为 2^14-1。B 类地址的每一个网络上的最大主机数是 2^16-2。减 2 是因为要扣除全 0 和全 1 的主机号

(3)C类地址
网络号占3个字节,最前面的 3 位是(1 1 0),还有 21 位可以进行分配。C 类网络地址 192.0.0.0也是不指派的,可以指派的 C 类最小网络地址是 192.0.1.0,因此 C 类地址可指派的网络总数是 2^21-1.每一个 C 类地址的最大主机是 2^8-2。

IP 地址的指派范围如下图:
这里写图片描述

IP 地址具有以下特点:
(1)每一个 IP 地址都有网络号和主机号两部分组成。IP 地址是一种分等级的地址结构。好处是:第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。第二,路由器仅根据目的主机所连接的网络号来转发分组,减小了路由器所占的存储空间以及查找路由表的时间。
(2)IP 地址是标志一台主机或一条链路的接口。当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须是不同的。
(3)用转发器或网桥连接起来的若干个局域网仍为一个网络
(4)在 IP 地址中,所有分配到网络号的网络都是平等的。

4.2.3 IP 地址与硬件地址

硬件地址:是数据链路层和物理层使用的地址。
IP 地址:是网络层和以上各层使用的地址,是一种逻辑地址,
这里写图片描述

4.2.4 地址解析协议 ARP

地址解析协议:当知道一个主机的 IP 地址,通过地址解析协议 ARP 来找出相应的硬件地址。

地址解析协议 ARP 作用:在主机 ARP 高速缓存中存放一个从 IP 地址到硬件地址的映射表,并且这个映射表经常动态更新。
每一台主机都设有一个 ARP 高速缓存(ARP Cache),里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表(并且每一个映射地址都设置有生存时间)。

使用 ARP 的四种典型情况
这里写图片描述
(1)发送方是主机(如H1),要把 IP 数据报发送到同一个网络上的另一台主机(如H2)。这时H1先查看自身 ARP 缓存表是否有 H2 硬件地址,有的话则直接发送。若没有则发送 ARP 请求分组(在网1上广播),找到目的主机 H2 的硬件地址。
(2)发送方是主机(如H1),要把 IP 数据报发送到另一个网络上的一台主机(如H3或H4)。这时发送 ARP 请求分组(在网1上广播),找到网1上的一个路由器 R1 的硬件地址。剩下的工作由路由器 R1 来完成。R1 要做的事情是下面的(3)或(4)。
(3)发送方是路由器(如R1),要把 IP 数据报转发到与 R1 连接在同一个网络(网2)上的主机(如H3)。这时 R1 发送 ARP 请求分组(在网2上广播),找到目的主机 H3 的硬件地址。
(4)发送方是路由器(如R1),要把 IP 数据报转发到网3上的一台主机(如H4)。H4与 R1 不是连接在同一个网络上。这时 R1 发送 ARP 请求分组(在网2上广播),找到连接在网 2 上的一个路由器 R2 的硬件地址。剩下的工作由这个路由器 R2来完成。

4.2.5 IP 数据报的格式

在 TCP/IP 的标准中,各种数据格式常常以 32 位(即 4 个字节)为单位来描述。
这里写图片描述
IP 数据报由首部数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。

(1)版本号:占 4 位,指 IP 协议的版本。目前广泛使用的 IP 协议版本号为 4(即 IPv4)。
(2)首部长度:占4位。最常用的首部长度是 20 字节。
(3)区分服务:占 8 位,用来获得更好的服务。一般情况下都不使用这个字段。
(4)总长度:总长度指首部和数据之和的长度,单位为字节。总长度字段为 16 位,因此数据包的最大长度为 2^16-1 = 65535 字节。由于在数据链路层规定了由网络层传来的 IP 数据包的最大传送单元 MTU 为1500字节,因此必须把过长的数据报进行分片处理。
(5)标识:占 16 位。每当产生一个 IP 数据包,存储器中的一个计数器就加 1,并将此值赋给标识字段。当数据报由于长度超过 MTU 而必须分片时,这个标识字段的值就会被复制到每一个数据包片的标识字段中。以便于在重组 IP 数据报时能正确的重装成原来的数据报。
(6)标志:占 3 位。
① 标志字段中的最低位记为 MF。MF = 1即表示后面“还有分片”的数据报。 MF = 0 表示这已经是若干数据报片中的最后一个。
② 标志字段中间的一位记为 DF。DF = 0 才表示允许分片。
(7)片偏移:占 13 位。片偏移指相对于分片后的 IP 数据报的起点,该片从何处开始。片偏移以 8 个字节为偏移单位。因此,每个分片的长度一定是 8 个字节的整数倍。(片偏移 = 偏移量/8)
(8)生存时间(TTL):占 8 位。数据报在网络中的寿命。现在将跳数作为 TTL 值得单位。数据报每经过一个路由器之前就把 TTL 值减 1.若 TTL 值减小到零,则丢弃这个数据报,不再转发。数据报能在互联网中经过的路由器的最大数值是 255。若把 TTL 的初始值设置为 1,就表示这个数据报只能在本局域网中传送(因为这个数据报一传送到局域网上的某个路由器,在被转发之前 TTL 值就减小到零,因而就会被这个路由器丢弃)。
(9)协议:占 8 位。协议字段指出此数据报携带的数据是使用何种协议。
(10)首部检验和:占 16 位。这个字段只检验数据报的首部,但不包括数据部分。数据报每经过一个路由器,路由器都要重新计算一下首部检验和,若值为 0,则保留这个数据报。若值为 1,则认为该数据报出差错,将此丢弃。
(11)源地址:占 32 位。
(12)目的地址:占 32 位。

4.2.6 IP 层转发分组的流程

每一个路由器都有一个路由表,记载着该路由可转发分组的路由信息。
每一条路由有一下两个信息

    (目的网络地址,下一跳地址)

4.3 划分子网和构造超网

4.3.1 划分子网

1.从两级 IP 地址到三级 IP 地址
划分子网的方法是从网络的主机号借用若干位作为子网号,当然主机号也就相应减少了同样的位数。于是两级 IP 地址就变成三级 IP 地址:网络号、子网号和主机号。

    IP 地址 ::={<网络号>,<子网号>,<主机号>}

凡是从其他网络发送给本单位某台主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号找到连接在本单位网络上的路由器。此路由器在收到 IP 数据报后,再按目的网络号和子网号找到目的子网,把 IP 数据报交付目的主机。

2.子网掩码(长度为 32 位)
将 IP 地址的网络号,子网号全写成 1,主机号全写成 0。

如何通过子网掩码得出子网的网络地址?
将 IP 地址的二进制与子网掩码的二进制进行逐位相“与”,得出的就是子网的网络地址。

例如:
一个 IP 地址为 145.13.3.10,子网掩码是 255.255.255.0,都转成二进制
IP 地址: 10010001.00001101.00000011.00001010
子网掩码:11111111.11111111.11111111.00000000
子网的网络地址:10010001.00001101.00000011.00000000(145.13.3.0)

从网络地址 145.13.0.0 来看,这就是一个普通的 B 类地址,但进入这个网络后,就看到了许多网络(地址是 145.13.x.0)。从网络的外面和里面,看到的网络是不一样的。

4.3.2 无分类编址 CIDR(构造超网)

1.网络前缀
CIDR 特点:
(1)消除了传统的 A 类、B 类、C 类地址以及划分子网的概念。CIDR 把 32 位的 IP 地址划分为前后两个部分。前面部分是“网络前缀”,用来指明网络,后面部分用来指明主机。

        IP 地址 ::={<网络前缀>,<主机号>}

CIDR 使用“斜线记法”,即在 IP 地址后面加上斜线 “/”,然后写上网络前缀所占的位数。

    128.14.35.7/20 = 10000000.00001110.00100011.00000111

(2) CIDR 把网络前缀都相同的连续的 IP 地址组成一个“CIDR 地址块”。通过这个地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。

例如 IP 地址 128.14.35.7/20
最小地址 128.14.32.0 10000000.00001110.00100000.00000000
最大地址 128.14.47.255 10000000.00001110.00101111.11111111
当然,以上这两个特殊地址的主机号是全 0 和全 1 的地址,一般并不使用,通常只使用这两个特殊地址之间的地址。这个地址块共有 2^12 个地址。因为目前仍有一些网络还使用子网划分和子网掩码,因此 CIDR 使用的地址掩码也可称为子网掩码。例如,128.14.32.0/20 地址块的地址掩码是:11111111.11111111.11110000.00000000(20个连续的 1),斜线后面的数字就是地址掩码中 1 的个数。

4.4 网际控制报文协议 ICMP

为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP

4.4.1 ICMP 报文的种类

① ICMP 差错报告报文
② ICMP 询问报文

4.5 内部网关协议 RIP

1.工作原理
RIP 是一种分布式的基于距离向量的路由选择协议。网络中每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

RIP 协议的特点
仅和相邻路由器交换信息。
② 路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表
按固定的时间间隔交换路由信息。
路由器刚刚开始工作时,它的路由表是空的。然后路由器可以得出与自己相邻的几个网络的距离。接着,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。经过若干次的更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。

路由表中最主要的信息就是:到某个网络的最短距离,以及应经过的下一跳地址。路由表更新的原则就是找出到每个目的网络的最短距离,这种更新算法又称为距离向量算法

2.距离向量算法
对每一个相邻路由器发送过来的 RIP 报文,进行一下步骤:
(1)对地址为 X 的相邻路由器发来的 RIP 报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改成 X,并把所有的“距离”字段的值加 1(两个路由之间的距离为 1)。每一个项目都有三个关键数据,即:到目的网络 N,距离是 d,下一跳路由器是 X。
(2)对修改后的 RIP 报文中的每一个项目,进行以下步骤:
若原来的路由表中没有目的网络 N,则把该项目添加到路由表中。
否则(即在路由表中有目的网络 X,这时就再查看下一跳路由器地址)
若下一跳路由器地址是 X,则把收到的项目替换原路由表中的项目。
否则(即这个项目是:到目的网络 N,但下一跳路由器不是 X)
若收到的项目中的距离 d 小于路由表中的距离,则进行更新。
否则什么也不做。
(3)若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为 16(距离为 16 表示不可达)。
(4)返回。

栗子
假定网络中的路由器 B 的路由表有如下的项目:
这里写图片描述
现在 B 收到从 C 发来的路由信息:
这里写图片描述
试求出路由器 B 更新后的路由表
这里写图片描述

3.RIP 协议的报文格式
这里写图片描述
RIP 协议使用运输层的用户数据报 UDP 进行传送。
RIP 报文由首部路由部分组成。

RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器
这里写图片描述
现假定路由器 R1 到网络 1的链路出现了故障,R1 无法到达网 1.于是路由器 R1 把网 1 的距离改成 16(表示到网 1 不可达),因而在 R1 的路由表中的相应项目变成“1,16,直接”。但是,很可能要经过一段时间后 R1 才把更新信息发送给 R2.然而 R2 可能已经先把自己的路由表发送给了 R1,其中有“1,2,R1”这一项。
R1 收到 R2 的更新报文后,误以为可经过 R2 到达网 1,于是把收到的路由信息“1,2,R1”修改为:“1,3,R2”,表明“我到网 1 的距离是 3,下一跳经过 R2”,并把更新后的信息发送给 R2.
同理,R2 接着又更新自己的路由表为“1,4,R1”,以为“我到网 1 的距离是4,下一跳经过 R1”。
这样的更新一直继续下去,直到 R1 和 R2到网 1 的距离都增大到 16 时,R1 和 R2 才知道原来网 1 是不可达的。这就是 RIP 协议的特点:好消息传播的快,坏消息传播的慢

猜你喜欢

转载自blog.csdn.net/swpu_ocean/article/details/80307461
今日推荐