《计算机网络原理(谢希仁)》 笔记[4]——第 4 章 网络层

 

第 4 章  网络层

网际协议IP

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

1.地址解析协议 ARP

2.逆地址解析协议 RARP

3.网际控制报文协议 ICMP

4.网际组管理协议 IGMP

 

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

 

分类的 IP 地址

常用的三种类别的 IP 地址

网络号为127保留作为本地软件环回测试本主机的进程之间的通信之用。目的地址为环回地址的IP数据报永远不会出现在任何网络上。

 

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

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。 

为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。

当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。

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

从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的

逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址。这种主机往往是无盘工作站。 因此 RARP协议目前已很少使用。

 

IP 数据报的格式

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

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

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

1.版本——占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)

2.首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节。

3.区分服务——占 8 位,用来获得更好的服务在旧标准中叫做服务类型,但实际上一直未被使用过。

4.总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。

5.标识(identification)    占 16 位,它是一个计数器,用来产生数据报的标识。

6.标志(flag)    占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。

MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 。

只有当 DF = 0 时才允许分片。

7.片偏移(12 位)指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。

IP 数据报分片举例:

8.生存时间(8 位)记为 TTL (Time To Live)数据报在网络中可通过的路由器数的最大值。

9.协议(8 位)字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程

10.首部检验和(16 位)字段只检验数据报的首部不检验数据部分。

11.源地址和目的地址都各占 4 字节

12.IP 数据报首部的可变部分:

IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。

选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。

增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。

实际上这些选项很少被使用。 

 

IP 层转发分组的流程

IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。 

 

分组转发算法

(1)  从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。

(2)  若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。

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

(4)  若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。

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

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

 

划分子网和构造超网

划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。

 

子网掩码是一个重要属性

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

路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。

路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。

若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。

不同的子网掩码可能得出相同的网络地址。但不同的掩码的效果是不同的。

 

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

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

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

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

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

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

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

 

无分类编址 CIDR

1.CIDR 最主要的特点

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

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

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

 

CIDR 还使用“斜线记法”(slash notation),它又称为CIDR记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。

CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。 

 

路由聚合

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

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

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

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

 

最长前缀匹配

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

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

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

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

网际控制报文协议 ICMP

ICMP 报文的格式

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

ICMP 差错报告报文共有 5 种:

终点不可达

源点抑制(Source quench) 

时间超过

参数问题

改变路由(重定向)(Redirect)  

 

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

1.对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。

2.对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。

3.对具有多播地址的数据报都不发送 ICMP 差错报告报文。

4.对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。

 

ICMP 询问报文有两种

回送请求和回答报文

时间戳请求和回答报文

 

PING

PING 用来测试两个主机之间的连通性。

PING 使用了 ICMP 回送请求与回送回答报文。

PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。

 

因特网的路由选择协议

因特网有两大类路由选择协议

内部网关协议 IGP (Interior Gateway Protocol)    即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。

外部网关协议EGP (External Gateway Protocol)    若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。 

 

内部网关协议 RIP

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

RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

 

“距离”的定义

从一路由器到直接连接的网络的距离定义为 1。

从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。

RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。

这里的“距离”实际上指的是“最短距离”,

RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。

RIP 允许一条路径最多只能包含 15 个路由器。

“距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。

RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。  

 

RIP 协议的三个要点

1.仅和相邻路由器交换信息。

2.交换的信息是当前本路由器所知道的全部信息,即自己的路由表。

3.按固定的时间间隔交换路由信息,例如,每隔 30 秒。

 

距离向量算法

收到相邻路由器(其地址为 X)的一个 RIP 报文:

