ip数据报转发算法or路由器转发分组的过程
Let our advance worrying become advance thinking and planning. — Winston Churchill
已剪辑自: https://blog.csdn.net/colesky/article/details/78612084
前提:
IP数据报的首部中没有地方能够用来指明“下一跳路由器的 IP 地址”。
那么。当路由器接受到一个待转发的报文时。是怎样确定将该报文的传向呢?在此,我们引入**“路由表”**概念。
路由表如图所看到的:
当一个IP报文传到路由器R2时,则会通过查询R2所维护的路由表,依据IP报文段中的目的地址进行匹配。
得到对应的下一跳地址。
这样,
IP 数据报终于一定能够找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
仅仅有到达最后一个路由器时,才试图向目的主机进行直接交付。
当然,路由表内容不止上图所看到的。例如以下:
特定主机路由:
这样的路由是为特定的目的主机指明一个路由。
採用特定主机路由可使网络管理人员能更方便地控制网络和測试网络,同一时候也可在须要考虑某种安全问题时採用这样的特定主机路由。
默认路由:
作用:
路由器还可採用默认路由以降低路由表所占用的空间和搜索路由表所用的时间。
仅仅要目的网络在路由表中匹配不到,就一律选择默认路由(详情见后面:分组转发规则)
用途:
假设一个主机连接在一个小网络上。而这个网络仅仅用一个路由器和因特网连接,那么在这样的情况下使用默认路由是非 常合适的。 。
当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。
确认下一跳路由器之后,
网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址。并将此硬件地址放在链路层的 MAC 帧的首部。然后依据这个硬件地址找到下一跳路由器。
以下列出路由器之间分组转发的算法:
(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连。则把数据报直接交付目的主机 D。否则是间接交付,运行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由。则把数据报传送给路由表中所指明的下一跳路由器。否则,运行(4)。
(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器。否则,运行(5)。
(5) 若路由表中有一个默认路由。则把数据报传送给路由表中所指明的默认路由器;否则,运行(6)。 (6) 报告转发分组出错。
首先我们来了解以下几个基本概念:
1、转发:表示的是为分组选择路径的过程
2、IP转发:其传统称法是IP路由选择(IP routing),IP转发它是为要发送的数据报选择路径。
3、分组:(大多数计算机网络都不能连续地传送任意长的数据,所以实际上网络系统把数据分割成小块,然后逐块地发送,这种小块就称作分组(packet)。也有些书籍把分组定义为网络层的协议数据单元)
4、分组转发(forwarding):是指在互联网络中路由器转发IP分组的物理传输过程与数据报转发机制。根据分组的目的Ip地址与源Ip地址是否属于同一个子网可分为直接转发和间接转发。
5、数据报:数据报是通过网络传输的数据的基本单元,包含一个报头(header)和数据本身,其中报头描述了数据的目的地以及和其它数据之间的关系
6、IP数据报:是TCP/IP协议定义的一个在网络上传输的包
**IP数据报转发算法 or 路由器转发分组的过程 **
1、路由器从接收到的数据报中抽取目的IP地址D,并计算地址D的网络前缀N
2、接着,路由器检查路由表,如果表中含有D的一个特定路由,则把数据报发送到表中指定的下一跳,然后退出。否则,转步骤3
3、路由器检查N是否与路由器的任何一个直接相连的网络地址匹配,如果是的话,则通过该网络把数据报交付给目的站D。否则,转步骤4
4、路由器检查路由表,看表中是否包含一个针对网络N的路由,如果有的话,则数据报发送到表中致命的下一跳。否则,转步骤5
5、路由器检查路由表,看表中是否包含一个默认的路由,如果有的话,则把数据报发送到表中指明的默认路由器。否则,转步骤6
6、路由器将发出一个转发错误