2.5.3 处理传入的数据报

当主机和路由器接收到传入的数据报时,它们的处理方式是有相同的部分,但是也存在区别。

公共部分

主机和路由器都可能存在多个网络连接,每个连接分别拥有一个IP地址。当一个IP数据报到达时,需要把目的IP地址与它的每一个网络连接的IP地址进行比较。如果匹配,则保留该数据报并对它进行处理。如果数据报的目的IP地址是有限广播地址或直接IP广播地址,接收节点也必须接收该物理网络上广播的数据报。

主机的处理过程

网络接口软件把数据报传给IP软件。如果数据报的目的地址与主机的IP地址匹配,则IP软件接受该数据报,并把它传递给合适的高层协议软件进一步处理。如果不匹配,则要求主机丢弃该数据报。

路由器的处理过程

数据报到达路由器时,IP软件对数据报进行分析,如果数据报的目的地址与主机的IP地址匹配,IP软件接受该数据报,并把它传递给合适的高层协议软件进一步处理。目的地址为路由器的数据报通常用于测试连接性或携带路由器管理命令。

如果数据报还没有到达它的最终目的地,IP软件将数据报的首部中的TTL字段减1,如果该字段变为了“0”,则丢弃该数据报。如果该字段仍为正数,则计算一个新的校验和,并用标准路由算法和本地路由表的信息为该数据报选择路由。

为什么主机不参加路由呢?这里有四个方面的原因:

当主机接收到目的IP地址为其他主机的数据报时,本身说明互联网的编制、路由或交付中已经出现了错误。如果主机对其进行路由,就会传递出错的数据报,并掩盖出现的问题;

主机路由会引起不必要的网络通信量;

简单的错误会招致混乱。一个数据报的广播会导致所有主机广播同样的数据,引起网络数据风暴;

路由器需要参与路由信息的交换才能保持路由信息的正确,如果主机参与路由,但没有参与路由信息的交换,会导致路由错误。