(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。

(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:

若项目中的目的网络不在路由表中,则把该项目加到路由表中。

否则若下一跳字段给出的路由器地址是同样的,则把收到的项    目     替换原路由表中的项目。

否则若收到项目中的距离小于路由表中的距离,则进行更新,

否则,什么也不做。

(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。

(4) 返回。

 

RIP2 协议的报文格式

RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要用 20 个字节。地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。

路由标记填入自治系统的号码,这是考虑使RIP 有可能收到本自治系统以外的路由选择信息。再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。 

 

RIP 协议的优缺点

RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。(好消息传播得快,而坏消息传播得慢)

RIP 协议最大的优点就是实现简单,开销较小。

RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。

路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。  

 

内部网关协议 OSPF(开放最短路径优先)

OSPF 协议的基本特点

“开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。

“最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF

OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。

是分布式的链路状态协议。

 

三个要点

向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。

发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。

“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。

只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。 

 

链路状态数据库

由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。

这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。

OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。 

 

OSPF 直接用 IP 数据报传送

OSPF 不用 UDP 而是直接用 IP 数据报传送。

OSPF 构成的数据报很短。这样做可减少路由信息的通信量。

数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。

 

OSPF 的其他特点

1.OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。

2.如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫作多路径间的负载平衡

3.所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。

4.支持可变长度的子网划分和无分类编址 CIDR。

5.每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。

 

OSPF 分组

 

OSPF 的五种分组类型

类型1,问候(Hello)分组。

类型2,数据库描述(Database Description)分组。

类型3,链路状态请求(Link State Request)分组。

类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。

类型5,链路状态确认(Link State Acknowledgment)分组。

 

OSPF 的其他特点

1.OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。

2.由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。

3.OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。

 

外部网关协议 BGP

边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。BGP采用了路径向量路由选择协议。

每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” 。使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站。

 

BGP 协议的特点

1.BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。

2.每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。

3.BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。

4.在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。

 

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。整个路由器的结构可分为两大部分:路由选择部分和分组转发部分。

路由选择部分也叫做控制部分。

分组转发部分由三部分组成:交换结构、输入端口组、输出端口组。

交换结构本身就是一种网络,但这种网络完全包含在路由器之中,因此可以看做是“在路由器中的网络”。

三种常用的交换方法:(1)通过存储器;(2)通过总线;(3)通过互联网络(纵横交换结构);

 

“转发”和“路由选择”的区别

“转发”(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。

“路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。

路由表是根据路由选择算法得出的。而转发表是从路由表得出的。

路由表总是由软件实现的,但转发表则甚至可用特殊的硬件来实现。

 

IP 多播的一些特点

(1) 多播使用组地址—— IP 使用 D 类地址支持多播。多播地址只能用于目的地址,而不能用于源地址。 

(2) 永久组地址——由因特网号码指派管理局 IANA 负责指派。

(3) 动态的组成员

(4) 使用硬件进行多播,多播IP地址与以太网硬件地址的映射关系不是唯一的,所以收到多播数据报的主机还要在IP层利用软件进行过滤。

 

IP多播需要两种为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP (Internet Group Management Protocol)。

连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。

 

IGMP 的本地使用范围

IGMP 并非在因特网范围内对所有多播组成员进行管理的协议。

IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。

IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。

 

多播路由选择协议比单播路由选择协议复杂得多

1.多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由。

2.多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。

3.多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。

4.目前还没有在整个因特网范围使用的多播路由选择协议。

 

已有的多播路由选择协议常采用以下三种方法:

1.洪泛与剪除法。这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。为避免兜圈子采用了反向路径广播RPB的策略

2.隧道技术。适合于多播组的位置在地理上很分散的情况。比如会有不支持多播的路由器存在。

3.基于核心的发现技术。这种方法对于多播组的大小在较大范围内变化时都适用。

 

虚拟专用网 VPN解决的是分布在不同地点的专用网需要进行通信的问题。

专用地址

10.0.0.0 到 10.255.255.255

172.16.0.0 到 172.31.255.255

192.168.0.0 到 192.168.255.255

这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。

专用地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。

用隧道技术实现虚拟专用网

 

网络地址转换 NAT解决的是已分配了本地IP地址的主机想和因特网上的主机通信的问题。

需要在专用网连接到因特网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球地址 IPG。显然,通过NAT路由器的通信必须由专用网内的主机发起。当NAT路由器具有n个全球IP地址时,专用网内最多可以同时有n个主机接入到因特网。

使用端口号的NAT也叫做网络地址与端口号转换NAPT

 

你可能感兴趣的:(学生时代专业课程学习整理)