https://blog.csdn.net/liao152/article/details/44919673
https://blog.csdn.net/liuhongxiangm/article/details/19110579
https://blog.csdn.net/N1neDing/article/details/80804161
https://blog.csdn.net/n1neding/article/details/80796374
计算机网络知识点——9.网络层之OSPF协议
https://blog.csdn.net/n1neding/article/details/80793055
计算机网络知识点——8.网络层之RIP协议
部分内容参考下面两个博客:
http://blog.csdn.net/lycb_gz/article/details/9662965
http://blog.sina.com.cn/s/blog_709021710100rdts.html
静态选路:默认方式生成(直连接口),通过route增加,通过ICMP重定向生成(默认方式出错)。
动态选路:相邻路由之间的通信,以告知对方每个路由器当前所连接的网络。其改变的是选路策略,在路由表中动态的添加或删除信息。
1、内部网关协议IGP(Interior Gateway Protocol)。每个自治系统可以选择该自治系统中各个路由器之间的选路协议。
(1)最常用的IGP是选路信息协议RIP(Routing Infromation Protocol);使用UDP封装。
RIP 协议的特点是:
(1)仅和相邻路由器交换信息。【注】如果两个路由器之间的通信不需要经过另一个路由器,那么这两个路由器就是相邻的。RIP协议规定,不相邻的路由器不交换信息。
(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表。【注】交换的信息是:“我到本自治制系统中所有网路的(最短)距离,以及到每个网络应该经过的下一跳路由器。”
(3)按固定的时间间隔交换路由信息。【注】每个30秒,然后路由器根据收到的路由信息更新路由表。当网路拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
RIP版本2报文格式:
命令:请求(1),应答(2),(3和4舍弃不用),轮询(5)和轮询表项(6);
请求:广播要求其他路由器发送完整路由表;
应答:路由器就将完整的路由表发送给请求者;
版本:为2。
路由域:一个选路守护程序的标识符,它指出了这个数据报的所有者。
地址类:紧跟在后面的20字节指定地址系列(address family),I P地址(2)。
路由标记:routing tag是为了支持外部网关协议而存在的,它携带着一个EGP和BGP的自治系统号;
路由信息:最多25个路由,20字节*25+4字节首部=504小于512(大部分程序限制UDP数据部分应小于512)。
守护程序Routed运行过程:
(1)初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表;在点对点链路中,该请求是发送给其他终点的;如果网络支持广播的话,这种请求是以广播形式发送的。目的U D P端口号是5 2 0(这是其他路由器的路由守护程序端口号)。
这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为1 6;这是一种要求另一端完整路由表的特殊请求报文;
(2)接收到请求:如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送给请求者;否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为16(度量为16是一种称为“无穷大”的特殊值,它意味着没有到达目的的路由),然后发回响应;
(3)接收到响应:使响应生效,可能会更新路由表;可能会增加新表项,对已有的表项进行修改,或是将已有表项删除;
定期选路更新:每过30秒,所有或部分路由器会将其完整路由表发送给相邻路由器;发送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的;
(4)触发更新:每当一条路由的度量发生变化时,就对它进行更新;不需要发送完整路由表,而只需要发送那些发生变化的表项;
每条路由都有与之相关的定时器;如果运行RIP的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大(16),并标注为删除;这意味着已经在6个30秒更新时间里没收到通告该路由的路由器的更新了;再过60秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开;
(2)一种新的IGP是开放最短路径优先OSPF(Open Shortest Path First)协议,它意在取代RIP;
分层结构:OSPF支持把网络划分为多个拥有某种程度的自主权的区域。在这种结构中,有一个骨干区域(总是指0区域),而且许多其它的区域都必须直接附加在0区域(特殊情况除外)。一个规划良好的分层结构设计是每一个区域的路由都可以汇聚为连续的网段。OSPF还支持汇聚另一个路由协议重新发布的路由的能力。
OSPF的特点:
基本特点:
(1)向本自治系统中所有路由器发送消息。使用IP封装。
(2)发送的信息就是与本路由器相邻的所有路由器的链路状态。
(3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。
其他特点:
(4)OSPF对不同的链路可根据IP分组的不同服务类型而设置成不同的代价。
(5)多路径间的负载均衡。到同一个网络目的有多条相同代价的路径,可将通信量分配给这几条路径。
(6)所有在OSPF路由器之间交换的分组都具有鉴别的功能,因而保证了仅在可信赖的路由器之间交换链路状态信息。
(7)OSPF支持可变长的子网划分和无分类的编址CIDR。
(8)OSPF让每一个链路状态都带上一个32位的序号,序号越大状态越新。
OSPF的报文格式:
通用首部:
版本:当前版本号是2.
类型:五种类型分组中的一种。问候(Hello)、数据库描述(Database Description)、链路状态请求(Link State Request)、链路状态更新(Link State Update)、链路状态确认(Link State Acknowledgement)。
分组长度:单位1字节。包括OSPF首部在内的长度。
路由器标识符:标志发送该分组的路由器接口的IP地址。
区域标识符:分组属于的区域的标识符。
检验和:用来检测分组中的差错。
鉴别类型:0(不用)、1(口令)。
鉴别:鉴别类型为0时就填入0.鉴别类型为1则填入8个字符的口令。
(1)OSPF Hello类型格式:
OSPF协议使用一种称之为Hello的报文来建立和维护相邻邻居路由器之间的链接关系。这个报文很简单的,容量很小,仅用来向邻居路由器证明自己的存在,就像人与人之间的打招呼一样。我们在第8章中已经知道,RIP邻居路由器之间的邻接关系建立是都是定期的路由更新报文进行的,通过定期的路由更新来同时向邻居RIP路由器证明自己的存在。显然OSPF的这种Hello报文更简单,可大大减小网络中的报文传输流量。
Hello报文被周期性(默认为10秒)地发向邻居路由器接口发送,如果在设定时间(默认为40秒,通常至少是Hello包发送时间间接4倍)内没有收到对方OSPF路由器发送来的Hello报文,则本地路由器会认为该对方路由器无效。报文内容包括一些定时器设置、DR、BDR以及本路由器已知的邻居路由器。
(2)OSPF DD类型格式:
DD报文是用来描述本地路由器的链路状态数据库(LSDB),在两个OSPF路由器初始化连接时要交换DD报文,进行数据库同步。
DD报文内容部分包括:DD报文序列号和LSDB中每一条LSA的头部等。对端路由器根据所收到的DD报文中的OSPF报头就可以判断出是否已有这条LSA。由于数据库的内容可能相当长,所以可能需要多个数据库描述报文来描述整个数据库。所以有三个专门用于标识数据库描述报文序列的比特位,即DD报文格式中的I、M和M/S这三位。接收方对报文的重新排序使其能够真实地复制数据库描述报文。
DD交换过程按询问/应答方式进行,在DD报文交换中,一台为Master(主)角色,另一台为Slave(从)角色。Master路由器向从路由器发送它的路由表内容,并规定起始序列号,每发送一个DD报文,序列号加1,Slave则使用Master的序列号进行确定应答。但是显然,主从之间的关系会因每个DD交换的不同而不同。网络中的所有路由器会在不同时刻作用,在这个过程中既可能是主路由器又可能是从路由器。因为DD报文仅在两台OSPF路由器初始化连接时才进行DD交换,所以它没有发送周期,以后的数据库存同步是通过LSR、LSU和LSAck报文进行同步的
(3)OSPF LSR类型格式:
LSR报文用于请求相邻路由器链路状态数据库中的一部分数据。当两台路由器互相交换完DD报文后,知道对端路由器有哪些LSA是本LSDB所没有的,以及哪些LSA是已经失效的,则需要发送一个LSR报文,向对方请求所需的LSA。
(4)OSPF LSU类型格式:
LSU报文是应LSR报文的请求,用来向对端路由器发送所需的LSA,内容是多条LSA完整内容的集合。LSU报文在支持组播和多路访问的链路上是以组播方式将LSA泛洪出去的,并且对没有收到对方确认应答(就是下面将要介绍的LSAck报文)的LSA进行重传,但重传时的LSA是直接送到没有收到确认应答的邻居路由器上,而不再是泛洪。
(5)OSPF LSAck类型格式:
LSAck报文是路由器在收到对端发来的LSU报文后所发出的确认应答报文,内容是需要确认的LSA头部(LSA Headers)
新的RFC [Almquist 1993]规定,实现任何动态选路协议的路由器必须同时支持OSPF和RIP;
2、外部网关协议EGP(Exterier Gateway Protocol)。用于不同自治系统之间的路由器;
(1)当前使用的是边界网关协议BGP(Border Gateway Protocol)。使用TCP封装。
BGP的报文格式:
通用首部:
标记Maker(16字节)——-全为1,否者,标记的值要使用认证机制来计算(认证机制是通过认证信息的一部分来指定的)。标记可以用来探测BGP对端的同步丢失,认证进入的BGP消息。
长度Length(2字节)——-BGP包全长,长度的值必须最少19字节最大4096字节。
类型Type(1字节)— 1 - OPEN;2 - UPDATE;3 - NOTIFICATION;4 – KEEPALIVE
(1)OPEN类型格式:
Ø Version(1字节)—–当前的BGP版本号为4
Ø My Autonomous System(2字节)—-发送者自制系统号
Ø Hold Time(2字节)—-BGP hold time 为180秒。
Ø BGP Identifier(4)—-发送者的BGP router-ID.
Ø Optional Parameters Length(可选参数长度)(1字节):如果这个域是0,说明没有可选参数。
Ø Optional Parameters(可选参数):
(2)UPDATE类型格式:
Ø Unfeasible Routes Length(不可用路由长度)—-2字节,指示了撤销路由的字节总长度。0说明没有撤销路由, UPDATE消息内部没有撤销路由。
Ø Withdrawn Routes (撤销路由)—-如果没有撤销路由则无此字段,如果有撤销路由,此字段列出所撤销的路由条目。
Ø Total Path Attribute Length(总的路径属性长度)—-2字节,0代表在UPDATE消息中没有网络层可达信息域。
Ø Path Attributes(路径属性):在每一个UPDATE消息中有可能有多个路径属性对。每一个路径属性对包括Attribute Flags 、Attribute type code 、Attribute Data Length三个字段。Attribute Flags 、Attribute type code各占位1个字节。
Ø Network Layer Reachability Information(网络层可达信息):
(3)keepalive类型只包含BGP包头19字节。
(4)NOTIFICATION类型格式:
Ø Error(错误码):1-消息头错误;2-OPEN消息错误;3-UPDATE消息错误;4-Hold计时器溢出;5-FSM错误;6-终止。
Ø Error subcode(错误子码):
Ø Data(数据):