前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

IP协议详解 - IP路由(ip协议和路由协议)

qiguaw 2024-10-30 03:17:58 资源文章 25 ℃ 0 评论

IP协议的一个核心任务就是数据报的路由,即决定发送数据报到目标机器的路径。

上图是IP模块的基本工作流程。我们从右往左来分析。


当IP模块接收到来自数据链路层的IP数据报时,首先对该数据报的头部做CRC校验,确认无误后就分析头部的具体信息。


如果该IP数据报的头部设置了源站选项(松散源路由选择或严格源路由选择),则IP模块调用数据报转发子模块来处理该数据报。

如果该IP数据报的头部中目标IP地址是本机的某个IP地址,或者是广播地址,即该数据报是发送给本机的,则IP模块就根据数据报头部的协议字段来决定将它发送给哪个上层应用(分用)。

如果IP模块发现这个数据报不是发送给本机的,则也调用数据报转发子模块来处理该数据报。


数据报转发子模块将首先检测系统是否允许转发,如果不允许,IP数据模块将数据报丢弃。如果允许,数据报转发子模块将对该数据报执行一些操作,然后将它交给IP数据报输出子模块。


IP数据报应该发送到哪个下一跳路由(或者目标机器),以及经过哪个网卡来发送,就是IP路由过程,即上图中的“计算下一跳路由”子模块。IP模块实现数据报路由的核心数据结构是路由表。这个表按照数据报的目标IP地址分类同一类型的IP数据报将被发往相同的下一跳路由(或者目标机器)。


IP输出队列中存放的是所有等待发送的IP数据报,其中除了需要转发的IP数据报外。还包括封装了本机上层数据(ICMP报文,TCP报文段和UDP数据报)的IP数据报。

上图中的虚线箭头显示了路由表更新的过程。这一过程是指通过路由协议或者route命令调整路由表,使之更适应最新的网络拓扑结构,成为IP路由策略。

路由机制

这里我们先了解一下路由表的内容,这里我们先获取一下测试及alexdev上的路由表:

该路由表包含4项,每项包含8个字段,如下表所示:

所以第一项的目标地址是default,即所谓的默认路由项。该项包含一个“G”标志,说明路由的下一跳目标是网关,其地址是10.0.0.1。

另外一个路由项是10.0.0.0,它指的是本地局域网。没有绑定任何的网关,说明直接由本机发送出去。

那么路由标是如何按照IP地址分类的?

  1. 查找路由表中和数据报的目标IP地址完全匹配的主机IP地址。如果找到,就使用该路由项,没有下一步。
  2. 查找路由表中和数据报的目标IP地址具有相同网络ID的网络IP地址,比如上上图中除default外的其他几项,如果找到,就使用该路由项,没找到下一步。
  3. 选择默认路由项,这通常意味着数据报的下一跳路由是网关。

路由表更新

路由表必须能够更新,以反映网络连接的变化,这样IP模块才能准确、高效地转发数据报。

route命令可以修改路由表。

第一行添加主机10.0.0.199(raspberry)对应的路由项,这样设置之后,所有从alexdev发送到raspberry的IP数据报将通过网卡wlp2s0直接发送到目标机器的接收网卡。

第二行表示删除网络10.0.0.0对应的路由项。这样,除了raspberry, alexdev将无法访问该局域网上的任何机器

第三行表示删除默认路由项,这样做的后果是无法访问因特网。

第四行表示重新设置默认路由项,不过这次其网关是raspbrry,而不是直接访问因特网的路由器。

通过route命令或其他工具手工修改路由表,是静态的路由更新方式。对于大型的路由器,他们通过BGP(Border Gateway Protocol 边际网关协议)、RIP(Routing Information Protocol 路由信息协议)、OSPF等协议来发现路径,并且更新自己的路由表。这种更新方式是动态的、自动的。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表