考研笔记-网络层和路由
6.网络层和路由
6.1 网络层涉及的功能
6.1.1 网络实现的功能
1.网络层与网络核心
网络层是通信子网的最高层,网络协议数据单元是分组。网络层提供从源节点到目的节点之间的可靠传输和分组的路由选择, 源节点到目的节点间存在多个节点,每个节点间都是点到点的连接。
2.网络层要解决的问题
1)网络连接的建立和释放:利用数据链路层提供的数据链路连接,构成服务于运输实体的网络连接。网络连接可以由若干个通 信子网组成,互连的子网可以具有不同的服务能力,子网也可以采用不同的网络协议。
2)路由选择:分组在通信子网中传输,经过的结点会有多条线路连接到其他节点,需要确定和选择要经过的下一节点,逐跳地 在源节点和目的节点间选择一条适当的线路。网络层需要使用数据链路层的服务来控制逐段数据链路的互连。
3)拥塞控制:当网络内的分组数据大于从网络输出的分组数时,通信子网出现拥塞,需要考虑和减少拥塞的发生。
4)网络互联:不同的网络可以在不同的网络协议层次上实现互连,在网络层实现互连用到的设备称为路由器。网络互连需要遵 循一定的协议:若两个网络在第N层实现互连,则要求两个网络的N+1层以及以上的层次协议相同,第N层以及以下层协议可以不同。
5)分片和重组:为了满足通信子网对不同的传输协议单元长度的要求,对过长的数据单元要进行分片,对于过短的要合并,以 上操作需要保持网络服务数据单元SDU,在传输到目的主机节点时能够还原和识别网络协议数据单元。对分片的数据单元,在目的节 点处要按规则进行重组,然后再递交给高层。
6)差错检测和处理:网络层的检错是利用数据链路层的差错检测机制,也可以利用运输层的差错控制。因特网中采用控制报文 协议(ICMP),报告IP分组在网络中的传递情况,网络层出现差错也需要高层来进行处理。
7)服务选择:一个网络连通几个通信子网时,每个子网都有不同的服务指标,网络层提供服务选择功能,使实现网络连接的网 络节点能够提供相同的服务。网络层提供的服务有:面向连接的虚电路服务和无连接的数据报服务。在因特网中采用无连接的数据 报服务。
8)网络寻址:在网络层的寻址靠网络地址,网络地址是一个逻辑地址,用来唯一标识一个网络节点的连接。每一个网络物理接 口(网络配适器)都对应一个逻辑地址。
因特网的网络地址是IP地址,是网络协议数据单元的组成部分,有源地址和目的地址两个字段。从IP地址解析到物理地址使用 地址解析协议(ARP),从物理地址到IP地址的转换协议是反向地址解析协议(RARP)。
3.网路核心的组成
网络核心由一些节点(访问节点和交换节点,可以是交换机或者路由器)和连接这些节点的链路组成,网络中的节点提供存储 和转发功能,以及路由选择功能。
路由器和交换机都是具有特殊用途的计算机。在单个广域网中使用节点交换机连接各个主机、转发分组。路由器是一种互连设 备,用来互连多个网络,在多个网络构成的互联网络中存储转发分组。在因特网中通过IP地址进行寻址和实现网络中计算机的互 连,传输的PDU到达目的主机后再通过IP地址到物理地址的转换,最终使用物理地址与目的主机进行通信。
6.1.2 虚电路服务和数据报服务
1.数据报
当作为通信子网用户的端系统要发送一个报文时,在端系统中实现的高层协议先把报文拆成若干带有序号的数据单元,并在网 络层加上地址控制信息后形成数据报分组(即网络层的PDU)。中间节点存储分组一段很短的时间,找到最佳路由后,尽快转发每个 分组聚不同的分组可以走不同的路径,也可以按不同顺序达到终点。
假定A要向B发送分组:
(1)主机A先把分组逐个发送给与他直接连接的结点A,结点A收到分组后缓存。
(2)然后查找自己的转发表。由于不同时刻的网络状态不同,因此转发表的内容可能不同,因此有的分组会转发给C节点,有 的会给D节点。
(3)其他节点收到分组后以相同的方式转发,直到分组到达主机B。
数据报服务具有以下特点:
1)发送分组前不需要建立连接。发送方随时发送分组,网络中各节点随时接受分组。
2)网络尽最大努力交付,不保证传输的可靠性,所以可能丢失;为每个分组选择的路由可能不同,最后到达终点的顺序可能不 同。
3)发送的分组中要包括完整的源地址和目的地址,以便独立传输。
4)分组在交换节点存储转发时,需要排队等候,会有一定的等待时延。当通过某一节点的数据量较大或者发生网络拥塞时,这 种时延会大大增加,交换结点还会根据情况丢弃部分分组。
5)网络具有冗余路径,当某一节点或者链路出现故障时,可相应的更新转发表,找到另一条路径转发,对故障适应力较强。
6)存储转发的时延较小,因此提高了网络的吞吐量。
7)收发双方不独占某一链路,资源利用率高。
2.虚电路
虚电路方式试图将数据报方式与电路交换方式相结合,在发送分组之前先在发送方与接收方之间建立一条逻辑上相连的虚电 路。连接一旦建立,虚电路所对应的物理路径也就确定了。与电路交换相似,整个通信过程分为三个阶段:虚电路建立、数据传输 和虚电路释放。
在虚电路方式中,端系统每次建立虚电路时,选择一个没有用过的虚电路号分配给该虚电路,以区别本系统中别的虚电路。在 传输数据时,每个分组不仅要有分组号、校验和等控制信息,还要通过虚电路号,以区分其他虚电路上的分组。在虚电路网络中每 个节点上都维持着一张虚电路表,他的每一项记录了一个打开的虚电路的信息,包括在接收链路和发送链路上的虚电路号、前一节 点和下一节点的标识。数据的传输时双向进行的,上述信息是在虚电路建立过程中确定的。
虚电路工作原理:
(1)为了进行数据传输,主机A和主机B之间先建立一条逻辑通路,主机A发出一个特殊的呼叫请求分组,分组通过中间结点送 往主机B,如果主机B同意,就返回一个呼叫应答分组确认。
(2)虚电路建立后,主机A就可以向主机B发送数据分组,主机B也可以向主机A发送分组。
(3)传输结束后,主机A通过发送释放请求分组拆除虚电路,整个连接就逐段断开了。
虚电路的特点:
1)虚电路通信链路的建立和拆除需要时间开销,对交互式应用和小量的短分组情况,显得浪费;但对长时间、频繁的数据交 换,则效率较高。
2)虚电路的路由选择体现在建立阶段,连接确定后,传输路径也确定了。
3)虚电路提供可靠的通信功能,能保证每个分组正确且有序的到达。此外,还可以对两个数据端点的流量进行控制,当接收方 来不及接收数据时,可以通知发送方暂停发送。
4)虚电路有一个致命弱点,即当网络中的某一节点或者某条链路故障时,则所有经过该节点或者链路的虚电路全部遭到破坏。
5)分组首部并不包含目的地址,而是包含虚电路标识符,相对数据报方式开销小。
虚电路之所以是虚的,是因为这条电路不是专用的,每个节点到其他节点之间的链路可能同时有若干虚电路通过,它也可能同 时与多个节点间具有虚电路。每条虚电路支持特定的两个端系统之间的数据传输,两个端系统之间也可以有多条虚电路为不同的进 程服务,这些虚电路的实际路由可能相同也可能不相同。
数据报与虚电路的比较:
6.2 路由算法
6.2.1 路由选择概
1.路径选择和分组转发
路由器主要完成两个功能:路径选择和分组转发。前者根据特定的路由选择协议构造出路由表,同时经常或者定期地与相邻路 由器路由信息来维护路由表。后者通过处理通过路由器的数据流,关键操作是转发表查询、查询以及相关的队列管理和任务调 度。
1)路由选择:指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路 由。
2)分组转发:值路由器根据转发表将用户的IP数据报从合适的端口转发出去。
6.2.2 静态路由和动态路由
1.静态路由算法:
指由网络管理员手动配置的路由信息,又称非自适应算法。特点是,简单、开销小,路由过程是已知的,但静态路由的更新又 人工完成,不能及时适应网络状况。一般情况下,静态路由只用在小型的网络结构不会经常发生变化的局域网中,或是查找故障的 实验网中。
(1)固定路由选择算法
每个节点保存一张从本节点到其他所有节点的输出路由表,表中可以规定多条输出线,一般至少两条,分别称为主路径和 辅助路径。也可以规定更多路径,称为辅助路径。
输出路由表由网络管理人员设置,在网络运行前确定具体内容,在运行过程中一般不做更改。路径选择的过程是,当结点 收到分组后,检查目的地,然后再输出路径选择路由表中查找该目的结点的输出路径,并从该输出路径上转发分组。
(2)随机路由选择算法
结点收到一个分组后,随机选择一条输出路径转发该分组。随机选择有两种方法:
1)完全随机法,若与结点相连的链路有N条,对输出路径依次编号,结点收到分组后,产生一个1~N之间的随机数i,把该 分组送到编号为i的路径上转发。
2)轮选法,依据对所有输出路径的排序,依次选一条输出路径转发到来的分组。
随机路由选择算法可能会将收到的分组又从输入路径转发回去,造成分组沿原路返回,解决办法之一是采用计程法,在分 组中增加一个计程字段,处置设为实际距离的两倍,没过一个节点值减一,到零时丢弃。
(3)扩算路由选择算法(泛洪法)
将接受的分组从进入路径以外的所有输出路径转发出去,分组每次都被复制多份备份。网络中会产生大量重复分组,分组 数目呈指数规律增长,最终使得网络中分组数目达到难以控制的局面。
一种控制措施是采用站点计数器,在分组首部增加一个站点计数字段,数值一般设为从源节点到目的结点经过的最多节点 数。分组每经过一个节点,数值减一,当值为零丢弃。
另一种措施是采用首次登录法,在分组中添加一个序号字段,在每个节点设置一张表,用于记录首次到达本节点的分组序 号。节点收到分组时,就检查该分组是否是第一次到达本节点,若是则登录序号,扩散转发,若是已经记录过的分组就丢弃。
扩散法的一种改进称为选择扩散法,节点并不是将分组从所有输出路径转发,而是把分组转发到那些与正确方向接近的路 径上。
(4)最短路由选择算法
由Dijkstra在1959年提出。每个节点根据度量值计算到其他节点的的最优路径,保存计算结果到路由表中。当结点收到一 个分组时,通过分组中的目的地址查找路由表,找到最佳路径转发出去。
2.动态路由算法:
指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来,而这些路由信息是在 一定时间间隙不断更新,以适应不断变化的网络,以随时获得最优的寻路效果。
动态路由选择可分为3类:孤立式、集中式和分布式。孤立式在路由选择时只考虑节点本身的情况。集中式路由选择是在网 络中心结点计算网络中的路由,然后把路由再传递到网络中的各节点。分布式路由选择是把路由选择分散到网络中的每个节 点,由每个节点按路由更新规定,通过与相邻节点交换信息,对路由表中的信息进行更新和维护。
(1)孤立式自适应路由选择
1.热土豆算法
热土豆算法的思路是,节点收到一个分组后,总选择队列最短的输出路径转发分组,很快把该分组放到最短的队列中 排队。
热土豆算法在转发分组时,只考虑分组队列的长度,没有考虑分组需要转发的路径方向,也没有考虑网络负载情况。 节点把分组放在最短队列,未必是该分组应该转发的路径,所以热土豆算法并不保证转发路径是最佳路径。
2.反向探知算法
利用节点对分组转发的路由记录,或利用路由表中一些表项记录内容,通过反向路径信息进行分组发送。
当一个节点第一次转发要到达某一目的结点的分组时,结点路由表中么有对应目的节点转发的表项。但如果节点路由 表之前转发过,对应当前分组的目的节点到源节点的记录内容,这一内容反映了当前分组的反向路径,节点就可利用该信 息,试探沿原路径的反向路径转发当前分组。
(2)距离向量路由算法
在距离-向量路由算法中,所有节点都定期地将他们的整个路由选择表传递给与之所有直接相连的节点。
这种路由选择表包含:
·每条路径的目的地(另一节点)
·路径的代价(也称距离)
这种算法中,每一节点都必须参与距离向量交换,以保证路由的有效性和一致性,所有路由都监听从其他节点传来的 路由更新信息,并在下列情况下更新路由表:
1)被通告有一条新的路由,该路由再本节点的路由表中不存在,此时本地系统加入这条新路由。
2)发送来的路由信息中有一条到达某地的路由,该路由比当前使用的路由有较短的距离。
距离-向量算法的实质是迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短通路。他要求每个节 点在每次更新中都将它的全部路由表发送给其相邻结点。显然报文更新大小与通信子网结点个数成正比,大的通信子网将导 致很大的更新报文。
通常常见的距离路由算法是RIP算法,它采用“跳数”作为距离的度量。
(3)链路状态路由算法
算法要求每个参与该算法的节点都有完全的网络拓扑信息,他们执行下列两项任务。第一,主动测试所有相邻结 点。第二,定期地将链路状态传播给所有其他的节点。典型的链路状态算法是OSPF。
在一个链路状态路由选择中,一个节点检查所有直连链路的,并将所得的状态信息发送给网上其他所有节点,而不仅 仅送给那些直连的节点。每个节点都用这种方式,从网上其他节点接收包含直连链路状态的路由选择信息。
当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网络拓扑和状态“视野图”,一旦链路状态发生 变化,节点对更新了的网络图利用Dijsktra最短路径算法重新计算路由,从单一源出发计算达到所有目的节点的最短路径。
链路状态路由算法三点特征:
1)向本自治系统中所有路由器发送信息,这里使用泛洪法。
2)发送的信息就是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓的链路状态就是 说明本路由器和哪些路由器相邻以及该链路的度量。对于OSPF来说,度量主要用来表示费用、距离、时延、带宽。
3)只有当链路状态发生变化时,路由器才向所有路由发送此信息。
由于一个路由器链路状态只涉及相邻的所有路由器的链路状态,因此与整个互联网规模并无太大关系,所以在大型或 者信息变化聚敛的互联网环境都能使用该算法。
链路算法的主要优点是,每个路由结点都使用同样的原始状态数据独立的计算路径,不依赖中间结点的计算;链路状 态不加改变地传播,有利于故障排查。当一个节点从其他所有节点处收到状态信息报文时,他可以立刻计算正确的通路。最 后,由于链路状态报文仅运载单个节点的直连链路的信息,其大小与网络中的路由结点数目无关,因此,链路状态算法比距 离向量-算法有着更好的规模可伸展性。
距离路由算法与链路状态路由算法比较:在距离-向量路由算法中,每个节点仅与它的直接邻居交谈,它为它的邻居提 供了从自己到网络中其他节点的最低费用估计。在链路状态路由算法中,每个节点通过广播的方式与所有其他节点交谈,但 它仅告诉他们与它直接相连的链路费用。相较之下,距离-向量路由算法有可能遇到路由环路等问题。
6.2.3 层次路由
当网络规模扩大时,路由器的路由表呈比例地增大。这不仅消耗越来越多的路由器缓冲区空间,而且需要更多CPU时间来扫描路 由表,用更多的带宽来交换路由信息。因此路由选择应该按照层次的选择进行。
因特网将整个互联网划分为许多较小的自治系统(一个自治系统中包含很多局域网),每个自治系统有权自主地决定本系统应 该采用何种路由选择协议。如果两个自治系统需要通信,就需要一种在两个自治系统之间的协议来屏蔽这些差异。据此,因特网把 路由选择协议分为两大类:
1)自治系统内部所使用的路由选择协议称为内部网管协议(IGP),也称为域内路由选择,具体的协议有RIP和OSPF等。
2)自治系统之间所使用的路由选择协议称为外部网络协议(EGP),也称为域外路由选择,用于不同自治系统的路由器之间交 换路由信息,并负责为分组在不同自治系统之间选择最优的路径。具体的协议有BGP。
使用层次路由时,OSPF将一个自治系统再划分为若干个区域(Area),每个路由器都知道在本区域内如何把分组路由到目的地 的细节,但是不知道其他区域的内部结构。
采用分层次划分区域的方法虽然使交换信息的种类增多了,同时也使OSPF协议更加复杂了。但这样做却能使一个区域内部交换 路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中。
6.3 路由选择协议
6.3.1 自治系统
自治系统(AS):在单一技术管理下的一组路由器,而这些路由器使用AS内部路由选择协议和共同的度量以确定分组在该AS内 的路由,同时还使用一种AS之间的路由选择协议以确定分组在AS之间的路由。
一个自治系统内的所有网络都属于一个行政单位(如,一个公司,一所大学,一个政府部门等)来管辖,一个自治系统的所有 路由器在本自治系统内部都必须是连通的。
6.3.2 域间路由和域内路由
因特网有两大类路由选择协议:
1.内部网关协议(IGP)
即在一个自治系统内部使用的路由选择协议,它与互联网中其他自治系统选用什么路由选择协议无关。目前这类路由选择协议 使用的最多,如RIP和OSPF。
2.外部网关协议(EGP)
若源站和目的站处于不同的自治系统中,当数据报传到一个自治系统的边界时(两个自治系统可能使用不同IGP),就需要一种 协议将路由选择信息传递到另一个自治系统中。这种协议就被称为外部网关协议EGP,目前使用的最多的外部网关协议是BGP-4。
6.3.3 RIP路由协议
路由信息协议(RIP)是内部网关协议IGP中最先得到广泛应用的协议。RIP是一种分布式的基于距离向量的路由选择协议,最大 的优点就是简单。
RIP协议规定:
1)网络中的每一个路由器都要维护从他自己到其他每个目的网络的距离记录。
2)距离也称为跳数,规定从一路由器到直连的网络距离为1。而每经过一个路由器,跳数加一。
3)RIP认为好的路由就是它经过的路由器数目少,即优先选择跳数少的路径。
4)RIP允许一条路径最多只能包含15个路由器(即最多允许15跳)。因此距离为16时,表示网络不可达。所以RIP只适用于小型 网络。
5)RIP默认在任意两个使用RIP协议的路由器之间每30,秒广播一次RIP路由更新信息,以便自动建立更新维护路由表。
6)在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同。但在最新的RIP2中,支持变长子网掩码和 CIDR。
RIP协议特点
1)仅和相邻路由器交换信息。
2)路由器交换的信息是当前本路由器知道的全部信息,即自己的路由表。
3)按固定时间交换路由信息,如每隔30s。
RIP通过距离向量算法来完成对路由表的更新。刚开始,每个路由器只知道与自己直接相连的网络。通过每30s的RIP广播,相邻 的两个路由器相互将自己的路由表发给对方。于是经过第一次RIP广播,每个路由器就知道与自己相邻路由器的路由表。同理,经过 第二次RIP广播,每个路由器就知道距离自己跳数为2的网络的路由……。因此经过若干次RIP广播后,所有路由器都知道了整个IP网 络的路由表。称为RIP协议最终是收敛的。通过RIP协议收敛后,每个路由器到目标网络的路由距离都是最短的。
距离向量算法:
每个路由表都有三项关键数据:<目的网络N,距离d,下一跳路由器X>。对于每一个相邻路由器发过来的RIP报文,进行一下 步骤:
1)对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把下一跳字段中的地址都改为X,并把所有的距离字 段加一。
2)对修改后的RIP报文中的每个项目进行以下步骤:
①当原来路由表中没有目的网络N时,则把该项目添加到路由表。
②当原来路由表中有目的网络N,且下一跳路由器地址为X时,则用收到的项目替换原有的项目。
③当原来的路由表中目的网络N,且下一跳地址路由器地址不是X时,如果收到项目中距离d小于路由表中的距离,就用收到 的项目替换原有项目;否则什么也不做。
3)如果180s还没有收到相邻路由器的更新路由表,则把此路由器记为不可达路由器,把距离设为16。
4)返回。
RIP最大的优点是简单,开销小,收敛过程快。
RIP协议的缺点:
1)RIP限制了网络规模,它能使用的最大距离为15。
2)路由器之间交换的是路由器中完整的路由表,因此网络规模越大,开销越大。
3)当网络出现故障时,会出现慢收敛现象(即需要较长时间才能把此信息传送给每个路由器),使更新过程的收敛时间长。
RIP是应用层协议,使用UDP传送数据(端口520)。RIP协议选择的路径不一定是时间最短的,但一定是具有最少路由器的路 径。
6.3.4 OSPF协议
1.OSPF协议的基本特点
开放最短路径优先(OSPF)协议是使用分布式链路状态路由算法的典型代表,它也是内部网关协议IGP的一种。OSPF与RIP相比 有以下四个特点:
1)OSPF向本自治系统内所有路由发送信息,采用泛洪法。而RIP协议是仅仅向自己相邻的几个路由器发送信息。
2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器知道的部分信息。“链路状态”就是说明本路由 器与哪些路由器相邻,以及链路的度量。而在RIP协议中,发送信息是本路由器知道的全部信息。
3)只有当链路状态发生变化时,路由器才使用泛洪法向所有路由器发送此信息,并且更新过程收敛快,不会出现RIP协议“坏 消息传的慢”的问题。而在RIP协议中,不管网络拓扑是否发生变化,路由器之间都会定期交换路由表。
4)OSPF是网络层协议,它不使用UDP或者TCP而是直接IP数据报传送(其IP数据报首部协议字段为89)。而RIP是应用层协议, 它在传输层使用UDP。
除以上区别外,OSPF还有以下特点:
1)OSPF对不同链路可以根据IP分组的不同服务类型而设置成不同的代价。因此,OSPF对于不同类型的业务可计算出不同的路 由,因此十分灵活。
2)如果到同一个目的网络有多条相同代价的路径,那么可将通信量分配给这几条路径。叫做多路径间的负载均衡。
3)所有OSPF路由器之间交换的分组都有鉴别功能,保证了仅在可信赖的路由器之间交换链路状态信息。
4)支持可变长度的子网划分和无分类编址CIDR。
5)每一个链路状态都带上一个32位的序号,序号越大状态就越新。
2.OSPF的基本工作原理
由于各路由器之间频繁的交换信息,因此所有路由器最终都能建立一个链路状态数据库。这个数据库实际上就是全网的拓扑结 构图,他在全网范围内是一致的。然后,每个路由器根据这个全网拓扑图,使用Dijkstra最短路径算法计算从自己到目的网络的最 优路径,以此构造自己的路由表。在此之后,当链路状态发生变化时,每个路由器重新计算到各目的网络的最优路径,构造新的路 由表。
【注意】:虽然使用Dijkstra算法能计算出完整的最优路径,但路由表中不会存储完整路径,只存储“下一跳”。
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。划分区域的好处就是将利 用泛洪法交换链路状态信息的范围值局限于每个局域而不是整个自治系统,减少了网络上的通信量。在一个区域内部路由器只知道 区域内的完整拓扑,而不知道其他区域的网络拓扑情况。这些区域也有层次之分。处在上层的域叫主干区域,负责连通下层的区 域,并且还连接着其他自治区域。
3.OSPF的五种分组类型
OSPF共有一下五种分组类型:
1)问候分组,用来发现和维持邻站的可达性。
2)数据库描述分组,向邻站给出自己的链路状态数据库中所有链路状态项目的摘要信息。
3)链路状态请求分组,向对方请求发送某些链路状态项目的详细信息。
4)链路状态更新分组,用泛洪法对全网更新链路信息。
5)链路状态确认分组,对链路更新分组的却认。
通常每隔10s,两个相邻路由器就要交换一次问候分组,以便知道哪些站可达。在路由器刚开始工作时,OSPF让每个路由器使用 数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息。然后,路由器就使用链路状态请求分组,向对方请求自己 所缺少的某些链路状态项目的详细信息。经过一系列这种分组交换,全网同步的链路数据库就建立了。
6.3.5 BGP路由协议
边界网关协议(BGP)是不同自治系统的路由器之间交换路由信息的协议。它是一种外部网关协议,边界网关协议常常应用于互 联网的网关之间。路由表包含已知路由器的列表、路由器能够达到的地址以及到达每个路由器的路径的跳数。
内部网关协议主要是设法使数据报在一个AS中尽可能有效地从源站传到目的站。在一个AS内部也不需要考虑其他方面的策略。 然而BGP使用的环境却不同,主要因为:
1)因特网规模太大,使得自治系统之间路由选择很困难。
2)对于自治系统之间的路由选择,要寻找最佳路由时很不现实的。
3)自治系统之间的路由选择必须考虑有关策略。
边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。BGP采 用的是路径向量路由选择协议,它与距离向量协议和链路状态协议有很大的区别。BGP是应用层协议,它是基于TCP的。
BGP协议的工作原理:每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。一个BGP发言人与其他自 治系统中的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,在利用BGP会话交换路由 信息。当所有的BGP发言人都相互交换网络可达性信息后,各BGP发言人就可以找出到达各个自治系统的比较好的路由。
每个BGP发言人除了必须运行BGP协议外,还必须运行该AS所使用的内部网关协议,如OSPF和RIP。BGP所交换的网络可达性信息 就是要达到某个网络所要经过的一系列AS。
BGP协议的特点:
1)BGP协议交换路由信息的节点数量级是自治系统的数量级,这要比这些自治系统中的网络数少很多。
2)每个自治系统的BGP发言人数目很少,这样使得自治系统间路由选择不过分复杂。
3)BGP支持CIDR,因此BGP的路由表也应包括目的网络前缀、下一跳路由器、到达该目的网络所要经过的各个自治系统序列。
4)在BGP刚运行时,BGP的邻站是交换整个路由表,但以后只需要发生变化时有变化的部分。
BGP-4共使用四种报文:
1)打开报文,用来与相邻发言人建立关系。
2)更新报文,用来发送某一路由信息,以及列出要撤销的多条路由。
3)保活报文,用来确认打开报文和周期性地证实邻站关系。
4)通知报文,用来发送检测到的差错。
6.4 IP组播
6.4.1 组播的概念
人们所需要的组播机制是让源计算机一次发送单个分组可以抵达用一个组地址标识的若干台目标主机,并被他们正确接收。
组播一定仅应用于UDP,它对于将报文同时送往多个接受者的应用来说非常重要。而TCP是一个面向连接的协议,意味着分别运 行于两台主机内的两个进程之间存在一条连接,是一对一传输的。
使用组播的缘由是,有的应用程序要把一个分组发送给多个目的主机。不是让源主机给每个目的地主机都发送一个单独的分 组,而是让源主机把单个分组发送给一个组播地址,该组播地址标识一组地址。网络把这个分组给该组中的每一个主机都投递一个 拷贝。主机可以选择加入或离开一个组,从而一个主机可以同时属于多个组。
主机使用IGMP(因特网组管理协议)协议加入组播组。他们使用该协议通知在本地网络上的路由器关于要接收发送给某个组播 组的分组的愿望。通过扩展路由器的路由选择和转发功能,可以在许多路由器互连的支持硬件组播的网络上实现因特网组播。
6.4.2 IP组播地址
IP组播使用D类地址格式。D类地址的前四位是1110,因此D类地址的范围是224.0.0.0~239.255.255.255。每一个D类IP地址标志 一个组播组。
组播组数据报和一般IP数据报区别在于它使用D类IP地址仅作为目的地址,并且首部中的协议字段值为2,表名使用IGMP协议。
需要注意的是:
1)组播数据报也是“尽最大努力交付”,不提供可靠交付。
2)组播地址只能用于目的地址,不能用于源地址。
3)对组播数据报不产生ICMP差错报文。因此,若在PING命令后键入组播地址,将永远不会收到响应。
4)并非所有D类地址都能作为组播地址。
IP组播可以分成两类:一种是只在本局域网上进行硬件组播;另一种是在因特网范围内进行组播。在因特网上进行组播的最后 阶段,还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员。
IANA拥有的以太网组播地址范围是01-00-5E-00-00-00到01-00-5E-7F-FF-FF。在每个地址中,只有23位可用作组播。这只能和D 类IP地址中的23位有一一对应的关系。D类IP地址可供分配的有28位,可见这28位前5位不能用来构成以太网的硬件地址。
6.4.3 IGMP协议与组播路由算法
为了使路由器知道组播组成员的信息,就需要ICMP协议。连接在局域网上的组播路由器还必须和因特网上其他组播路由器协同 工作,以便把数据报以最小的代价传送给所有组员,这就需要使用组播路由选择协议。
ICMP并非是在因特网范围内对所有组播组成员进行管理的协议。ICMP不知道IP组播组包含的成员数,也不知道这些成员分布在 哪个网络上。ICMP协议是让连接在本地局域网上的组播路由器知道本局域网上是否有主机参加或者退出了某个组播组。
ICMP应视为TCP/IP协议的一部分,其工作可分为两个阶段。
第一阶段,当某个主机加入新的组播组时,该主机应向组播组的组播地址发送一个ICMP报文,声明自己要成为该组的成员。本 地组播路由器收到报文后,将成员关系转发给因特网上别的组播路由器。
第二阶段,因为组成员关系是动态地,本地组播路由器要周期性地探寻本地局域网上的主机,以便知道这些主机是否还继续是 组的成员。只要对某个组有主机响应,那么组播路由器就认为这个组是活跃的。但一个组在经过几次探寻后仍然没有主机响应,则 不再将该组的成员关系转发给其他组播路由器。
组播路由选择实际上是要找出以源主机为根节点的组播转发树,其中每一个分组在每条链路上只传送一次。对于不同的多播组 对应有不同的多播转发树;同一个多播组,对不同的源点也有不同的多播转发树。
在许多由路由器互连的支持硬件多点传送的网络上实现因特网组播,主要有三种路由算法:第一种是基于链路状态的路由选 择;第二种是基于距离-向量的路由选择;第三种是可以建立在任何路由协议之上,因此称为协议无关的组播(PIM)。
6.5 网络层设备
6.5.1 路由器的组成和功能
路由器是一种具有多个输入输出端口的专用计算机,其任务是连接不同的网络并完成路由转发。多个逻辑网络互连时必须使用 路由器。路由器也可以作为最基础的包过滤防火墙用。
当源主机向目标主机发送数据时,路由器先检查源主机与目标主机是否连接在同一个网络上。若在一个网络,数据的交付无需 通过路由器。如果不在,则路由器按照转发表指出的路由将数据报转发给下一个路由器,称为间接交付。可见,在同一个网络中传 递数据无需路由器参与,而夸网络通信必须通过路由器进行转发。路由器隔离了广播域。
从结构上看,路由器由路由选择和分组转发构成,从模型角度看,路由器是网络层设备,实现网络模型的下三层。
如果一个存储转发设备实现了某一层的功能,那么他就可以互连两个在该层次上使用不同协议的网段。如网桥实现了物理层和 数据链路层,所以网桥可以互连两个物理层和数据链路层不同的网段;中继器实现了物理层,却不能互连两个物理层的不同网段, 因为中继器不是存储转发设备。
路由选择部分也叫控制部分,其核心构件是选择处理机。路由选择处理机的根本任务是根据所选定的路由选择协议构造出路由 表,同时经常或定期地和其他相邻路由器交换路由信息而不断更新维护路由表。
分组转发部分由三部分组成:交换结构、一组输入端口、一组输出端口。输入端口把从物理层收到的比特流中提取处链路层 帧,进而从帧中提取出网络层数据报,输出端口则执行恰好相反的操作。交换结构是路由器的关键部件,它根据转发表对分组进行 处理,将某个从输入端口进入的分组从合适的输出端口转发出去。有三种常用的交换方法:通过存储器进行交换、通过总线进行交 换、通过互联网进行交换。交换结构本身就是一个网络。
路由器主要完成两个功能:一个是分组转发,一个是路由计算。前者处理通过路由器的数据流,关键操作是转发表查询、转发 以及相关队列管理和任务调度等;后者通过跟其他路由器进行基于路由协议的交互,完成路由表的计算。
路由器和网桥的重要区别:网桥与高层协议无关,而路由器是面向协议的,它根据网络地址进行操作,并需进行路径选择、分 段、帧格式转换、对数据报的生存时间和流量进行控制等。现今路由器一般都能提供多种协议的支持,包括OSI、TCP/IP、IPX等。
6.5.2 路由表与路由转发
路由表根据路由算法得出,主要用途用于路由选择。标准路由表具有四个项目:目的网络IP地址、子网掩码、下一跳IP地址、 接口。
转发表由路由表得出,其表项和路由表表项有直接对应关系。但转发表格式与路由表不同,其结构应使查找过程最优化(而路 由表是对网络拓扑变化的计算最优化)。转发表中含有一个分组将要发往的目的地址,以及分组的下一跳(即下一步接受者的目的 地址,实际为MAC地址)。为了减少转发表的重复项目,可以使用一个默认路由代替具有相同的下一跳的项目,并设置默认路由比其 他项目的优先级低。
在讨论路由选择原理时,往往不区分转发表跟路由表,但要注意路由表不等于转发表。分组的转发实际还是靠直接查找转发表 而不是直接查找路由表。
转发和路由选择的区别:“转发”是路由器根据转发表把收到的IP数据报从合适的端口转发出去,它仅涉及一个路由器。 而“路由选择”则涉及很多路由器,路由表是由许多路由器协同工作的结果。这些路由器按照复杂的算法,根据从各相邻路由器得 到的关于网络拓扑的变化情况,动态地改变所选的路由,并由此构造出整个路由表。
6.6 IPv4
6.6.1 IPv4分组
IPv4,即现在普遍使用的IP协议。IPv4协议定义数据传输的基本单元——IP分组以及其确切的数据格式。
1.IPv4分组格式
一个IP分组由首部和数据部分构成。首部的前一部分是固定长度,共20字节,是所有IP分组都必须具有的。在首部固定部分之 后是可选字段,其长度可变,用来提供错误检测及安全等机制。
IP首部部分重要字段含义:
1)版本 指IP协议的版本,目前广泛使用的版本号为4。
2)首部长度 占4位。以32位为单位,最大值为60字节。最常用的首部长度为20字节,此时不使用任何选项。
3)总长度 占16位,指首部和数据之和的长度,单位是字节,数据报最大的长度为65535字节。以太网帧的最大传输单元MTU 为1500字节,因此当一个IP数据报封装成帧时,数据报总长度不能超过下面链路层的MTU值。
4)标识 占16位,它是一个计数器,每产生一个数据报就加一,并赋值给标识字段。但它并不是序号。当一个数据报长度超 过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号以便能正确重装成原来的数据报。
5)标志 占3位,最低字位为MF,只有当MF=1表示后面还有分片;MF=0表示最后一片分片。标志字段中间位为DF,只有DF=0时 才允许分片。
6)片偏移 占13位,它指出较长的分组在分片后,某片在原分组中的位置。片偏移以8字节为单位,即每个分片的长度为8的 整数倍。
7)首部检验和 占16位,IP数据报首部检验和只检验首部,不检验数据部分。
8)生存时间TTL 占8位,即数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命。
9)协议 占8位,指出分组携带的数据使用何种协议,即分组数据部分应该交个哪个传输层协议,如TCP和UDP等。其中值为6 代表TCP,17代表UDP。
10)源地址字段 占4个字节,标识发送方的IP地址。
11)目的地址字段 占4个字节,标识接收方的IP地址。
【注意】在IP数据报中有三个关于长度的标记,一个是首部长度,一个是总长度,一个是片偏移,基本单位分别为4B、B、8B
2.IP数据报分片
一个链路层数据报能承受的最大数据量称为最大传送单元(MTU)。因为IP数据报封装在链路层的数据报中,故链路层的 MTU严格地限制了IP数据报的长度,且在IP数据报的源与目的路径上的各段链路可能使用不同的链路层协议,有不同的MTU。例 如,以太网的MTU为1500字节,而许多广域网的MTU不超过576字节。当数据报长度大于链路MTU时,就需要将IP数据报中的数据 分装在两个或者更多个更小的IP数据报中,这些较小的数据报叫片。
片在目的地的网络层被重组,目的主机使用IP首部中的标识、标志、片偏移字段来完成重组。当创建一个IP数据报时,源 主机为该数据报加上一个标识号。当一个路由器需要将一个数据报分片时,形成的数据报都具有原始数据报的标识号。当目的 主机收到来自同一主机的一批数据报时,它通过检查数据报的标识号以确定哪些数据报属于同一个原始数据报的片。IP首部中 标志位有三个比特,只有后两个比特有意义,分别为MF位和DF位。只有当DF=0时,该IP数据报才能被分片。MF位则是告诉目的 主机该IP数据报是否为原始数据报的最后一片。MF=0时,表示这是原始数据报的最后一片。目的主机在对片进行重组时,使用 片偏移字段来确定每个片在原始数据报中的位置。
3.网络层转发分组的流程
1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。
2)若网络与此路由器直接相连,则把数据直接交付给目的主机,这叫路由器的直接交付;否则是间接交付,执行3。
3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中指定的下一跳路由器;否则执行4。
4)若路由表中没有到达网络N的路由,则把数据报传送给路由表指定的下一跳路由器;否则执行5。
5)若路由表中有一个默认路由,则把数据报传送给路由表中中所指明的默认路由器;否则执行6。
6)报告转发分组出错。
【注意】得到下一跳路由器的IP后不是直接将该地址填入待发送的数据报中,而是将IP地址解析成MAC地址,将其放在MAC帧首 部,然后根据这个MAC帧找到下一跳路由器。在不同网络传送中,MAC帧中的源地址和目的地址要发生变化,但在网桥转发帧 时,不改变帧的源地址。
6.6.2 IPv4地址与NAT
1.IPv4地址
连接在Internet中的每一台主机(或路由器)都分配一个32比特的全球唯一的标识符,即IP地址。传统的IP地址是分类地 址,分为A、B、C、D、E五类。
无论哪类IP地址,都由网络号和主机号两部分组成。即IP地址::={<网络号>,<主机号>}。其中网络号标志主机所在的网 络,网络号在整个因特网范围内必须是唯一的。主机号标志该主机。主机号在他前面的网络号所指明的范围内必须是唯一的。 所以,IP地址在整个因特网范围内是唯一的。
在各类IP地址中,有些IP地址用于特殊用途,不用做主机IP地址:
·主机号全为0表示本网络本身。
·主机号全为1表示本网络的广播地址,又称直接广播地址。
·127.0.0.0网络保留作为环路自检地址,此地址表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在网络上。
·32位全为0,即0.0.0.0表示本网络上的本主机。
·32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。
实际使用时,由于路由器对广播域的分隔,255.255.255.255等同于本网络的广播地址。
IP地址有以下重要特点:
1)每个IP地址都由网路号和主机号两部分组成,因此IP地址是一种分等级的地址结构,分等级的好处是:
①地址管理机构分配地址时只分配网络号,主机号由该网络单位自行分配。
②路由器仅根据目的主机的网络号来转发分组,从而减小了路由表所占的存储空间。
2)IP地址时标志一个主机和一条链路的接口。当主机需要连接到两个网络时,就必须同时具有两个相应的IP地址,每个IP地址 的网络号必须与所在网路的网络号相同且这两个IP地址的网络号不相同。因此,IP网络上的路由器必须至少具有两个IP地 址。
3)用转发器或者网桥连接起来的LAN仍然是同一个网络,因此LAN中所有主机的IP地址的网络都相同,主机号不同。
4)在IP地址中,所有分配到网络号的网络都是平等的。
5)在同一个局域网上的主机或路由器的IP地址的网络号必须相同,路由器总有两个以上的IP地址,每个端口都有不同网络号的 IP地址。
2.网络地址转换
网络地址转换(NAT),是通过将专用网络地址转换为公用网络地址,从而对外隐藏了内部管理的IP地址。它使得专用网只需要 一个全球IP地址就可以与因特网连通,由于专用网本地IP可以重复使用,所以NAT大大节省了IP地址的消耗。同时NAT隐藏了内部网 络结构,从而降低了内部网络受到攻击的风险。
此外为了网络安全,划出部分地址为私有IP地址。私有IP地址只用于LAN,不用于WAN连接,并允许私有IP地址呗LAN重复使用, 有效的解决了IP地址不足的问题。在因特网中的所有路由器,对目的地址为私有地址的数据报一律不进行转发。
使用NAT时需要在专用网络连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。当使用本地地址 的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址。NAT转换表中存放着{本地IP地址:端口}到{全球IP地 址:端口}的映射。通过这样的映射方式可以让多个私有IP地址映射到同一个全球IP地址。
6.6.3 子网划分与子网掩码、CIDR
1.子网划分
两级IP地址的缺点:IP地址空间利用率很低;给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏;两级IP 地址不够灵活。
划分子网的思路如下:
·划分子网纯属单位内部的事。单位对外仍然表现为没有划分子网的网络。
·从主机号借用若干个比特作为子网号,当然主机号就相应减少了相同的比特。三级IP地址结构如下:
IP地址 = {<网络号>,<子网号>,<主机号>}
·凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的网络号,先找到本网络上的路由器。然后此路由 器再按目的网络号与子网号找到目的子网。最后把数据报直接交付给目的主机。
2.子网掩码
子网掩码是一个与IP地址对应长32比特的二进制串,它有一串1跟随一串0组成。其中,1对应IP地址中的网络号及子网号,而0 对应主机号。计算机只需将IP地址和其对应的子网掩码逐位相与,就可得到相应子网的网络地址。
现在因特网标准规定:所有网络都必须使用子网掩码。如果一个网络没有划分子网掩码,那么就采用默认子网掩码。A、B、C类 的子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0。
由于子网掩码是一个网络或者一个子网的重要属性,所以路由器在相互交换路由信息时,必须把自己所在网络的子网掩码告诉 对方。路由表中的每一个条目,除了要给出目的地址和下一跳地址以外,同时还要同时给出该目的网络的子网掩码。
使用子网掩码的情况:
·一个主机在设置IP地址信息的同时,必须设置子网掩码。
·同属于一个子网的主机以及路由器的相应端口,必须设置相同的子网掩码。
·路由器的路由表中,所包含的信息其主要内容有:目的网络地址、子网掩码、下一跳地址。
使用子网掩码时,路由器的分组转发算法如下:
1)从收到的分组首部提取目的IP地址,记为D。
2)先判断是否是直接交付。对路由器相连的网络逐个检查:用各网络的子网掩码与D逐位相与,看结果是否和相应的网络地址 匹配。若匹配,则将分组直接交付,否则就是间接交付,执行3。
3)若路由表中有目的地址为D的特定主机路由,则将分组传送给路由表所指定的下一跳路由器;否则执行4。
4)对路由表中的每一行中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的 下一跳路由;否则执行5。
5)若路由表中有一个默认路由,则将分组传送给路由表中所指定的默认路由;否则,执行6。
6)报告转发分组出错。
3.无分类编址CIDR
无分类域间路由选择(CIDR)是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,可以在软件的支持下实现超 网构造的一种IP地址划分方法。
CIDR主要特点:
1)消除了传统A、B、C类地址的概念以及子网划分的概念,因而可以更加有效地分配IPv4地址空间。CIDR使用网络前缀的概念 代替子网的概念。这样IP地址的无分类两级编址为:IP::={<网络前缀>,<主机号>}。
CIDR使用斜线记法或称CIDR记法,即:IP地址/网络前缀所占的比特数。其中,网络前缀所占比特数对应的网络号部分,等效于 子网掩码中连续1的部分。
CIDR虽然不使用子网,但仍使用掩码一词。不使用子网是指CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个 CIDR地址块的组织,仍可以在本组织根据需要再划一些子网。
2)将网络前缀都相同的连续IP地址组成“CIDR地址块”。一个CIDR地址块表示很多地址,这种地址聚合称为路由聚合,或称为 构成超网。路由聚合使得路由表中的一个项目可以表示原来很多个传统分类地址的路由,有利于减少路由器之间的路由选择信息的 交换,从而提高网络性能。
CIDR地址块中的地址数一定是2的整数次幂,实际可指派的地址数通常为2^N-2,N表示主机号的位数,主机号全为0代表网络 号,主机号全为1位广播地址。
最长前缀匹配:使用CIDR时,路由表中每个项目由网络前缀和下一跳地址组成。在查找路由表时可能会得到不止一个匹配结 果,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块越小,因而路由就更具体。
CIDR查找路由表的方法:通常将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下的按层次进行查找。这里常 用的数据结构就是二叉线索。
6.6.4 ARP协议、DHCP协议、ICMP协议
1.IP地址与硬件地址
IP地址是网络层使用的地址,它分层次等级。硬件地址是数据链路层使用的地址,它是平面式的。网络层及网络层之上使用IP 地址,IP地址放在IP数据报首部;MAC地址放在MAC帧首部。通过封装把IP数据报分组封装成MAC帧后,数据链路层看不见数据报分组 中的IP地址。
由于路由器的隔离,IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址,因此在IP网络层只使用IP地址来完成寻址。 寻址时:每个路由器依据其路由表选择到目标网络需要转发到的下一跳,而IP分组通过多次路由转发后到达目的网络,则改为在目 标网络LAN中通过数据链路层的MAC地址以广播方式寻址。
1)在IP层抽象的互联网上只能看到IP数据报。
2)虽然在IP数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据IP地址的网络号进行路由选择。
3)在局域网的链路层,只能看见MAC帧。通过路由器转发IP分组时,此IP分组在每个网络中被路由器解封和重新封装。因此IP 数据报再被路由器转发时其数据链路层所封装的MAC地址是不断改变的。这也决定了MAC地址无法跨网络通信的问题。
4)尽管互连在一起的网络硬件地址体系各不相同,但IP层抽象互联网却屏蔽了下层这些很复杂的细节。只要我们只在网络层上 讨论问题,就能够使用统一的、抽象的IP地址研究主机与路由器之间的通信。
【注意】路由器用于互连多个网络,因此不仅有多个IP地址,也有多个硬件地址。
2.地址解析协议ARP
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。ARP协议就是完成IP地址到MAC地址的 映射的协议。每个主机都设置一个ARP高速缓存,存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称为ARP表。使用 ARP协议来动态维护此ARP表。
ARP工作在网络层,其原理是:当主机A欲向本局域网上某主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地 址。如果有,就可查出对应的MAC地址,再将MAC地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。如果没有,就通过使 用目的地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组,可以使同一个局域网内所有主机收到ARP请求,当主机B收到请求 后,就会向主机A发送响应ARP分组,其中包含B的IP与MAC地址的映射关系,A在收到响应报文后,将其映射写入ARP缓存,然后按该 硬件地址发送MAC帧。ARP协议由于看到了IP地址,所以他工作在网络层,而NAT由于看到了端口,所以工作在运输层。
ARP四种典型情况总结:
1)发送方为主机,要把IP数据报发送到本地网络上的另一个主机,此时ARP找到目的主机的硬件地址。
2)发送方是主机,要把IP数据报发送给另一网络上的一个主机,此时ARP找到本地网络上一个路由器的硬件地址,剩下的工作 由路由器完成。
3)发送方是路由器,要把IP数据报发送到本网络上的一个主机,此时ARP找到的是目的主机的硬件地址。
4)发送方是路由器,要把IP数据报发送给另一个网络上的一个主机,此时ARP找到的是本网络上一个路由器的硬件地址,剩下 的由找到的这个路由器完成。
3.动态主机配置协议DHCP
动态主机配置协议(DHCP)常用于给主机动态地分配IP地址,他提供了即插即用联网的机制,这种机制允许一台计算机加入新 的网络和获取IP地址而不用手工参与。DHCP是应用层协议,是基于UDP的。
DHCP协议的工作原理:使用C/S服务,需要本地主机在启动时主动向DHCP服务器广播发送发现报文,此时该主机就成为DHCP客 户。本地网络上所有主机都能收到报文,但只有DHCP服务器才会回答此报文。DHCP先在其数据库中查找该计算机的配置信息。若找 到,则返回找到的信息,若找不到,则从服务器的IP池中取出一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文。
DHCP服务器聚合DHCP客户端的交换过程如下:
1)DHCP客户机广播DHCP发现消息,试图找到DHCP服务器,服务器获得一个IP地址。
2)DHCP服务器收到发现消息后,就向广播中广播DHCP提供消息,其中包括提供DHCP客户机的IP地址和相关配置信息。
3)DHCP客户机收到DHCP提供消息,如果接受相关参数,就通过广播DHCP请求向DHCP服务器请求提供IP地址。
4)DHCP服务器广播DHCP确认消息,将IP地址分配给DHCP客户机。
DHCP协议允许网络上配置多台DHCP服务器,当DHCP客户机发出请求时,可能会收到许多DHCP应答消息,此时客户机只挑选一 个,通常挑选最先达到的。DHCP服务器分配的IP地址是临时的,因此用户只能在有限的时间里使用该IP地址。DHCP称其为租用期。 租用期的时间由DHCP服务器自己决定,DHCP客户机也可以在自己发送的报文中提出对租用期的要求。
4.网际控制报文协议ICMP
为了提高IP数据报交付成功的机会,网络层使用网际控制报文协议(ICMP)来允许主机或者路由器报告差错和异常情况。ICMP 作为IP层数据报的数据,加上数据报首部,组成IP数据报发送出去。ICMP是IP层协议。
ICMP报文种类有两种,即ICMP差错报文和ICMP询问报文。
ICMP差错报文共以下五种类型:
1)终点不可达,当路由器或主机不能交付数据报时就向源主机发送。
2)源点抑制,当路由器或主机由于拥塞而丢弃数据报时,向源点发送源点抑制报文。
3)时间超过,当路由器收到生存时间TTL为0的数据报时,除了丢弃该数据报以外,还要向源点发送一个超时报文。
4)参数问题,当路由器或者目的主机收的数据报首部有字段出现差错时,就丢弃该数据报,并向源点发送参数问题报文。
5)改变路由(重定向),路由器把改变路由报文发给主机,让主机知道下次应该将数据报发送给另外的路由器。
不发送ICMP差错报文的几种情况:
1)对ICMP差错报文不再发送ICMP差错报告报文。
2)对第一个分片的数据报的所有后续数据报都不发送ICMP差错报告报文。
3)对具有组播地址的数据报不发送。
4)对具有特殊地址的数据报不发送。
ICMP询问报文有四种:回送请求和回答报文、时间戳请求和回答报文、掩码地址请求和回答报文、路由询问和通告报文。通常 用的是前两类。
ICMP的两个常见应用是分组网间探测PING和traceroute(UNIX中的名字,Windows中时tracert,用来跟踪分组经过的路由)。 其中PING使用了ICMP回送请求和回答报文,tracert使用了ICMP时间超过报文。
【注意】PING工作在应用层,它直接使用ICMP协议,没有使用运输层的TCP或UDP,tracert工作在网络层。
6.7 IPv6
6.7.1 IPv6的主要特点
要解决IP地址耗尽的问题的措施有以下三种:①采用无类别编址CIDR ②采用网络地址转换NAT方法 ③采用具有更大地址空 间的新版本IP协议IPv6。前两种方法只是延长了IPv4地址分配结束的时间,只有第三种方法从根本上解决了地址耗尽的问题。
IPv6主要特点如下:
1)更大的地址空间。IPv6将地址从32位增大到了128位。IPv6的字节数(16字节)是IPv4字节数(4字节)的平方。
2)扩展的地址层次结构。
3)灵活的首部格式。
4)改进的选项。
5)允许协议继续扩充。
6)支持即插即用(自动配置)。
7)支持资源的预分配。
8)IPv6只有在包的源节点才允许分片,是端到端的,传输路径中的路由器不能分片,所以一般意义上来讲,IPv6不能分片。
9)IPv6首部长度必须为8B的整数倍,而IPv4是4B的整数倍。
10)增加了安全性,身份验证跟保密功能是IPv6的关键特征。
虽然IPv6与IPv4不兼容,但总的来说他与其他因特网协议兼容,包括TCP、UDP、ICMP、IGMP、OSPF、BGP、DNS,只是少数地方 作了必要修改。IPv6相当好地满足了预定目标,主要体现在:
1)首先,IPv6地址用16个字节表示,地址空间比IPv4大的多。
2)简化了IP头分组,包含8个域。这一改变使得路由器能更快地处理分组,改善吞吐率。
3)更好地支持选项,这一改变对新的分组首部很重要,因为一些从前是必要的段现在变成可选的。此外,表示选项的方式的改 变能加快分组处理速度。
6.7.2 IPv6地址
IPv6数据报目的地址可以是以下三种基本类型中的一种:
1)单播:传统的点对点通信
2)多播:一点对多点通信,分组被交付到一组计算机中的每一个。
3)任播:是IPv6新增的一种类型。任播的目的站是一组计算机,但数据报在交付时只给其中一个,通常是最近的一个。
IPv4地址通常采用点分十进制表示法。IPv6标准中指定了一个比较紧凑的表示法,即把地址中的每4位用一个16进制数表示,用 冒号分隔每16位。
通常把IPv6地址缩写成更紧凑的形式,当16位域的开头有些0可以采用一种缩写表示法。例如可以吧下面的地址
4BD5:0000:0000:0000:BAG5:032F:000A:2167简写为4BD5:0:0:0:BAG5:32F:A:2167。
当有相继的零域可以进一步缩写,这些域可以用双冒号简写,当然双冒号表示法只能出现一次,如上个例子中可以简写为下式
4BD5::BAG5:32F:A:2167。
IPv6扩展了IPv4地址的分级概念,他使用以下三个等级:第一级,全球都知道的公共拓扑。第二级,指明单个场点。第三级, 指明单个网络接口。IPv6地址采用多级体系主要是为了路由器能更快地查找路由。
IPv4向IPv6过渡只能采取逐步演进的方法,同时还必须使新安装的IPv6系统能向后兼容,IPv6系统必须能接受和转发IPv4分 组,并且能为IPv4分组选择路由。
IPv4向IPv6过渡可以采用双协议栈和隧道技术两种策略:双协议栈是指在完全过渡到IPv6前,使一部分主机装有两个协议栈, 通过双协议栈进行转换;隧道技术是将整个IPv6数据报封装到IPv4数据报的数据部分,这样使得IPv6数据报可以在IPv4网络的隧道 中进行传输。