互联网在网络层的设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。也就是说,所传送的分组可能出错、丢失、重复、失序或超时,这就使得网络中的路由器比较简单,而且价格低廉。
网络互连是指将两个以上的计算机网络,通过一定的方法,用一些中间设备(又称中继系统)相互连接起来,以构成更大的网络系统。根据所在的层次,中继系统分为以下4种:
使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称为网络互连。因此网络互连通常是指用路由器进行网络互连和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择。
TCP/IP体系在网络互连上采用的做法是在网络层采用标准化协议,但相互连接的网络可以是异构的。
上图表示用许多计算机网络通过一些路由器进行互连。由于参加互连的计算机网络都使用相同的IP协议,因此可以把互连后的网络视为如图(b)所示的一个虚拟IP网络。
IP网络:是通过IP协议使性能各异的网络在网络层上看起来好像是一个统一的网络。
路由器主要完成两个功能:一是路由选择(确定哪一条路径);二是分组转发(当一个分组到达时所采取的动作)。
路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。在讨论路由选择的原理时,往往不去区分转发表和路由表,而是笼统地使用路由表一词。
网络层的主要任务是转发和路由选择。可以将网络层抽象地划分为数据平面(也称转发层面)和控制平面,转发是数据平面实现的功能,而路由选择是控制平面实现的功能。
数据平面:数据平面对于数据处理过程中各种具体处理转发过程。数据平面执行的主要功能是根据转发表进行转发,这是路由器的本地动作。
控制平面:控制平面用于控制和管理网络协议的运行,比如OSPF协议、RIP协议、BGP协议。用于实现路由选择,控制数据报沿着从源主机到目的主机的端到端路径中路由器之间的路由方式。时间长,通常软件解决。
软件定义网络(SDN)是近年流行的一种创新网络架构,它采用集中式的控制平面和分布式的数据平面,两个平面相互分离,控制平面利用控制-数据接口对数据平面上的路由器进行集中式控制,方便软件来控制网络。
在网络的控制平面有一个逻辑上的远程控制器(可以由多个服务器组成)。远程控制器掌握各主机和整个网络的状态,为每个分组计算出最佳路由,通过Openflow协议(也可以通过其他途径)将转发表(在SDN中称为流表)下发给路由器。
路由器的工作很单纯,即收到分组、查找转发表、转发分组。
SDN的可编程性通过为开发者们提供强大的编程接口,使得网络具有很好的编程性。
SDN优点:
SDN的问题:
拥塞:在通信子网中,因出现过量的分组而引起网络性能下降的现象称为拥塞。
例如,某个路由器所在链路的带宽为 R R R B/S,如果IP分组只从它的某个端口进入,那么其速率为rinB/s。当rin=R时,并非好事。
当分组到达路由器的速率接近R时,平均时延急剧增加,并且会有大量的分组被丢弃(路由器端口的缓冲区是有限的),整个网络的吞吐量会骤降,源与目的地之间的平均时延也会变得近乎无穷大。
判断网络是否拥塞方法:观察网络的吞吐量与网络负载的关系
拥塞控制的作用是确保子网能够承载所达到的流量,这是一个全局性的过程,涉及各方面的 行为:主机、路由器及路由器内部的转发处理过程等。单一地增加资源并不能解决拥塞。
流量控制和拥塞控制的区别:
流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。
而拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。
拥塞控制的方法:
路由器转发分组是通过路由表转发的,而路由表是通过各种算法得到的。从能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由算法可以分为如下两大类。
距离向量算法
常见的距离-向量路由算法是RIP算法,每个路由器定期与所有相邻路由器交换整个路由表,更新路由项。
这种路由表包含:①每条路径的目的地(另一结点)。②路径的代价(也称距离)。
这里的距离是一个抽象的概念,如RIP就将距离定义为“跳数”。跳数指从源端口到达目的端口所经过的路由器个数,每经过一个路由器,跳数加1。
更新路由表的情况:
被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入这条新的路由。
路由信息有一条较短的距离,发来的路由信息中有一条到达某个目的地的路由,该路由与当前使用的路由相比,有较短的距离。此时,就用经过发送路由信息的结点的新路由替换路由表中到达那个目的地的现有路由。
距离-向量路由算法的实质是,迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短(最小代价)通路。
距离-向量路由算法中,路由器只掌握物理相连的邻居及链路费用
RIP(路由信息协议) 封装UDP 应用层协议 只适用于小互联网
RIP是一种分布式的基于距离向量的路由选择协议,其最大优点就是简单。
协议规定:
1)网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(距离向量)
2)距离也称为跳数,规定从一路由器到直接连接的跳数为1。每经过一个路由器,跳数加1
3)RIP认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径
4)RIP允许一条路径最多只能包含15个路由器(即最多允许15跳)距离等于16时,表示网络不可到达
5)RIP默认在任意两个使用RIP的路由器之间每30s广播一次RIP路由更新信息,动态维护路由表
6)在RIP中不支持子网掩码的RIP广播,RIP中每个网络的子网掩码必须相同。在RIP2中,支持变长子网掩码和CIDR
RIP报文格式:
RIP报文由首部和路由部分组成。
RIP的特点:
1)仅和相邻路由器交换信息。
2)路由器交换的信息是当前路由器所知道的全部信息,即自己的路由表。
3)按固定的时间间隔交换路由信息,如每隔30秒。
距离向量算法:每个路由表项目都有三个关键数据: < 目的网络 N ,距离 d ,下一跳路由器地址 X > <目的网络N,距离d,下一跳路由器地址X> <目的网络N,距离d,下一跳路由器地址X>。
1)对地址为X的相邻路由器发来的报文,修改此报文中的所有项目【'下一跳’的地址都改为X,把所有’距离’的值+1】
2)对修改后的报文中的每一个项目,进行以下步骤:
3)如果180s(默认超时时间是180s)没有收到相邻路由器的更新路由表,把此相邻路由器记为不可达路由,把距离置为16
4)返回
例:已知路由器R6有表a所示的路由表。现在收到相邻路由器R4发来的路由更新信息,如表b所示。试更新路由器R6的路由表。
先把表b中的距离都加1,并把下一跳路由器都改为R4。得出表c。
把这个表的每一行和表a进行比较。
- 第一行在表a中没有,因此要把这一行添加到表a中。
- 第二行的Net2在表a中有,且下一跳路由器也是R4。因此要更新(距离增大了)。
- 第三行的Net3在表a中有,但下一跳路由器不同。于是就要比较距离。新的路由信息的距离是2,小于原来表中的4,因此要更新。
这样,得出更新后的R6的路由表如表d所示。
在更新完路由后,每一个路由器到每一个目的网络的路由都是最短的
RIP优点:实现简单、开销小、收敛过程较快
收敛:路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。
RIP缺点:好消息传得快,坏消息传得慢
1)RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)。
2)路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大。
3)网络出现故障时,会出现慢收敛现象(即需要较长时间才能将此信息传送到所有路由器),使更新过程的收敛时间长。
慢收敛例子:
现在假定路由器R1,到网1的链路出了故障,R1无法到达网1。于是路由器R1把到网1的距离改为16(表示到网1不可达),因而在R1的路由表中的相应项目变为“1,16,直接”。但是,很可能要经过30秒钟后R1才把更新信息发送给R2。然而R2可能已经先把自己的路由表发送给了R1,其中有“1,2,R1”这一项。
R1收到R2的更新报文后,误认为可经过R2到达网1,于是把收到的路由信息“1,2,R,”修改为:“1,3,R2”,表明“我到网1的距离是3,下一跳经过R2”,并把更新后的信息发送给R2。
同理,R2接着又更新自己的路由表为“1,4,R1”,以为“我到网1距离是4,下一跳经过R1”。
这样的更新一直继续下去,直到R1和R2到网1的距离都增大到16时,R1和R2才知道原来网1是不可达的。RIP协议的这一特点叫做:好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如数分钟)。这是RIP的一个主要缺点。
链路状态路由算法
链路状态路由算法要求每个参与该算法的结点都具有完全的网络拓扑信息,它们执行下述两项任务。
第一,主动测试所有邻接结点的状态。两个共享一条链接的结点是相邻结点,它们连接到同一条链路,或者连接到同一广播型物理网络。
第二,定期地将链路状态传播给所有其他结点(或称路由结点)。
典型的链路状态算法是OSPF算法。
特征:
优点:
每个路由结点使用同样的原始状态数据独立的计算路径。
链路状态不加改变的传播,该算法易于查找故障。
仅运载来自单个结点关于直接链路的信息,其大小与网络中的路由结点数目无关,有更好的规模可伸展性。
链路状态路由算法可以用于大型的或路由信息变化聚敛的互联网环境。因为一个路由器的链路状态只涉及相邻路由器的连通状态,而与整个互联网的规模并无直接关系。
链路状态路由算法中,所有路由器掌握完整的网络拓扑和链路费用信息。
OSPF(开放最短路径优先)协议 网络层协议 封装IP
OSPF特点:
OSPF与RIP的区别:
RIP | OSPF | |
---|---|---|
工作层次 | 应用层 基于UDP | 网络层 基于IP |
转发范围 | 相邻路由器 | 整个本自治系统(洪泛法) |
发送内容 | 整个路由表 | 相邻路由器链路状态 |
何时发送 | 定期交换 收敛慢 | 链路状态改变(洪泛法) 收敛快 |
OSPF报文格式:
OSPF直接用IP数据报传送,工作在网络层。
OSPF的基本工作原理:
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域(area)。每一个区域都有一个32位的区域标识符(用点分十进制表示)。
划分区域后,洪泛法交换链路状态信息的范围局限于每一个区域,减少网络的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。每个区域路由器应不超200个。
OSPF采用层次结构的区域划分,使每个区域能够与其他区域通信。
在上层的区域叫做主干区域backbone area)。主千区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。
从其他区域来的信息都由区域边界路由器(area border router)进行概括。如路由器R3,R4和R7。
在主干区域内的路由器叫做主干路由器(backbone router),如R3,R4,R5,R6和R7。
在主干区域内需要一个路由器和本自治系统外的其他自治系统交换路由信息。这样的路由器叫做自治系统边界路由器,如R6。
采用层次划分后,使每一个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中。
OSPF分组类型:
通常每隔10秒,每两个相邻路由器要交换一次问候分组,以便知道哪些站可达。路由器刚开始工作时,OSPF让每个路由器使用数据库描述分组和相邻路由器交换本数据库中已有的链 路状态摘要信息。然后,路由器使用链路状态请求分组,向对方请求发送自己所缺少的某些链路 状态项目的详细信息。经过一系列的这种分组交换,就建立了全网同步的链路数据库。
OSPF链路状态路由算法:
1.每个路由器发现它的邻居结点【HELLO问候分组】,并了解邻居节点的网络地址。
2.设置到它的每个邻居的成本度量metric。
3.构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
4.如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【LSR链路状态请求分组】请求自己没有的和比自己更新的信息。
5.收到邻站的LSR分组后,发送【LSU链路状态更新分组】进行更新。
6.更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。
只要一个路由器的链路状态发生变化:
5.泛洪发送【LSU链路状态更新分组】进行更新。
6.更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认。
7.使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径。
OSPF算法例子:
因特网中的一个自治系统的内部结构如下图所示。路由选择协议采用OSPF协议时,计算R6的关于网络N1、N2、N3、N4的路由表。
根据Dijkstra算法,得出以下路径表格,其中主意,经过N3网络路径代价未增加。
R1 R2 R3 R4 R5 N1 N2 N3 N4 第1轮 6 6 第2轮 6 14 6 7 8 第3轮 7 7 6 14 6 7 8 第4轮 7 7 6 14 6 10 10 7 8 路由表如下:
层次路由
网络规模扩大,路由器的路由表成比例地增大。这样会消耗大量资源,因此路由选择应按照层次的方式进行。
因特网将整个互联网划分为许多较小的自治系统(AS)(注意一个自治系统中包含很多局域网)。
自治系统(Autonomous System,AS):单一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由。
每个自治系统有权自主地决定本系统内应采用何种路由选择协议。如果两个自治系统需要通信,那么就需要一种在两个自治系统之间的协议来屏蔽这些差异。因此将选择协议分为以下两种类型:
使用层次路由时,OSPF将一个自治系统再划分为若干区域(Area),每个路由器都知道在本区域内如何把分组路由到目的地的细节,但不用知道其他区域的内部结构。因而使OSPF协议能够用于规模很大的自治系统中。
BGP(外部网关协议) 应用层 TCP封装
边界网关协议(Border Gateway Protocol,BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。
目的:力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子)
困难
交换过程
BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列AS。
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由。
BGP的工作原理:
每一个自治系统的管理员要选择至少一个路由器(可多个)作为该自治系统的"BGP发言人”
一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接
然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息
当所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的比较好的路由
BGP发言人交换路径向量
自治系统AS2的BGP发言人通知主干网的BGP发言人:“要到达网络N1,N2,N3和N4可经过AS2。”主干网在收到这个通知后,就发出通知:“要到达网络N1,N2,N3和N4可沿路径(AS1,AS2)。”同理,主干网还可发出通知:“要到达网络N5,N6和N可沿路径(AS1,AS3)。”
BGP报文格式:
特点:
1)BGP协议交换路由信息的结点数量级是自治系统的数量级,比这些自治系统中的网络数少很多
2)每一个自治系统中BGP发言人(或边界路由器)的数目是很少的,这样自治系统之间的路由选择不会很复杂
3)BGP支持CIDR,BGP的路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
4)在BGP刚运行时,BGP的邻站交换整个BGP路由表。但以后只需要在发生变化时更新有变化的部分
BGP-4的四种报文
RIP、OSPF与BGP的比较如表所示。
协议 | RIP | OSPF | BGP |
---|---|---|---|
类型 | 内部 | 内部 | 外部 |
路由算法 | 距离-向量 | 链路状态 | 路径-向量 |
传递协议 | 应用层 UDP | 网络层 IP | 应用层 TCP |
路径选择 | 跳数最少 | 代价最低 | 较好,非最佳 |
交换结点 | 和本结点相邻的路由器 | 网络中的所有路由器 | 和本结点相邻的路由器 |
交换内容 | 自己的整个路由表 | 与本路由器相邻的所有路由器的链路状态 | 首次:整个路由表 非首次:有变化的部分 |
一个IP分组由首部和数据部分组成。首部长度20B固定,后面有可选字段,长度可变。
版本:指IP协议的版本,目前广泛使用的版本号为4。
首部长度:单位是4B,最小为5,表示20B,最大是15,表示60B。
区分服务:指示期望获得哪种类型的服务。
总长度:首部+数据,单位是1B。
标识:16位,用于IP分片,同一数据报的分片使用同一标识。
标志:3位,只有后两位有意义,中间位DF,DF=1,禁止分片;DF=0,允许分片。最低位MF,MF=1,后面“还有分片”;MF=0,代表最后一片/没分片。
片偏移:指出较长分组分片后,某片在原分组中的相对位置;以8B位单位。除了最后一个分片,每个分片数据部分长度一定是8B的整数倍。
生存时间(TTL):IP分组的保质期。经过一个路由器-1变成0则丢弃。
协议:数据部分的协议,占8位。
协议名 | ICMP | IGMP | TCP | EGP | IGP | UDP | IPv6 | ESP | OSPF |
---|---|---|---|---|---|---|---|---|---|
字段值 | 1 | 2 | 6 | 8 | 9 | 17 | 41 | 50 | 89 |
首部检验和:16位,只检验首部。
源IP地址和目的IP地址:32位。
可选字段:0~40B,用来支持排错测量以及安全等措施
填充:全0,把首部补成4B的整数倍
段 | 总长度 | 片偏移 | 首部长度 |
---|---|---|---|
长度 | 1B | 8B | 4B |
最大传送单元(MTU):一个链路层数据报能承载的最大数据量。以太网的MTU是1500字节。
当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在多个较小的IP数据报中,这些较小的数据报称为片。 片在目的地的网络层被重新组装。
IP分片利用首部的标识、标志和片偏移三部分完成。
如上图所示,一个长4000B的IP数据报(首部20B,数据报部分3980B)到达路由器后,需要在以太网转发(MTU = 1500B)。需要将3980B数据分片,前2片,每片有效数据部分1480B,首部20B;后一片数据部分为1020B=(3980-1480-1480)B,首部20B。
每一片的DF都为0,表示都允许分片。前两片MF=1,表示并非最后一片;最后一片MF=0,表示为最后一片。
第一片片偏移为0,第二片片偏移为首位数据地址/8=1480/8=185;第三片片偏移=2960/8=370。
IPv4地址
连接到因特网的每台主机都分配一个32比特的全球唯一标识符,即IP地址。IP地址由互联网名字和数字地址分配机构ICANN进行分配。
IP地址由网络号和主机号组成。
I P 地址 : : = { < 网络号 > , < 主机号 > } IP地址::=\{<网络号>,<主机号>\} IP地址::={<网络号>,<主机号>}
网络号标志主机(或路由器)所连接到的网络。一个网络号在整个因特网唯一。
主机号标志该主机(或路由器)自身。一台主机号在相同网络号范围是唯一的。
IPv4被分为了5类地址,分别适用于不同规模的网络。
网络类型 | 网络号 | 用途 |
---|---|---|
A类 | 前8位,第1位为0(1-126) | 用于大型网络 |
B类 | 前16位,前2位为10(128-191) | 用于中等规模网络 |
C类 | 前24位,前3位为110(192~223) | 用于小型网络 |
D类 | 开头1110(224-239) | 多播地址,用于向多个目标发送数据 |
E类 | 开头1111(240-255) | 保留地址,目前还没有被使用 |
某些IP地址有着特殊用途,不能做主机IP地址。
网络类别 | 最大可用网络数 | 第一个可用的网络号 | 最后一个可用的网络号 | 网络中最大主机数 |
---|---|---|---|---|
A | 27-2 | 1 | 126 | 224-2 |
B | 214 | 128.0 | 191.255 | 216-2 |
C | 221 | 192.0.0 | 223.255.255 | 28-2 |
A类地址可用的网络数为27-2,减2的原因是:第一,网络号字段全为0的IP地址是保留地址,意思是“本网络”;第二,网络号为127的P地址是环回自检地址。
网络号 | 主机号 | 作为源地址 | 作为目的地址 | 用途 |
---|---|---|---|---|
全0 | 全0 | 可以 | 不可以 | 本网范围内表示主机,路由表中用于表示默认路由 (表示整个Internet网络) |
全0 | 特定值 | 可以 | 不可以 | 表示本网内某个特定主机 |
全1 | 全1 | 不可以 | 可以 | 本网广播地址(路由器不转发) |
特定值 | 全0 | 不可以 | 不可以 | 网络地址,表示一个网络 |
特定值 | 全1 | 不可以 | 可以 | 直接广播地址,对特定网络上的所有主机进行广播 |
127 | 任何数 非全0/1 |
可以 | 可以 | 用于本地软件环回测试,称为环回地址 |
IP地址特点:
IP地址是一种分等级的地址结构。其好处如下:
①在分配IP地址时只分配网络号,而主机号则由得到该网络的单位自行分配,方便了 IP地址的管理;
②路由器仅根据目的主机所连接的网络号来转发分组,减小了路由表所占的存储空间。
IP地址是标志一台主机(或路由器)和一条链路的接口。
当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的主机号是不同的。
IP网络上的一个路由器必然至少应具有两个IP地址(路由器每个端口必须至少分配一个IP地址)。
用网桥连接的若干LAN仍然是同一个网络(同一个广播域),因此该LAN中所有主机的IP地址的网络号必须相同,但主机号必须不同。
在IP地址中,所有分配到网络号的网络(无论是LAN还是WAN)都是平等的。
在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。
由于广泛使用无分类IP地址进行路由选择,这种传统分类的IP地址已成为历史。
网络地址转换(NAT)
网络地址转换(NAT)是指通过将专用网络地址(如Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的IP地址。其优势如下:
为了网络安全,划出了部分IP地址为私有IP地址。其特点如下:
私有IP只用于LAN,不用于WAN连接。因此私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet。
私有IP地址被LAN重复使用。有效地解决了P地址不足的问题。
私有IP地址网段如下:
在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。
这种采用私有 IP地址的互联网络称为专用互联网或本地互联网。私有IP地址也称可重用地址。
使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球IP地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表进行本地IP地址和全球IP地址的转换。
NAT转换表存放着 { 本地 I P 地址:端口 } \{本地IP地址:端口\} {本地IP地址:端口}到 { 全球 I P 地址:端口 } \{全球IP地址:端口\} {全球IP地址:端口}的映射。该端口号是逻辑上的端口。
例,一个宿舍办理了电信宽带,拥有了一个全球IP:138.76.29.7;宿舍内4台主机有了私有地址:192.168.0.0网段。宿舍网关开启NAT功能,NAT表如上图所示。
当路由器LAN端收到源IP为192.168.0.2,2233时,将其映射为138.76.29.7,5001,从WAN口发至因特网。
当路由器从WAN端收到目的地址为138.76.29.7,5060的数据报时,将其映射成192.168.0.3,1234,然后从LAN端口发送给相应的本地主机。
NAT工作原理:
普通路由器在转发P数据报时,不改变其源P地址和目的P地址。而NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源P地址或目的IP地址)。
普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号。
子网划分
由于两级IP地址有以下缺点,于是在IP增加子网号段:
IP地址空间的利用率有时很低
给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏
两级的IP地址不够灵活。
子网划分:增加子网号段,使两级IP变成三级IP地址。基本思路如下:
子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
从主机号借位作为子网号;三级IP地址结构如下:
I P 地址 = { < 网络号 > , < 子网号 > , < 主机号 > } IP地址=\{<网络号>,<子网号>,<主机号>\} IP地址={<网络号>,<子网号>,<主机号>}
凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号先找到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网。最后把IP数据报直接交付给目的主机。
性质:
子网中的主机号为全0或全1的地址都不能被指派
子网中的主机号全0的地址为子网的网络号,主机号全1的地址为子网的广播地址
子网掩码
为了告诉主机或路由器对网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位。
子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。1对应于IP地址中的网络号及子网号,而0对应于主机号。
规定所有网络必需使用子网掩码,不划分采用默认子网掩码:
注意:
1)一个主机在设置IP地址信息的同时,必须设置子网掩码
2)同属于一个子网的所有主机以及路由器的相应端口,必须设置相同的子网掩码
3)路由器的路由表中,所包含的信息其主要内容必须有:目的网络地址、子网掩码、下一跳地址
无分类编址CIDR
无分类域间路由选择CIDR是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。 IP地址结构如下:
I P : : = { < 网络前缀 > , < 主机号 > } IP::=\{<网络前缀>,<主机号>\} IP::={<网络前缀>,<主机号>}
CIDR地址块中的地址数一定是2的整数次幕,实际可指派的地址数通常为2N-2;N表示主机号的位数,主机号全0代表网络号,主机号全1为广播地址。
CIDR记法:IP地址后加上“/”,然后写上网络前缀(可以任意长度)的位数。
例如,对于128.14.32.5/20这个地址,它的掩码是20个连续的1和后续12个连续的0,通过逐位相“与”的方法可以得到该地址的网络前缀(或直接截取前20位):
构成超网:将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。
路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的信息的交换,从而提高网络性能。
方法:将网络前缀缩短(所有网络地址取交集)。
例如,网络1的地址块是206.1.0.0/17;网络2的地址块是206.1.128.0/17。
可以看出两个网络前16位相同,第17位分别是0和1,因此可以聚合成更大地址块206.1.0.0/16。
如果不使用路由聚合,那么R1的路由表中需要分别有到网络1和网络2的路由表项。聚合后,到网络1和网络2的两条路由就可以聚合成一条到206.1.0.0/16的路由。
最长前缀匹配:使用CIDR时,查找路由表可能得到几个匹配结果(跟网络掩码按位相与),应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体。
CIDR查找路由表的方法:为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次式数据结构中,然后自上而下地按层次进行查找。这里最常用的数据结构就是二叉线索。
网络层转发分组的过程
分组转发都是基于目的主机所在网络的,这是因为互联网上的网络数远小于主机数,可以极大地压缩转发表的大小。当分组到达路由器后,路由器根据目的IP地址的网络前缀来查找转发表,确定下一跳应当到哪个路由器。
在转发表中,每条路由必须有下面两条信息:
( 目的地址,下一跳地址 ) (目的地址,下一跳地址) (目的地址,下一跳地址)
这样,IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次间接交付),当到达最后一个路由器时,才试图向目的主机进行直接交付。
采用CIDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么应当选择前缀最长的一个作为匹配的前缀,称为最长前缀匹配。
为了更快地查找转发表,可以按照前缀的长短排序,将前缀最长的排在第1行,按前缀长度的降序排列。这样,从第1行最长的开始查找,只要检索到匹配的,就不必再继续查找。
此外,转发表中还可以增加两种特殊的路由:
主机路由:对特定目的主机的IP地址专门指明一个路由,以方便网络管理员控制和测试网络。若特定主机的IP地址是a.b.c.d,则转发表中对应项的目的网络是a.b.c.d/32。
/32表示的子网掩码没有意义,但这个特殊的前缀可以用在转发表中。
默认路由:用特殊前缀0.0.0.0/0表示默认路由,全0掩码和任何目的地址进行按位与运算,结果必然为全0,即必然和转发表中的0.0.0.0/0相匹配。只要目的网络是其他网络(不在转发表中),就一律选择默认路由。
分组转发算法如下:
1)从收到的IP分组的首部提取目的主机的IP地址D(即目的地址)。
2)若查找到特定主机路由(目的地址为D),就按照这条路由的下一跳转发分组;否则从转发表中的下一条(即按前缀长度的顺序)开始检查,执行步骤3)。
3)将这一行的子网掩码与目的地址D进行按位与运算。若运算结果与本行的前缀匹配,则查找结束,按照“下一跳”指出的进行处理(或者直接交付本网络上的目的主机,或通过指定接口发送到下一跳路由器)。否则,若转发表还有下一行,则对下一行进行检查,重新执行步骤3)。否则,执行步骤4)。
4)若转发表中有一个默认路由,则把分组传送给默认路由;否则,报告转发分组出错。
IP地址与硬件地址
IP地址是网络层使用的地址,它是分层次等级的。
硬件地址是数据链路层使用的地址(MAC地址),它是平面式的。
在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部,而MAC地址放在MAC帧的首部。通过数据封装,把IP数据报分组封装为MAC帧后,数据链路层看不见数据报分组中的IP地址。
1)在IP层抽象的互联网上只能看到IP数据报。
2)虽然在IP数据报首部中有源IP地址,但路由器只根据目的IP地址进行转发。
3)在局域网的链路层,只能看见MAC帧。IP数据报被封装在MAC帧中,通过路由器转发IP分组时,IP分组在每个网络中都被路由器解封装和重新封装,其MAC帧首部中的源地址和目的地址会不断改变。这也决定了无法使用MAC地址跨网络通信。
4)尽管互连在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信。
地址解析协议(ARP)
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。
**地址解析协议(ARP)**作用是完成IP地址到MAC地址的映射。
ARP表:局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。使用ARP来动态维护ARP表。
工作原理:
主机A欲向本局域网上的某台主机B发送IP数据报时,先在其ARP高速缓存中查看有无主机B的IP地址。
主机B收到该ARP请求后,向主机A发出ARP响应分组(单播发送),分组中包含主机B的IP与MAC地址的映射关系,主机A收到ARP响应分组后就将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧。
ARP由于“看到了”IP地址,所以它工作在网络层,而NAT路由器由于“看到了”端口,所以它工作在传输层。
使用ARP的4种典型情况总结如下:
从IP地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程
动态主机配置协议(DHCP)
动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)常用于给主机动态分配IP地址。
工作原理:应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。
1)需要IP地址的主机在启动时向DHCP服务器广播发送发现报文,这时该主机成为DHCP客户
2)本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。DHCP服务器先在其数据库中查找该计算机的配置信息
3)若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文
DHCP服务器与客户端交换过程:
DHCP特点:
网际控制报文协议(ICMP)
网际控制报文协议(Internet Control Message Protocol,ICMP)提高IP数据报交付成功的机会。
ICMP是网络层协议。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。
ICMP分为两类,即ICMP差错报告报文和ICMP询问报文。
ICMP差错报告报文:用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。
ICMP差错报告报文可分为以下5类:
ICMP差错报告报文格式如下:
把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。
提取收到的数据报的数据字段前8个字节是为了得到运输层的端口号(对于TCP和UDP)以及运输层报文的发送序号(对于TCP)。
整个ICMP报文作为IP数据报的数据字段发送给源点。
不应发送ICMP差错报告报文的几种情况如下:
ICMP询问报文:共有以下几类,常用的是前两类。
PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。工作在应用层。
Traceroute: 跟踪一个分组从源点到终点的路径, 使用了ICMP时间超过差错报告报文; 工作在网络层。
协议 | 工作层次 | 功能 |
---|---|---|
ARP | 网络层 | IP到MAC地址的映射 |
DHCP | 应用层;基于UDP;客户/服务器模式 | 动态分配IP地址 |
ICMP | 网络层;基于IP | 检测网络连通性和故障诊断 |
解决IP地址耗尽问题措施有以下三种:
其中前两种方法只是延长了IPv4地址分配完毕的时间,只有第三种方法从根本上解决了IP地址的耗尽问题。
IPv6特点如下:
IPv6数据报格式
IPv6数据报由两大部分组成,即基本首部(base header)和后面的有效载荷(payload)。
有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。但所有的扩展首部并不属于IPv6数据报的首部。
与IPv4的首部区别有:
把首部字段不必要功能取消后,使得IPv6首部字段减少到8个,首部结构如下。
版本:指明了协议版本,字段是6。
通信量类:区分数据报的类别和优先级。
流标号:“流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同个流的数据报都具有同样的流标号。
有效载荷长度:指明数据报扩展首部加数据长度,最大值是64K。
下一个首部:有扩展首部时,标识下一个扩展首部;没有扩展首部时,指出数据应交付的上层协议。
跳数限制:相当于IPv4的TTL,最大为255。
扩展首部功能:IPv6把原来IPv4首部中选项的功能都放在扩展首部中,并把扩展首部留给路径两端的源点和终点的主机来处理,而数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部),这样就大大提高了路由器的处理效率。
每个扩展首部都由若干个字段组成,它们的长度也各不同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了在该扩展首部后面的字段是什么。当使用多个扩展首部时,应按以上的先后顺序出现。高层首部总是放在最后面。
IPv6数据报的目的地址可以是以下三种基本类型地址之一:
IPv6地址表示
在IPV6标准中指定了一种比较紧凑的表示法,即把地址中的每4位用一个十六进制数表示,并用冒号分隔每16位,如4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170。
当16位域的开头有一些0时,可以采用一种缩写表示法,但在域中必须至少有一个数字。例如,可以把地址4BF5:0000:0000:0000:BA5F:039A:000A:2176缩写为4BF5:0:0:0:BA5F:39A:A:2176。
当有相继的0值域时,还可以进一步缩写。这些域可以用双冒号缩写(::)。双冒号表示法在一个地址中仅能出现一次,因为0值域的个数没有编码,需要从指定的总的域的个数来推算。前述地址可被更紧凑地书写成4BF5::BA5F:39A:A:2176。
IPv6分级
IPv6扩展了IPv4地址的分级概念,为了使路由器能够更快地查找路由。它使用以下3个等级:
IPv4向IPv6过渡
从IPv4向IPv6过渡只能采用逐步演进的办法,同时还必须使新安装的IPv6系统能够向后兼容。IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由。
过渡方法有以下两种:
双栈协议:双协议栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。
如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。
如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。
隧道技术:
通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据顿或包。隧道协议将其它协议的数据顿或包重新封装然后通过隧道发送。
为了能够支持像视频点播和视频会议这样的多媒体应用,网络必须实施某种有效的组播机制。
组播:是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机,并被它们正确接收。
组播基于UDP协议。当主机想利用组播将单个数据发送给一组主机,源主机把数据发给一个组播地址,组播地址可以标识一组地址。网络把这个数据的副本投递给该组中的每台主机。主机可以同时属于多个组。
在IPv4中,每个组播组都有一个D类地址,要给该组发送的计算机使用这个地址作为目标地址。
主机使用**IGMP(因特网组管理协议)**加入组播组。
主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发。因此,对发送者而言,数据只需发送一次就可发送到所有接收者,大大减轻了网络的负载和发送者的负担。组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播路由器。
IP组播使用D类地址格式。D类地址的前四位是1110,因此D类地址范围是224.0.0.0~239.255.255.255。每个D类IP地址标志一个组播组。
特点:
1)组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于UDP。
2)组播地址只能用于目的地址,不能用于源地址
3)对组播数据报不产生ICMP差错报文。若在PING命令后面键入组播地址,将永远不会收到响应
4)并非所有的D类地址都可作为组播地址
IP组播可以分为两种:
在因特网上进行组播的最后阶段,还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员。
硬件组播
组播IP地址也需要相应的组播MAC地址在本地网络中实际传送帧。IANA拥有的以太网组播MAC地址的范围是从01-00-5E-00-00-00到01-00-5E-7F-FF-FF。不难看出,在每个地址中,只有23位可用作组播。这只能和D类IP地址中的23位有一一对应关系。
D类IP地址可供分配的有28位,可见在这28位中,前5位不能用来构成以太网的硬件地址,如图所示。
收到多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
IGMP网际组管理协议 网络层协议 基于IP
目的:IGMP协议让组播路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。
工作阶段:
1、某主机要加入组播组,向组播地址发送IGMP报文,声明自己要加入组播
本地组播路由器收到报文,转发给因特网其他组播路由器
2、本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。
只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器。
组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员。
组播路由选择协议
定义
移动IP技术是指移动站以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。移动IP的目标是把分组自动地投递给移动站。
移动IP定义了三种功能实体:移动节点、本地代理(也称归属代理)和外地代理。
移动IP相关概念的应用
在移动IP中,每个移动站都有一个原始地址,即永久地址(或归属地址),移动站原始连接的网络称为归属网络。永久地址和归属网络的关联是不变的。归属代理通常是连接到归属网络上的路由器,然而它实现的代理功能是在应用层完成的。
当移动站移动到另一地点,所接入的外地网络也称被访网络。被访网络中使用的代理称为外地代理,它通常是连接在被访网络上的路由器。
外地代理有两个重要功能:①要为移动站创建一个临时地址,称为转交地址。转交地址的网络号显然和被访网络一致。②及时把移动站的转交地址告诉其归属代理。
用一个通俗的例子来描述移动IP的通信原理。例如,在以前科技不那么发达的年代,本科毕业时都将走向各自的工作岗位。由于事先并不知道自己未来的准确通讯地址,那么怎样继续和同学们保持联系呢?实际上也很简单。彼此留下各自的家庭地址(即永久地址)。毕业后若要和某同学联系,只要写信寄到该同学的永久地址,再请其家长把信件转交即可。
移动IP通信过程
冲突域
冲突域是指连接到同一物理介质上的所有结点的集合,这些结点之间存在介质争用的现象。
在OSI参考模型中,冲突域被视为第1层概念,像集线器、中继器等简单无脑复制转发信号的第1层设备所连接的结点都属于同一个冲突域,也就是说它们不能划分冲突域。而第2层(网桥、交换机)、第3层(路由器)设备都可以划分冲突域。
广播域
广播域是指接收同样广播消息的结点集合。也就是说,在该集合中的任何一个结点发送一个广播帧,其他能收到这个帧的结点都被认为是该广播域的一部分。
在OSI参考模型中,广播域被视为第2层概念,像第1层(集线器等)、第2层(交换机等)设备所连接的结点都属于同一个广播域。而路由器,作为第3层设备,则可以划分广播域,即可以连接不同的广播域。
通常所说的局域网(LAN)特指使用路由器分割的网络,也就是广播域。
定义
路由器是一种具有多个输入输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。在多个逻辑网络(即多个广播域)互连时必须使用路由器。
路由器转发
路由器结构
整个的路由器结构可划分为两大部分:路由选择部分和分组转发部分。
路由选择:根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表
交换结构:根据转发表(路由表得来)对分组进行转发
分组转发:若收到RIP/OSPF分组等,则把分组送往路由选择处理机;若收到数据分组,则查找转发表并输出
输入端口:输入端口中的查找和转发功能在路由器的交换功能中是最重要的。当一个分组正在查找转发表时,后面又紧跟着从这个输入端口收到另一个分组。
输出端口:若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
路由表根据路由选择算法得出的,主要用途是路由选择,总用软件来实现。
标准的路由表有4个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口。
上图为一个简单的网络拓扑,R1的路由表如下图所示。
转发表由路由表得来,可以用软件实现,也可以用特殊的硬件来实现。转发表必须包含完成转发功能所必需的信息,在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射。
为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同“下一跳” 的项目,并将默认路由设置得比其他项目的优先级低,如下图所示。
注意,在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,但要注意路由表不等于转发表。分组的实际转发是靠直接查找转发表,而不是直接查找路由表。