《计算机网络》(第8版)第四章 网络层 知识点总结

文章目录

1.互联网提供的两种服务方式及特点

两种服务为:
虚电路服务、数据报服务

1.1.虚电路服务和数据报服务的对比

对比的方面虚电路服务数据报服务
思路可靠通信应当由网络来保证可靠通讯应当由用户主机来保证
连接的建立必须有不需要
终地址仅在连接建立阶段使用,每个分组使用短的虚电路号每个分组都有终点的完整地址
分组的转发属于同一条虚电路的分组均按照同一路由进行转发每个分组独立选择路由进行转发
当结点出故障时所有通过出故障的结点的虚电路均不能工作出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序总是按发送顺序到达终点到达终点时不一定按发送顺序
差错处理和流量控制由网络负责,也可以由用户主机负责由用户主机负责
数据传送路径所有数据在此虚电路上传送数据传送的路径不确定

1.2.互联采用的设计思路

网络层要设计得尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。

网络在发送分组时不需要先建立连接。每个分组(IP数据报)独立发送,与其前后的分组无关(不进行编号)。网络层不提供服务质量的承诺,即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),也不保证分组交付的时限。

2.网络互联的概念、设备、层次、协议

2.1.网际协议IP(Internet Protocol)

概念:
网际协议IP是TCP/IP体系中两个最主要的协议之一[STEV94][COME06][FORO10],也是最重要的互联网标准协议之一[RFC791,STD5]。
与协议IP配套的还有三个协议:

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

因为网际协议IP是用来使互连起来的许多计算机网络能够进行通信的,因此TCP/IP体系中的网络层常被称为网际层(internet layer),或IP层

设备、层次:
将网络互连起来要使用一些中间设备。根据中间设备所在层次,可以有以下四种不同的中间设备:

(1)物理层使用的中间设备叫转发器(repeater)
(2)物理链路层使用的中间设备叫做网桥或桥接器(bridge),以及交换机(switch)
(3)网络层使用的中间设备叫做路由器(router)
(4)在网络层上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。                                                

由于参加互连的计算机网络都使用相同的网际协议IP(Internet Protocol),因此可以把互连以后的计算机网络看成为一个虚拟互连网络
虚拟互连网络即逻辑互连网络,它的意思是互连起来的各种物理网络的互异性本来是客观存在的,但我们利用协议IP就可以使这些性能各异的网络在网络层上看起来像是一个统一的网络。这种使用协议IP的虚拟互连网络可简称为IP网.(IP网是虚拟的,但平时不必强调"虚拟"二字)

路由表转发: 主机H1把一个IP数据报发送给目的主机H2,由分组交换的存储转发概念,H1要先查看自己的转发表,若目的主机H2是否在本网络上,若是则不经过任何路由器直接交付,任务完成;否则将IP数据报发送给某个路由器,该路由器查找自己的转发表后,知道应该转发给另一个路由器进行间接交付,这样直到最后一个路由器知道自己与H2在同一个网络上,于是将数据报直接交付给H2。

互联网可以由多种异构网络互连组成。
在互联网词汇中,分组在传送途中的每一次转发都称为一"跳(hop)"。hop也被译作跃点。路由器在转发分组时也常常使用"下一条(next hop)"的说法。

3.分类的IP的网络数、主机数、掩码、网络地址

在TCP/IP体系中,IP地址是一个最基本的概念。一个连接在互联网上的设备,若没有IP地址,就无法和网上的其他设备进行通信。

3.1.IP地址及其表示方法

IP地址是给连接到互联网上的每一个主机(或路由器)的每一个接口,分配一个在全世界范围内唯一的32位的标识符。

