网络层提供的两种服务
在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
TCP/IP体系的网络层提供的是数据报服务,因此下面我们的讨论都是围绕网络层如何传递IP数据报。
网际协议 IP
- 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。
- 与 IP 协议配套使用的还有三个协议:
地址解析协议 ARP (Address Resolution Protocol)
网际控制报文协议 ICMP (Internet Control Message Protocol)
网际组管理协议 IGMP (Internet Group Management Protocol)
使用一些中间设备进行互连
- 将网络互相连接起来要使用一些中间设备。
- 中间设备又称为中间系统或中继 (relay)系统。
- 有以下五种不同的中间设备:
物理层中继系统:转发器 (repeater)。
数据链路层中继系统:网桥 或 桥接器 (bridge)。
网络层中继系统:路由器 (router)。
网桥和路由器的混合物:桥路器 (brouter)。
网络层以上的中继系统:网关 (gateway)。
网络互连使用路由器
- 当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。
- 网关由于比较复杂,目前使用得较少。
- 网络互连都是指用路由器进行网络互连和路由选择。
- 由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关。
虚拟互连网络的意义
- 所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
- 使用 IP 协议的虚拟互连网络可简称为 IP 网。
- 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
- 如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。
IP 地址的编址方法
- 分类的 IP 地址。这是最基本的编址方法,在1981年就通过了相应的标准协议。
- 子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在1985年通过。
- 构成超网。这是比较新的无分类编址方法。1993年提出后很快就得到推广应用。
分类 IP 地址
IP 地址的指派范围
一般不使用的特殊的 IP 地址
IP 地址的一些重要特点
(1) IP 地址是一种分等级的地址结构。分两个等级的好处是:
- 第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
- 第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
(2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机 (multihomed host)。
- 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
(3) 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
(4) 所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。
路由器总是具有两个或两个以上的IP地址。路由器的每一个接口都有一个不同网络号的IP地址。
两个路由器直接相连的接口处,可指明也可不指明IP地址。如指明IP地址,则这一段连线就构成一种只包含一段线路的特殊“网络” 。现在常不指明IP地址。
地址解析协议 ARP
通信时使用了两个地址:
- IP 地址(网络层地址)
- MAC 地址(数据链路层地址)
ARP 作用:从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。
地址解析协议 ARP 要点
- 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
- 每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
windows系统查看ARP缓存 :在dos中输入 arp -a命令
应当注意的问题
- ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
- 如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
- 从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
- 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。
为什么不直接使用硬件地址进行通信?
- 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
- IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
- 因此,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便。
IP数据包的格式(很重要 https://blog.csdn.net/Wu000999/article/details/88617237)
IP 层转发分组的流程
- 假设:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。
- 可以想象,若按目的主机号来制作路由表,每一个路由表就有 4 万个项目,即 4 万行(每一行对应于一台主机),则所得出的路由表就会过于庞大。
- 但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目(每一行对应于一个网络),这样就可使路由表大大简化。
查找路由表
根据目的网络地址就能确定下一跳路由器,这样做的结果是:
- IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
- 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
特定主机路由
- 虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。
- 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
默认路由 (default route)
只要目的网络不是 N1 和 N2,就一律选择默认路由,把数据报先间接交付路由器 R1,让 R1 再转发给下一个路由器。
必须强调指出
- IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。
- 当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。
- 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
关于路由表
- 路由表没有给分组指明到某个网络的完整路径。
- 路由表指出,到某个网络应当先到某个路由器(即下一跳路由器)。
- 在到达下一跳路由器后,再继续查找其路由表,知道再下一步应当到哪一个路由器。
- 这样一步一步地查找下去,直到最后到达目的网络。
划分子网
从两级 IP 地址到三级 IP 地址
在 ARPANET 的早期,IP 地址的设计确实不够合理:
- (1) IP 地址空间的利用率有时很低。
- (2) 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
- (3) 两级的 IP 地址不够灵活。
划分子网的基本思路
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
- 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
- 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
- 最后就将 IP 数据报直接交付目的主机。
一个未划分子网的 B 类网络145.13.0.0
划分为三个子网后对外仍是一个网络
划分子网后变成了三级结构
- 当没有划分子网时,IP 地址是两级结构。
- 划分子网后 IP 地址就变成了三级结构。
- 划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。
- 优点
减少了 IP 地址的浪费
使网络的组织更加灵活
更便于维护和管理 - 划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络。
从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分。
子网掩码是一个重要属性
- 子网掩码是一个网络或一个子网的重要属性。
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
- 若一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码。
无分类编址 CIDR
- 使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。
- 在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
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 的主机号地址一般不使用。
路由聚合 (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
- 为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
- ICMP 是互联网的标准协议。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
- 但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。
ICMP 报文的格式(重点)https://blog.csdn.net/Wu000999/article/details/88622948
ICMP 报文的种类
- ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
- ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
ICMP 差错报告报文的数据字段的内容
不应发送 ICMP 差错报告报文的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
ICMP 询问报文有两种
- 回送请求和回答报文
- 时间戳请求和回答报文
下面的几种 ICMP 报文不再使用:
- 信息请求与回答报文
- 掩码地址请求和回答报文
- 路由器询问和通告报文
- 源点抑制报文
理想的路由算法
算法必须是正确的和完整的。
算法在计算上应简单。
算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
算法应具有稳定性。
算法应是公平的。
算法应是最佳的。
静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
分层次的路由选择协议
互联网采用分层次的路由选择协议。这是因为:
(1) 互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。
(2) 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到互联网上。
自治系统 AS (Autonomous System)
- 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
- 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
内部网关协议 IGP (Interior Gateway Protocol)
- 在一个自治系统内部使用的路由选择协议。
- 目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
外部网关协议 EGP (External Gateway Protocol)
- 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。
内部网关协议(IGP) : OSPF ISIS RIP(现在已经很少用)
外部网关协议(EGP) : BGP
距离矢量算法路由协议 : BGP RIP
链路状态算法路由协议 : OSPF ISIS
IPV6