4.网络层

网络层提供的两种服务

ip层两种服务

网际协议 IP

与 IP 协议配套使用的还有三个协议:

  • 地址解析协议 ARP (Address Resolution Protocol)
  • 网际控制报文协议 ICMP (Internet Control Message Protocol)
  • 网际组管理协议 IGMP (Internet Group Management Protocol)
    IP层配套协议

虚拟互连网络

将网络互相连接起来要使用一些中间设备。
中间设备又称为中间系统或中继 (relay)系统。
有以下五种不同的中间设备:

  • 物理层中继系统:转发器 (repeater)。
  • 数据链路层中继系统:网桥 或 桥接器 (bridge)。
  • 网络层中继系统:路由器 (router)。
  • 网桥和路由器的混合物:桥路器 (brouter)。
  • 网络层以上的中继系统:网关 (gateway)。

当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。
网关由于比较复杂,目前使用得较少。
网络互连都是指用路由器进行网络互连和路由选择。

虚拟互连网络的意义
所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
使用 IP 协议的虚拟互连网络可简称为 IP 网。
使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。

分类的 IP 地址

ip地址==网络号 net-id+主机号 host-id
各类ip地址
各类ip地址
三类常用ip地址
三类常用ip地址1
特殊ip
特殊ip

IP 地址的一些重要特点

  1. IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
  2. 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。

实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。

  • 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机 (multihomed host)。
  • 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。

用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。

所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。

地址解析协议 ARP

ARP 作用:从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
TTL (Time To Live):地址映射有效时间 。

< IP address;MAC address;TTL >

ip与mac

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 发送数据报时就更方便了。

应当注意的问题

  • ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
  • 如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
  • 从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
  • 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。

为什么不直接使用硬件地址进行通信

  • 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
  • IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
  • 因此,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便。

IP 数据报的格式

一个 IP 数据报由首部和数据两部分组成。
首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的。
ip数据包格式

  • 版本 :占 4 位,指 IP 协议的版本。
  • 首部长度 :占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
  • 区分服务 :占 8 位,用来获得更好的服务。一般不用,只有在使用区分服务时才用
  • 总长度 :占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元MTU。
  • 标识(identification) ——占 16 位,
    它是一个计数器,用来产生 IP 数据报的标识。
  • 标志(flag) ——占 3 位,目前只有前两位有意义。
    标志字段的最低位是 MF (More Fragment)。
    MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。
    标志字段中间的一位是 DF (Don't Fragment) 。
    只有当 DF=0 时才允许分片。
  • 片偏移 :占13 位,指出:较长的分组在分片后
    某片在原分组中的相对位置。
    片偏移以 8 个字节为偏移单位。
  • 生存时间 :占8 位,记为 TTL (Time To Live),
    指示数据报在网络中可通过的路由器数的最大值。
  • 协议 :占8位,指出此数据报携带的数据使用何种协议,
    以便目的主机的 IP 层将数据部分上交给那个处理过程
  • 首部检验和 :占16 位,只检验数据报的首部,
    不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。(求和取反码)
    -可变部分 :IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
    选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
    增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
    实际上这些选项很少被使用。

IP 层转发分组的流程

按主机所在的网络地址来制作路由表
路由器分组转发算法

  1. 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
  2. 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)。
  3. 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。
  4. 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。
  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。
  6. 报告转发分组出错。

划分子网和构造超网

划分子网

在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。这种做法叫做划分子网 (subnetting)

在 ARPANET 的早期,IP 地址的设计确实不够合理:
(1) IP 地址空间的利用率有时很低。
(2) 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
(3) 两级的 IP 地址不够灵活。

划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
IP地址 ::= {<网络号>, <子网号>, <主机号>}

凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
最后就将 IP 数据报直接交付目的主机。

优点:

  1. 减少了 IP 地址的浪费
  2. 使网络的组织更加灵活
  3. 更便于维护和管理

划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络。

子网掩码是一个网络或一个子网的重要属性。

  • 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
  • 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
  • 若一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码。

有固定长度子网和变长子网两种子网划分方法。
在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。
划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。

“子网号的位数”中没有 0, 1, 15 和 16 这四种情况,因为这没有意义。

使用子网时分组的转发

与IP 层转发分组的流程相似,区别就是多了个与操作

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

无分类域间路由选择 CIDR (Classless Inter-Domain Routing)

CIDR 最主要的特点

  • CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
  • CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
  • IP 地址从三级编址(使用子网掩码)又回到了两级编址。

无分类的两级编址
IP地址 ::= {<网络前缀>, <主机号>}
CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24
CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。

