【简记】Computer Networking——network layer(part two)

来源:互联网 发布:linux vsftpd匿名用户 编辑:程序博客网 时间:2024/05/17 01:14

本part主要内容:

  • ICMP
  • 路由选择协议

4.4 网际控制报文协议 ICMP
为了更有效地转发IP数据报,提高 IP 数据报交付成功的机会,在网络层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
ICMP 报文作为 IP 层数据报的数据部分,加上数据报的首部,组成 IP 数据报发送出去。
这里写图片描述

4.4.1 ICMP 报文的种类

ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。

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

  • 终点不可达 (路由器或主机不能交付数据报,是向源点发送的)
  • 源点抑制(Source quench) (由于拥塞而丢弃数据报时,向源点发送)
  • 时间超过 (收到生存时间为0的数据报;终点在预先规定的时间内没有收到一个数据报的全部数据片时)
  • 参数问题 (首部中有的字段的值不正确)
  • 改变路由(重定向)(Redirect) (路由器把改变路由的报文发给主机,让主机下次可以选择更好的路径)

(http://jimmee.iteye.com/blog/692269 主机中也会保存一份路由表)

这里写图片描述

得到的IP数据包的数据部分前8字节:有运输层的端口号(TCP和UDP),运输层报文的发送序号(对于TCP)。

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

  • 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
  • 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
  • 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
  • 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。

ICMP 询问报文有两种 :
回送请求和回答报文(收到此报文的主机必需回送回答报文,多用于了解可达性或其他有关状态)
时间戳请求和回答报文

4.4.2 应用举例

PING:应用层直接使用网络层ICMP的例子
traceroute:跟踪一个分组从源点到终点的路径


4.5 因特网的路由选择协议

4.5.1 有关路由选择协议的几个基本概念

理想算法应具有的一些特点:
必须是正确的和完整的。 在计算上应简单。
应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
应具有稳定性。 应是公平的。 应是最佳的。

静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。

===
分层次的路由选择协议

因特网主要采用自适应的,分布式路由选择协议。
因特网采用分层次的路由选择协议的原因:
1.因特网的规模非常大。2.许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议。

为此,因特网将整个互联网划分为许多较小的自治系统。
要求:尽管一个 AS 可以使用多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。

因特网有两大类路由选择协议(分层次的路由选择方法) :
内部网关协议 IGP (Interior Gateway Protocol) 即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
外部网关协议EGP (External Gateway Protocol) 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。
这里写图片描述


4.5.2 内部网关协议 RIP (Routing Information Protocol)

工作原理:
路由信息协议 RIP 是内部网关协议 IGP中最先得到广泛使用的协议。
RIP 是一种分布式的基于距离向量的路由选择协议。
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

距离的定义:
RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
RIP 允许一条路径最多只能包含 15 个路由器。“距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。
RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

RIP和OSPF的共同特点是每一个路由器都要不断地和其他一些路由器交换路由信息。

RIP 协议的三个要点 :

  • 仅和相邻路由器交换信息。
  • 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
  • 按固定的时间间隔交换路由信息,例如,每隔 30 秒。

路由表的建立 :
1. 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。
2. 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
3. RIP 协议的收敛(convergence)过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程。


距离向量算法

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

(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:若项目中的目的网络不在路由表中,则把该项目加到路由表中。    否则       若下一跳字段给出的路由器地址是同样的(注意这里要路由器地址一样),则把收到的项目替换原路由表中的项目。(不管距离是增大还是减小,都要更新,即认为链路情况出现了变化)       否则            若收到项目中的距离小于路由表中的距离,则进行更新(等于的话不更新),    否则,什么也不做。(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。(4) 返回。

RIP协议的报文格式
这里写图片描述
一个RIP报文最多可包括25个路由。

RIP 协议的优缺点 :
缺点:
RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。(即某一个路由器R1已经知道网络1不可达,当这个信息还没有传送给相邻路由器时,相邻路由器R2把自己的未更新不可达信息的路由表传给了R1,R1据此错误地更新了到达网络1的信息,又传给R2,如此反复) p156
RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
优点:
RIP 协议最大的优点就是实现简单,开销较小。

目前来说,RIP仍适用于规模较小的网络中。


4.5.3 内部网关协议 OSPF (Open Shortest Path First)

OSPF 协议的基本特点

  • “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
  • “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF。
  • OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
  • 是分布式的链路状态协议。(最主要特征,RIP使用的是距离向量协议)

三个要点 (和RIP的区别)
(1)向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric),如费用、距离、带宽等。
RIP发送的是到所有网络的距离和下一跳服务器。
(3)只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。

由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。RIP中的路由器不知道全网的拓扑结构。
OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。

这里写图片描述
(此举可将洪泛法交换链路信息状态的范围局限于本区域中,减少网络上的通信量)

区域边界路由器:概括其他区域路由器来的信息(如R3)
自治系统边界路由器:负责和其他自治系统交换路由信息(R6)

OSPF 使用层次结构的区域划分。在上层的区域叫作主干区域(backbone area)。主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。


OSPF 不用 UDP 而是直接用 IP 数据报传送。
OSPF 构成的数据报很短。这样做可减少路由信息的通信量。
数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。

OSPF 的其他特点 :

  • OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。
  • 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫作多路径间的负载平衡。RIP只能找到一条路径。
  • 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。
  • 支持可变长度的子网划分和无分类编址 CIDR。
  • 每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。

这里写图片描述
OSPF 的五种分组类型 :
类型1:问候(Hello)分组。
类型2:数据库描述(Database Description)分组。
类型3:链路状态请求(Link State Request)分组。
类型4:链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。
类型5:链路状态确认(Link State Acknowledgment)分组。

这里写图片描述
(先交换摘要信息,再请求本地链路数据库种没有的数据)

这里写图片描述
(t2时刻,路由器在转发信息时,会把上游服务器除去,即不会传给刚刚发来信息的那个路由器)
(在收到更新分组后,会发送确认报文)

OSPF 的其他特点 :
OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。
多点接入的局域网采用了指定的路由器的方法,使广播的信息量大大减少。


4.5.4 外部网关协议 BGP

BGP 是不同自治系统的路由器之间交换路由信息的协议。

BGP 使用的环境却不同 :
1. 因特网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
【当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价是不太可能的。
【比较合理的做法是在 AS 之间交换“可达性”信息。
2. 自治系统之间的路由选择必须考虑有关策略。(如涉及到安全信息,尽量不从国外兜圈子)
3. 因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。

BGP 发言人 (BGP speaker) :
每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” 。
一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。

这里写图片描述
一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。
使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站。

BGP 协议的特点:
BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。(如果收到的路径通知中包含本自治系统,就会舍弃,避免兜圈子)
在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。

BGP-4 共使用四种报文 :
(1) 打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系。
(2) 更新(UPDATE)报文,用来发送某一路由的信息(最多一条),以及列出要撤消的多条路由。
(3) 保活(KEEPALIVE)报文,用来确认打开报文和周期性地证实邻站关系。
(4) 通知(NOTIFICATION)报文,用来发送检测到的差错。

这里写图片描述


4.5.5 路由器的构成

这里写图片描述
(若接收到的分组是路由器之间交换路由信息的分组,如RIP或OSPF,则把这种分组送交路由器的路由选择部分中的路由选择处理机。若接收到的是数据分组,则按照分组首部中的目的地址查找转发表,分组就经过交换结构到达合适的端口)

“转发”和“路由选择”的区别 :
“转发”(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
“路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
路由表是根据路由选择算法得出的。而转发表是从路由表得出的。

这里写图片描述

若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。


交换结构
这里写图片描述

(a)最早的使用技术。如果存储器的带宽是每秒M个分组,那个交换速率小于M/2.
(b)同一时间只能有一个分组在总线上传送
(c)有2N条总线




joke
这里写图片描述

阅读全文
0 0