-
2018-10-01 17:42:43
前言
网络层的主要目的是为了对上层屏蔽各种复杂、异构的底层网络,从而提供简单灵活的、无连接的、尽最大努力交付的数据报服务。前面我们介绍了IP地址,它为网络上的每一台主机和路由器的每个接口指明了一个唯一的地址。为了完成数据报的交付,下一步的任务就是在知道了目的主机的IP地址后,如何将数据报送过去。
这就有点类似于“把信送给加西亚”的故事。我们有一封信,也知道送给谁,但怎么送到目前还不知道。
路由表
要实现IP数据报的转发离不开路由器。路由器工作在网络层,将多个网络连接在一起。它就像是岔路口的指示牌,为数据报(分组)指明了前进的方向。这一点其实我们从路由器的名字中就可以看出——“路由”,即“路该由此向哪里走”。而具体来说,这一功能则是通过路由表以及相应的转发算法来实现的。路由表里面存储了一系列的路由,而一条路由包括如下信息:
(目的网络地址,下一跳地址)
下面简单说明路由表的工作原理:当一个分组到达后,路由器首先提取出分组中包含的目的IP地址,并计算出IP地址中的目的网络地址,接下来在路由表中查找与目的网络地址匹配的路由,如果匹配成功,就将该分组转发到下一跳地址所示的路由器。
IP分组转发算法
其实刚刚介绍的路由表的工作原理已经包含了IP分组转发算法的主要思想。但有一点需要注意的是,在路由表中每一个路由仅仅指明了要去往目的网络的下一个路由器的地址,而并没有给出到达目的网络的完整路径。这就好像我们平时问路,路人虽然知道目的地在哪里,但并不是很好清晰地讲出来,于是就告诉我们你先去下一个十字路口,到那里之后再找个人问问。
另外还有一点需要注意的是,有时候目的网络和路由器直接相连,那么就不需要下一跳地址,而可以直接把数据报发送给目的网络上的主机,因此就有了直接交付和间接交付的概念。
下面给出具体的IP分组转发算法:
- 从数据报的首部提取出目的主机的IP地址D,并计算出目的网络地址N;
- 若N就是与此路由器直接相连的某个网络,则进行直接交付,不再经过其他的路由器直接把数据报交付目的主机(这里涉及到地址解析协议,不再详述);否则就是间接交付,执行(3);
- 若路由表中有目的地址为D的特定主机路由,则把数据报传送给该路由指明的下一跳地址;否则,执行(4);
- 若路由表中有目的网络地址为N的路由,则把数据报传送给该路由指明的下一跳地址;否则,执行(5);
- 若路由表中有一个默认路由,则把数据报该默认路由指明的下一跳地址;否则,报告转发分组出错。
另外,当涉及到包含子网划分的问题时,需要将路由做如下改动:
(目的网络地址,子网掩码,下一跳地址)
相应的,上述算法也需要做一些改动,但整体流程还是一致的。改动如下:
- 从数据报的首部提取出目的主机的IP地址D;
- 用与此路由器直接相连的网络的子网掩码与D做按位逻辑与操作,若得出的网络地址N和与路由器相连的网络地址匹配,则进行直接交付,不再经过其他的路由器直接把数据报交付目的主机(这里涉及到地址解析协议,不再详述);否则就是间接交付,执行(3);
- 若路由表中有目的地址为D的特定主机路由,则把数据报传送给该路由指明的下一跳地址;否则,执行(4);
- 用路由表中每一个路由包含的子网掩码与D作按位逻辑与操作,若得出的网络地址N与路由中的目的网络地址匹配,则把数据报传送给该路由指明的下一跳地址;否则,执行(5);
- 若路由表中有一个默认路由,则把数据报该默认路由指明的下一跳地址;否则,报告转发分组出错。
结语
以上内容简单介绍了IP数据报是如何转发的,可以看出,转发的关键就在于路由表的使用。但其实还有一个关键问题没有解决,那就是路由表是如何构建的,它是如何保证按照路由表上的指引最终能够到达目的主机的呢?关于这一问题就需要了解路由选择协议了,小白的我这一块还不是很明白,以后有机会再补充吧
更多相关内容 -
IP数据报转发算法 or 路由器转发分组的过程
2017-11-23 11:00:16IP数据报的首部中没有地方能够用来指明“下一跳路由器的 IP 地址”。 那么。当路由器接受到一个待转发的报文时。是怎样确定将该报文的传向呢?在此,我们引入“路由表”概念。 路由表如图所看到的: watermark/2/...【网络基础】路由表,分组转发算法前提:
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、路由器将发出一个转发错误
-
IP数据报的发送和转发过程
2021-10-10 16:50:24本文主要讲述了 IP 数据报的发送和转发过程,参考:计算机网络微课堂 IP 数据报的发送和转发过程包含以下两部分: 主机发送 IP 数据报 路由器转发 IP 数据报 说明:后续举例忽略了 ARP 协议获取目的主机或路由器...本文主要讲述了 IP 数据报的发送和转发过程,参考:计算机网络微课堂
IP 数据报的发送和转发过程包含以下两部分:
- 主机发送 IP 数据报
- 路由器转发 IP 数据报
说明:后续举例忽略了 ARP 协议获取目的主机或路由器接口的 MAC 地址的过程以及以太网交换机自学习和转发帧的过程
IP 数据报的发送和转发过程 —— 举例说明
如图所示小型互连网,路由器接口 0 和接口 1 分别直连一个交换式以太网,网络地址和子网掩码如图所示:
- 同一个网络中的主机可以直接通信,这属于 直接交付;不同网络间的主机,需要路由器中转,这属于 间接交付
问题 1 : 那么,源主机如何判断目的主机是否与自己在同一个网络中呢 ?
假设主机 C 向主机 F 发送 IP 数据报。首先,主机 C 将自己的 IP 地址和子网掩码相与,得到主机 C 所在网络的网络地址。 之后,主机 C 将主机 F 的 IP 地址与自己的子网掩码相与,得到目的网络地址。发现它们两个不相等,因此知道这是间接交付,需要路由器转发。
问题 2 : 源主机如何知道路由器的存在 ?这就涉及到了 默认网关。可以通过指定路由器某接口的 IP 地址指定给各主机,所指定的路由器就被称为默认网关。
缺省网关(Default Gateway),也就是默认网关,是子网与外网连接的设备,通常是一个路由器。当一台计算机发送信息时,根据发送信息的目标地址,通过子网掩码来判定目标主机是否在本地子网中,如果目标主机在本地子网中,则直接发送即可。如果目标不在本地子网中则将该信息送到缺省网关/路由器,由路由器将其转发到其他网络中,进一步寻找目标主机。 —— 百度百科
问题 3 : 路由器收到 IP 数据报后如何转发 ?- 首先,检查数据报首部是否出错: 若出错,则直接丢弃该 IP 数据报并通告源主机; 若没有出错,则进行转发
- 之后,根据 IP 数据报的目的地址在路由表中查找匹配的条目: 若找到匹配的条目,则转发给条目中指示的下一跳; 若找不到,则丢弃该 IP 数据报并通告源主机
下面来看发送广播 IP 数据报的情况
-
假设主机 A 给本网络上各设备发送了一个广播 IP 数据报。
路由器是隔离广播域的,收到后不会转发广播 IP 数据报,避免了广播风暴和资源浪费 -
假设主机 A 向另一个网络发送广播 IP 数据报。
路由器判断出这是广播 IP 数据报,不对其进行转发
相关练习题
- 习题一
- 习题二
- 习题三
-
计算机网络——IP数据报的发送和转发过程
2021-11-05 09:33:31IP数据报的发送和转发包括两个部分:一是主机发送IP数据报,二是路由器转发IP数据报。在下面讲解这个过程时为了突出重点,忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程以及以太网交换机自学习...IP数据报的发送和转发包括两个部分:一是主机发送IP数据报,二是路由器转发IP数据报。在下面讲解这个过程时为了突出重点,忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程以及以太网交换机自学习和转发帧的过程。
如图所示的两个交换式以太网用路由器连接起来。如果IP数据报的源地址和目的地址在同一个网络中,那么可以经由交换机直接交付。而如果源地址和目的地址不在同一个网络中,那么就需要经过路由器进行间接交付。
源主机是怎么知道目的主机与自己是否在一个网路中?源主机知道目的主机的IP地址,源主机将F的地址与自己的子网掩码相与,看是否等于自己的网络地址,如果不相同就说明两者不在同一个网络。
那这种情况下就需要路由器进行转发,所以要提前给网络中的主机设置默认网关,源主机会根据默认网关将数据报发送到路由器的对应接口。
当路由器收到IP数据报后,检查首部是否出错,没有出错则进行转发,出错则直接丢弃。再根据IP数据报的目的地址查找匹配的条目,找到则转发给条目中指示的下一条,找不到丢弃该数据报。
比如A要发送数据报给D,根据数据报中目的地址192.168.0.129查找路由表,找到目的网络,发现它与接口1直连,则从接口1将该数据报转发出去。 -
ip数据报的转发
2020-01-16 20:56:06IP数据包经由路由转发的时候源IP,目的ip是否改变? 这是个搞网络的基础问题,答案是不能改变的,除非做了nat转换才能改变。否则,数据包在整个传输过程中,源IP和目的IP不会发生改变。 不过MAC地址是变化的,因为... -
计算机网络-路由器转发IP数据报简介
2020-06-26 17:41:111. IP转发 -
计算机网络(四)—— 网络层(4、5):IP数据报的发送和转发过程、静态路由配置及其可能产生的路由环路...
2021-07-09 21:36:304. IP数据报的发送和转发过程4.1 课后练习5. 静态路由配置及其可能产生的路由环路问题5.1 课后练习 4. IP数据报的发送和转发过程 IP数据报的发送和转发过程包含以下两部分: ⋄\diamond⋄ 主机发送IP数据报... -
IP数据报转发流程算法实现(c++)
2019-06-09 13:28:23c++模拟路由器根据路由表对IP数据报的转发 模拟网络及路由器示意图 算法实现: #include<iostream> #include<algorithm> #include<cstdio> #include<string> #include<vector> ... -
IP数据报在网络中的主机发送与路由转发
2022-02-25 09:43:26IP数据报的转化和发送(2种情况) 1.主机发送IP数据报 若目的主机和自己位于同一个网络,则直接交付 若目的主机和自己不在同一个网络,则间接交付,传输给主机所在网络的默认网关(一般是路由器),由默认网关帮忙... -
6、7、8章:IP协议及IP数据报转发和ICMP - 用TCP/IP进行网际互连
2015-02-18 14:48:44第6章 网际协议:无连接数据报交付(IPv4) 6.3 互联网体系结构和基本原理 互联网是围绕着一个分层结构中的三个概念化网络服务来设计的;这个结构相当健壮且有很强的适应性,使互联网取得了很大成功。 ... -
IP协议(一)IP地址、IP数据报、IP层数据报转发
2020-04-15 15:28:22构成超网最长前缀匹配使用二叉树查找路由表三、IP地址与硬件地址IP地址与硬件地址介绍地址解析协议ARPARP协议的必要ARP协议的特点ARP高速缓存四、IP数据报的格式1、IP数据报的格式2、IP数据报首部各字段五、IP层转发... -
[计网] IP数据报的发送和转发过程
2021-12-30 17:46:18路由器在网络层,网络层是IP数据包, 数据链路层才是帧 -
IP数据报格式
2022-03-28 11:55:39这次总结一下IP数据报的报文格式 IP数据报的格式能够说明IP协议都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32位(4字节)为单位来描述的。 wireshark中IP数据报文呈现 一个IP数据报文由首部和数据两... -
【IP协议(一)】——IP数据报格式及其含义,IP数据报的切分
2022-04-14 13:44:40首部长度:表示IP数据报中报头的长度,可表示的最大的十进制位是15。首部长度表示的基本单位是4个字节,因此首部长度的最小值是5,也就是报头最小长度是20个字节。当首部长度是1111时,表示的是报头最大是60个字节... -
IP数据报
2018-06-08 17:03:45IP(Internet Protocol)是TCP/IP协议族中的核心协议,所有TCP、UDP、ICMP和IGMP数据都通过IP数据报传输。在Internet中它是能使连接到网络上的所有设备实现相互通信的一套规则,它提供了一种尽力而为、无连接的... -
IP数据报检验和计算
2019-11-04 14:20:42: 先把IP数据报首部化为许多16位的序列,并把检验和字段置零。用反码运算把所有16字相加后,将得到的 和的反码 写入检验和字段。接收方收到数据后,将首部的所有16位子序列再使用反码算术符相加一次,将得到的和取... -
ip数据报格式详解
2018-12-19 11:57:34IP数据报 一、 固定部分 (1)版本 占4位 (2)首部长度 占4位 (3)区分服务 占8位 (4)总长度 占16位 (5)标识(identification) 占16位 (6)标志(flag) 占3位 (7)片偏移 占13位 (8)生存时间 占8位 (9)... -
图解IP数据报格式
2020-11-11 16:40:57IP数据报格式详解 IP数据报的首部格式及其内容是实现IP协议的主要功能的基础,因此我们有必要搞清楚这部分的内容。 一个IP数据报由20字节的固定部分和最大40字节的可变部分组成。 固定部分:指每个IP数据报首部... -
计算机网络 网络层 IP 数据报的格式以及分片
2022-03-10 22:05:14IP 数据报的格式 一个 IP 数据报由首部和数据两部分组成。 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。 在首部的固定部分的后面是一些可选字段,其长度是可变的。(可有可无) IP协议... -
计算机网络学习:网络层IP数据报、ICMP协议 看一篇就够了!(含具体实验演示)
2021-04-21 15:26:03网络层IP数据报和ICMP协议的内容,直观的演示和实践可以更好地掌握这方面的知识。值得一提,我觉得学习IP数据报和ICMP协议的基本内容看完这篇就够了!我的初衷是对以前学习过的内容进行一个系统的整理,梳理思路,将... -
IP数据报首部格式
2019-05-07 21:35:081.IP数据报首部的固定部分中的各字段 (1)版本占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于以后要使用的IPv6(即版本6的IP协议),我们将在后面的4.6节... -
详细说说IP地址(IP数据报格式)
2020-05-04 10:47:07IP地址由网络号和主机号(网络地址和主机地址)两部分构成。网络号部分用于标识所属网络的网络地址,主机号部分用于标识给定网络上的某个特定主机的主机地址。 互联网中每一个物理网络分配唯一的一个网络号,同一个... -
wireshark抓包分析IP数据报
2020-06-23 15:26:21本文将会展示IP数据报格式,并利用wireshark抓包,然后加以分析 话不多说,直接上图 wireshark抓包分析 版本:占4位,Version 4(IPv4),指IP协议的版本 首部:占4位,可表示最大十进制数是15(1111),... -
计算机网络 网络层——IP数据报 详记
2020-12-09 14:30:19IP数据报首部的固定部分中的各字段 版本:占4位,指IP协议的版本。 首部长度:占4位,可表示的最大十进制数值是15 区分服务:占8位,用来获得更好的服务 总长度:指首部和数据之和的长度,单位为字节。总... -
IP数据报头部信息分析
2019-01-03 22:01:12IP数据报由首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的,为0—40字节。所以,头部总长度为20—60字节。首部中... -
IP数据报头部信息
2019-07-31 20:36:31IP数据报头部长度20到60字节,其中前20字节是固定长度,是所有IP数据报必须有的,后面部分为可选字段,长度可变。 IP数据报头部信息 4位版本号:标记使用IP地址的版本,常用4或6,分别标识IPv4或IPv6。 4位首部...