路由聚合 (route aggregation)

  • 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
  • 路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
  • 路由聚合也称为构成超网 (supernetting)。
  • CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
  • 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。

构成超网

  • 前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
  • 这些 C 类地址合起来就构成了超网。
  • CIDR 地址块中的地址数一定是 2 的整数次幂。
  • 网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
  • CIDR 的一个好处是:可以更加有效地分配 IPv4 的地址空间,可根据客户的需要分配适当大小的 CIDR 地址块。

使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配 (longest-prefix matching)。
网络前缀越长,其地址块就越小,因而路由就越具体 (more specific) 。

网际控制报文协议 ICMP

ICMP 报文的种类

为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。

ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。

ICMP 差错报告报文共有 4 种

  • 终点不可达
  • 时间超过
  • 参数问题
  • 改变路由(重定向)(Redirect)

不应发送 ICMP 差错报告报文的几种情况

  • 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
  • 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
  • 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
    对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。

ICMP 的应用举例

PING (Packet InterNet Groper)

PING 用来测试两个主机之间的连通性。
PING 使用了 ICMP 回送请求与回送回答报文。
PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。

Traceroute

在 Windows 操作系统中这个命令是 tracert。
用来跟踪一个分组从源点到终点的路径。
它利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪。

互联网的路由选择协议

静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。

自治系统之间的路由选择也叫做域间路由选择 (interdomain routing),在自治系统内部的路由选择叫做域内路由选择 (intradomain routing) 。

内部网关协议 IGP (Interior Gateway Protocol)

在一个自治系统内部使用的路由选择协议。 如 RIP 和 OSPF 协议。

RIP

RIP 是一种分布式的、基于距离向量的路由选择协议。

RIP 允许一条路径最多只能包含 15 个路由器。
“距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。
RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

相邻路由器交换自己的全部信息,按固定时间交换信息,例如每隔30秒,RIP的收敛速度较快。
路由表更新算法
路由表更新算法
RIP 协议特点:好消息传播得快,坏消息传播得慢。

优点:

  1. 实现简单,开销较小。

缺点:

  1. RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
  2. 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
  3. “坏消息传播得慢”,使更新过程的收敛时间过长。

OSPF

开放最短路径优先 OSPF (Open Shortest Path First)OSPF 的原理很简单,但实现起来却较复杂。
只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送链路状态信息。

  • 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
  • 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
  • OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。
  • OSPF 的更新过程收敛得快是其重要优点。

OSPF 划分区域
划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。

OSPF 直接用 IP 数据报传送
OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。

外部网关协议 EGP (External Gateway Protocol)

使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。如BGP-4。

每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” (BGP speaker) 。
一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。

BGP 交换路由信息

一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。
使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站(neighbor)或对等站(peer) 。

BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。

路由器的主要作用是:

  • 连通不同的网络。
  • 选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。

路由器结构
路由器三种交换方法
路由器三种交换方法

IPv6

IPv6 的基本首部

IPv6 将首部长度变为固定的 40 字节,称为基本首部。
把首部中不必要的功能取消了,使得 IPv6 首部的字段数减少到只有 8 个。
ipv6数据报格式
ipv6

从 IPv4 向 IPv6 过渡

向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。

使用双协议栈

  • 双协议栈 (dual stack) 是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6。
  • 双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址。
  • 双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址。
  • 根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址。

使用隧道技术

  • 在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。
  • 当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。

ICMPv6

  • IPv6 也不保证数据报的可靠交付,因为互联网中的路由器可能会丢弃数据报。
  • 因此 IPv6 也需要使用 ICMP 来反馈一些差错信息。新的版本称为 ICMPv6。

地址解析协议 ARP 和网际组管理协议 IGMP 协议的功能都已被合并到 ICMPv6 中。

IP 多播

IP 多播 (multicast,以前曾译为组播) 已成为互联网的一个热门课题。
目的:更好地支持一对多通信。
一对多通信:一个源点发送到许多个终点。
例如,实时信息的交付(如新闻、股市行情等),软件更新,交互式会议及其他多媒体通信。

多播路由选择协议在转发多播数据报时使用三种方法:
(1) 洪泛与剪除
(2) 隧道技术 (tunneling)
(3) 基于核心的发现技术

虚拟专用网 VPN 和网络地址转换 NAT

虚拟专用网 VPN

三个专用 IP 地址块

网络地址转换

网络地址转换的过程

posted @ 2021-07-24 20:32  sellun  阅读(288)  评论(0编辑  收藏  举报