世界上有数以百万计的网络,要实现这些网络的互连是一件相当困难的事情,因为这些网络并没有统一的标准。而让大家都使用同一个网络也是不可能的,因为用户的需求是多种多样的,不可能有一种单一的网络能够适应所有用户。虽然网络不可能一样,但是可以想办法使用一种协议让路由器连接的网络都遵守这种协议,在这种情况下可以将互连起来的网络看成一个虚拟互联网络。
虚拟互联网络也就是逻辑互联网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是可以利用协议使这些性能各异的网络让用户看起来好像是一个统一的网络。
4种中继系统(将网络互联起来的中间设备)
当中继系统是中继器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,仍然是一个网络。互联网都是指用路由器进行互连的网络。
用虚拟互联网的好处:当互联网上的主机进行通信时,就好像在同一个网络上通信而看不见互连的具体的网络异构细节(如超时控制、路由选择协议等)
路由选择:根据路由算法确定一个进来的分组应该被传送到哪一条输出路线上。如果子网内部使用数据报,那么对每一个进来的分组都要重新选择路径。如果子网内部使用虚电路,那么只有当创建一个新的虚电路时,才需要确定路由路径。
分组转发:路由器根据转发表将用户的IP 数据报从合适的端口转发出去。
路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。
路由表中只给出到目的网络的下一跳路由器的IP 地址,然后在下一个路由器的路由表中再给出再下一跳的路由器的 IP 地址,最后才能到达目的网络进行直接交付,实现动态路由选择。
SDN 是一种支持动态、弹性管理的新型网络体系结构,是实现高带宽、动态网络的理想架构。
网络可编程
SDN为用户提供了一套完整的通用API,使用户可以在控制器上编程以实现对网络的配置、控制和管理。
控制平面与数据平面分离
控制平面与数据平面之间不再相互依赖,两者可以独立完成体系结构的演进,只需要遵循统一的开放接口进行通信即可,是网络获得更多可编程能力的架构基础。
逻辑上集中管理
主要是指对分布式网络状的集中统一管理。在SDN 架构中,控制器会担负起收集和管理所有网络状态信息的重任。逻辑集中控制为软件编程定义网络功能提供了架构基础,也为网络自动化管理提供了可能。
当计算机网络(如交通网络一样)在一个子网或子网的一部分出现太多分组(车辆)时,网络性能开始下降,这种情况称为拥塞。
拥塞控制可以分为两大类:
开环控制:在网络系统设计时,事先就要考虑到有关发生拥塞的各种因素,力求在系统工作时不会出现拥塞。一旦整个系统启动并运行起来,就不再需要中途进行修改。开环控制手段可包括确定何时可接收新流量、确定何时可丢弃分组及丢弃哪些分组、确定何种调度决策等。所有这些手段的共性是,在做决定时不考虑当前的网络状态。
闭环控制:事先不考虑有关发生拥塞的各种因素,采用监视系统去监视,即时检测到哪里发生拥塞(就像道路上的摄像头,看到哪里发生堵车,立刻派交警去解决),然后将拥塞信息传到合适的地方以便调整系统运行,改正问题。其主要措施包括检测拥塞、报告拥寒和调整措施。
加上合适的拥塞控制后,网络就不易出现拥塞和死锁现象了,但代价是当提供的负载较小时,有拥塞控制的吞吐量反而比无拥塞控制时要小。
静态路由选择的特点是简单和开销小,但不能及时适应网络状态的变化。对于很小的网络,完全可以采用静态路由选择,自己手动配置每一条路由。
动态路由选择的特点是能较好地适应网络状态的变化,但实现起来比较复杂,开销也较大。因此,动态路由适用于较复杂的网络。
所有的节点都定期地将它们整个路由选择表传送给所有与之直接相邻的节点。这种路由选择表包含每条路径的目的地(另一节点)和路径的代价(距离)。
采用“跳数”作为距离的代价
在该路由算法中,所有节点都必须参与距离-向量交换,以保证路由的有效性和一致性。
更新路由选择表的情况:
链路状态路由算法要求每个参与该算法的节点都有完全的网络拓扑信息。
在一个链路状态路由选择中,一个节点检查所有直接链路的状态,并将所得的状态信息发送给网上所有其他的节点,而不仅仅是发送给那些直接相连的节点。每个节点都用这种方式,所有其他节点从网上接收包含直接链路状态的路由选择信息。
每当链路状态报文到达时,路由节点便使用这些状态信息去更新自己的网络拓扑和状态“视野图”,一旦链路状态发生了变化,节点对更新的网络图利用 Dkstra 最短路径算法重新计算路由,从单一节点出发计算到达所有目的节点的最短路径。
三大特征
因特网为什么采用分层次的路由选择协议?
- 随着时间的推移,因特网的规模越来越大,现在就有几百万个路由器互连在一起了,如果让所有路由器知道所有网络应该怎样到达,则这种路由表将非常大,处理起来也太耗费时间,而所有这些路由器交换路由信息所需的带宽就会使因特网的通信链路达到饱和。
- 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上。
基于上述原因,因特网将互联网划分为许多较小的包含很多局域网的自治系统。每个自治系统有权自主地决定本系统内应采用何种路由选择协议。
如果两个自治系统需要通信,并且这两个自治系统内部所使用的路由选择协议不同,那么怎么通信?
因特网把路由选择协议划分为两大类:
自治系统内部的路由选择称为域内路由选择。相应的,自治系统之间的路由选择称为域间路由选择。
对于非常大的网络,OSPF 协议将一个自治系统再划分为若干个更小的范围,叫作区域。
自治系统划分区域的好处:
为了使每一个区域能够和本区域以外的区域进行通信
OSPF 使用层次结构的区域划分。在上层的区域叫作骨于区域,骨于区域的标识符规定为 0.0.0.0。骨干区域的作用是用来连通其他在下层的区域。从其他区域来的信息都由区域边界路由器进行概括。每一个区域至少应当有一个区域边界路由器。在骨于区域内的路由器叫作骨干路由器,一个骨干路由器可以同时是区域边界路由器。在骨干区域内还要有一个路由器,专门与本自治系统外的其他自治系统交换路由信息,这样的路由器叫作自治系统边界路由器。
采用分层次划分区域的方法使交换信息的种类增多了,同时也使 OSPF 协议更加复杂。但此方法能使每一个区域内部交换路由信息的通信量大大减小,因而使 OSPF 协议能够用于大规模的自治系统中。
把数据报切割之后产生分片,接收端怎么合并数据报?
首先接收端收到的数据报要是原数据报的分片(这样的话就需要标识,每个原数据报都可以将这个标识填到每个分片的首部),但是,万一等到的是最后一片,而接收端不知道是最后一片,还会一直等,为了打破僵局,这就需要有一个标志位 MF,去标记该片是不是最后一位。现在继续假设已经收到了最后一个分片,怎样将所有的分片合并呢?这就需要片偏移,只需要按照片偏移从小到大合并即可,在合并的过程中一定要将首部的 20B 删除。
相关总结:
把整个因特网看作一个单一的、抽象的网络,IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是==唯一的32 位的标识符==。
一般将IP地址分为A类地址、B 类地址、C类地址、D类地址和E 类地址。
A类地址的网络号为前面8位,并且第一位规定为0,规定网络地址为全0的IP 地址是个保留地址,意思是“本网络”。
后面的 3B 为主机号,主机号全0表示该网络,如一主机的IP 地址为 12.0.0.1,那么该主机所在的网络地址就是 12.0.0.0;而主机号全1表示广播地址,如 12.25.255.255。所以说合法的主机地址就是介于网络地址和广播地址之间的地址,如在 12.0.0.0~12.255.255.255 都可以
可指派网络数:27-2(2表示——全0、全1)
网络上的最大主机数:224-2
B 类地址的网络号为前面 16 位,并且前面2位规定为 10,由于不管后面 14 位怎么设置,都不可能出现全0,所以B 类地址不存在网络总数减2的问题
可指派网络数:214-1(10000000.00000000.00000000.00000000 (128.0.0.0) 是不指派的,而可以指派的最小网络地址是10000000.00000001.00000000.00000000(128.1.0.0)
网络上的最大主机数:216-2
C类地址的网络号为前面 24 位,并且前面3 位规定为110由于不管后面21位怎么设置,都不可能出现全0,所以C类地址不存在网络总数减2的问题
可指派网络数:221-1(11000000.00000000.00000000.00000000 (192.0.0.0) 是不指派的,而可以指派的最小网络地址是 11000000.00000000.00000001.00000000 (192.0.1.0))
网络上的最大主机数:28-2
直接广播地址:在A、B、C类地址中,若主机号全1,则这个地址称为直接广播地址。路由器使用这种地址把一个分组发送到一个特定网络上的所有主机,所有主机都会收到具有这种类型的目的地址的分组。
路由器使用这种地址把一个分组发送到一个特定网络上的所有主机,所有主机都会收到具有这种类型的目的地址的分组。
这个地址在 IP 分组中只能用作目的地址。
这个地址也减少了A、B、C类地址中每个网络中可用的主机数。
受限广播地址:IP地址为255.255.255.255,这个地址用于定义在当前网络(绝对不是整个因特网,注意出选择题!)上的广播地址。
这个网络上的这个主机:IP 地址为0.0.0.0,表示这个网络上的主机。
这个网络上的特定主机:具有全0的网络号的IP地址表示在这个网络上的特定主机
环回地址:第一个字节等于 127 的IP地址作为环回地址。
IP地址的重要特点:
其实某些机构并不需要连接到因特网,只需要与内部的主机通信,这样如果还是按照全球 IP 地址去分配,则会大大浪费 IP 地址。
因特网已经规定了专用地址。
这种采用专用IP 地址的互联网络称为专用互联网或本地互联网,或直接称为专用网。专用IP 地址也叫作可重用地址。
如果专用网的主机想和因特网的主机通信,怎么办?
NAT 就是将专用网内部使用的本地 IP 地址转换成有效的外部全球IP 地址,使得整个专用网只需要一个全球 IP 地址就可以与因特网连通。
使用 NAT技术,需要在专用网连接到因特网的路由器上安装 NAT 软件。装有NAT 软件的路由器叫作NAT 路由器,它至少有一个有效的外部全球 IP 地址。但是 NAT 并不能从根本上解决IP 地址的耗尽问题,因为NAT 并没有增加IP 地址的个数。而真正解决 地址耗尽问题的是IPV6。
重点:专用网的主机是不能充当服务器直接被因特网的主机访问的,即一定要专用网的主机先发起通信。也就是说,专用网的主机不联系因特网的主机,因特网的主机就一定不会联系专用网的主机。
两级IP地址(网络号+主机号)设计得不合理。
- IP 地址空间的利用率有时很低。例如,对于一个只有 200 台主机的公司,分配一个A类网络,显然IP地址利用率极低。
- 给每一个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏.
- 两级的IP地址不够灵活。
聪明的人类想出了“子网号字段”,使得两级的IP 地址变为三级的IP 地址,这种做法叫作划分子网。划分子网属于一个单位内部的事情,单位对外仍然表现为没有划分子网的网络.
划分子网的基本思路:从主机号借用若干个比特作为子网号,而主机号也就相应减少了若干个比特,网络号不变。
IP 地址::=(<网络号>,<子网号>,<主机号>}
凡是从其他网络发送给本单位某个主机的 IP 分组,仍然根据 IP 分组的目的网络号先找到连接在本单位网络上的路由器,然后此路由器在收到IP 分组后,再按目的网络号和子网号找到目的子网,最后将该IP分组直接交付给目的主机。
子网划分与否是看不出来的,如果要告诉主机或路由器是否对一个A类、B 类、C类网络进行了子网划分,则需要子网掩码。
子网掩码是一个与IP 地址相对应的32 位的二进制串,它由一串 1和0组成其中,1对应于IP 地址中的网络号和子网号,0 对应于主机号。因为1对1进行与操作,结果为 1:1对0进行与操作,结果为0。所以使用一串 1 对网络号和子网号进行与操作,就可以得到网络号。
现在的因特网标准规定,所有网络都必须有一个子网掩码。如果一个网络没有划分子网,就采用默认子网掩码。
不管网络有没有划分子网,只要将子网掩码和IP地址进行逐位的“与”运算,就一定能立即得出网络地址。
使用子网掩码后,路由表的每行所包括的主要内容是目的网络地址、子网掩码和下一跳地址。
此时路由器算法如下:
划分子网在一定程度上缓解了因特网在发展中遇到的困难。然而,在 1992 年因特网仍然面临3个必须尽早解决的问题.
- B类地址在 1992年已分配了近一半(眼看就要在1994年3月全部分配完毕)。
- 因特网主于网上的路由表中的项目数急剧增长(从几千个增长到几万个)。
- 整个IPv4的地址空间最终将全部耗尽。
无分类编址(CIDR)是为解决IP 地址耗尽而提出的一种措施。
CIDR 消除了传统的A类、B 类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4 的地址空间。CIDR 使用各种长度的“网络前缀”来代替分类地址中的网络号和子网号。
IP 地址::=(<网络前缀>,<主机号>}
为了区分网络前缀,通常采用==“斜线记法”(又称CIDR 记法),即IP 地址/网络前缀所占位数==。
例如,128.14.32.0/20 表示的地址块共有 212个地址(因为斜线后面的20是网络前缀的位数,所以这个地址的主机号是 12 位)。在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。可以算出,128.14.32.0/20 地址块的最小地址为 128.14.32.0,128.14.32.0/20 地址块的最大地址为128.14.7.255(128.14.00101111.11111111,下画线为网络前缀),全“0”和全“1”的主机号地址一般不使用。
将网络前缀都相同的连续的IP 地址组成“CIDR 地址块”,一个CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合(也称构成超网)。
它使得路由表中的一个项目可以表示很多个原来传统分类地址的路由,因此可以缩短路由表,减小路由器之间选择信息的交换,从而提高网络性能
在使用 CIDR时,路由表中的每个项目由网络前缀和下一跳地址组成。这样就会导致查找路由表时可能会得到不止一个匹配结果。应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,路由就越具体。最长前缀匹配原则又称为最长匹配或最佳匹配。
虽然在网络层转发分组用的是 IP 地址,但是最终还是要使用 MAC 地址来在实际网络的链路上传送数据帧,所以知道目的地的 IP 地址是没用的。如果有办法能够把 IP 地址直接转换成物理地址就好了,ARP 就是为了解决这个问题诞生的。
在每个主机中都有一个ARP 高速缓存,里面存放的是所在局域网上的各主机和路由器的IP 地址到硬件地址的映射表,ARP 的职责就是动态地维护该表。
ARP 是解决同一个局域网上的主机或路由器的IP 地址和硬件地址的映射问题的。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做。尽管 ARP 请求分组是广播发送的,但是 ARP 响应分组是普通的单播,即从一个源地址发送到一个目的地址。
从IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。只要主机或路由器与本网络上的另一个已知IP地址的主机或路由器进行通信,ARP就会自动地将该IP地址解析为链路层所需要的硬件地址。
ARP的4种典型情况总结:
既然 ARP 可以将 IP 地址转换成物理地址,那么有没有一种设备可以将物理地址转换成IP地址呢?RARP 可以转换,但是基本已经被淘汰了,因为物理地址转换成IP 地址这种功能已经被集成到了DHCP。
动态主机配置协议(DHCP) 常用于给主机动态地分配IP 地址。它提供了即插即用连网的机制,这种机制允许一台计算机加入新的网络和获取IP 地址而不用手工参与。
DHCP 是应用层协议,DHCP 报文使用 UDP 传输。
DHCP服务器分配给 DHCP客户的IP 地址是临时的,因此DHCP 客户只能在一段有限的时间内使用这个分配到的IP 地址。
DHCP 服务器和DHCP客户端的交换过程如下:
DHCP 允许网络上配置多台 DHCP 服务器,当DHCP 客户发出 DHCP 请求时,就有可能收到多个应答信息。这时,DHCP 客户只会挑选其中的一个,通常是挑选“最先到达的信息”。
主机在发送数据报时,经常会由于各种原因发送错误,如路由器拥塞丢弃了或者传输过程中出现错误丢弃了。
如果检测出错误的路由器或主机都能把这些错误报告通过一些控制消息告诉发送数据的主机,那么发送数据的主机就可根据 ICMP 报文确定发生错误的类型,并确定如何才能更好地重发失败的数据报(比如ICMP 报文发过来的是改变路由,那么主机就不能继续按照这个路由线路发送了,需要用另外一条路由线路发送数据)。尽管这些控制消息并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP 报文应该包括ICMP 报文的类型和代码,这样源主机收到该报文就知道是由于什么故障需要重传了,但是仅有 ICMP 的类型是不够的,源主机需要知道哪个数据报发生了这样的错误。这就需要将发生错误的那个数据报的首部也要放在该ICMP 报文中,源主机一看就知道是哪个数据错了。最后为什么还要将出错IP 数据报的数据部分的前8个字节放入ICMP 报文?因为该8个字节包含了TCP报文(UDP报文)首部中的TCP端口号(UDP 端口号)。很多人可能会对代码字段产生疑问,既然有了类型为什么还要代码?举个例子,类型值是3表示终点不可达,但是不可达也有很多种,如有网络不可达、主机不可达、协议不可达(仅是例子,不要求掌握),所以需要代码字段来更确切地表示是哪一种不可达。
由于IPv4 地址即将耗尽,因此必须采取相应的办法去解决。前面已经介绍过采用网络地址转换(NAT)方法以节省全球 IP 地址和采用无分类编址(CIDR)使 IP 地址的分配更加合理。这两种方法仅是优化了 IPv4 地址的使用方法,并没有从根本上解决IP 地址的耗尽问题而采用具有更大地址空间的新版本的 IPv6 才能在真正意义上解决 IPv4 即将耗尽的问题。
IPv4更好的满足了预定的目标:
IPv6的3种地址类型:
为了使地址简洁,通常采用冒号十六进制法表示IPv6地址。它把每16bit 用一个十六进制数表示,各值之间用冒号分隔如68E6:8C64:FFFF:FFFF:0111:1180:960A:FFFF。
通常可以把 IPv6 地址缩写成更紧凑的形式。当16位域的开头有连续的0时,可以采用缩写法表示,但在域中必须至少有一个数字,如可以把地址
5ED4:0000:0000:0000:EBCD:045A:000A:7654
缩写成
5ED4:0:0:0:EBCD:45A:A:7654。
当有相继的0值域时,还可以采用双冒号表示法进一步缩写。这些域可以用双冒号(::)表示。但要注意,双冒号表示法在一个地址中仅可以出现一次,因为0值域的个数没有编码需要从指定的总的域的个数中推算。这样,前述示范地址可以被更紧凑地书写成5ED4::EBCD:45A:A:7654。
在传送数据报到目的网络的途中经过的路由器数目最少,时延小但经过路由器多的路都不走。
例如,假设从 A 地到B 地运送货物有两条路可走,一条路途中经过 10个收费站(收费站看成路由器),但是每个收费站的等待时间是 1min,另外一条路途中经过 2个收费站,但是每个收费站等待的时间是 10min,这时司机都会去选择经过2个收费站的那条路。但是如果途中需要经历超过 15个收费站,这时候司机就认为这个地方很遥远,不能到达。这句话转换到专业知识就是,RIP 只关心自己周围的世界,即只与自己相邻的路由器交换信息,并且范围限制在15跳之内,再远它就不关心了。
对距离的理解:
- 从一个路由器到直接连接的网络的距离定义为 1。
- 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加1。
RIP中的“距离”也称为“跳数”(Hop Count)因为每经过一个路由器,跳数加 1。这里的==“距离”实际上指的是“最短距离”==,RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。RIP 允许一条路最多只能包含 15个路由器。“距离”的最大值为 16 时即相当于不可达。可见,RIP 只适用于小型互联网。RIP 不能在两个网络之间同时使用多条路由,RIP 选择一个具有最少路由器的路由(最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
RIP的三要点:
- 仅和相邻路由器交换信息
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔(如每隔30s)交换路由信息。
距离-向量算法详情:
某路由器收到相邻路由器(其地址为X)的一个RIP报文,按以下步骤进行。
先RIP有项目:把“下一跳”都改为X,并所有的“距离”值加1。
对修改后的 RIP 文中的每一个项目,重复以下步骤:
if(项中的网络不在路表中) {
把该项目加到路由表中
}else if(下一跳字段给出的路由器地址是同样的){
把收到的项目替换原路由表中的项目
}else if(收到项目中的距离小于路由表中的距离){
进行更新
}else{
什么都不做
}
若3min(RIP 默超时时间为 3min)还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离设置为 16(距离为16表示不可达)。若在其后120s内仍未收到更新报文,就将这些路由从路由表中删除。
返回
为什么不能把最大跳数设置更大?
因为如果链路出现故障,更大的跳数只会浪费网络资源来发送这些循环的分组。一对很明显的矛盾就出来了,设置太小,尽管收敛得快(所谓收敛快就是当路由变化时,能以最短的时间达到稳定状态),但是只适合小网络:设置大,尽管能满足大网络的要求,但是收敛慢,所以把跳数设置为16不可达较合理。
首先要清楚的是 RIP 报文使用传输层的 UDP(第5详绍)进行传送。RIP 报文从应用层交付下来要在传输层加上UDP首部形成UDP 用户数据报,然后在网络层加上IP 首部形成IP 数据报进行传送。
随着网络的扩大,一个自治系统内路由器的个数肯定会很多,但是RIP 不适合大型网络并且其收敛速度很慢,所以必须使用一种协议来完成大型自治系统的通信并尽最大努力去提高收敛的速度,这就是OSPF 协议的由来。
OSPF 路由协议仅仅当网络拓扑发生变化(如增加或减少一个路由器)时,才向本自治系统的所有路由器发送信息(使用洪泛法)。而这里的信息不再是网络的距离和下一跳路由器(RIP 路由协议),而是链路状态的信息(每个路由器都有许多接口,并且每个接口都通过不同的链路连接其他的路由器,每一条链路的时延、带宽都是不一样的,如从这个路由器到那个路由器需要多少的时延就可以看作链路状态信息)。路由器就将此信息发送给自己相邻的路由器,相邻路由器根据此信息去修改自己的路由表,修改完之后又将该信息从各个端口(当然不包括信息进来的端口)传送给与它相邻的路由器。这样下去,最后的结果就是在这个自治系统内部的所有路由器都会维持一个链路状态数据库,这个数据库实际上就是全自治系统的拓扑结构图,它在全自治系统范围内是一致的,这称为链路数据库的同步。
该自治系统内部的每一个路由器都有一个一模一样的链路状态数据库了。因此,每一个路由器都知道全自治系统内有多少个路由器以及哪些路由器是相连的、代价是多少等。每一个路由器就可以使用链路状态数据库中的数据(这里面的数据可以看成是数据结构中图的邻接矩阵,当代价为无穷时,就说明这两个路由器没有相连,即不可达,如果为其他数值,如代价为 5,说明这两个路由器直接相连,并且从这个路由器到那个路由器的代价为5),这样就可以通过最短路径算法去算出各个节点到其他节点的最短路径了。例如,要算路由器1到路由器 234的最短路径(给出邻接阵,即路状态数据库),就可以将路由器1看成是起始节点,然后使用3次 Dikstra 算法分别计算出路由器1到路由器234的最短路径,路由表就出来了。一旦网络拓扑又有变化,如以前没有相连的路由器,现在相连了,就又按照这样的步骤去计算路由表,这就是链路状态协议。
为了使 OSPF 路由协议能够用于规模很大的网络,并且使其收敛得更快,OSPF 路由协议将一个自治系统再划分为若干个更小的范围,称为区域
虽然使用Diikstra算法可以算出完整的最优路完整路径,而只存储“下一跳”。
OSPF协议直接使用IP数据报传送。
OSPF协议的三要点:
边界网关协议 (BGP)是在不同自治系统的路由器之间交换路由信息的协议。BGP 采用的是==路径-向量路由选择协议==。
由于以下原因边界网关协议只能是力求寻找一条能够到达目的网络且比较好的路由(不能转圈),而并非要寻找一条最佳路由。
BGP的基本原理:
每一个自治系统的管理员要选择至少一个路由器 (可以有多个)作为该自治系统的“BGP 发言人”。一个BGP 发言人要与其他自治系统中的 BGP 发言人交换路由信息,就要先建立TCP连接(可见BGP 报文是通过TCP 传送的,也就是说BGP 报文是TCP报文的数据部分),然后在此连接上交换 BGP 报文以建立BGP 会话,再利用BGP 会话交换路由信息。各 BGP 发言人互相交换网络可达性的信息后,各 BGP 发言人就可找出到达各自治系统比较好的路由了。
RIP协议、BGP协议都是应用层,OSPF是传输层协议
一个协议的实现需要依赖协议所在层次的下一层功能。简单地说,如果 TCP 需要依赖网际层协议 IP,那么它就是传输层的协议。同理,如果 RIP 需要依赖传输层的UDP,那至少它应该是被定义在UDP 之上的协议。
组播一定是仅应用于UDP,它们对需将报文同时传往多个接收者的应用来说非常重要。而 TCP 是一个面向连接的协议,它意味着分别运行于两台主机(由IP 地址来确定)内的两个进程(由端口号来确定)之间存在一条连接,所以是一对一的发送.
使用IP组播的缘由:
有的应用程序要把一个分组发送给多台目的主机,采用的方法不是让源主机给每台目的主机都发送一个单独的分组,而是让源主机把单个分组发送给一个组播地址,该组播地址标识一组主机。网络把这个分组复制后传递给该组中的每台主机。主机可以选择加入或者离开一个组,而且一台主机可以同时属于多个分组。
IP组播的思想:
源主机只发送一份数据,该数据中的目的地址为组播的组地址。组地址中的所有接收者都可以接收到同样的数据副本,并且只有组播内的主机可以接收数据,网络中的其他主机不可能收到该数据。与广播所不同的是,主机组播时仅发送一份数据组播的数据仅在传送路径分岔时才将数据报复制后继续转发。采用组播协议可明显地减少网络中各种资源的消耗。组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播路由器。
IP使用D类地址支持组播。D类IP地址的前缀是“1110”,因而地址范围是224.0.0.0~239.255.255.255,每一个D 类地址标识一组主机
IP 组播可以分为两种:
前一种虽然简单,但是很重要,因为现在大部分主机都是通过局域网接入因特网的。在因特网上进行组播的最后阶段,还要在局域网上将组播数据报用硬件组播交付给组播组的所有成员。
记住换算方法即可,下面进行例题模拟。
现假设组播地址为 224.215.145.230,先把 IP 地址换算成二进制224.215.145.230➡11100000.11010111.10010001.11100110,只映射IP 地址的后面23 位,因为MAC 地址是用十六进制表示的,所以只要把二进制的 IP 地址 4位一组合就可以了,其中第 24位取0,没有为什么,这是规定,即01010111.10010001.11100110 换成十六进制为 57-91-E6,然后再在前面加上固定的首部,即 01-00-5E。所以,最后结果应该是 01-00-5E-57-91-E6。
随着移动终端设备的广泛使用,移动计算机和移动终端等设备也开始需要接入网络Internet),但传统的IP 设计并未考虑到动节点会在链接中变化互联网接入点的问题。
传统的 IP 地址包括两方面的意义:
但对于移动节点,由于互联网接入点会不断发生变化,所以其IP 地址在两方面发生分离:
而移动 IP 便是为了让移动节点能够分离 IP 地址这两方面功能,而又不彻底改变现有互联网的结构而设计的。
移动 IP 技术可以使移动节点以固定的网络 IP 地址,实现跨越不同网段的漫游功能,并保证了基于网络IP 的网络权限在漫游过程中不发生任何改变。
实现移动IP需要哪些功能实体?
实现移动IP需要哪些技术?
路由器工作在网络层,实质上是一种多个输入端口和多个输出端口的专用计算机,其任务是连接不同的网络转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。
整个路由器的结构可划分为两大类:
转发就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
路由选择则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
路由表是根据路由选择算法得出的,而转发表是从路由表得出的。
详细工作流程如下:
若路由器处理分组的速率达不到分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。