《计算机网络--谢希仁》 第四章 网络层 Part1

《计算机网络--谢希仁》 第四章 网络层 Part1

重要内容:

    1) 虚拟互联网络的概念;

    2) IP地址与物理地址的关系;

    3) 传统的分类的IP地址(包括子网掩码)和无分类域间路由选择CIDR;

    4) 路由选择协议的工作原理。

参考博客:

    参考博客1

    参考博客2

1 网络层提供的两种服务

    可靠交付 or 最大努力交付
    面向连接、无差错交付的虚电路服务–电信网
    无连接的、尽最大努力交付的数据报服务–因特网
    因特网的优点:网络的造价大大降低,运行方式灵活,能够适应多种应用。


2 网际协议IP

    与IP协议配套的四个协议:

        地址解析协议ARP(Address Resolution Protocol)

        逆地址解析协议RARP(已淘汰)(Reverse Address Resolution Protocol)

        网际控制报文协议ICMP(Internet Control Message Protocol)

        网际组管理协议IGMP(Internet Group Management Protocol)

    IP协议与其配套协议的关系:


2.1 虚拟互联网络

    网络互相连接起来要使用一些中间设备,中间设备又称为中间系统或中继(relay)系统。

    1) 物理层中继系统:转发器(repeater);

    2) 数据链路层中继系统:网桥或桥接器(bridge);

    3) 网络层中继系统:路由器(router);

    4) 网络层以上的中继系统:网关(gateway);

    5) 网桥和路由器的混合物:桥路器(brouter)。

    注:由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关。

    虚拟互联网络,就是逻辑互连的网络,它的意思是互连起来的各种物理网络的异构性本来是客观存在的,但是利用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。互联网可以由多种异构网络互连组成。

   使用 IP 协议的虚拟互连网络可简称为 IP 网。

2.2 分类的IP地址

    整个因特网就是一个单一的、抽象的网络。IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。IP 地址现在由因特网名字与号码指派公司ICANN (Internet Corporation for Assigned Names and Numbers)进行分配 。

    IP地址的编址方法共经过了3个历史阶段:

    1) 分类的IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议;所谓分类的IP地址就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个因特网范围内是唯一的;

    2) 子网的划分。这是对最基本的编址方法的改进,其标准RFC950在1985年通过;

    3) 构成超网。这是比较新的编址方法。1993年提出后很快就得到推广应用。

    A类B类C类地址都是单播地址(一对一通信)。A、B、C类网络号字段分别为3、2、1个字节,D类地址用于多播(一对多通信)。E类地址保留为以后用。

    IP地址中的网络号和主机号字段:


    点分十进制记法:


    常用的三种类别的IP地址的使用范围


    一般不使用的特殊IP地址:



    IP地址的特点:

  • 每个IP地址都有网络号和主机号。IP地址是一种分等级的地址结构,好处:第一,IP地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则有该网络号的单位自行分配。第二,路由器仅根据目的主机所连接的网络号来转发分组(不考虑目的主机号),这样使路由表中的项目数大幅度减少,从而减少了路由表所占存储空间以及查找路由表的时间。
  • IP地址是标志一个主机(或路由器)和一条链路的接口。一个路由器至少应当连接到两个网络,因此路由器属于多归属主机,必须至少同时具有两个不同的IP地址。
  • 一个网络是指具有相同网络号net-id的主机的集合,因此用转发器或网桥连接起来的若干个局域网仍然是一个网络。具有不同网络号的局域网必须使用路由器进行互连。
  • 在IP地址中,所分配到网络号的网络都是平等的。
  • 在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。
  • 用网桥(只在链路层工作)互连的网段仍然是一个局域网,只能有一个网络号。
  • 路由器总是具有两个或以上的IP地址,路由器的每一个接口都有一个不同的网络号和IP地址。

2.3 IP地址和硬件地址

    物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(因为IP地址通过软件实现)。

    IP地址放在IP数据报的首部,而硬件地址则放在MAC帧的首部。