点分十进制记法(dotted decimal notation)
在32位的IP地址中的每隔8位插入一个空格(机器中没有这样的空格),用其等效的十进制数字表示,且在每段数字间加上一个小数点。
32位的IP地址采用两级结构,由两个字段组成。第一个字段是网络号,标志主机(路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。
第二个字段是主机号,它标志该主机(对路由器来说,就是标志该路由器)。一个主机号在所连接的网络中必须是唯一的。
由此可知,一个IP地址在整个互联网范围内是唯一的。

IP地址也记为:
IP地址::={<网络号>,<主机号>}
"::=“表示"定义为”。
IP地址指明了连接到某个网络上的一个主机
IP地址前位是主机所连接的网络号,后32-n位是主机号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tVXnCrWE-1646041067305)(https://note.youdao.com/yws/res/8/WEBRESOURCE8a1a84d9fd94ae724e36899d12e86448)]

3.2.分类的IP地址

32位IP地址共有232个地址。A类地址空间共231,B类共230,C类共229,D和E均为2^28,
A、B、C、D、E 各占 50%、25%、12.5%、6.25%、6.25%

A类:

A类地址网络字段占1个字节,仅7位可以使用(第一位已固定为0),  
网络号全0的地址表示"本网络"。网络地址为127(0111 1111)保留作为本地软件环回测试(loopback test)本主机的进程之间的通信之用。  
所以A地址的网络号位126个(2^7-2)。

A类地址主机号占3个字节,但全0和全1的主机号一般不指派。全0主机号代表"本主机"所连接到的单个网络地址。全1表示"所有的",
由此全1主机号字段表示该网络上的所有主机。因此每个A类网络中最大主机数为2^24-2

B类:

网络号有2个字节。B类地址可指派网络数为2^14,其上每一个网络的最大主机树为2^16-2

C类:

网络号有3个字节。可指派网络数为2^21,每个C类地址最大主机数为2^8-2

4.CIDR的基本概念及应用(路由聚合、地址块分配、最大地址、最小地址、地址数、掩码等)。与分类的IP地址的对应关系

CIDR的基本概念

20世纪90年代,发现IP地址在不久后将会枯竭时,一种新的无分类编址方法诞生了。即无分类域间路由选择CIDR(Classless Inter-Domain Routing,读作"sider").

CIDR将IP地址中的网络号改称为"网络前缀"(network-prefix)(“或简称为前缀”),剩下部分仍然是主机号,指代主机,但也可称为"后缀"(suffix)
CIDR记法为:
IP地址::={<网络前缀>,<主机号>}

CIDR使用"斜线记法"(slash notation),或称为CIDR记法。如:

128.14.35.7/20
20代表前缀所占位数,前20位为网络前缀,剩下的12位为主机号

地址块、最大地址、最小地址:

CIDR把网络前缀相同的所有连续的IP地址组成一个"CIDR地址块",一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数。我们仅需知道CIDR地址块中的任一地址,就可知道这个地址块的起始地址及地址块中最大的地址。

如:

由:127.14.35.7/20=1000 0000 0000 1110 0010 0011 0000 0111
其最小地址为:(主机号换为全0)(前20位为网络前缀,后32-20=12位为主机号)
                  1000 0000 0000 1110 0010 0000 0000 0000
其最大地址为:(主机号换为全1)
                  1000 0000 0000 1110 0010 1111 1111 1111

一个地址块中的可指派地址,要扣除主机号全0以及主机号全1的地址。(即-2)

地址掩码

CIDR使用斜线记法让我们知道网络前缀的数值。计算机看不见斜线记法,所以就需要用到32位的地址掩码(address mask),通过它能从IP地址中迅速算出网络地址。

地址掩码由一连串1和接着的一连串0组成,1的个数即网络前缀的长度。地址掩码又称为子网掩码。CIDR记法中,斜线后面的数字即为地址掩码中1的个数。

对早期的分类IP地址,其地址掩码是固定的,常不必专门指出,如:

A类:255.0.0.0或255.0.0.0/8
B类:255.255.0.0或255.255.0.0/16
C类:255.255.255.0或255.255.255.0/24

将二进制的IP地址与地址掩码进行按位AND运算,即可得出网络地址。(AND:逻辑与)

地址数

网络前缀长度点分十进制包含地址数相当于包含分类的网络数
/13255.248.0.0512k8个B类或2048个C类
/14255.252.0.0256k4个B类或1024个C类
/15255.254.0.0128k2个B类或512个C类
/16255.255.0.064k1个B类或256个C类
/17255.255.128.032k128个C类
/18255.255.192.016k64个C类
/19255.255.224.08k32个C类
/20255.255.240.04k16个C类
/21255.255.248.02k8个C类
/22255.255.252.01k4个C类
/23255.255.254.05122个C类
/24255.255.255.02561个C类
/25255.255.255.1281281/2个C类
/26255.255.255.192641/4个C类
/27255.255.255.224321/8个C类

CIDR地址中还有三个特殊地址块:

前缀n=32,32位IP地址均为前缀,没有主机号。这起始是一个特殊的IP地址,用于主机路由。  
前缀n=31.这个地址块中只有两个地址,其主机号分别为0和1。此地址用于点对点链路。
前缀n=0,同时IP地址也全为0,即0.0.0.0/0。这用于默认路由。

使用CIDR相较于原本的分类地址更为灵活,能有效地分配IP地址空间,可根据客户的需要分配适当大小的CIDR地址块。

路由聚合

一个大的CIDR地址块中往往包含很多小地址块,故在路由器的转发表中利用较大的一个CIDR地址块来代替许多较小的地址块,这种方法称为路由聚合(route aggregation),它使得转发表中只用一个项目就可以表示原来传统分类地址中的很多个路由项目,减少了查找转发表的时间。

5.IP数据报格式,各字段的含义及作用。IP数据报分片

IP数据报格式、各字段含义及作用

协议IP的标准中,描述首部格式的宽度为32位(4字节)。
一个IP数据报由首部和数据两部分组成。首部的前一部分长度固定,共20字节,所有IP数据报必须具有,首部的固定部分后是一些可选字段,长度可变。
IP首部的固定部分中的各字段意义

(1)版本:占4位,表示协议IP的版本。

(2)首部长度:占4位,可表示最大十进制数值为15。单位为32位字长(1个32位字长为4字节)。由于IP首部固定长度20字节,故首部长度字段最小值为5。

(3)区分服务:占8位,用来获得更好的服务,一般不使用这个字段

(4)总长度:指首部和数据之和的长度,单位为字节。总长度字段为16位,数据报最大长度为2^16-1=65535字节。  
    IP层下的每一个数据链路层都规定了一个数据帧中数据字段的最大长度,这称为最大传送单元MTU(Maximun Transfer Unit).当一个IP数据报封装成
    链路层的帧时,此数据报的总长度一定不能超过MTU。如果超过,则必须把过长的数据进行分片处理。
    在进行分片时,数据报首部中的"总长度"字段是指分片后的每一个分片的首部长度与该分片的数据
    
(5)标识(identification):占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器加一,并将值赋予标识字段。当需要分片时,该值被复制到所有数据报片的标识字段中。

(6)标志(flag):占3位,目前只有两位有意义。
    最低位为MF(More Fragment).MF=1表示后面"还有分片"的数据报,MF=0表示这已是若干数据报片中的最后一个。 
    标志字段中间的一位记为DF(Don't Fragment),意为"不能分片",只有当DF=0时才允许分片。
(7)片偏移:占13位。片偏移指出:较长的分组在分片后,谋篇在原分组中的相对位置,也就是相对于用户数据字段的起点,该片从何处开始。
片偏移以8字节为偏移单位,即除了最后一个数据报片外,其他每个分片长度一定是8字节(64位)的整数倍

(8)生存时间(Time To Live):占8位,数据报在网络中的寿命,由发出数据报的源点设置这个字段。
目的是防止无法交付的数据报无限制在互联网中兜圈子消耗网络资源。
每经过一个路由器时,把TTL减去数据报在路由器所消耗的一段时间,消耗时间小于1则TTL减1.当TTL变为0,丢弃该数据报。

(9)协议:占8位,协议子弹指出此数据报携带的数据使用何种协议,以便IP层子弹应将数据部分上交给哪个协议进行处理。

(10)首部检验和:占16位,这个字段只检验数据报的首部,不检测数据部分。
因为数据报每经过一个路由器,路由器都要重新计算一次首部校验和,不校验数据部分可减少计算工作量。
同时为进一步减少计算校验和的工作量,IP首部校验和不采用复杂的CRC检验码而使用以下简单的计算方法: 

发送方将IP数据报首部划分为多个16位字的序列,校验和字段设置为0,
用反码算术运算将所有16位字相加后,将得到的和的反码写入校验和子弹。

接收方收到数据报,将首部的所有16位字再使用反码算数运算相加一次。将得到和取反码,即得出接收方校验和的计算方法。  
若首部未发生任何变化,该结果必定为0,于是保留该IP数据报,否则丢弃

(11)源地址:32位,发送IP数据报的主机的IP地址
(12)目的地址:32位,接收IP数据报的主机的IP地址

数据报首部的可变部分:
一个选项字段。用来支持排错、测量及安全等措施。字段长从1字节到40字节不等

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XKyfCqF-1646041067306)(https://note.youdao.com/yws/res/b/WEBRESOURCEee3bc01005a381076c8dd53b5f6e995b)]

6.ARP协议的基本概念和应用、IP地址和MAC地址的区别

ARP协议的基本概念和应用

已知一个机器(主机或路由器)的IP地址,需找出相应的MAC地址。地址解析协议ARP就是用来解决这样的问题的。

ARP协议的要点:

网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用链路层的MAC地址。IP地址和下面链路层的MAC地址间由于格式不同而不存在简单的映射关系。
更换网络适配器也会使得主机的MAC地址改变(MAC地址实际上就是网络适配器的MAC地址).
地址解析协议ARP解决此问题的方法就是在主机的ARP高速缓存中存放一个从IP地址到MAC地址的映射表,且这个映射表常常动态更新。

每台主机设有一个ARP高速缓存(ARP cache),里面存有本局域网上的各主机和路由器的IP地址到MAC地址的映射,它们是主机目前知道的一些MAC地址。

主机如何知道一个MAC地址?

主机A向本局域网上的主机B发送IP数据报时,现在其ARP高速缓存中查看有无主机B的IP地址,有则在ARP高速缓存中查出相应的MAC地址,将其写入MAC帧。  
若查不到该IP地址,则主机A运行ARP,按瑞安步骤找出主机B的MAC地址:  
    (1)ARP进程在本局域网上发送一个ARP请求分组,主要内容为:(我的IP地址是(A的IP地址),MAC地址是(A的MAC地址),我想知道IP地址为(B的IP地址)的MAC地址
    (2)本局域网是哪个所有主机运行的ARP进程都收到此ARP请求分组。
    (3)主机B的IP地址与ARP请求分组中要查询的IP地址一致,收下次ARP请求,且向主机A发送ARP响应分组,同时在这个ARP响应分组中写入自己的MAC地址。
    其余所有主机由于IP地址与ARP请求分组中要查询的IP地址不一致,故不理睬此ARP请求分组。
    注意(虽ARP请求分组是广播发送的,但ARP响应分组是普通的单播,从一个源地址到一个目的地址)
    (4)主机A收到主机B的ARP相应分组后,在其ARP高速缓存中写入主机B的IP地址到MAC地址的映射。
    (后续:
    主机A箱主机B发送数据报时,很可能以后不就主机B还要向A发送数据报,因此主机B可能也要向A发送ARP请求分组,所以为减少网络上通信量,
    主机A在发送其ARP分组时,把自己的IP地址到MAC地址的映射也写入了ARP请求分组,主机B收到ARP请求分组时,就把主机A的这一地址映射写入主机自己
    的ARP高速缓存中。
    
注意:
ARP用于解决 同一个局域网上 的主机或路由器的IP地址和MAC地址的映射。
如果要寻找的主机和源主机不在同一局域网,则主机A发送给主机B的数据报首先需要通过与主机A连在同一局域网上的路由器R来转发,
故主机A必须知道路由器R的IP地址,故A使用ARP把路由器R的IP地址解析为MAC地址,然后把IP数据报传给路由器R,
以后R从转发表知道应将IP数据报转发给另一个路由器R2,然后使用ARP解析R2的MAC地址,将IP数据报转发给R2,
R2则同样按此方法找到下一个路由器,直到IP数据报传给与目的主机B在同一局域网的路由器,该路由器将IP数据报最终交付给主机B。
    

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

既然在网络链路上传送的帧最终是按照MAC地址找到目的主机的,那为什么我们要使用两种地址(IP地址和MAC地址)。而不直接使用MAC地址进行通信?

全世界存在各式各样的网络,它们使用不同的MAC地址,要使这些异构网络能够通信必须进行复杂的MAC地址转换工作,由用户或用户主机完成这项工作几乎不可能,
即使是对分布在全世界的以太网MAC地址进行寻址,也是极其困难的。
而IP编址将这个复杂问题解决了,连接到互联网的主机只需各自拥有一个IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,
几遍须多次调用ARP来找到MAC地址,但这个过程均由计算机软件自动进行,对用户来说是透明的。

IP地址的特点:

(1)每个IP地址都由网络前缀和主机号两部分组成。由此IP地址是一种分等级的地址结构。好处是:
    1.IP地址管理机构分配IP地址时只分配网络前缀,剩下的主机号由得到该网络前缀的单位自行分配。
    2.路由器根据目的主机所连接的网络前缀(即地址块)来转发分组,这样可以使转发表中的项目数大幅减少,减少转发表所占存储空间,缩减查找转发表的时间。  
(2)IP地址是标志一台主机和一条链路的接口。当一主机同时连接到两网络上时,该主机必须同时具有两个相应IP地址,其网络前缀必须不同。
这种主机称为多归属主机(multihomed host).由于一个路由器至少应连接到两个网络,因此一个路由器至少应有两个不同的IP地址。  
(3)一个网络是指具有相同网络前缀的主机的集合,因此,用转发器或交换机连接起来的若干个局域网仍为一个网络,
因为这些局域网都具有同样的网络前缀,具有不同网络前缀的局域网必须使用路由器进行互连。  
(4)在IP地址中,所欲分配到网络前缀的网络都是平等的。所谓平等,即互联网同等对待每一个IP地址。

IP地址是标志一个主机连接在网络上的接口

同一个局域网或路由器的IP地址中的网络前缀必须是同样的,即具有同样的网络号。
路由器总是具有两个或两个以上的IP地址,即路由器每个接口的IP地址的网络前缀都不相同。
为节省IP地址资源,对于点对点链路构成的特殊"网络",现在常常不分配IP地址,通常把这样的特殊网络称为无编号网络(unnumbered network)或匿名网址(annoymous network).

IP地址与MAC地址的区别

局域网中,MAC地址已固化在网卡上的ROM中,故常常将MAC地址称为硬件地址或物理地址。
MAC地址是数据链路层使用的地址,IP地址是网络层和以上层使用的地址,是一种逻辑地址。

在发送数据时,数据从高层下到低层,然后在通信链路上传输,使用IP地址的IP数据报一旦交给数据链路层,就被封装成MAC帧,MAC帧在传送时使用的源地址和目的地址都是MAC地址,这两个MAC地址都卸载MAC帧的首部中。

连接在通信链路上的设备(主机或路由器)在收到MAC帧时,根据MAC帧首部中的MAC地址决定收下或丢弃。只有在剥去MAC帧的首部和尾部后把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。

7.ICMP报文类型、作用

网际控制报文协议ICMP(Internet Control Message Protocol),用于网际层,目的在于更有效地转发IP数据报和提高交付成功的机会。
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP是互联网标准协议,但不是高层协议(看起来像是高层协议,因为它装在IP数据报中作为其中的数据部分),而是IP层的协议。
ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去,其格式如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XWeqZd82-1646041067307)(https://note.youdao.com/yws/res/3/WEBRESOURCE1eae400d5536f5ea70ce622231ccfd33)]

ICMP报文类型

ICMP报文有两种:
ICMP差错报告报文ICMP询问报文.
ICMP报文前4个字节为统一的格式,共三个字段:类型、代码、检验和.随后的4字节内容与ICMP的类型有关,最后是数据字段,其长度取决于ICMP的类型。

下表为几种常见的ICMP报文类型:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zbwRvWWq-1646041067307)(https://note.youdao.com/yws/res/5/WEBRESOURCE62bf6c62fc757dfbd7d968f265a95205)]

终点不可达:路由器或主机不能交付数据报时向源点发送终点不可达报文。
时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当重点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已发送的数据报片都舍弃,且向源点发送时间超过报文。
参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,丢弃该数据报并向源点发送参数问题报文。
改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。(即找到了更好的路由器)
回送请求或回送回答:回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
时间戳请求或时间戳回答:在ICMP时间戳请求报文翻出后,就能够收到对方响应的ICMP时间戳回答报文。利用在报文中记录的时间戳,发送方很容易计算出当前时间的往返时延。

ICMP报文的作用

作用:更有效地转发IP数据报和提高交付成功的机会。

ICMP的一个重要应用是分组网间探测PING(Packet InterNet Groper),用来测试两台主机之间的连通性。PING使用ICMP回送请求和回送回答报文。
另一个非常有用的应用是traceroute(UNIX操作系统中的命令),用来跟踪一个分组从源点到终点的路径。windows中这个命令是tracert

8.NAT的作用

网络地址转换NAT(Network Address Translation)方法。这种方法要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器。它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,它至少有一个有效的外部全球IP地址,才能和互联网连接。

现在常用的NAT转换表把运输层的端口号也利用上,使得多个拥有本地地址的主机,共用NAT路由器上的一个全球IP地址,因而可以同时和互联网上的不同主机进行通信。
使用端口号的NAT也叫做网络地址与端口号转换NAPT(Network Address and Port Translation),而不适用端口号的NAT就叫做传统的NAT(traditional NAT)

9.路由器的构成,路由器转发分组的流程,路由表的构建

路由表转发分组的流程

分组在互联网上传送和转发是基于分组首部中的目的地址的,因此这种转发方式称为基于终点的转发。
路由器收到一个待转发的分组,在从转发表得出下一路路由器的IP地址后,不是将此地址填入分组首部,而是送交给数据链路层的网络接口软件。网络接口软件负责将下一跳路由器的IP地址转换为MAC地址(必须使用ARP),并将此MAC地址放在链路层MAC帧的首部,然后利用这个MAC地址传送到下一跳路由器的链路层,再去除MAC帧的数据部分,交给网络层。
总结:查找转发表、调用ARP解析MAC地址、MAC地址写入MAC帧首部

例如:

主机H1要发送一个分组给H2:  
H1首先确定目的主机是否在本网络上,若是则直接交付,不需要路由器
(主机H1将目的地址和本网络的子网掩码按位进行AND运算,若结果等于本网络的前缀,表明目的主机连接在本本网络上)
否则,间接交付,将分组发送给连接在本网络上的路由器,由路由器来负责交给H2。  
路由器收到目的IP,查找转发表,逐行寻找前缀匹配。找到匹配对象,调用ARP解析出其MAC地址,封装成链路层帧,交付给它。

最长前缀匹配:
在采用CIDR编址时,如果一个分组在转发表中可找出多个匹配的前缀,则选择前缀最长的一个作为匹配的前缀。该原则称为最长前缀匹配(longest prefix match)
网络前缀越长,地址块越小,故路由越具体。为更加迅速地查找转发表,可以按前缀长短,将前缀最长的排在第一行,按从长到短进行前缀匹配,第一个匹配到的即为转发对象。

两种特殊路由:

主机路由(host route)又叫特定主机路由,对特定主机的IP地址转名指定的一个路由,采用该路由可以使得网络管理人员更方便地控制网络和测试网络,同时可在需要考虑某种安全问题时采用这种特定主机路由。比如在对网络的连接或转发表进行排错时,指明到某一台主机的特殊路由就十分有用。  

默认路由(default route)。不管分组的最终目的网络在哪,都由指定的路由器来处理。
这在网络只有很少的对外连接时很有用,在实际的转发表中,用一特殊前缀0.0.0.0/0来表示默认路由。  
当路由表中与包的目的地址之间没有匹配的表项时,路由器能够选择默认路由作为转发对象

使用二叉线索树查找转发表

对无分类编址的转发表的最简单的查找算法为对所有可能的前缀进行循环查找,从最长的前缀开始从长到短进行查找。
为进行更有效的查找,通常把无分类编址的转发表存放在一种层次的数据结构中,然后自上而下地按层次进行查找,这里最常使用的即为二叉线索(binary trie)
二叉线索中的各个路径代表转发表中存放的各个地址。
为简化二叉线索的结构,可先找出对应于每一个IP地址的唯一前缀(unique prefix)。唯一前缀即在表中所欲的IP地址中,该前缀是唯一的,然后就可以用这些唯一前缀爱构造二叉线索。进行查找时,仅需要跟唯一前缀匹配就可。
二叉线索树知识提供了一种可以快速在转发表中找到匹配的叶节点的机制,是否和网络前缀匹配,还需和子网掩码进行一次逻辑AND运算。

10.路由协议的分类,路由算法的含义和应用

路由选择协议规定了互联网中的路由器应该如何相互交换信息并生成出路由表。

从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分:

只有两大类:
静态路由选择策略与动态路由选择策略。

静态路由选择:也叫非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
对很简单的小网络,完全可以采用静态路由选择,用人工配置每一条路由。  

动态路由选择:也叫自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销较大。因此,动态路由选择适用较复杂的大网络。  

分层次的路由选择协议

自适应的(动态的)、分布式路由选择协议。

由于以下两个原因,互联网采用分层次的路由选择协议:

(1)互联网的规模非常大。
(2)许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议。

因此可把整个互联网划分为许多较小的自治系统(autonmous system),一般记为AS。AS是在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。
这样,互联网把路由选择协议分为两大类:

(1)内部网关协议IGP(Interior Gateway Protocol)
一个自治系统内部使用的路由选择协议,这与在互联网中的其他自治系统选用什么路由选择协议无关。
目前这种路由选择协议使用最多的是RIP和OSPF协议

(2)外部网关协议EGP(External Gateway Protocol)
若源主机和目的主机处在不同的自治系统中,那么在不同自治系统AS之间的路由选择,就需要使用外部网关协议EGP。
目前使用最多的外部网关协议是BGP的版本4(BGP-4)

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

总之,使用分层次的路由选择方法,可将互联网的路由选择协议划分为:
内部网关协议IGP:具体的协议有多种,如RIP和OSPF等。
外部网关协议EGP:目前使用的协议是BGP-4。

内部网关协议RIP

路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议,RIP是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大优点就是简单。
RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
协议RIP将距离定义如下:

从以路由器到直接连接的网络的距离定义为1.从一主机到非直接连接的网络的距离定义为所经过的路由器数加1.
"加1"是因为到达目的网络后就进行直接交付,而到直接连接的网络的距离已经定义为1。

协议RIP的距离也称跳数(hop count)。并且每经过一个网络,跳数就加1.RIP认为好的路由就是它通过的网络数目少,即"距离短"。RIP允许一条路径最多只能包含15个网络。因此"距离"等于16时即相当于不可达。可见RIP只适用于小型互联网。
协议RIP的特点是:

(1)仅和相邻路由器交换信息
(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表
(3)按固定的时间间隔交换路由信息  

一般情况下,RIP可以收敛,且过程较快,收敛是指在自治系统中所有的节点都得到正确的路由选择信息的过程。

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

距离向量算法:

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

该距离向量算法的基础为Bellman-Ford算法(或Ford-Fulkerson算法)。要点为:
    设X是节点A到B的最短路径上的一个节点,若把路径A->B拆成两段路径A->X和X->B,则每一段路径A->X和X->B也都分别是节点A到X和节点X到B的最短路径。
    
    

内部网关协议OSPF

协议名为开放最短路径优先OSPF(Open Shortest Path First)。开放表明OSPF协议不受一家厂商控制而是公开发表的,最短路径优先是因为使用了Dijkstra提出的最短路径算法SPF

OSPF最主要的特征是使用链路状态协议(link state protocol),而不是像RIP那样的距离向量协议。

协议OSPF的特点是:

(1)向本自治系统中所有路由器发送信息。这里使用的方法是洪泛法(flooding),即通过路由器通过所有输出端口向所有相邻的路由表发送信息。
(2)发送的信息就是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
所谓"链路状态"就是说明本路由器都和哪些路由器相邻,以及该链路的"度量"(metric)。
(3)当链路状态发生变化或每隔一段时间(如30分钟),路由器向所有路由器用洪泛法发送链路状态信息。

由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库(link-state database),这个数据库实际上就是全网的拓扑结构图。这个拓扑结构图在全网范围内是一致的(称为链路状态数据库的同步)。

OSPF的链路状态数据库能较快地进行更新,才能知道再下一跳以及下一跳路由器,但却不知道全网的拓扑结构

OSPF的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF的更新过程收敛得快是其重要优点。
为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围叫做区域(area)

划分区域的好处是把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。为使每一个区域能和本区域以外的区域进行通信,OSPF使用层次结构的区域划分。上层区域叫做主干区域(backbone area)。主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。从其他区域来的信息都由区域边界路由器(area border router)进行概括。在主干区域内的路由器叫做主干路由器(backcone router).

OSPF共有五种分组类型:

(1)问候(Hello)分组,用来发现和维护邻站的可达性。
(2)数据库描述(Database Description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
(3)链路状态请求(Link State Request)分组,向对方请求发送某链接状态项目的详细信息。
(4)链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。这种分组最复杂也是OSPF最核心的部分。
(5)链路状态确定(Link State Acknowledgment)分组,对链路更新分组的确定。

OSPF分组作为IP数据报的数据部分来传送。OSPF不用UDP而是直接用IP数据报传送。OSPF构成的数据报很短,这样做可以减少路由信息的通信量。

外部网关协议BGP

BGP使用环境不同主要因为:

(1)互联网规模太大,使得自治系统AS之间路由选择非常困难。
(2)自治系统AS之间的路由选择必须考虑有关策略,由于相互连接的网络的性能相差很大,根据最短距离找出来的路径,可能并不合适。

在一个自治系统AS中有两种不同功能的路由器,即边界路由器(或边界路由)和内部路由器。一个AS至少要有一个边界路由器和相邻AS的边界路由器直接相连。正是由于边界路由器,AS之间才能利用协议BGP交换可达性路由信息。

两个边界路由器进行通信时,必须先建立TCP连接,这种TCP连接又称为半永久性连接。连接又分为eBGP(external)连接和iBGP(internal)连接。

协议BGP规定,在一个AS内部所有的iBGP必须是全连通的,即使两个路由器之间没有物理连接,但它们之间仍然有iBGP连接。
eBGP是在不同AS的两个对等端之间的BGP连接,而iBGP同一AS的两个对等端之间的BGP连接。

BGP路由格式:
BGP路由 = “前缀,BGP属性”=“前缀,AS-PATH,NEXT-HOP”

前缀:通告的BGP路由终点
BGP属性:有好几种吗,最重要的是此处列出的AS-PATH和NEXT-HOP
AS-PATH(自治系统路径):通告的BGP路由所经过的自治系统。BGP路由每经过一个AS,就将其自治系统号ASN加入到AS-PATH中
NEXT-HOP(下一跳)是通告的BGP路由起点

三种不同的自治系统AS:
末梢AS(stub AS)、穿越AS(transit AS)、对等AS(peering AS)

末梢AS:不允许分组穿越自己的自治系统
穿越AS:往往是拥有很好的告诉通信干线上的两个AS,其任务是为其他的AS有偿转发分组。通常由很多的AS连接到穿越AS上
对等AS:经过事先协商的两个AS,彼此之间的发送或接收分组都不收费。

BGP的路由选择:

本地偏好LOCAL-PREF(LOCAL PREFerence)值最高的路由要首先选择  
选择具有AS跳数最少的路由  
使用热土豆选择算法  
选择路由器BGP标识符最小的路由

BGP的四种报文:

(1)OPEN(打开)报文,用来与BGP连接对等端建立关系
(2)UPDATE(更新)报文,用来通告某一路由的信息,以及列出要撤销的路由
(3)KEEPALIVE(保洁)报文,用来周期性地证实与对等端的连通性
(4)NOTIFICATION(通知)报文,用来发送检测到的差错

11.IPV6地址格式

IPv6字段介绍

IPv6仍支持无连接的传送,但将协议数据单元PDU称为分组(packet),而非IPv4中的数据报(datagram)

IPv6数据报由两大部分组成:
基本首部(base header)和后面的有效载荷(payload),有效载荷也称净负荷。有效载荷允许有零个或多个扩展首部(extension header)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VfUw2Tts-1646041067308)(https://note.youdao.com/yws/res/1/WEBRESOURCE5cb3b1bad0fc4a4fb1c6b00c7cae8f81)]

基本首部:

(1)版本(version):占4位,指明协议版本,对IPv6该字段为6
(2)通信量类(traffic class):占8位。区分不同的IPv6数据报的类别或优先级,和IPv4的区分服务字段的作用蕾西。
(3)流标号(flow flag):占20位。IPv6的一个新机制为支持资源预分配,且允许路由器将每一个数据报与一个给定的资源分配相联系。  
IPv6提出流(flow)的抽象概念。流:互联网上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或视频传输),而在这个"流"所经过的路径上的路由器
都保证指明的服务质量。属于同一个流的数据报具有同样的流标号。因此,流标号对实时音频/视频数据的传送有用,对于传统的电子邮件或非实时数据无用,
把其置为0即可。
(4)有效载荷长度(payload length):占16位。指明IPv6数据报除基本首部外的字节数(所有扩展首部都算在有效载荷之内)。此字段最大值为64KB。
(5)下一个首部(next header):占8位。相当于IPv4的协议字段或可选字段。
    IPv6数据报没有扩展首部时:该字段作用同IPv4的协议字段,指明基本首部后面的数据交给IP层上的哪个高层协议。
    有扩展首部时:该字段标识后面第一个扩展首部的类型。
(6)跳数限制(hop limit):占8位。用来防止数据报在网络中无限制地存在。类似IPv4的生存时间字段
(7)源地址:占128位。数据报的发送端的IP地址
(8)目的地址:占128位。数据报的接收端的IP地址

IPv6地址

IPv6数据报的目的地址可以为以下三种基本类型地址之一:
(1)单播(unicast):单播是传统的点对点通信。
(2)多播(Multicast):多播是一对多点的通信,数据报发送到一组计算机中的每一个,IPv6没有采用广播的术语,将广播看做多播的一个特例。
(3)任播(anycast):IPv6增加的一个类型。任播的终点是一组计算机,数据报只交付其中一个,通常按路由算法得出的距离最近的一个。

IPv6把实现IPv6的主机和路由器均称为节点。由于一个节点可能会使用多条链路与其他的-一些节点相连,因此一个节点可能有多个与链路相连的接口。IPv6给节点的每一个接口指派一个IPv6地址。一个具有多个接口的节点可有多个单播地址,其中任一地址可作为到达该节点的目的地址。

表示方法

IPv6的地址每个占128位(32*4,IPv4地址的4倍长度)。
IPv6的地址范围远大于IPv4,为了便于阅读与操纵,IPv6使用冒号十六进制记法(colon hexadecimal notation,简写为colon hex),它将每个16位的值用十六进制表示,各值间用冒号分隔,如:

将一个点分十进制数记法值改为冒号十六进制记法:
104.230.140.100.255.255.255.255.0.0.17.128.150.10.255.255
=>
68E6:8C64:FFFF:FFFF:0:1180:96A0:FFFF

十六进制记法中,允许把数据前面的0省略,如以上的0就是省略了其前面的3个0.

冒号十六进制记法还允许零压缩(zero compression):一连串连续的0可以为一对冒号取代,如:

FF05:0:0:0:0:0:0:B3
=>
FF05::B3

注意:一个地址中只能使用一次零压缩

CIDR的斜线表示法仍然可用,如:60位的前缀12AB00000000CD3(十六进制表示的15个字符,每字符代表4位2进制数字)记为:

12AB:0000:0000:CD30:0000:0000:0000:0000/60
或12AB::CD30:0:0:0:0/60
或12AB:0:0:CD30::/60

但IPv6取消了子网掩码。

IPv6的常用地址分类

地址类型地址块前缀前缀的CIDR记法
未指明地址row 1 col 2::/128
环回地址row 1 col 2::1/128
多播地址row 1 col 2FE00::/8
本地站点单播地址1111111011FEC0::/10
本地链路单播地址1111111010FE80::/10
全球单播地址如图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YVjKwr2e-1646041067309)(https://note.youdao.com/yws/res/9/WEBRESOURCE22568ced7953b13783825444e26c8479)]

未指明地址:全0地址,不作为目的地址,用作将某台主机当做源地址使用,条件是此主机还没有配置到一个标准的IP地址
环回地址:缩写为::1,作用同IPv4的环回地址。
多播地址:功能同IPv4的一样,这类地址占IPv6地址总数的1/256。

本地站点单播地址(cite-local unicast address):有些单位的内部地址使用TCP/IP协议,未连接到互联网上。
连接在这样的内部往来上的主机都可以使用这种本地站点地址进行通信,但不可与互联网上的其他主机通信。
这类地址占IPv6地址总数的1/1024,用途同IPv4的专用地址。

本地链路单播地址(link-local unicast address):这种地址在单一链路上使用。当一个节点启用IPv6时自动生成本地链路地址。
当需要把分组发往单一链路的设备而不希望该分组被转发到此链路范围以外的地方时,可以使用该种特殊地址,这类地址占IPv6地址总数的1/1024。  

全球单播地址:IPv6的单播地址中使用最多的一类。可把整个128位作为一个节点的地址,也可用n作为子网前缀,剩下的(128-n)位作为全球路由选择前缀,
用n位作为子网前缀,用剩下的(128-n-m)位作为接口标识符。

从IPv4向IPv6过渡

向IPv6过渡只能采用逐步演进的方法,同时要使新安装的IPv6系统能向后兼容。即IPv6系统必须能够接收和转发IPv4分组,且能够为IPv4分组选择路由。
由此有两种向IPv6过渡的策略:
双协议栈(dual stack)隧道技术(tunneling)

双协议栈(dual stack)

双协议栈是指在完全过渡到IPv6前,使一部分主机(或路由器)同时装有IPv4和IPv6这两种协议栈。因此双协议栈主机(或路由器)能够和IPv6的系统通信,又能和IPv4的系统通信,双协议栈的主机(或路由器)记为IPV6/IPv4,表明它同时具有IPv6地址和IPv4地址。

隧道技术(tunneling)

该方法要点是在IPv6要进入IPv4网络时,将IPv6数据报封装成IPv4数据报。整个的IPv6数据报变成了IPv4数据报的数据部分。这样的IPv4数据报从路由器B经过路由器C和D,传送到E,而原来的IPv6数据报就好像在IPv4网络的隧道中传输,什么都没有变化。当IPv4数据报离开IPv4网络中的隧道时,再把数据部分交给主机的IPv6协议栈。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CjcVNGV7-1646041067309)(https://note.youdao.com/yws/res/9/WEBRESOURCEe4ae45ba70f937a057e520093688bfd9)]

要使双协议栈的主机知道IPv4数据报里封装的是一个IPv6数据报,必须将IPv4首部的协议字段值设置为41(表示数据报的数据部分为IPv6数据报)。

  • 5
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值