2.4 地址解析协议ARP和逆地址解析协议RARP



    现在的DHCP协议已经包含了RARP协议。

    地址解析协议ARP在主机ARP高速缓存中存放一个IP地址到硬件地址的映射表,并且这个映射表经常动态更新(新增或超时删除)。

    每一个主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表。

    A向局域网B发送IP数据报时,先在其 ARP 高速缓存中查看有无主机B的IP地址,如果有,就在ARP高速缓存中查出对应的硬件地址,再把这个硬件地址写入MAC帧。如果没有缓存,则按一下步骤:

  • ARP 进程在本局域网广播发送一个ARP请求分组
  • 在本局域网上所有的主机运行的ARP进程都收到此ARP请求分组
  • 主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余所有主机不理睬。
  • A收到B的ARP响应后,就写入缓存

    ARP把保存在高速缓存中的每一个映射地址都设置生存时间,凡超过生存时间的项目就从高速缓存中删除掉。

    注意:ARP是解决同一局域网上的主机或路由器的IP地址和硬件地址的映射问题。

    ARP解析的是四种情况:

  • 发送方是主机,把IP数据报发送到本网络的另一个主机,ARP找到主机的硬件地址。
  • 如果一个主机发送给另一个网络上的主机,这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作交给路由器处理。
  • 发送方是路由器,发到本网络主机,由ARP找到主机硬件地址。
  • 如果一个路由器要发送给另一个网络上的主机,用ARP找到本网络上的一个路由器,剩下的工作交给路由器处理。

    疑问:既然在网络上传输的帧最终是按照硬件地址找到目的主机的,那么为什么不直接使用硬件地址进行通信,而是要用抽象的IP地址并调用ARP来寻找出相应的硬件地址呢?

    答:由于全世界存在着各式各样的网络,他们使用不同的硬件地址,要是这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项任务几乎是不可能的事。但统一的IP地址就把这个复杂问题解决了。

2.5 IP数据报的格式

    一个 IP 数据报由首部和数据两部分组成。

    首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。

    在首部的固定部分的后面是一些可选字段,其长度是可变的。







2.6 IP转发分组的流程

  • 从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N
  • 若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧),否则间接交付,执行下一步
  •  若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行下一步
  • 若路由表中有到达网络N的路由,则把数据报传送给路由表中指明的下一跳路由器,否则执行下一步
  • 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由,否则执行下一步
  • 报告转发分组错误

3 划分子网和构造超网

3.1 划分子网

    一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网。划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。

    划分子网的方法是从网络的主机号借用若干位作为子网号 subnet-id,当然主机号就减少了同样的位数。两级IP地址在本单位内部就变成三级地址:网络号、子网号、主机号。

    根据IP数据报的目的网络号找到连接在本单位网络上的路由器,但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付给目的主机。

    子网掩码:IP数据报的首部并不知道源主机或目的主机所连接的网络是否包含子网的划分,使用子网掩码解决这个问题。使用子网掩码的好处就是不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位“与”运算,就立即得出网络地址来。



    所有网络都要使用子网掩码,包括没有划分子网的,便于查找路由表,路由表中有子网掩码这一栏,如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码,默认子网掩码中1的位置和IP地址中的网络号字段net-id正好对应,这样对于不划分子网的IP地址逐位与运算,就刚好得到目的地址的网络地址。

  • A类地址的默认子网掩码是 255.0.0.0
  • B类地址的默认子网掩码是 255.255.0.0
  • C类地址的默认子网掩码是 255.255.255.0


    子网掩码是一个网络或一个子网的重要属性。路由器在和相邻的路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻的路由器,在路由器的路由表中的每一个项目,除了给出目的网络地址外,还必须同时给出网络的子网掩码。划分子网增加了灵活性,但却减少了能够连接的网络上的主机总数。

3.2 使用子网时分组的转发

    路由表包含三项内容:

  • 目的网络地址
  • 子网掩码
  • 下一跳地址

    在划分子网的情况下路由器转发分组的算法:

    (1) 从收到的分组的首部提取目的 IP 地址 D。

    (2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和 相应的网络地址匹配。若匹配,则将分组直接交付。 否则就是间接交付,执行(3)。

    (3) 若路由表中有目的地址为 D 的特定主机路由,则将 分组传送给指明的下一跳路由器;否则,执行(4)。

    (4) 对路由表中的每一行的子网掩码和 D 逐位相“与”, 若其结果与该行的目的网络地址匹配,则将分组传送 给该行指明的下一跳路由器;否则,执行(5)。

    (5) 若路由表中有一个默认路由,则将分组传送给路由表 中所指明的默认路由器;否则,执行(6)。

    (6) 报告转发分组出错。

3.3 无分类编址CIDR(构造超网)【无分类域间路由选择】

    1987 年,RFC 1009 就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。

    在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。

3.3.1 CIDR的主要特点

    CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。

    CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。

    IP 地址从三级编址(使用子网掩码)又回到了两级编址。

3.3.2 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 的主机号地址一般不使用。

3.3.3 路由聚合(构成超网)

    一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。

    路由聚合也称为构成超网(supernetting)。

    CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。

    对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。

3.3.4 最长前缀匹配

    使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。

    应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。

    网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。

    最长前缀匹配又称为最长匹配或最佳匹配。

3.3.5 使用二叉线索查找路由

    当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。

    为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)。

    IP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。

    为了提高二叉线索的查找速度,广泛使用了各种压缩技术。















猜你喜欢

转载自blog.csdn.net/qq_27022241/article/details/80069938